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