c语言改错题
二、改错题【程序功能】给出一个正整数n,查找满足以下条件的所有序列(1)每个序列由连续的小于n的自然数组成;(2)每个序列的全部数据项之和等于n。如果能找到这样的序列,则...
二、改错题
【程序功能】
给出一个正整数n,查找满足以下条件的所有序列(1)每个序列由连续的小于n的自然数组成;
(2)每个序列的全部数据项之和等于n。
如果能找到这样的序列,则输出所有找到的序列;
如果找不到满足条件的序列,则输出“not found”。
【测试数据与运行结果】
输入:30
输出:
3 serials
4 5 6 7 8
6 7 8 9
9 10 11
#include<conio.h>
#include<stdio.h>
int found(int a[][],int n)
{
int i, j, s, k, x;
for(i=0,k=1;k<=n; k++ )
{
s=1;
x=k;
for(;x<n;x++)
{
s+=x;
if(s>=n) break;
}
if(s==n)
{
for(j=0;k+j<x;j++)
a[i][j]=k+j;
i++;
}
}
return i;
}
int main()
{
int a[10][30]={0};
int i,j,n,m;
printf("n=");
scanf("%d",n);
m=found(a,n);
if(m>0)
{
printf("%d serials \n",m);
for(i=0;i<m;i++)
{
for(j=0; a[i][j]!=0 ;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
else
printf("not found\n");
getch();
return 0;
} 展开
【程序功能】
给出一个正整数n,查找满足以下条件的所有序列(1)每个序列由连续的小于n的自然数组成;
(2)每个序列的全部数据项之和等于n。
如果能找到这样的序列,则输出所有找到的序列;
如果找不到满足条件的序列,则输出“not found”。
【测试数据与运行结果】
输入:30
输出:
3 serials
4 5 6 7 8
6 7 8 9
9 10 11
#include<conio.h>
#include<stdio.h>
int found(int a[][],int n)
{
int i, j, s, k, x;
for(i=0,k=1;k<=n; k++ )
{
s=1;
x=k;
for(;x<n;x++)
{
s+=x;
if(s>=n) break;
}
if(s==n)
{
for(j=0;k+j<x;j++)
a[i][j]=k+j;
i++;
}
}
return i;
}
int main()
{
int a[10][30]={0};
int i,j,n,m;
printf("n=");
scanf("%d",n);
m=found(a,n);
if(m>0)
{
printf("%d serials \n",m);
for(i=0;i<m;i++)
{
for(j=0; a[i][j]!=0 ;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
else
printf("not found\n");
getch();
return 0;
} 展开
2个回答
推荐于2018-02-26 · 知道合伙人软件行家
关注
展开全部
改错,并经实际运行,结果如下图:
改错后,源代码如下:
#include<conio.h>
#include<stdio.h>
//int found(int a[10][30],int n) //错误,弹出错误 [Error] type of formal parameter 1 is incomplete
int found(int a[10][30],int n) //改错
{
int i, j, s, k, x;
//for(i=0, k=1; k<=n; k++) //修改
i=0; //此处修改,但不算错误
for(k=1; k<=n; k++)
{
//s=1; //错误
s=0; //改错,累加器,初始值为0
x=k;
for(;x<n;x++)
{
s+=x;
if(s>=n) break;
}
if(s==n)
{
//for(j=0;k+j<=x;j++) //错误,丢失最后1个元素
for(j=0;k+j<=x;j++) //改错
a[i][j]=k+j;
i++;
}
}
return i;
}
int main()
{
int a[10][30]={0};
int i,j,n,m;
printf("n=");
//scanf("%d",&n); 错误
scanf("%d",&n); //改错:n --> &n
m = found(a,n);
if(m>0)
{
printf("%d serials \n",m);
for(i=0;i<m;i++)
{
for(j=0; a[i][j]!=0 ;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
else
printf("not found\n");
getch();
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询