错题集
Posted zytomcat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错题集相关的知识,希望对你有一定的参考价值。
1、关于scanf函数输入双精度实型数据时的问题
1 //关于double类型的变量的一些小问题 2 #include<stdio.h> 3 int main(){ 4 double m,n; 5 printf("enter m and n:"); 6 //用scanf函数输入双精度实型数据时,不能用"%f"格式声明,而应当用"%lf"格式声明 7 scanf("%f%lf",&m,&n); 8 //用printf函数输出双精度实型数据时,"%f"与"%lf"两种格式声明均可 9 printf("m=%lf n=%lf ",m,n); 10 printf("m=%f n=%f ",m,n); 11 return 0; 12 }
代码运行结果
2、因循环变量引起的运算结果错误,此错误特别隐蔽。
当循环变量赋初值时,有多个变量设置初值时,最前面一个变量第一次定义时,后面的变量也默认定义为第一次定义,全部为局部变量。
1 //用数组输入三个数,用函数来计算其中最大值,并输出这个数是第几个数 2 #include<stdio.h> 3 int main(){ 4 int max(int x,int y); 5 int a[3],m,n; 6 printf("enter 3 numbers:"); 7 for(i=0;i<3;i++){ 8 scanf("%d",&a[i]); 9 } 10 11 //在此处将循环变量定义为局部变量引起后面的m与n也变为局部变量,引起运算结果错误 12 //在此处应特别注意,此错误特别隐蔽 13 //如果在此处初始化变量,m与n也默认为新的局部变量,循环结束后的第20行打印语句中的m与n不是for循环中的数值 14 for(int i=1,m=a[0],n=0;i<3;i++){ 15 if(max(m,a[i])>m){ 16 m=max(m,a[i]); 17 n=i; 18 } 19 } 20 printf("The largest numberr is %d it is the %dth number. ",m,n+1); 21 } 22 int max(int x,int y){ 23 return (x>y?x:y); 24 }
代码运行结果
以上是关于错题集的主要内容,如果未能解决你的问题,请参考以下文章