回顾C语言中要注意的地方(1)
1.整数进行除法
int a,b;
a=11;
b=a/2;
//b=5
如果这样呢:
float a;
a=11;
int b;
b=a/2;
//b=5还是不可
要这样:
float a;
a=11;
int b;
b=(int)(a/2+0.5);
//可以了
一个整形变量,输出/3后的保留一位的浮点数的值,不定义新浮点类型变量的情况下:printf("%.1f",(double)a/3);
2.注意输入的&一定不要落下(除非是数组)
scanf("%d",&b);
char str[10];
scanf("%s",str);数组名前面不用加&
3.putchar、getchar和scanf、printf和gets输入输出字符
scanf和printf
%c识别单个字符,能够识别空格和换行,
%s识别字符串并存到字符数组中,空格或换行标识字符串结束。
putchar和getchar 识别单个字符
处理格式时可以用getchar();吸收掉无用的换行符等。
gets和puts 识别一行字符串
gets识别\n作为输入结束
int a;
char b[10];
scanf("%d",&a);
//输入a后直接回车,gets会读入一个回车,所以用getchar来吸收这个回车
getchar();
gets(b);
printf("%d",a);
puts(b);
puts输出一行字符串后回紧跟一个换行
C 库函数 char *gets(char *str) 从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
4.double类型的变量
scanf时是%lf
printf时是%f
5.变量初值
尤其要注意,如果变量没有赋初值直接在后面使用是不会得到想要的结果的,系统可能随机给变量赋了一个初值。特别注意创建一个变量用于计数等时,一定不要忘记赋初值。
如果定义相同类型、相似含义的变量,并且要初值为0的话可以通过数组来设定,能够简洁一些。如:int count[5] = {0};
4.字符串
创建数组时至少要比实际存储字符串长度多1。
int型数组末位不加\0,只有char类型数组加。
每个一维数组、二维数组第二维最后一位是空字符\0(NULL ASCII码为0,空格ASCII码为32),表示字符串的结尾,puts和printf通过识别\0来辨别字符串结尾,如果没有遇到\0输出会乱码。gets和scanf会在读入字符串后自动加\0,其他方式要手动在字符串最后加“\0”。
5.数组作为函数参数
第一维不需要填写长度,第二维需要。调用时只需要写数组名。
数组作为参数时,在函数中修改会对原数组进行修改。
(与普通局部变量不同)
6.输出一个空格
printf(" ");
7.数组
int n,m;
scanf("%d",&n);
int dis[n+1];
for(int i=1;i<=n;i++){
scanf("%d",&dis[i]);
}
for(int i=1;i<=n;i++){
printf("%d",dis[i]);
}
但是
int n,m,dis[n+1];
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&dis[i]);
}
for(int i=1;i<=n;i++){
printf("%d",dis[i]);
}
会出错。