首页 > 其他 > 详细

错题集

时间:2018-07-14 12:22:13      阅读:164      评论:0      收藏:0      [点我收藏+]

 

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\nn=%lf\n",m,n);
10     printf("m=%f\nn=%f\n",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\nit is the %dth number.\n",m,n+1);
21 }
22 int max(int x,int y){
23     return (x>y?x:y);
24 }

代码运行结果

技术分享图片

 

错题集

原文:https://www.cnblogs.com/zytomcat/p/9308952.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!