首页 > 其他 > 详细

实验三

时间:2019-04-15 22:36:47      阅读:156      评论:0      收藏:0      [点我收藏+]

part 1

 判断三角形三边的程序,源代码:

 1 #include <stdio.h>
 2 int main() {
 3 double a,b,c;
 4 scanf("%lf %lf %lf", &a, &b, &c);
 5 if(a+b>c && a+c>b && b+c>a) {
 6 if(a==b && a==c)
 7 printf("构成等边三角形\n");
 8 else if(a==b || a==c || b==c)
 9 printf("构成等腰三角形\n");
10 else
11 printf("构成一般三角形\n");
12 }
13 else
14 printf("不能构成三角形\n");
15 return 0;
16 }

        原先的程序只能运行一次,加上while(scanf("%ld%ld%ld",&a,&b,&c))这条语句之后可以让程序循环运行,当输入的第一个数据是其他字符时会跳出循环结束程序,但是当输入的第一个数据是数字,后面的数据是其他字符时,程序仍然会执行一次(不过这是为什么呢),显示不能构成三角形,然后再结束程序,while(scanf("%ld", &a) && scanf("%ld", &b) && scanf("%ld", &c) )确实是更合理的写法,只要有一个错误类型的数据都不会执行,会直接结束程序,减少了不必要的工作。

       continue意义是跳过一些特殊情况开始下一次循环,但仍然没有跳出这个循环;break则是结束这个循环。在两层嵌套循环中,无论是continue还是break都不会影响外层循环。

part 2

编程找出5个整数中的最大数和最小数,并输出找出的最大数和最小数。

补足后的源代码:

 1 #include <stdio.h>
 2 int main() {
 3 int number, max, min, n;
 4     n=1;
 5     printf("输入第%d个数: ", n);
 6     scanf("%d", &number);
 7        max = number;
 8        min = number;
 9        
10     while(n<=4) 
11     {   n++;
12         printf("输入第%d个数: ", n);
13         scanf("%d", &number);
14       if(number>max)
15         max = number;
16         else if(number<min)
17         min = number;
18     }
19   printf("最大数为: %d\n", max);
20   printf("最小数为: %d\n", min);
21 return 0;
22 }

 运行结果:

技术分享图片

 用for改写:

 1 #include <stdio.h>
 2 int main() {
 3 int number, max, min, n;
 4     n=1;
 5     printf("输入第%d个数: ", n);
 6     scanf("%d", &number);
 7        max = number;
 8        min = number;
 9     for(n=2;n<=5;n=++n)
10     {  printf("输入第%d个数:",n);
11        scanf("%d", &number);
12     if(number>max)
13          max = number;
14         else if(number<min)
15          min = number;
16      }   
17   printf("最大数为: %d\n", max);
18   printf("最小数为: %d\n", min);
19 return 0;
20 }

运行结果:

技术分享图片

用do···while改写:

 1 #include <stdio.h>
 2 int main() {
 3 int number, max, min, n;
 4     n=1;
 5     printf("输入第%d个数: ", n);
 6     scanf("%d", &number);
 7        max = number;
 8        min = number;
 9     do {
10         n++;
11          printf("输入第%d个数: ", n);
12          scanf("%d", &number);
13        if(number>max)
14          max = number;
15          else if(number<min)
16          min = number;
17     }
18     while(n<=4);
19   printf("最大数为: %d\n", max);
20   printf("最小数为: %d\n", min);
21 return 0;
22 }

运行结果:

技术分享图片

part 3

1.编程输出101~200之间的素数 

源代码:

 1 //输出101~200之间的素数 
 2 #include <stdio.h>
 3 #include <math.h>
 4 int main() {
 5 int x,n,nub,col;          
 6   n=2;x=101;nub=0;col=0;
 7   while(x<=200){
 8        while(x%n!=0)
 9        { if(n<=sqrt(x))
10             n=++n;
11          else{
12             printf("%4d",x);
13             nub=++nub;col=++col;
14             break;  }
15         }
16     if(col==5){
17       printf("\n");
18       col=0; }
19     x=++x;
20     n=2;    
21     }
22   printf("\n101~200之间共有%d个素数",nub);
23 
24 return 0;
25 }

换一种写法:

 1 #include <stdio.h>
 2 #include <math.h>
 3 int main(){
 4   int x,n,col,nub;
 5   col=0;nub=0;
 6     for(x=101;x<=200;x=++x){
 7         for(n=2;x%n!=0;n=++n)
 8         {  if (n>=sqrt(x))
 9             { printf ("%4d",x) ;
10               col=++col;nub=++nub;
11               break;  }
12         }
13         if(col==5)
14         {  printf("\n");
15            col=0;  }
16     }
17     printf("\n");
18     printf("101~200之间共有%d个素数",nub);
19 return 0;
20 }

 运行结果:

技术分享图片

2.编程打印输出以下图案。

源代码:

 1 #include <stdio.h>
 2 int main(){
 3     int line,star,t;
 4     line=1; 
 5  do{
 6     for(t=0;t<=5-line;t=++t)
 7       printf(" ");
 8     for(star=1;star<=(2*line-1);star=++star)
 9       printf("*");
10       printf("\n");
11       line=++line;
12     }
13  while(line<=5);
14     
15     return 0;
16 }

运行结果:

技术分享图片

       程序一用了两种写法,比较之下个人感觉for看起来会比较清晰明了。过程中因为一些语句顺序问题输出了一些非素数。

       程序二有了上周的经验这次的程序很快就写完了,同样是三层循环,但是比上次的要简洁清晰得多。

part 4

 源代码:

 1 #include <stdio.h>
 2 int main() {
 3     char a;
 4     while(1){
 5        scanf("%c",&a);
 6     while(a>=97&&a<=122)
 7     { printf("%x",a);
 8       break;
 9     }
10 }
11 return 0;
12 }

运行结果:

技术分享图片

      是的你没有看错,这只是一个无限循环字符转十六进制的程序,除了直接关闭窗口我甚至不知道要怎么结束它······

       那么它为什么会存在在这里呢······原因是想起《金甲虫》了,于是想这次写个给信息加密的程序吧(当然这个方法和小说里不一样)。不过想起来有点晚,作业截至之前只能写到这了。这个加密方法也太简陋了,信息很长的话一眼就能看出来是十六进制了,分辨出来是十六进制之后很快就能解出来了。

       所以,说不定可以几种加密方法混着用,比如八进制十六进制混在一起,不过这样的话又比较麻烦啦(前提是我能写出来)······

实验三

原文:https://www.cnblogs.com/ningchenyang/p/10686035.html

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