四、实验结论
1.实验任务1
task1_1
1 #include<stdio.h> 2 int main() 3 { 4 printf(" O \n"); 5 printf("<H>\n"); 6 printf("I I\n"); 7 8 return 0; 9 }
task1_2
1 #include<stdio.h> 2 int main() 3 { 4 printf(" O \t O \n"); 5 printf("<H>\t <H>\n"); 6 printf("I I\t I I\n"); 7 8 return 0; 9 }
2.实验任务2
task2
1 #include<stdio.h> 2 int main() 3 { 4 float a,b,c; 5 6 scanf("%f%f%f",&a,&b,&c); 7 8 if (a+b>c&&a+c>b&&b+c>a) 9 printf("能构成三角形\n"); 10 11 else 12 printf("不能构成三角形\n"); 13 14 return 0; 15 }
3.实验任务3
task3
1 #include<stdio.h> 2 int main() 3 { 4 char ans1, ans2; 5 6 printf("每次课前认真预习,课后及时复习了没?(输入y或Y表示有,输入n或N表示没有):"); 7 ans1 = getchar(); 8 9 getchar(); 10 11 printf("\n动手敲代码了没?(输入y或Y表示敲了,输入n或N表示木有敲:"); 12 ans2 = getchar(); 13 14 if ((ans1=='y'||ans1=='Y')&&(ans2=='y'||ans2=='Y')) 15 printf("\n罗马不是一天建成的,继续保持哦:)\n"); 16 17 else 18 printf("\n罗马不是一天毁灭的,我们来建设吧\n"); 19 20 return 0; 21 }
结果:Line9去掉后,在第一问输入结束回车后,输出问题二且无法输入字符,输出“罗马不是一天毁灭的,我们来建设吧”,程序结束。
原因:getchar()从输入缓存区中读取一个字符。第一次输入时实为'Y''\n',所以应在第二问前增加一条getchar();读取\n,使缓存区清空。第二次输入就能正常读取。
4.实验任务4
task4
1 #include<stdio.h> 2 int main() 3 { 4 double x,y; 5 char c1,c2,c3; 6 int a1,a2,a3; 7 8 scanf("%d%d%d",&a1,&a2,&a3); //缺少& 9 printf("a1=%d,a2=%d,a3=%d\n",a1,a2,a3); 10 11 scanf("%c%c%c",&c1,&c2,&c3); 12 printf("c1=%c,c2=%c,c3=%c\n",c1,c2,c3); 13 14 scanf("%lf,%lf",&x,&y); //应为%lf 15 printf("x=%f,y=%lf\n",x,y); 16 17 return 0; 18 }
5.实验任务5
task5
1 #include<stdio.h> 2 #include <math.h> 3 4 int main() 5 { 6 int year; 7 8 year=pow(10,9)/(60*60*24*365)+0.5; 9 10 printf("10亿秒约等于%d年\n",year); 11 12 return 0; 13 }
6.实验任务6
task6_2
1 #include<stdio.h> 2 #include <math.h> 3 4 int main() 5 { 6 double x,ans; 7 8 while(scanf("%lf",&x)!=EOF) 9 { 10 ans=pow(x,365); 11 printf("%.2f的365次方:%.2f\n",x,ans); 12 printf("\n"); 13 } 14 15 return 0; 16 }
7.实验任务7
task7
1 #include<stdio.h> 2 int main() 3 { 4 float C,F; 5 6 while(scanf("%f",&C)!=EOF) 7 { 8 F=C*9.0/5.0+32; 9 printf("摄氏度c=%.2f时,华氏度f=%.2f\n",C,F); 10 printf("\n"); 11 } 12 13 return 0; 14 }
8.实验任务8
task8
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 int a,b,c; 6 float s,area; 7 8 while (scanf("%d%d%d",&a,&b,&c)!=EOF) 9 { 10 s=(a+b+c)/2.0; 11 area=sqrt(s*(s-a)*(s-b)*(s-c)); 12 13 printf("a=%d,b=%d,c=%d,area=%.3f\n",a,b,c,area); 14 printf("\n"); 15 } 16 return 0; 17 }
五、实验总结
总体过程较为顺利,巩固了已有知识,学习到了为何要加一行getchar();的原因。
但也暴露出以下缺点:
1.对基本数据类型不熟悉,int,float等数字转换有些吃力,调试时花了较长的时间;
2.不熟悉循环结构;
3.小细节难重视,在不经意间写出不合规范的表达,如scanf()常漏&;
也收获了一些感悟:
1.比起理论,动手实践更能检验知识的掌握度。我在编写程序的过程中一步步熟悉流程,编写的速度得到了提升;
2.更应回到最初的定义,如掌握getchar()的定义后才能解释task3中出现的问题,在出现问题时才能追本溯源;
这一次实验我还获得了程序成功运行的成就感,更有动力继续探索程序的世界。
标签:10,main,return,int,实验,printf,include From: https://www.cnblogs.com/tjssj16/p/17735894.html