文章目录

  • 一、一次完整程序的运行
  • 二、实现方法
    • 1.whlie(1)的使用
    • 2.程序运行结果
  • 总结

前言

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


一、一次完整程序运行。

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

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

#include#include#includeint 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(nx)printf("大于目标数字\n");else{printf("恭喜你,答对了!\n");break;}}if(n!=x){printf("猜戳了哦\n"); printf("正确答案是%d",x);}return 0;}

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

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

二、实现方法

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

#include#include#includeint 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(nx)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#include#includeint 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(nx)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强行跳出函数不在打印输出,再将我们控制循环的语句等中的变量重置。一个完美的窗口多次使用程序就打印好了