Part 1
一、判断这3条线段组成的三角形属于什么类型
①if循环
/*《C语言程序设计教程学习指导》p122 实验内容(1):判断三角形类型:一般三角形、等腰三角形、等边三角形
这是一个使用多分支if语句编程解决非数值类问题示例
运行程序,输入不同边长数据进行测试,观察输出结果是否正确,理解和巩固if语句功能和用法*/
#include <stdio.h>
int main() {
double a, b, c;
scanf_s("%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内部代码替换
/*demo1_1.cpp: 《C语言程序设计教程学习指导》p122 实验内容(1)
这是一个使用多分支if语句编程解决非数值类问题示例
运行程序,输入不同边长数据进行测试,观察输出结果是否正确,理解和巩固if语句功能和用法
*/
#include <stdio.h>
int main() {
double a, b, c;
scanf_s("%lf %lf %lf", &a, &b, &c);
if (a + b > c && a + c > b && b + c > a) {
if (a == b || a == c || b == c) {
if (a == b && a == c)
printf("构成等边三角形\n");
else
printf("构成等腰三角形\n");
}
else
printf("构成一般三角形\n");
}
else
printf("不能构成三角形\n");
return 0;
}
③while循环
/*这是在demo1.cpp的基础上行,增加了一小部分代码,可以循环判断多组数据
要终止输入和判断:按组合键Ctrl+D(同时按下Ctrl和D键),然后按回车键结束*/
#include <stdio.h>
int main() {
double a, b, c;
printf("输入三角形三边:\n");
while (scanf_s("%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");
printf("\n输入三角形三边:\n");
}
return 0;
}
二、判断成绩等级
①if语句
/*《C语言程序设计教程学习指导》p122 实验内容(2):输入百分制分数,测算并输出等级制分数
这是一个综合使用while语句、多分支if语句和continue、break实现分数段判断的示例
运行程序,输入不同分数值进行测试,理解和巩固这些控制语句的用法
按下组合键Ctrl+D(同时按下Ctrl和D)结束判断 */
#include <stdio.h>
int main() {
int score; // 用于存放百分制分数
char grade; // 用于存放等级制分数(取值'A', 'B','C','D', 'E')
while (1) {
printf("输入学生成绩: ");
if (scanf_s("%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;
}
②switch语句
/*相较于demo3.cpp,这个代码实现中,分数从百分制转换为等级制的部分,使用switch语句实现
按下组合键Ctrl+D(同时按下Ctrl和D),然后按回车键,结束判断 */
#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; // 结束本次循环,开始下一次循环
}
switch(score/10) { // 使用switch进行分数等级判断
case 10:
case 9: grade='A'; break;
case 8: grade='B'; break;
case 7: grade='C'; break;
case 6: grade='D'; break;
default: grade='E';
}
printf("等级为: %c\n\n", grade);
}
return 0;
}
三、对比和理解控制语句continue和break的功能
①continue语句
// 对比demo5_1.cpp和demo5_2.cpp,理解控制语句continue和break的功能
#include <stdio.h>
int main() {
int i;
// 在循环语句中使用continue
for(i=1; i<=5; i++) {
if (i%3 == 0) // 如果i是3的倍数,则结束本次循环,开始下一次循环
continue;
printf("i=%d\n",i);
}
return 0;
}
②break语句
// 对比demo5_1.cpp和demo5_2.cpp,理解控制语句continue和break的功能
#include <stdio.h>
int main() {
int i;
// 在循环语句中使用break
for(i=1; i<=5; i++) {
if (i%3 == 0) // 如果i是3的倍数,则结束整个循环
break;
printf("i=%d\n",i);
}
return 0;
}
简单分析:
- continue语句使程序跳出当前循环的剩余部分,并开始下一轮迭代
- break语句使程序跳转至紧跟在包含break语句的循环或switch末尾的下一条语句
四、对比和理解在嵌套的循环中控制语句continue和break的功能
①continue语句
// 对比demo6_1.cpp和demo6_2.cpp,理解在嵌套的循环中,控制语句continue和break的功能
#include <stdio.h>
const int LINE=3; // 定义符号常量LINE
const int COLUME=5; // 定义符号常量COLUME
int main() {
int line; // 定义变量line, 用来控制行数
int col; // 定义变量col, 用来控制列数
// 输出LINE行信息
for(line=1; line<=LINE; line++) {
// 每一行中,利用循环,输出各列信息
for(col=1; col<=COLUME; col++) {
if(col%3 == 0) // 如果col是3的倍数,则结束本次循环,开始下一次循环
continue;
printf("%5d", col);
}
printf("\n"); // 每输出完一行,换行
}
return 0;
}
简单分析:如果continue语句在嵌套循环内,则只会影响包含该语句的内层循环,即不会影响外层循环。
②break语句
// 对比demo6_1.cpp和demo6_2.cpp,理解在嵌套的循环中,控制语句continue和break的功能
#include <stdio.h>
const int LINE=3; // 定义符号常量LINE
const int COLUME=5; // 定义符号常量COLUME
int main() {
int line; // 定义变量line, 用来控制行数
int col; // 定义变量col, 用来控制列数
// 输出LINE行信息
for(line=1; line<=LINE; line++) {
// 每一行中,利用循环,输出各列信息
for(col=1; col<=COLUME; col++) {
if(col%3 == 0) // 如果col是3的倍数,则结束内层循环体
break;
printf("%5d", col);
}
printf("\n"); // 每输出完一行,换行
}
return 0;
}
简单分析:如果break语句位于嵌套循环内,它只会影响包含它的当前循环。即要跳出外层循环还需要一个break。
Part 2
五、补足程序
/* 编程找出5个整数的最大数和最小数
《C语言程序设计教程学习指导》p122实验内容(3) */
#include <stdio.h>
int main() {
int number, max, min, n;
n = 1;
printf("输入第%d个数: ", n);
scanf_s("%d", &number);
max = number;
min = number;
while (n <= 4) {
n++;
printf("输入第%d个数: ", n);
scanf_s("%d", &number);
if (number > max)
max = number;
else if (number < min)
min = number;
}
printf("最大数为: %d\n", max);
printf("最小数为: %d\n", min);
return 0;
}
Part 3
六、编程
①输出素数及个数
#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("%4d", n);
k = k + 1;
}
}
printf("\n");
printf("101~200之间共有%d个素数.", k);
return 0;
}
②打印图案
#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;
}
编写此文时感觉身体不大舒服,就先这样吧(o_ _)ノ
最后,感谢阅读~
PS:
https://www.cnblogs.com/weiyuyang/p/10697684.html
https://www.cnblogs.com/parzival/p/10714118.html
https://www.cnblogs.com/tedyoung1/p/10702286.html
来源:oschina
链接:https://my.oschina.net/u/4362823/blog/3573669