C语言的基础知识
#include <stdio.h>//标准输入输出头文件:std=standard,i=input,o=output,h=head
/*
在 stdio.h 中定义了 printf() 和 scanf()
*/
#include <stdlib.h>//标准库文件:std-standard,lib=libraray
/*
在 stdlib.h 中定义了如下方法:
1. system("cls")
2. srand(time(NULL))
3. rand()
4. exit(0)
*/
#include <string.h>//string:字符串
/*
在 string.h 中定义了如下方法:
1. strlen(str) 求得字符串长度
2. strcat(str1,str2) 字符串连接,运算结果为:返回一个字符串,相当于 str1 + str2
3. strcpy(str1,str2) 字符串赋值,以 str2 替换 str1, 相当于 str1 = str2
4. strcmp(str1,str2) 字符串比较,一般的用法: int n = strcmp(str1,str2),n 的值可能为 +1,-1 或 0三者之一
*/
#include <ctype.h>
/*
在 ctype.h 中定义了字符转大小写的方法
1. tolower(int)
一般的用法:int c = tolower(65),这里 n = 97,当然 ascii 编码值对应的字符为 a,
int b = tolower(97), 这里 n = 97
2. toupper(int)
一般的用法:int c = tolower(65),这里 n = 65
int b = tolower(97), 这里 n = 65,当然 ascii 编码值对应的字符为 A
*/
#include <math.h>//数学头文件
/*
在该文件中定义了许多用数学运算的方法
1. sin(弧度制角度)
2. cos(弧度制角度)
3. tan(弧度制角度)
4. pow(a,n),幂运算方法,其中 a 为 底数,n 为指数
5. sqrt(a),求实数 a 的平方根
6. abs(a),求有理数 a 的绝对值
*/
/*
int c = 65;
printf("%c\n",c);
c += 32;
printf("%c\n",c);
int b = 66;
printf("%c\n",b);
b = tolower(b);
printf("%c\n",b);
exit(0);
*/
//变量
/*
在 C 语言中,所有的变量必须先声明才可以访问该变量
1. 定义变量
规范:变量名称不得以数字开头,如:int 3number = 10,这是错误写法
正确的变量命名:int number; 声明了一个整数类型的变量,int number = 0;
声明了一个整数类型的变量并为该变量赋一初始值
变量名称可以以下划线开头:int _number = 0;
如果变量名称中包含多个词汇,可以这样写:定义某个人的年龄:int age_of_man = 18;
也可以这样写:int AgeOfMan = 18;
2. 变量的生命周期
变量的生命周期是指变量从开始被声明之时起到程序将其销毁时的时期
比如:
#include <stdlib.h>
void main()
{
int a = 10 ;
a = a * 3;
printf("a = %d\n",a);//改行指令运行完毕之后系统会自动将变量 a 销毁
}
3. 变量的作用范围
#include <stdio.h>
void main()
{
int n = 0;
printf("请一个输入整数:");
scanf("%d",&n);
if(n % 2 == 0)
{
int flag = 0;
flag = 1;
}
if(flag == 1)//此处会出错,因为变量 flag 被定义成了局部变量
printf("偶数\n");
else
printf("奇数\n");
printf("你输入的数字为:%d\n",n);
printf("变量 flag 的值为 %d\n",flag);
}
4. 程序的流程结构
流程结构包含三种基本结构:顺序结构,选择分支结构和循环结构
顺序结构最简单,从上到下依次运行
选择结构较为复杂一些,程序会依据某个给定条件先做出判断在决定如何运行
可以写 if ... else ....,有的时候可以采用 switch() 结构
#include <stdio.h>
void main()
{
float a = 0, b = 0;
printf("请输入第一个数:");
scanf("%f",&a);
printf("请输入第二个数:");
scanf("%f",&b);
getchar();
printf("A. 加法\n");
printf("B. 减法\n");
printf("C. 乘法\n");
printf("D. 除法\n");
printf("----------------\n");
char code = 'x';
printf("请选择运算方式:");
scanf("%c",&code);
float result = 0;
switch(code)
{
case 'A':
result = a + b;
break;
case 'B':
result = a - b;
break;
case 'C':
result = a * b;
break;
case 'D':
result = a / b;
break;
default:
printf("输入错误,程序终止运行。\n");
return;
}
printf("运算结果为:%.2f\n",result);
}
////////////////////////////////
#include <stdio.h>
void main()
{
int a = 0;
printf("请输入一个 100 以内的自然数: ");
scanf("%d",&a);
//if 条件会把于自己紧密相连的一条指令自动结合运行
if(a > 100 || a < 1)
{
a = 1;
printf("输入错误, 系统已经把输入值该为 1。\n");
}
printf("你输入的数字为:%d\n",a);
}
循环结构,主要用于要反复执行类似或相同的操作。此种结构包含两种类型;有限循环和无限循环
无论哪一种类型,我们都必须在程序中有效的控制程序的运行。循环结构的控制关键字有:return,break,continue
循环的写法:
1. 有限循环
for(int i = 0;i < 100;i++)
{
//////////////
}
2. 无限循环
for(;;) | while(true)
{ | {
////////////// | ///////////
} | }
3. 采用 while 关键字
int n = 0;
//先看条件是否满足,再决定是否向下运行
while(n < 10)
{
printf("%d\n",n++);
}
int m = 0;
//先输出再看条件是否满足,决定是否向下运行
do
{
printf("%d\n",m++);
}while(m < 10);
5. 数组
int n[10]; // [10] 指定了数组的容量或大小
//声明了一个整数类型的数组,其中最多能够容纳 10 个整数 (每个整数被称为该数组的一个元素)
for(int i = 0;i < 10;i++)
n[i] = i * 5; // [i]: i 为数组元素的下标或索引
以上为数组元素赋值的方法为动态赋值
int n[10] = {1,2,3,4,5,6,7,8,9,10};
//声明了一个整数类型的数组,其中最多能够容纳 10 个整数 (每个整数被称为该数组的一个元素),
//在声明数组的同时为该数组作了初始化工作,这种位数祖赋值的方法称为静态赋值
#include <stdio.h>
void main()
{
int n[10];
printf("舒组变量 n 的内存地址: %p\n",&n);
//系统首先为数组变量分配内存地址 (内存空间),然后为其中的每个元素分配内存地址,
//第一个元素的内存地址和数组变量的内存地址相同,此时系统为每个元素分配了下标索引。
//下标索引从 0 开始
//显示数组各元素的内存地址以及相应的值
for(int i = 0;i < 10;i++)
{
//向各元素所在的内存写入具体的值
n[i] = i * 5;
//读取并显示个元素所在内存中的值
printf("n[%d] -> %p, n[%d] = %d\n",i,&n[i],i,n[i]);
}
printf("\n");
}
/////////////////////////////////////////////////////////////////////
*///将数组中的元素按倒序输出
#include <stdio.h>
void main()
{
const int MAX = 25;
//MAX = 0; 不允许对常量做任何修改
int a[MAX];
int i = 0;
for(i = 0;i < MAX;i ++)
a[i] = i + 1;
printf("不按倒序述出:\n");
for(i = 0;i < MAX;i++)
printf("% d",a[i]);
printf("\n");
printf("按序叙述出:\n");
for(i = 0;i < MAX;i++)
printf("% d",a[MAX - 1 - i]);
printf("\n");
for(i = MAX - 1;i >= 0 ;i--)
printf("% d",a[i]);
printf("\n");
}
/*
//将数组中的元素按倒序输出
#include <stdio.h>
void main()
{
const int MAX = 25;
//MAX = 0; 不允许对常量做任何修改
int a[MAX];
int i = 0;
for(i = 0;i < MAX;i ++)
a[i] = i + 1;
printf("不按倒序述出:\n");
for(i = 0;i < MAX;i++)
printf("% d",a[i]);
printf("\n");
printf("按序叙述出:\n");
int length = MAX / 2;
for(i = 0;i < length;i++)
{
int temp = a[i];
a[i] = a[MAX - 1 - i];
a[MAX - 1 - i] = temp;
}
for(i = 0;i < MAX;i++)
printf("%d ",a[i]);
printf("\n");*/