码迷,mamicode.com
首页 > 其他好文 > 详细

实验三

时间:2019-04-15 23:24:14      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:取值   c++   turn   return   lse   最小数   png   efault   ber   

实验结论:

Part 1:验证性内容

 1.

/*
《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;
}

技术图片

思考:

/*
《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 || b==c) {
if (a==b && a==c)
printf("构成等边三角形\n");
else
printf("构成等腰三角形\n");
}
else
printf("构成一般三角形\n");
}
else
printf("不能构成三角形\n");
return 0;
}

技术图片

 

结论:替换代码后,依然成立。

拓展:

#include <stdio.h>
int main() {
double a,b,c;
printf("输入三角形三边:\n");
while(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");
printf("\n输入三角形三边:\n");
}
return 0;
}

技术图片

可以重复运行程序,更加方便。

2.

#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;
}

技术图片

改写:

#include <stdio.h>
int main() {
int score; // 用于存放百分制分数
char grade; // 用于存放等级制分数(取值‘A‘, ‘B‘,‘C‘,‘D‘, ‘E‘)
while(1) {
printf("输入学生成绩: ");
if(scanf("%d",&score) == 0) // 如果检测到没有成绩输入,则结束整个循环break;
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;
}

技术图片

注:刚在打代码时,我漏掉了一个“break;”,编译运行正常,但是在结束时,Ctrl+D造成程序进入死循环,一直为等级是E,此处注意。

3.

#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;
}

技术图片

#include <stdio.h>
int main() {
int i;
// 在循环语句中使用continue
for(i=1; i<=5; i++) {
if (i%3 == 0) // 如果i是3的倍数,则结束整个循环
break;
printf("i=%d\n",i);
}
return 0;
}

技术图片

 结论:continue和break的区别是continue不能在swich中使用,除非是循环体里出现swich,并且continue结束的是循环体的本次循环,而break结束的是整个循环体。 

 4.

#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;
}

技术图片

#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或者continue都不会影响外层循环。

Part 2:

 

#include <stdio.h>
int main() {
int number, max, min, n;
n=1;
printf("输入第%d个数: ", n);
scanf("%d", &number);
max = number;
min = number;
while(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;
}

技术图片

使用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<5);
printf("最大数为: %d\n", max);
printf("最小数为: %d\n", min);
return 0;
}

技术图片

 

#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<6;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;
}

技术图片

Part 3:

 

#include <stdio.h>
 #include <math.h>
 int main() {
     int x,y,z;
     x=101;
     z=0;
     while(x<=200){
         for(y=2;y<sqrt(x);y++){
             if(x%y==0)
             break;
         }
         if(y>sqrt(x)){
         
             printf("%5d",x);
            z++; 
         if(z%5==0)
           printf("\n");
       }
        x=x+1;
     }
    printf("\n");
    printf("101~200之间共有%d个素数",z);
     return 0;
 }

技术图片

 

#include<stdio.h>
   int main(){
       int a,b,c;
       for(a=1;a<=5;a++)
       {
           for(b=1;b<=5-a;b++)
            
        printf(" ");
            
           for(c=1;c<=(2*a-1);c++) 
           { 
           printf("*");
           } 
        printf("\n");
       } 
       
       return 0;
}

技术图片

总结:这次实验难度有点大,编写代码的时候,有些费劲,还请教了其他同学才知道自己的问题,不足之处,尤其是Part 3的两个代码老是出错,但最后还是找出了问题,继续努力吧!

评论链接:https://www.cnblogs.com/lvzixuan/

                  https://home.cnblogs.com/u/weiyuyang/

                  https://home.cnblogs.com/u/ningchenyang/

 

实验三

标签:取值   c++   turn   return   lse   最小数   png   efault   ber   

原文地址:https://www.cnblogs.com/MR-XN/p/10712867.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!