实验结论
part 1:
1 从键盘上输入3个数,让它们代表3条线段的长度,编写一个c程序判断这3条线段组成的三角形属于什么类型(一般三角形、等腰三角形、等边三角形或不构成三角形)。
1)两种if语句都可以达到实验目的,因此条件语句写法很灵活,所以自己以后写一个程序时也会考虑多种写法
2)while和if组合使用时使程序测试运行更加便捷,不需要每组数据一遍又一遍地重新编译再运行,用户在测试完所有数据后结束返回即可
3)while(scanf("%ld%ld%ld",&a,&b,&c))写法和while(scanf("%ld", &a) && scanf("%ld", &b) && scanf("%ld", &c) )写法在多组数据测试后并没有发现有什么不同,没有体会出第二种写法的合理性
2 用scanf()函数输入一个百分制成绩(整型量),要求输出成绩等级A,B,C,D,E。其中,90~100分为A,80~89分为B, 70~79分为C, 60~69分为D,60分以下为E。
1)break会使整个循环结束continue只是结束本次循环,下次循环依旧进行
2)break可以出现在循环语句或switch语句中continue只出现在循环语句中
3 分别运行程序demo5_1.cpp和demo5_2.cpp,结合运行结果,对比和理解控制语句continue和break的功能。
demo5_1.cpp的运行结果
demo5_2.cpp的运行结果
continue跳过本次循环执行下次循环。break结束该循环
4 分别运行程序demo6_1.cpp和demo6_2.cpp,结合运行结果,对比和理解在嵌套的循环中控制语句continue和break的功能。
demo6_1.cpp的运行结果
demo6_2.cpp的运行结果
在两层嵌套循环中,内层循环中如果出现continue,不影响外层循环
在两层嵌套循环中,内层循环中如果出现break,不影响外层循环
Part2: 补足程序,使得程序运行
1 编程找出5个整数中的最大数和最小数,并输出找出的最大数和最小数。
#include <stdio.h> int main() { int number, max, min, n; n=1; printf("输入第%d个数: ", n); scanf("%d", &number); max = number; min = number; while(n<=4) { n++; printf("输入第%d个数: ", n); scanf("%d", &number); if(number>max) max = number; else if(number<min) min = number; } printf("最大数为: %d\n", max); printf("最小数为: %d\n", min); return 0; }
第一次尝试的时候写的条件是n<=5,循环执行了六次,从而发现错误并改正
for改写1
#include <stdio.h> int main() { int number, max, min, n; n=1; printf("输入第%d个数: ", n); scanf("%d", &number); max = number; min = number; for(;n<=4;) { n++; printf("输入第%d个数: ", n); scanf("%d", &number); if(number>max) max = number; else if(number<min) min = number; } printf("最大数为: %d\n", max); printf("最小数为: %d\n", min); return 0; }
2
#include <stdio.h> int main() { int number, max, min, n; n=1; printf("输入第%d个数: ", n); scanf("%d", &number); max = number; min = number; for(;n<=5;n++) { printf("输入第%d个数: ", n); scanf("%d", &number); if(number>max) max = number; else if(number<min) min = number; } printf("最大数为: %d\n", max); printf("最小数为: %d\n", min); return 0; }
将n++放到()里面和外面有区别,在()里面先做n++运算在判断条件。在()外面则先判断条件在做n++,所以两次的判断条件有所不同
do...while改写
#include <stdio.h> int main() { int number, max, min, n; n=1; printf("输入第%d个数: ", n); scanf("%d", &number); max = number; min = number; do { n++; printf("输入第%d个数: ", n); scanf("%d", &number); if(number>max) max = number; else if(number<min) min = number; }while(n<=4); printf("最大数为: %d\n", max); printf("最小数为: %d\n", min); return 0; }
part 3
1 编程输出101~200之间所有素数,并输出这一区间内素数个数。
#include <stdio.h> #include <math.h> int main(){ int n,m,i,k; k=0; for(n=101;n<=200;n++){ m=sqrt(n); for(i=2;i<=m;i++){ if(n%i==0) break; } if(i>m){ printf("%16d",n); k=k+1; } } printf("\n"); printf("101~200之间共有%d个素数",k); return 0; }
格式控制不太对,尝试了很多次还是不行,不知道怎样才能前面不留空
2 编程打印输出如下图案。
#include <stdio.h> int main(){ int line,n,m; for(line=1;line<=5;line++){ for(n=1;n<=5-line;n++) printf(" "); for(m=1;m<=2*line-1;m++){ printf("*"); } printf("\n"); } return 0; }
实验总结与体会
1.改写补全程序没什么问题,自己写程序时漏洞百出,都是小细节出错,还是要多练习
2.循环条件语句的嵌套使用不熟悉,很容易出错,
互评