今天是大一下学期上课的第一天,学校给我们安排了c语言项目实训,听说老师是讯飞公司的讲师兼工程师
今天算是当面见到了一次程序员了哈哈,后面还有windows编程,要跟紧老师的节奏
上午讲了一个猜数字游戏,和以前猜数字不怎么一样,大概如下
电脑随机生成1个4位数,这个数每一位不为0,且都不相同,我们人输入1个4位数来猜,当猜到位置相同且数字相同
则A+1,当猜到位置不同但数字相同则B+1,比如生成1234, 我们输入1356,则输出A为1,B也为1,直到所有相同位置上的数也都相同则游戏胜利
知识点补充:
随机种子函数 srand((int)time(NULL));
rand()函数 在1000到9999的范围内取数方法: a=1000,b=9999; s=rand()%(b-a+1距离差)+a;
代码如下:
#include<stdio.h>
#include<time.h>
#include<windows.h>
int check(int n, int *s)
{
int i=3,t;
t=n;
while (n)
{
s[i] = n%10;
if (s[i]==0)
return 0;
n /= 10;
i--;
}
if (s[0]!=s[1]&&s[0]!=s[2]&&s[0]!=s[3] && s[1]!=s[2]&&s[1]!=s[3] && s[2]!=s[3])
return t;
return 0;
}
int main()
{
int number,numberplay,a[4],b[4];
int A=0,B=0,i,j;
srand(time(NULL));
printf("玩家输入数字:");
while (1) //
{
number = rand() % (10000 - 1000 + 1) + 1000; //随机数范围,% 距离差 + 小的数
number = check(number, a);//生成合法数
if (number)
{
break;
}
}
while (1)//玩家输入的数检测
{
A=B=0;
scanf("%d",&numberplay);
numberplay = check(numberplay, b);
//输入不合法
if (!numberplay)
{
printf("请输入四位不相同且都不为0的数!\n");
continue;
}
printf("%d %d\n",number,numberplay);
//位置相同且数字相同
for (i=0;i<4;i++)
{
if (a[i]==b[i])
A++;
}
//数字相同但位置不同
for (i=0;i<3;i++)
{
for (j=i+1;j<4;j++)
{
if (a[i]==b[j]&&i!=j)
B++;
}
}
printf("本次结果:%d %d\n",A,B);
if (A==4)
{
printf("正确!!!\n");
break;
}
}
return 0;
}