实验2
任务1:
源代码:
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 5 #define N 5 6 #define N1 397 7 #define N2 476 8 #define N3 21 9 10 int main(){ 11 int cnt; 12 int random_major,random_no; 13 14 srand(time(NULL)); 15 16 cnt=0; 17 while(cnt<N){ 18 random_major=rand()%2; 19 20 if(random_major){ 21 random_no=rand()%(N2-N1+1)+N1; 22 printf("20248329%04d\n",random_no); 23 } 24 else{ 25 random_no=rand()%N3+1; 26 printf("20248395%04d\n",random_no); 27 } 28 29 cnt++; 30 } 31 32 return 0; 33 }
问题1:生成在[N1,N2]范围内的随机数
问题2:生成在[1,N3]范围内的随机数
问题3:生成并输出5个随机的学生学号,学号有两种格式,
- 以20248329开头的学号后接一个4位数,范围从397到476。
- 以20248395开头的学号后接一个4位数,范围从1到21。
任务2:
源代码:
1 #include<stdio.h> 2 #include<math.h> 3 4 int main(){ 5 double a,b,c; 6 double delta,p1,p2; 7 while(scanf("%lf%lf%lf",&a,&b,&c)!=EOF){ 8 if(a==0){ 9 printf("a=0,invalid input\n"); 10 continue; 11 } 12 13 delta=b*b-4*a*c; 14 p1=-b/2/a; 15 p2=sqrt(fabs(delta))/2/a; 16 17 if(delta==0) 18 printf("x1=x2=%.2g\n",p1); 19 else if(delta>0) 20 printf("x1=%.2g,x2=%.2g\n",p1+p2,p1-p2); 21 else{ 22 printf("x1=%.2g+%.2gi,",p1,p2); 23 printf("x2=%.2g-%.2gi\n",p1,p2); 24 } 25 } 26 27 return 0; 28 }
任务3:
源代码:
1 #include<stdio.h> 2 int main(){ 3 char c; 4 while((c=getchar())!=EOF){ 5 while (getchar() != '\n'); 6 if(c=='r'){ 7 printf("stop!\n");} 8 else if(c=='g'){ 9 printf("go go go\n");} 10 else if(c=='y'){ 11 printf("wait a minute\n");} 12 else{ 13 printf("something must be wrong...\n");} 14 } 15 return 0; 16 }
任务4:
源代码:
1 #include<stdio.h> 2 int main(){ 3 double cost; 4 double total=0,max=0,min=20000; 5 printf("输入今日开销,直到输入-1终止:\n"); 6 while(1){ 7 scanf("%lf",&cost); 8 if(cost==-1){ 9 break; 10 } 11 if(cost>max){ 12 max=cost; 13 } 14 if(cost<min){ 15 min=cost; 16 } 17 total+=cost; 18 } 19 printf("今日累计消费总额;%.1f\n今日最高一笔开销:%.1f\n今日最低一笔开销:%.1f",total,max,min); 20 return 0; 21 }
任务5:
源代码:
1 #include<stdio.h> 2 int main(){ 3 int a,b,c; 4 while((scanf("%d %d %d",&a,&b,&c))!=EOF){ 5 if(a<=0||b<=0||c<=0){ 6 printf("不能构成三角形\n"); 7 } 8 if(a+b<=c||b+c<=a||a+c<=b){ 9 printf("不能构成三角形\n"); 10 } 11 else if(a==b&&b==c){ 12 printf("等边三角形\n");} 13 else if(a==b||b==c||a==c){ 14 printf("等腰三角形\n");} 15 else if(a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b){ 16 printf("直角三角形\n");} 17 else{ 18 printf("普通三角形\n");} 19 } 20 return 0; 21 }
任务6:
源代码:
1 #include<stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 int main() { 5 srand(time(0)); 6 int date=(rand() % 30) + 1; 7 int a=0; 8 int ans; 9 printf("猜猜2024年11月哪一天会是你的 lucky day\n开始喽,你有三次机会,猜吧(1~30):"); 10 while(a<3){ 11 scanf("%d",&ans); 12 if(ans<date){ 13 printf("你猜的日期早了,你的 lucky day 还没到呢\n"); 14 } 15 else if(ans>date){ 16 printf("你猜的日期晚了,你的 lucky day 在前面哦\n"); 17 } 18 else{ 19 printf("哇,猜中了:)"); 20 exit(0); 21 } 22 a++; 23 if(a<3){ 24 printf("再猜(1~30):"); 25 } 26 } 27 if(a==3){ 28 printf("次数用光啦。偷偷告诉你,11月你的 lucky day 是%d号",date); 29 } 30 return 0; 31 }