实验2 C语言分支与循环基础应用编程
实验任务1
task1.c源代码:
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 int 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:随机数为4位数字,不够的可以用0来补齐
问题3:生成204900420001~204900420099之间的任意五个数字
实验任务2
task2.c源代码:
#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:将0赋值给total_price,以便于下一次循环总价钱从0开始计算
问题2:break是立即终止当前循环,跳出循环体,continue是跳过当前循环体剩余的代码
问题3:我觉得有必要,因为在当前循环体系内,若输入的不为01234,那么程序回仍然进行下去
实验任务3
task3.c源代码:
#include <stdio.h> int main(){ char colour; while(scanf("%c",&colour) !=EOF){ getchar(); if(colour == 'g') printf("go go go\n"); else if (colour == 'r') printf("stop!\n"); else if(colour =='y') printf("wait a minute\n"); else printf("something must be wrong\n"); } return 0; }
运行截图:
实验任务4
task4.c源代码:
#include <stdio.h> #include<stdlib.h> int main(){ double sum=0.0,money=0.0,min=20000,max=0.0; printf("请输入今日开销,知道输入-1的时候终止:\n"); while(1){ scanf("%lf",&money); if(money == -1) break; sum+=money; if(max<money) max = money; if(min>money) min = money; } printf("今日累计消费总额:%.1lf\n",sum); printf("今日最高一笔开销:&.1lf\n",max); printf("今日最低一笔开销:&.1lf\n",min); system("pause"); return 0; }
运行截图:
实验任务5
task5.c源代码:
#include <stdio.h> #include<stdlib.h> #include<time.h> int main(){ int i,n=3,ans; int lucky_day; srand(time(0)); lucky_day=rand()%30+1; printf("猜猜2025年4月哪天是你的lucky day\n"); printf("开始咯,你有三次机会,猜吧(1~30);"); for(i=0;i<n;++i) { scanf("%d",&ans); if(ans<=lucky_day) { if(ans==lucky_day) { printf("哇,猜中了\n"); break; } else { printf("\n早了,你的lucky day还没到呢\n"); printf("再猜一次(1~30):"); } } else { printf("\n你猜的日期晚了,你的lucky day在前面哦\n"); printf("再猜(1~30):"); } } if(i==3&&ans!=lucky_day) printf("\n次数用完了。偷偷告诉你四月你的lucky day是%d号\n",lucky_day); system("pause"); return 0; }
运行截图:
实验任务6
task6源代码:
#include<stdio.h> int main(){ int n,i,j,k; printf(""); scanf("%d",&n); for(j=0;n>=1;--n) { for(k=j;k>0;--k) printf("\t"); for(i=n*2-1;i!=0;--i) printf(" o\t"); printf("\n"); for(k=j;k>0;--k) printf("\t"); for(i=n*2-1;i!=0;--i) printf("<H>\t"); printf("\n"); for(k=j;k>0;--k) printf("\t"); for(i=n*2-1;i!=0;--i) printf("| |\t"); printf("\n"); ++j; } return 0; }
运行截图: