实验2
任务1
- 源代码task1.c
点击查看代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
#define CNT 5
int main(){
int number;
int i;
srand(time(0));
for(i = 0;i < CNT;++i){
number = rand()%N + 1;
printf("20490042%04d\n",number) ;
}
return 0;
}
- 运行截图

- 问题1:程序功能为随机生成学号后4位数字并输出学号
- 问题2:line14功能为生成1~100的随机整数
- 问题3:line15格式符功能为若number少于4位,则前位补足0
- srand(time(0))用当前时间作随机种子,用来生成随机数
任务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("请输入饮料编号:\n");
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;
}
if (choice==1||choice==2)
total_price += 3*quantity;
else if(choice==3)
total_price +=5*quantity;
else
total_price +=2 * quantity;
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值会存储在变量里,影响下一次循环计算
- continue作用:跳过本次循环,进入下一次循环
任务3
- 源代码task3.c
点击查看代码详情
#include <stdio.h>
int main(){
char inform;
for(;;){
scanf ("%c",&inform);
switch(inform)
{
case 'g':
getchar();
printf("go go go\n");
break;
case 'r':
getchar();
printf("stop!\n");
break;
case 'y':
getchar();
printf("wait a minute\n");
break;
default :
getchar();
printf("something must be wrong...\n");
}
}
return 0;
}
- 运行截图

任务4
- 源代码
点击查看代码
#include <stdio.h>
int main(){
double money;
double sum=0.0,min=20000.0,max=0;
printf("输入今日开销,直到输入-1终止:\n");
while(money>0){
scanf("%lf",&money);
if (money==-1)
break;
if(money>=max)
max = money;
if(money<=min)
min = money;
sum +=money ;
}
printf("今日累计消费总额:%.1lf\n",sum);
printf("今日最高一笔开销:%.1lf\n",max);
printf("今日最低一笔开销:%.1lf\n",min);
return 0;
}
- 运行截图

任务5
- 源代码
点击查看代码
#include <stdio.h>
int main(){
int a,b,c;
for(int i =1;i<=5;i++){
scanf("%d%d%d",&a,&b,&c);
if (a+b<=c||a+c<=b||b+c<=a)
printf("不能构成三角形\n");
else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
printf("直角三角形\n");
else if (a==b==c)
printf("等边三角形\n");
else if (a==b||a==c||b==c)
printf("等腰三角形\n");
else
printf("普通三角形\n");
}
return 0;
}
- 运行截图

任务6
- 源代码
点击查看代码
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
srand(time(0));
int x = rand()%30 + 1;
int n;
printf("猜猜2026年11月哪一天是你的lucky day\n");
printf("\n开始喽,你有3次机会,猜吧(1~30):");
for (int i =1;i<=3;i++){
scanf("%d",&n);
if (n>x){
printf("\n你猜的日期晚了,你的lucky day在前面哦\n");
}
else if (n == x)
{
printf("猜中了\n");
break;
}
else {
printf("\n你猜的日期早了,你的lucky day在后面哦\n");
}
if (i==3)
{
printf("\n次数用光啦。11月你的lucky day是%d号",x);
}
else
printf("\n再猜(1~30):");
}
// if (i>3)
// printf("用光了");
return 0;
}
- 运行截图

实验总结
学会正确使用循环结构,辨认出哪部分是循环内,哪部分是循环外,弄清结构再编写
浙公网安备 33010602011771号