Part1: 验证性内容
回答并总结这一部分内容中给出的思考题:
总结1.从键盘上输入3个数,让它们代表3条线段的长度,编写一个c程序判断这3条线段组成的三角形属于什么类 型(一般三角形、等腰三角形、等边三角形或不构成三角形)。
代码如图:
/* 《C语言程序设计教程学习指导》p122 实验内容(1) 这是一个使用多分支if语句编程解决非数值类问题示例 运行程序,输入不同边长数据进行测试,观察输出结果是否正确,理解和巩固if语句功能和用法 */ #include <stdio.h> int main() { double a,b,c; scanf("%lf %lf %lf", &a, &b, &c); if(a+b>c && a+c>b && b+c>a) { if(a==b && a==c) printf("构成等边三角形\n"); else if(a==b || a==c || b==c) printf("构成等腰三角形\n"); else printf("构成一般三角形\n"); } else printf("不能构成三角形\n"); return 0; }
运行结果如图:
若使用给出代码则显然也是可以的,只是通过多重if语句做顺序不同的判断,但本质还是一样的。
运行结果如下:
而接下来的示例则是对该段代码的不断简化,如同时将录入语句放在一行中,亦或简化了循环。
总结2.用scanf()函数输入一个百分制成绩(整型量),要求输出成绩等级A,B,C,D,E。其中,90~100分为A,80~89 分为B, 70~79分为C, 60~69分为D,60分以下为E。
#include <stdio.h> int main() { int score; // 用于存放百分制分数 char grade; // 用于存放等级制分数(取值‘A‘, ‘B‘,‘C‘,‘D‘, ‘E‘) while(1) { printf("输入学生成绩: "); if(scanf("%d",&score) == 0) // 如果检测到没有成绩输入,则结束整个循环 break; if(score<0 || score > 100) { printf("输入成绩有误!\n\n"); continue; // 结束本次循环,开始下一次循环 } else if(score>=90 && score<=100) grade = ‘A‘; else if(score>=80 && score<=89) grade = ‘B‘; else if(score>=70 && score<=79) grade = ‘C‘; else if(score>=60 && score <=69) grade = ‘D‘; else grade = ‘E‘; printf("等级为: %c\n\n", grade); } return 0; }
显然,continue结束本次循环,break结束整个循环
题目1.结合程序demo5_1.cpp和demo5_2.cpp运行结果对比,总结在循环中使用控制语句continue和break, 其功能区别是什么?
分别在dev-c中运行代码运行结果如图:
显然,continue与break都有使循环结束的功能,然而使用continue在满足后,仅仅是结束了本次循环,将开始下一次循环;而break将结束整个循环。
2. 结合程序demo6_1.cpp和demo6_2.cpp运行结果对比,回答:
在两层嵌套循环中,内层循环中如果出现continue,是否影响外层循环?
在两层嵌套循环中,内层循环中如果出现break,是否影响外层循环?
两程序运行结果如图:
由此可见,二者均不影响外循环。
Part2: 补足程序,使得程序运行
1.附上补足后的程序源码blank.cpp,及运行测试结果截图。
#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; }
2.使用for或do...while语句实现的程序源码,及运行测试结果截图:
只需要稍作修改:
#include <stdio.h> int main() { int number, max, min, n; n=1; printf("输入第%d个数: ", n); scanf("%d", &number); max = number; min = number; for(n=2; 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; }
3.编程练习
第一题代码:
#include <stdio.h>
#include <math.h>
int main()
{
int x,n,col,number;
col=0;number=0;
for(x=101;x<=200;x=++x)
{
for(n=2;x%n!=0;n=++n)
{ if (n>=sqrt(x))
{ printf ("%4d",x) ;
col=++col;number=++number;
break; }
}
if(col==5)
{ printf("\n");
col=0; }
}
printf("\n");
printf("101~200之间共有%d个素数",number);
return 0;
}
运行结果:
第二题代码:
#include <stdio.h> int main() { int line,star,t; line=1; do { for(t=0;t<=5-line;t=++t) printf(" "); for(star=1;star<=(2*line-1);star=++star) printf("*"); printf("\n"); line=++line; } while(line<=5); return 0; }
完成。
Part 2 实验总结与体会
实际上对循环语句的操作还不是很熟悉,完成最后两题时,我借鉴了其他同学的一些成果,完成了我的半成品,,。
接下来要多花时间在编程上了,多加练习才能熟练运用。
----------END----------
原文:https://www.cnblogs.com/tedyoung1/p/10702286.html