首页 > 其他 > 详细

实验三

时间:2019-04-15 22:34:17      阅读:149      评论:0      收藏:0      [点我收藏+]

技术分享图片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.cppdemo5_2.cpp运行结果对比,总结在循环中使用控制语句continuebreak 其功能区别是什么?

 

分别在dev-c中运行代码运行结果如图:

  技术分享图片

        技术分享图片

        显然,continue与break都有使循环结束的功能,然而使用continue在满足后,仅仅是结束了本次循环,将开始下一次循环;而break将结束整个循环。                    

技术分享图片      2. 结合程序demo6_1.cppdemo6_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.使用fordo...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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!