文章目录
- 前言
- 一、一次完整程序的运行
- 二、实现方法
- 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强行跳出函数不在打印输出,再将我们控制循环的语句等中的变量重置。一个完美的窗口多次使用程序就打印好了