实验2
实验任务1
源代码
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 5 #define N 5 6 #define N1 80 7 #define N2 35 8 9 int main(){ 10 int cnt; 11 int random_major, random_no; 12 13 srand(time(NULL)); 14 15 cnt = 0; 16 while(cnt < N){ 17 random_major = rand() % 2; 18 19 if(random_major){ 20 random_no = rand() % N1 + 1; 21 printf("20256343%04\n", random_no); 22 } 23 else{ 24 random_no = rand() % N2 + 1; 25 printf("20256136%04d\n", random_no); 26 } 27 cnt++; 28 } 29 return 0; 30 }
运行截图
第13行去掉后
问题1:代码 srand(time(NULL))的作用是使结果随时间的变化而变化
问题2:功能是随机生成学号
实验任务2
源代码
1 #include <stdio.h> 2 3 int main(){ 4 int choice, quantity; 5 float total_price = 0, amount_paid, change; 6 7 while (1){ 8 printf("\n自动饮料售卖机菜单:\n"); 9 printf("1. 可乐 - 3 元/瓶\n"); 10 printf("2. 雪碧 - 3 元/瓶\n"); 11 printf("3. 橙汁 - 5 元/瓶\n"); 12 printf("4. 矿泉水 - 2 元/瓶\n"); 13 printf("0. 退出购买流程\n"); 14 printf("请输入饮料编号:"); 15 scanf("%d", &choice); 16 17 if(choice == 0) 18 break; 19 20 if(choice < 1 || choice >4){ 21 printf("无效的饮料编号, 请重新输入. \n"); 22 continue; 23 } 24 25 printf("请输入购买数量:"); 26 scanf("%d", &quantity); 27 28 if(quantity < 0){ 29 printf("购买数量不能为负数, 请重新输入. \n"); 30 continue; 31 } 32 33 if(choice == 1 || choice == 2) 34 total_price += 3 * quantity; 35 else if(choice == 3) 36 total_price += 5 * quantity; 37 else 38 total_price += 2 * quantity; 39 40 printf("请投入金额: "); 41 scanf("%f", &amount_paid); 42 43 change = amount_paid - total_price; 44 printf("本次购买总价:%.2f 元\n", total_price); 45 printf("找零:%.2f 元\n", change); 46 47 total_price = 0; 48 } 49 50 printf("感谢您的购买,欢迎下次光临!\n"); 51 return 0; 52 }
运行截图
问题1:如果去掉会使下一次循环的总价不为0
问题2:结束本次循环,继续下次循环
实验任务3
源代码
1 #include <stdio.h> 2 int main() 3 { 4 char ch; 5 while (scanf("%c",&ch) != EOF){ 6 if(ch == 'r'){ 7 printf("stop!\n");} 8 else if(ch == 'g'){ 9 printf("go go go\n");} 10 else if(ch == 'y'){ 11 printf("wait a minute\n");} 12 else{ 13 printf("something must be wrong\n");} 14 getchar(); 15 } 16 return 0; 17 }
运行截图
实验任务4
源代码
1 #include <stdio.h> 2 int main() 3 { 4 double n, max = 0, min = 20000, sum; 5 printf("输入今日开销,直到输入-1终止:\n"); 6 while(1) 7 { 8 scanf("%lf",&n); 9 if(n == -1) 10 break; 11 if(max<n) 12 max = n; 13 if(min>n) 14 min = n; 15 sum += n; 16 } 17 printf("今日累计消费总额:%.1lf\n",sum); 18 printf("今日最高一笔开销:%.1lf\n",max); 19 printf("今日最低一笔开销:%.1lf\n",min); 20 21 return 0; 22 }
运行截图
实验任务5
源代码
1 #include <stdio.h> 2 int main () 3 { 4 int a,b,c; 5 while(scanf("%d%d%d",&a,&b,&c)!= EOF) 6 { 7 if(a + b > c && b + c > a && a + c > b) 8 { 9 if((a == b || b == c|| a == c ) && ( a != b|| a !=c|| b !=c )) 10 printf("等腰三角形\n"); 11 else if(a == b && b == c && a == c) 12 printf("等边三角形\n"); 13 else if((a*a == b*b +c*c) || (b*b == c*c + a*a) || (c*c == b*b + a*a)) 14 printf("直角三角形\n"); 15 else 16 printf("普通三角形\n"); 17 } 18 else 19 printf("不能构成三角形\n"); 20 } 21 22 return 0; 23 }
运行截图
实验任务6
源代码
1 #include <stdio.h> 2 #include <time.h> 3 #include <stdlib.h> 4 int main () 5 { 6 int i, ans; 7 srand(time(NULL)); 8 9 int a = rand () %30 + 1 ; 10 printf("猜猜2025年11月哪天是你的Lucky day\n"); 11 printf("开始喽,你有三次机会,猜吧(1~30):\n"); 12 for(i = 0;i < 3;i++) 13 { 14 scanf("%d",&ans); 15 if(ans > a) 16 { 17 printf("你猜的日期晚了,你的Lucky day还在前面哦\n"); 18 continue; 19 } 20 else if(ans < a) 21 { 22 printf("你猜的日期早了,你的Lucky day还没到呢\n"); 23 continue; 24 } 25 else 26 { 27 printf("哇,猜中了\n"); 28 break; 29 } 30 } 31 if(i == 3) 32 printf("次数用光了。偷偷告诉你,11月你的Lucky day是%d\n",a); 33 return 0; 34 }
运行截图