实验2
1.task1
task1.c
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 5 #define N 5 6 #define R1 586 7 #define R2 701 8 9 int main() 10 { 11 int number; 12 int i; 13 14 srand(time(0));//以当前系统时间作为随机种子 15 16 for(i=0;i<N;++i) 17 { 18 number=rand()%(R2-R1+1)+R1;//作用:生成586到701之间的随机数 19 printf("20228330%04d\n",number); 20 21 } 22 return 0; 23 }
(1)line18的作用是生成586到701之间的的随机整数。
(2)这个程序的功能是生成202283300586到202283300701之间的学号。
2.task2
task2.c
1 #include<stdio.h> 2 3 int main() 4 { 5 double x,y; 6 char c1,c2,c3; 7 int a1,a2,a3; 8 scanf("%d%d%d",&a1,&a2,&a3);//被改错的行 9 printf("a1=%d,a2=%d,a3=%d\n",a1,a2,a3); 10 11 scanf("%c%c%c",&c1,&c2,&c3); 12 printf("c1=%c,c2=%c,c3=%c\n",c1,c2,c3); 13 14 scanf("%lf,%lf",&x,&y);//被改错的行 15 printf("x=%lf,y=%lf",x,y); //被改错的行 16 17 return 0; 18 }
3.task3
task3_2.c
1 #include<stdio.h> 2 #include<math.h> 3 4 int main() 5 { 6 double x,ans; 7 8 //scanf("%lf",&x) 9 //ans=pow(x,365); 10 //printf("%.2f的365次方:%.2f\n",x,ans); 11 12 while(scanf("%lf",&x)!=EOF) //! 按ctrl+z键3次结束循环 13 { 14 ans=pow(x,365); 15 printf("%.2f的365次方:%.2f\n",x,ans); 16 printf("\n"); 17 } 18 return 0; 19 }
运行截图:
task3_3.c
1 #include<stdio.h> 2 #include<math.h> 3 4 int main() 5 { 6 double x,ans; 7 8 while(scanf("%lf",&x)!=EOF) 9 { 10 ans=9*x/5+32; 11 printf("摄氏温度c=%.2f时,华氏度f=%.2f\n",x,ans); 12 printf("\n"); 13 } 14 return 0; 15 }
运行截图:
4.task4
task4.c
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int main() 5 { 6 char color; 7 while(scanf("%c",&color)!=EOF) 8 { 9 getchar(); 10 switch(color){ 11 case'r':printf("stop!");break; 12 case'g':printf("go go go");break; 13 case'y':printf("wait a minute");break; 14 default:printf("something must be wrong...");break; 15 } 16 printf("\n"); 17 18 } 19 system("pause"); 20 return 0; 21 }
5.task5
task5.c
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 int main() 5 { 6 int date,number,i; 7 i=1; 8 printf("猜猜2023年4月哪一天会是你的lucky day\n"); 9 srand(time(0)); 10 number=rand()%30+1; 11 printf("开始喽,你有三次机会,猜吧(1-30):"); 12 13 for(i=1;i<=3;i++) 14 { 15 scanf("%d",&date); 16 if (date<number) 17 { 18 printf("你猜的日期早了,你的lucky day还没到呢\n"); 19 printf("再猜(1-30):"); 20 continue;} 21 else if (date>number) 22 { 23 printf("你猜的日期晚了,你的lucky day已经过啦\n"); 24 printf("再猜(1-30):");continue;} 25 else printf("哇,猜中了:-)");break; 26 27 } 28 if(i==4) 29 printf("次数用完了。偷偷告诉你:4月,你的lucky day是%d号",number); 30 return 0; 31 }
6.task6
task6.c
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 int x,y; 6 for (y=1;y<10;y++) 7 { 8 for(x=1;x<=y;x++) 9 { 10 printf("%d*%d=%2d ",x,y,x*y); 11 } 12 printf("\n");//换行 13 } 14 return 0; 15 }
7.task7
task7.c
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 int line,n,i; 6 printf("enter line:"); 7 scanf("%d",&line); 8 n=line; 9 i=1; 10 for(n=line;n>=1;n--) 11 { 12 for(i=1;i<=line-n;i++) 13 printf(" \t"); 14 for(i=line-n+1;i<=line+n-1;i++) 15 printf(" o \t"); 16 for(i=line+n;i<=2*line-2;i++) 17 printf(" \t"); 18 printf("\n"); 19 20 for(i=1;i<=line-n;i++) 21 printf(" \t"); 22 for(i=line-n+1;i<=line+n-1;i++) 23 printf("<H>\t"); 24 for(i=line+n;i<=2*line-2;i++) 25 printf(" \t"); 26 printf("\n"); 27 28 for(i=1;i<=line-n;i++) 29 printf(" \t"); 30 for(i=line-n+1;i<=line+n-1;i++) 31 printf("I I\t"); 32 for(i=line+n;i<=2*line-2;i++) 33 printf(" \t"); 34 printf("\n\n"); 35 36 } 37 return 0; 38 }
当输入行数(line)时,第n行,需要打印(line-n)*2+1个字符小人;第n行前面需要打印n-1个空白(需要使用多少个\t,第n行一共需要打印2*n-2个空白。
实验总结:getchar()可以读取缓冲区回车键的数据;