判断数度是否正确的c语言程序5
发布网友
发布时间:2023-11-27 06:03
我来回答
共1个回答
热心网友
时间:2023-12-20 06:17
#include<stdio.h>
#define N 3
bool rowtest(int n[])
{
int i,j;
int num;
int no_exist=0;
for(i=0;i<N*N;i+=N)
{
for(num=1;num<N+1;num++)
{
for(j=i;j<i+N;j++)
{
if(num!=n[j])
no_exist++;
if(no_exist==N)
return 0;
}
no_exist=0;
}
}
return 1;
}
bool coltest(int n[])
{
int i,j;
int num;
int no_exist=0;
for(i=0;i<N;i++)
{
for(num=1;num<N+1;num++)
{
for(j=i;j<i+N*N;j+=N)
{
if(num!=n[j])
no_exist++;
if(no_exist==N)
return 0;
}
no_exist=0;
}
}
return 1;
}
void main()
{
int n;
int i;
int j;
char c;
int finish=0;
int realnum=0;
int num[N*N]={0};
printf("\n请输入测试的数据组数:\n\n");
scanf("%d",&n);
getchar();
printf("输入的数据只能是1-%d,输入只取前%d个数\n\n",N,N*N);
for(i=1;i<=n;i++)
{
printf("第%d组数据如下:\n\n",i);
while(1)
{
c=getchar();
if(c>='1'&&c<=(char)(N+48))
{
num[finish]=c-48;
finish++;
}
realnum++;
if(realnum==N*(N+1))
break;
}
for(j=0;j<N*N;j++)
{
if(!num[j])
{
printf("输入有误!\n\n");
return;
}
}
if(rowtest(num)&&coltest(num))
printf("yes\n\n");
else
printf("no\n\n");
}
}
由于输入81个数进行检测很麻烦,所以只用了3*3的数据。你可以将N改为9,即可满足要求。追问第二组数据测试输入时是个死循环的。。。
追答#include
#define N 9
bool rowtest(int n[])
{
int i,j;
int num;
int no_exist=0;
for(i=0;i='1'&&c<=(char)(N+48))
{
num[finish]=c-48;
finish++;
}
realnum++;
if(realnum==N*(N+1))
break;
}
for(j=0;j<N*N;j++)
{
if(!num[j])
{
printf("输入有误!\n\n");
return;
}
}
if(rowtest(num)&&coltest(num))
printf("yes\n\n");
else
printf("no\n\n");
}
}