c语言中如何让一个完整的程序多次运行

文章目录


前言

许多新手小白编写一个完整的程序执行后,每次只能运行一此。然后只能关闭程序窗口再次运行。这人我们非常苦恼。那么如何让我们的程序窗口多次执行呢?


一、一次完整程序运行。

我们用一个只能运行一次的程序来说明这种情况:

下面是一个电脑生成随机数(0—100)的一个代码:

#include<stdlib.h>
#include<stdio.h>
#include<time.h>
int main(void)
{ 
srand((unsigned)time(NULL));
int x=rand()%100+1;
int i, n;
for(i=1;i<=7;i++){
printf("enter n:");
scanf("%d",&n);
if(n<x)
  printf("小于目标数字\n");
  else if(n>x)
  printf("大于目标数字\n");
  else{
  printf("恭喜你,答对了!\n");
  break;}
              }
	if(n!=x){
	printf("猜戳了哦\n"); 
    printf("正确答案是%d",x);
	        }
  return 0;
}

当我们运行此代码玩游戏时程序只能执行一次,如下: 

我们想再玩一次时不得不关闭程序窗口再次运行。下面小编将教大家如何让我们这个程序如何多次运行。 

二、实现方法

1.使用while(1)和对代码的完善

#include<stdlib.h>
#include<stdio.h>
#include<time.h>
int main(void)
{ 
	while(1){
	srand((unsigned)time(NULL));
	int x=rand()%100+1;
	int i, n;
	for(i=1;i<=3;i++){
		printf("enter n:");
		scanf("%d",&n);
		if(n<x)
			printf("小于目标数字\n");
		else if(n>x)
			printf("大于目标数字\n");
		else{
			printf("恭喜你,答对了!\n");
			break;}
	}
	if(n!=x){
		printf("答错了!\n"); 
		printf("正确答案是%d",x);
	}
	      }
  	return 0;
}

我们直接使用while(1){

  完整程序段} 这是我们发现程序可以循环执行了

但此时无法退出。我们期望输入 y/n让程序选择继续执行或退出。 

 

2.调试与最后结果

	scanf("%c",&c);
		if(c=='y')
			break;
	}

在循环while最后我们读入一个字符y让程序结束 

但此时多打印了while(1)循环中所有的printf()内容。

此时我们发现表达语句中存在问题,于是我们改变表达语句中的内容。 

#include<stdlib.h>
#include<stdio.h>
#include<time.h>
int main(void)
{ 
	srand((unsigned)time(NULL));
	int x=rand()%100+1;
	int i, n;
	char c;
	while(1){
	if(i<=3)	{
		for(i=1;i<=3;i++){
		printf("enter n:");
		scanf("%d",&n);
		if(n<x)
			printf("小于目标数字\n");
		else if(n>x)
			printf("大于目标数字\n");
		else if(n==x){
			printf("恭喜你,答对了!\n");
			break;}
		}              
        if(n!=x){
		printf("答错了!\n"); 
		printf("正确答案是%d\n",x);        
	       }	
       printf("是否在玩一局?\n");
	   printf(" y or n:");
	         }
	c=getchar();
	     if     (c=='y')
	        	i=1;
	     else if(c=='n')
	        	return 0;
      }
	
	return 0;

 在for循环之前我们加入了if判断语句当一次循环结束时防止一次循环结束时多打印printf()语句中的内容。在结尾我们使用getchar读入y/n判断是否结束程序,n则用return 0;强行跳出循环防止打印下面语句,y则重置i继续执行循环。

最终结果如下

 

最终我们完美的控制了程序的多次运行和结束。 

 

 

补:由于程序已经运行开始产生的随机数不能再重置。这个难题就交给各位看官了。(实在懒得想了)


总结

使用while(1){程序段}即可在程序窗口多次运行完整的程序。由于while(1)循环的优先性在程序中的printf,scanf。等函数即使程序结束也会再次打印,这时我们需要在这些语句段中加入判断控制语句防止多次打印。最终我们使用return强行跳出函数不在打印输出,再将我们控制循环的语句等中的变量重置。一个完美的窗口多次使用程序就打印好了

  • 43
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GOD.CHEN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值