实验2
实验一
程序源代码
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 #define R1 586 #define R2 701 int main() { int number; int i; srand( time(0) ); for(i = 0; i < N; ++i) { number = rand() % (R2 - R1 + 1) + R1; printf ("20228330%04d\n",number); } return 0; }
程序运行截图
讨论:
问题1:随机生成一个586-701之间的数
问题2:随机生成5个202283300586-202283300701之间的数
实验二
程序源代码
int main() { double x,y; char c1,c2,c3; int a1,a2,a3; scanf("%d%d%d",&a1,&a2,&a3); printf("a1= %d,a2= %d,a3= %d\n", a1, a2,a3); getchar() ; scanf("%c%c%c",&c1, &c2, &c3); printf("c1 = %c,c2 = %c,c3 = %c\n",c1,c2,c3); scanf("%lf,%lf",&x,&y); printf("x = %lf, y = %lf\n",x,y); return 0; }
程序运行截图
实验三
程序源代码
#include <stdio.h> #include <math.h> int main() { double x, ans; while(scanf("%lf",&x) != EOF) { ans = pow(x, 365); printf("%.2f的365次平方:%.2f\n",x,ans); printf("\n"); } return 0; }
#include <stdio.h> int main() { double s,h; while(scanf("%lf",&s) != EOF) { h = s*9/5 + 32; printf("摄氏度c = %.2lf时,华氏度f = %.2lf",s,h); printf("\n"); } return 0; }
程序运行截图
实验四
程序源代码
#include <stdio.h> int main() { char ans; printf("输入r表示red,输入g表示green,输入y表示yello :"); while(scanf("%c",&ans) != EOF) { getchar(); switch(ans) { case'r':printf("stop!\n");break; case'g':printf("go go go\n");break; case'y':printf("wait a minute\n");break; default :printf("something must be wrong\n");break; } } return 0; }
程序运行截图
实验五
程序源代码
#include <stdio.h> #include <time.h> #include <stdlib.h> #define N 30 int main() { int t, i, a; srand(time(0)); a = rand()%(N+1); printf("猜猜2023年4月哪一天会是你的lucky day \n"); printf("开始喽,你有三次机会,猜吧(1-30):"); for(i = 1;i <= 2; i++) { scanf("%d",&t); if (t != a) { if (t > a) { printf("你猜的日期晚了,你的lucky day已经过啦\n"); printf("再猜(1-30):"); continue; } else { printf("你猜的日期早了,你的lucky day还没到呢\n"); printf("再猜(1-30):");continue; } } else{ printf("哇,猜中了:-)"); break; } } if (t != a){ scanf("%d",&t); if(t != a) printf("次数用完啦,偷偷告诉你:4月,你的lucky day是%d号",a); else printf("哇,猜中了:-)"); } return 0; }
程序运行截图
实验六
程序源代码
#include <stdio.h> int main() { int i, j; for(i = 1; i <= 9; i++) { for(j = 1; j <= i; j++) printf("%d*%d=%2d\t",i,j,i*j); printf("\n") ; } return 0; }
程序运行截图
实验七
程序源代码
#include <stdio.h> int main() { int line, n, i,j; scanf("%d",&line); for (j = 1;j <= line; ++j) { n = 2 * (line - j) + 1; //每一行的小人的个数是总行数减去该行数的差乘2再整体加1 for (i = 1;i <= j-1;++i) printf ("\t"); //第i行,前面有i-1个\t for (i = 1;i <= n;++i){ printf (" o \t") ;continue;} printf("\n") ; for (i = 1;i <= j-1;++i) printf ("\t"); for (i = 1;i <= n;++i){ printf ("<H> \t");continue;} printf("\n") ; for (i = 1;i <= j-1;++i) printf ("\t"); for (i = 1;i <= n;++i){ printf ("I I \t");continue;} printf("\n\n") ; //上下两个小人之间要空一行,所以是两个/n } return 0; }
程序运行截图
讨论:第i行,共2*(line-i)+1个小人
第i行,前面有i-1个\t
收获:输入的格式要与scanf里的格式相同
对于字符型,空格也会输出,要用getchar吃掉空格
while(..... != EOF)能连续输入,直至同时按crtl+z ,再按回车键结束
不足:循环条件不能迅速判断,逻辑不是很清晰