实验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;
} 
  • 运行截图

task1_2

  1. 问题1:程序功能为随机生成学号后4位数字并输出学号
  2. 问题2:line14功能为生成1~100的随机整数
  3. 问题3:line15格式符功能为若number少于4位,则前位补足0
  4. 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;
		}
  • 运行截图

task2

  1. 问题1:如果去掉,上一次循环的total_price值会存储在变量里,影响下一次循环计算
  2. 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;
}
  • 运行截图

task3

任务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;
}
  • 运行截图

屏幕截图 2026-10-28 192609

任务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;
} 
  • 运行截图

屏幕截图 2026-10-28 200329

任务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;
} 
  • 运行截图

image

实验总结

学会正确使用循环结构,辨认出哪部分是循环内,哪部分是循环外,弄清结构再编写

posted @ 2026-10-28 21:07  Catorange  阅读(6)  评论(0)    收藏  举报