#include <stdio.h> #include <stdlib.h> #include <time.h>#define N 5int main() {int number;int i;srand(time(0));for(i = 0; i<N; ++i){number = rand()%100 +1;printf("20490042%04d\n", number);}return 0;}
问题1:生成一个范围1~100的随机整数。
问题2:保证在20490042后面的整数会占据4个字符的宽度,值不足会在前面补0。
问题3:以20490042为前缀在尾号0001到0100之间随机抽取五位学员
实验任务2:
#include <stdio.h>int main(){int choice,quantity;float total_price = 0, amount_paid, change;while(1){printf("\n自动饮料售卖机菜单:\n");printf("1. 可乐 - 3 元/瓶\n");printf("2. 雪碧 - 3 元/瓶\n");printf("3. 橙汁 - 5 元/瓶\n");printf("4. 矿泉水 - 2 元/瓶\n");printf("0. 退出购买流程\n");printf("请输入饮料编号: ");scanf("%d", &choice);if (choice ==0)break;if (choice < 1 || choice > 4){printf("无效的饮料编号,请重新输入。\n");continue;}printf("请输入购买的数量:");scanf("%d", &quantity);if (quantity <0){printf("购买数量不能为负数,请重新输入。 \n");continue;}switch (choice){case 1:case 2:total_price += 3 * quantity;break;case 3:total_price += 5 * quantity;break;case 4:total_price += 2 * quantity;break;}printf("请投入金额:");scanf("%f", &amount_paid);change = amount_paid- total_price;printf("本次购买价格: %.2f 元\n", total_price);printf("找零: %.2f 元\n", change);total_price = 0; }printf("感谢您的购买,欢迎下次光临!\n");return 0; }
问题1:将total_price的值重置为0,保证下一次购买时总额会从0开始计算;如果去掉的话total_price的值会被叠加。
问题2:break的作用是跳出当前的while循环,即当choice的值为0时终止循环;contine的作用是继续执行所在if语句外的循环。区别:break会直接终止循环,而contine会继续执行剩下来的循环语句。
问题3:我认为依然有必要添加default子句。原因:虽然循环中已经添加了判断choice一个在0,1,2,3,4中取值的语句,但添加一个default子句有利于我们在编写代码后及时查找和发现其他可能存在的问题。
试验任务3:
#include <stdio.h>int main() {int x;char n;while(scanf("%lf", &x) != EOF){n = getchar();switch(n){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;}
实验任务4:
#include <stdio.h>int main() {double x, sum, max=0, min=20000;int n=1;printf("输入今日开销,直到输入-1为止\n");while(1){scanf("%lf", &x);if (x != -1){sum+=x;}else break;if (x<0 || x>20000){printf("一天内费用不会超过两万元,不会低于零元");break; }if(max<=x)max=x;if(min>=x)min=x;}printf("今日累计消费总额:%.1f\n", sum);printf("今日最高一笔开销:%.1f\n", max);printf("今日最低一笔开销:%.1f\n", min);return 0;}
实验任务5:
#include <stdio.h> #include <stdlib.h> #include <time.h>int main() {int n, i, ans;printf("猜猜2025年4月哪一天是你的lucky day\n");srand((unsigned int)time(NULL));n= rand()%30 + 1;printf("开始喽,你有三次机会,猜吧(1~30):");for(i=1;i<=3;i++){scanf("%d", &ans);if(ans>n){printf("你猜的日期晚了,你的lucky day在前面哦\n");}else if(ans<n){printf("你猜的日期早了,你的lucky day还没到呢\n");}else{printf("哇,猜中了:)\n") ;break;}}if(i>3){printf("次数用完啦,偷偷告诉你,4月你的lucky day是%d号\n", n);}return 0;}
实验任务6:
#include <stdio.h>int main() {int n, i, j;scanf("%d", &n);for (j=1;j<=n;j=j+1){for (i = 1; i <= j-1; i = i + 1)printf(" \t");for (i = 1; i <= 2*(n+1-j)-1; i = i + 1)printf(" O \t");printf("\n");for (i = 1; i <= j-1; i = i + 1)printf(" \t");for (i = 1; i <= 2*(n+1-j)-1; i = i + 1)printf(" <H> \t");printf("\n");for (i = 1; i <= j-1; i = i + 1)printf(" \t");for (i = 1; i <= 2*(n+1-j)-1; i = i + 1)printf(" I I \t");printf("\n");}return 0; }