主题:这个程序老是出错,谁能帮我改一下啊? 谢谢谢谢谢谢谢!
这个程序老是出错,谁能帮我改一下啊? 谢谢谢谢谢谢谢!
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include<windows.h>
#include<string.h>
#define MAX 6
void read();
typedef struct player
{
char Name[20]; /*玩家姓名 */
int Score; /*玩家成绩,猜测次数 */
} PLAYER;
int qushu() /*取数函数*/
{
int a=0; int b=0;
int i=0;
srand( (unsigned)time( NULL ) ); /*随机数种子设置 */
a=rand();
while (a<999||a>10000)
a=rand();
return(a);
}
void guess()
{
void addrec(int a);
int s[5],dns; /*存放电脑随机产生的数*/
int t[5],sc; /*存放玩家输入的数*/
int i,j;
int a,b; /* a位置和数值都正确的个数 b数值正确位置不正确的个数 */
int c=0;
char xz;
system("cls");
dns=qushu();
printf("电脑数:%d\n",dns);
s[1]=dns/1000;
s[2]=dns/100%10;
s[3]=dns/10%10;
s[4]=dns%10;
/* 输入一个随机的四位数 */
/* 猜这个四位数 */
//printf("\n从0~9中选择4个不重复的数:\n ");
printf("(你只有10次猜的机会)\n");
while (c<10&&a<4)
{
a=0;b=0;
printf("请玩家输入是一个四位数:\n");
scanf("%d",&sc);
while(sc<1000||sc>9999)
{
printf("请玩家输入是一个四位数:\n");
scanf("%d",&sc);
}
c++;
t[1]=sc/1000;
t[2]=sc/100%10;
t[3]=sc/10%10;
t[4]=sc%10;
for (i=1;i<=4;i++) /* 比较数组s[]和t[] */
{
for (j=1;j<=4;j++)
{
if (s[i]==t[j])
if (i==j)
a++;
else
b++;
}
}
printf("位置和数值正确:%d,数值正确位置错误:%d,已猜%d次.\n",a,b,c);
if (a==4)
{
getchar();
printf("确认要保存记录请按'y',任意键返回...!\n");
scanf("%c",&xz);
if (xz=='y'||xz=='Y') addrec(c);
}
}
}
void addrec(int c) //判断并且增加记录
{
FILE *fp;
char name[10];
PLAYER pl[7];
int i,n=1;
printf("请输入玩家姓:");
scanf("%s",name);
strcpy(pl[1].Name,name);
pl[1].Score=c;
fp=fopen("E:\\record.txt","r");
while (!feof(fp))
{
n++;
fscanf(fp,"%s %d",pl[n].Name,&pl[n].Score);
}
fclose(fp);
void read() //读取记录文件
{
FILE *fp;
fp=fopen("E:\\record.txt","rb");
if(fp==NULL)
{
printf("读取失败");
//初始化
}
else (fread(&pl[i].Name,sizeof(player),MAX,fp))
{ fclose(fp);
printf("%S\n",PLAYER);
}
}
//写入文件
fp=fopen("E:\\record.txt","w");
if (n>5) n=5;
for (i=1;i<n;i++)
fprintf(fp,"%s %d\n",pl[i].Name,pl[i].Score);
fclose(fp);
}
void main()
{
int xh;
while(1)
{
system("cls");
printf("1 猜数\n");
printf("2 排行榜\n");
printf("0 退出\n");
printf("请输入序号:");
scanf("%d",&xh);
switch(xh)
{
case 1:guess();break;
case 2:read();break;
case 0:exit(0);break;
}
}
}
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include<windows.h>
#include<string.h>
#define MAX 6
void read();
typedef struct player
{
char Name[20]; /*玩家姓名 */
int Score; /*玩家成绩,猜测次数 */
} PLAYER;
int qushu() /*取数函数*/
{
int a=0; int b=0;
int i=0;
srand( (unsigned)time( NULL ) ); /*随机数种子设置 */
a=rand();
while (a<999||a>10000)
a=rand();
return(a);
}
void guess()
{
void addrec(int a);
int s[5],dns; /*存放电脑随机产生的数*/
int t[5],sc; /*存放玩家输入的数*/
int i,j;
int a,b; /* a位置和数值都正确的个数 b数值正确位置不正确的个数 */
int c=0;
char xz;
system("cls");
dns=qushu();
printf("电脑数:%d\n",dns);
s[1]=dns/1000;
s[2]=dns/100%10;
s[3]=dns/10%10;
s[4]=dns%10;
/* 输入一个随机的四位数 */
/* 猜这个四位数 */
//printf("\n从0~9中选择4个不重复的数:\n ");
printf("(你只有10次猜的机会)\n");
while (c<10&&a<4)
{
a=0;b=0;
printf("请玩家输入是一个四位数:\n");
scanf("%d",&sc);
while(sc<1000||sc>9999)
{
printf("请玩家输入是一个四位数:\n");
scanf("%d",&sc);
}
c++;
t[1]=sc/1000;
t[2]=sc/100%10;
t[3]=sc/10%10;
t[4]=sc%10;
for (i=1;i<=4;i++) /* 比较数组s[]和t[] */
{
for (j=1;j<=4;j++)
{
if (s[i]==t[j])
if (i==j)
a++;
else
b++;
}
}
printf("位置和数值正确:%d,数值正确位置错误:%d,已猜%d次.\n",a,b,c);
if (a==4)
{
getchar();
printf("确认要保存记录请按'y',任意键返回...!\n");
scanf("%c",&xz);
if (xz=='y'||xz=='Y') addrec(c);
}
}
}
void addrec(int c) //判断并且增加记录
{
FILE *fp;
char name[10];
PLAYER pl[7];
int i,n=1;
printf("请输入玩家姓:");
scanf("%s",name);
strcpy(pl[1].Name,name);
pl[1].Score=c;
fp=fopen("E:\\record.txt","r");
while (!feof(fp))
{
n++;
fscanf(fp,"%s %d",pl[n].Name,&pl[n].Score);
}
fclose(fp);
void read() //读取记录文件
{
FILE *fp;
fp=fopen("E:\\record.txt","rb");
if(fp==NULL)
{
printf("读取失败");
//初始化
}
else (fread(&pl[i].Name,sizeof(player),MAX,fp))
{ fclose(fp);
printf("%S\n",PLAYER);
}
}
//写入文件
fp=fopen("E:\\record.txt","w");
if (n>5) n=5;
for (i=1;i<n;i++)
fprintf(fp,"%s %d\n",pl[i].Name,pl[i].Score);
fclose(fp);
}
void main()
{
int xh;
while(1)
{
system("cls");
printf("1 猜数\n");
printf("2 排行榜\n");
printf("0 退出\n");
printf("请输入序号:");
scanf("%d",&xh);
switch(xh)
{
case 1:guess();break;
case 2:read();break;
case 0:exit(0);break;
}
}
}