实验二

实验一:

代码:

#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%d\n",number);
}
system("pause");
return 0;
}

截图:
image
问题1:获得1到100之间的随机整数
问题2:保存四位字符位,空格用零代替
问题3:随机获得n位同学的学号

test 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;
 }

截图:
image
问题1:不能,保证每次循环的total_price的初始值都为0。
问题2:break是终止循环,contine是不再执行这次循环下面的指令,但是不打断循环。
问题3:没有必要,因为买家只能在这之中选择。

test 3:

代码:

#include<stdio.h>
#include<stdlib.h>

int main()
{
  char light;
	while((light=getchar())!= EOF)
	{
  getchar();
  switch(light){
  case 'g':printf("go go go\n");break;
  case 'y':printf("wait a minute\n");break;
  case 'r':printf("stop!\n");break;
  default:printf("someting must be wrong");
  }
	}

  
  system("pause");
  return 0;
}

截图:
image

小结:
1、想要换行就用\n跟在printf和scanf里面;
2、用getchar()吃掉空格字符;

test 4:

代码:

#include<stdio.h>
#include<stdlib.h>

int main()
{
  double per=0,sum=0,max=0,min=20000;
  printf("输入今日开销,直到输入-1终止:\n");
  while(1)
  {
	  scanf("%lf",&per);
	  if(per == -1)
		  break;
	  sum+=per;
	  if(max<per)
		  max=per;
	  if(min>per)
		  min=per;
  }
  printf("今日累计开销总额:%.1f\n",sum);
  printf("今日最高一笔开销:%.1f\n",max);
  printf("今日最低一笔开销:%.1f\n",min);
  
  system("pause");
  return 0;
}

截图:
image
小结:
1、break在while循环里面好像比for里面管用,用for语句没有终止循环,因为终止的内容他无法像while那样明确;
2、min的初始值一开始赋值错误,导致一直不对;
3、double对应的是lf;

test 5:

代码:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
	int day,guess;
	int n;

	srand(time(0));
	day = rand() % 30 + 1;

	printf("猜猜2025年4月哪一天是你的lucky day\n\n开始喽,你有三次机会,猜吧(1~30):");

	for(n=0;n<3;++n){
	scanf("%d",&guess);
	if(guess == day)
		{printf("哇,猜中了:-)\n");break;}
	if(guess>day)
	{printf("\n你猜的日期晚了,你的lucky day 在前面哦\n");}
	     
	else
	{printf("\n你猜的日期早了,你的lucky day 还没到呢\n");}
	  if(n != 2)
		  printf("\n再猜(1~30):");

	}
	if(n == 3)
		printf("\n次数用完啦。偷偷告诉你,4月你的lucky day是%d号",day);
	system("pause");
	return 0;
}

截图:
image
小结:
1、\n的运用,连续使用或者在输入提示信息之前;
2、rand()函数的运用,有关时间的要等一会,生成随机种子;
格式:

#include<stdlib.h>
#include<time.h>
srand(time(0));
a = rand()%100+1;

3、中英文切换和打字速度的问题要慢慢练习;

test 6:

代码:

#include<stdio.h>
#include<stdlib.h>

int main(){
	int n,i,j,k;
	printf("input n:");
	scanf("%d",&n);

	for(j=0;n>=1;--n)
	{
		for(k=j;k>0;--k)
			printf("\t");
	    for(i=2*n-1;i != 0;--i)
	        printf(" O\t");
	    printf("\n");
		for(k=j;k>0;--k)
			printf("\t");
	   for(i=2*n-1;i != 0;--i)
	        printf("<H>\t");
	    printf("\n");
		for(k=j;k>0;--k)
			printf("\t");
	   for(i=2*n-1;i != 0;--i)
	        printf("I I\t");
	   printf("\n");
	   ++j;
	}
	
	system("pause");
	return 0;
}

截图:
image

小结:
1、\t表示占据14个位置,要灵活应用;
2、好像我的代码有点太繁琐辽,但是没想到就这样写出来了,能跑就行(不是)😃;

posted @ 2025-03-18 22:21  邹馨伦  阅读(24)  评论(0)    收藏  举报