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;
}
展开
 我来答
windblast
推荐于2018-02-26 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13617
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部

改错,并经实际运行,结果如下图:

改错后,源代码如下:

#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;
}
ouyang1917
2018-02-26 · TA获得超过237个赞
知道小有建树答主
回答量:529
采纳率:66%
帮助的人:163万
展开全部
s=0
k+j<=x
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式