实验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()可以读取缓冲区回车键的数据;

posted @ 2023-03-17 16:10  202113020120张艳  阅读(25)  评论(0编辑  收藏  举报