由计算机“想”一个1~100之间的整数,让用户去才,才对了,就输出“正确,你太棒了!”,否则输出“太小了或太大了”提示用户所采的数不正确。每次游戏最多允许用户猜10次,即在10次内猜对了,或者猜了10次都不对,都会结束游戏,在结束了一次游戏之后,并不结束程序运行,而是询问用户是否继续游戏,如果用户键入数字“1”则开始新游戏,如果用户键入“0”,则退出程序运行。
本程序程序用到以下头文件
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
1.头文件“stdlib.h”用于调用随机函数rand(),随机函数rand()可以产生一个[0,RAND_MAX]之间的整数,使用时需要包含头文件“stdlib.h”。如果想要使得计算机生成一个1~100之间的数,需要进行计算rand()%100+1。
2.每次调用函数rand()所产生的随机数序列是一样的,需要调用函数srand()为函数rand()设置随机数种子。只要随机数种子不同,函数rand()就会产生不同的随机数序列。可以使用函数time()读取计算机的时钟值,并把该值设置为随机数种子。使用函数time()时,需要包含头文件“time.h”,time(NULL)的返回值会被转换为一个无符号整数而作为随机数种子。
本程序可用到的程序结构有:选择结构以及循环结构
//常见的4种简单的选择结构(也可运用循环内嵌语句)
//第一种
if(表达式)
{
语句;
}
//第二种
if(表达式)
语句;
else
语句;
//第三种
if(表达式)
语句;
else if(表达式)
语句;
else if(表达式n-1)
语句;
else
语句;
//第四种switch语句
switch(表达式)
{
case (常量表达式1):
语句1;
break;
case(常量表达式2):
语句2;
break;
......
case(常量表达式n-1):
语句n-1;
break;
default:
语句n;
}
//常见的三种循环结构
//第一种
for(循环变量赋初值;循环条件;循环变量增值)
{
语句;
}
//第二种;
循环变量赋初值;
while(循环条件)
{
语句;
循环变量增值;
}
//第三种
循环变量赋初值;
do
{
语句;
循环变量增值;
}while(循环条件);
本程序也可运用自定义函数,使得程序更加的简洁,自定义函数形式如下:
函数类型 函数名(形式参数表列)
{
说明部分;
语句部分;
}
以下为本程序的代码:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void menu()
{
printf(" 输入1.开玩 \n");
printf(" 输入0.开溜\n");
}
void game()
{
int magic, guess, count = 0;
srand(time(NULL));
magic = rand() % 100 + 1;//计算机随机数的生成
do
{
printf("请猜一个0~100之间的整数:");
scanf_s("%d", &guess);
count++; /*计数器*/
if (guess > magic)
printf("错误,太大了!\n");
else if (guess < magic)
printf("错误,太小了!\n");
else
printf("正确,太棒了!\n");
} while (guess != magic && count < 10);
printf("猜了%d次\n", count);
}
int main()
{
int i = 0;
srand((unsigned)time(NULL));
do
{
menu();
scanf_s("%d", &i);
switch (i)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("请重新输入:\n");
break;
}
} while (i);
return 0;
}
本程序用到循环结构、选择结构以及函数的自定义,本函数可用上面所说到的几种选择以及循环结构进行替换,也可以运用函数调用的形式对自定义函数所放位置进行修改;也可以用goto语句对程序进行改写,如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
again:int magic, guess, count = 0,x;//again为语句标识符
srand(time(NULL));
magic = rand() % 100 + 1;
do
{
printf("请猜一个0-100之间的整数:");
scanf_s("%d",&guess);
count++;//计数器
if (guess > magic)
printf("错误,太大了!\n");
else if (guess < magic)
printf("错误,太小了!\n");
else
printf("正确,太棒了!\n");
} while (guess != magic && count < 10);
printf("猜了%d次\n", count);
printf("是否继续游戏:\n");
scanf_s("%d", &x);
if (x == 1)
{
goto again;//使程序再次进入上面循环
}
else
{
printf("结束游戏");
}
return 0;
}
以上是关于此类问题的总结,本人第一次所写,第一次发布文章,有何问题还望多多指正。