集安未来15天天气预报:c 语言 这程序哪有问题?

来源:百度文库 编辑:高考问答 时间:2024/03/28 23:00:31
4个号码正确就结束,不对就继续写!

#include<stdio.h>
void main()
{
int a[4]={3,5,6,2},b[4],i,A=0,B=0,j;
printf("please inter four numbers :\n");
for(i=0;i<4;i++)
{scanf("%d",&b[i]);

for(i=0;i<4;i++)
{
while (a[i]==b[i])
{A++;continue;}
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
while (a[i]==b[j])
{B++;continue;}
}
}
}
printf("%dA %dB:\n",A,B);
while(A==4)
{printf("you are a hero\n");break;}
}
是个猜数字的游戏。都玩过吧?

输入可以这样:
for(i=0;i<4;i++)
{b[i]=getch();putchar(b[i]);b[i]-='0';//头文件要有conio.h
getch()输入不回显,加putchar(b[i]);使输入回显

你的外层循环用了i,内层循环还用i,这样就乱了

另外这里也有错:
for(i=0;i<4;i++)
{
while (a[i]==b[i]) //这里i始终为0,是死循环
{A++;continue;}
}
可以这样改:
for(i=0;i<4&&a[i]==b[i];i++)
{
A++;
}

没看明白你后面那个循环嵌套要做什么

总之你的程序没有语法错误,逻辑错误很严重
----------------------------------------------------------------
早说是猜数字啊,这样基本符合要求了:
#include<stdio.h>
void main()
{
int a[4]={3,5,6,2},b[4],i,A=0,B=0,j;
printf("please inter four numbers :\n");
while(1)
{
for(i=0;i<4;i++)
{
b[i]=getchar();b[i]-='0';
}
for(i=0;i<4;i++)
{
if(a[i]==b[i]) A++;
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(a[i]==b[j]) B++;
}
}
printf("%dA %dB:\n",A,B);
if(A==4) {printf("you are a hero\n");break;}
}
}

这个程序有严重的错误!
时间复杂度高!
而且在变量未初始化前使用变量,这也是不行的!

你的意思是要对输入的数据进行检查,但是这样做是否可行,算法有一点就是可行性!
比如你可以换成字符串?输入完了再判断!
或是四个数字输入完了再判断,在面向过程中要做到像keyPress的是很麻烦的!

你到底想干什么?没看懂,是想直到输入“3,5,6,2”后出现you are a hero吗?还是想实现别的什么功能?但最基本的你的循环嵌套很不规范,for循环里面套WHILE这种循环方式非常容易出错!而且在最开始的赋值上也有问题,你的计数器基本没有起到作用!建议改变循环语句!