一道C语言改错题
某数列的前两项是3和2,其后续项是前面最后两项的乘积,按下列规则生成:(1)若乘积为一位数,则该乘积即为数列的后续项;(2)若乘积为两位数,则该乘积的十位数字和个位数字依...
某数列的前两项是3和2,其后续项是前面最后两项的乘积,按下列规则生成:(1)若乘积为一位数,则该乘积即为数列的后续项;(2)若乘积为两位数,则该乘积的十位数字和个位数字依次作为数列的两个后续项
例如:该数列的前10项为:3、2、6、1、2、2、4、8、3、2
函数sum按要求生成数列的前n(n<50)项,存入首指针为pa的数组中,计算并返回前n项的和
#include <stdio.h>
#define N 50
void sum(int n,int *pa)
{
int count, total,temp;
*pa=3;*++pa=2;
total=5; count=2;
while(count++<n)
{
temp=*(pa-1)**pa;
if(temp<10)
{
total+=temp; *(++pa)=temp;
}
else
{*++pa=temp/10;
total+=*pa;
if(count<n){count++; *pa++=temp%10; total=*pa;}
}
}
return total;
}
main()
{ int tol,n,I,num[n];
do
{
printf(“Input n=?(2<n<50)”);
scanf(“%d”,&n);
}while(n<=2||n>=50);
tol=sum(N,num);
for(i=0;i<n;i++)
printf((i+1)%5?”%5d”:”%5d\n”,num[i]);
printf(“\n”);
printf(“%d”,tol);
} 展开
例如:该数列的前10项为:3、2、6、1、2、2、4、8、3、2
函数sum按要求生成数列的前n(n<50)项,存入首指针为pa的数组中,计算并返回前n项的和
#include <stdio.h>
#define N 50
void sum(int n,int *pa)
{
int count, total,temp;
*pa=3;*++pa=2;
total=5; count=2;
while(count++<n)
{
temp=*(pa-1)**pa;
if(temp<10)
{
total+=temp; *(++pa)=temp;
}
else
{*++pa=temp/10;
total+=*pa;
if(count<n){count++; *pa++=temp%10; total=*pa;}
}
}
return total;
}
main()
{ int tol,n,I,num[n];
do
{
printf(“Input n=?(2<n<50)”);
scanf(“%d”,&n);
}while(n<=2||n>=50);
tol=sum(N,num);
for(i=0;i<n;i++)
printf((i+1)%5?”%5d”:”%5d\n”,num[i]);
printf(“\n”);
printf(“%d”,tol);
} 展开
3个回答
展开全部
#include <stdio.h>
#define N 50
int sum(int n,int *pa) //
{
int count, total,temp;
*pa=3;*++pa=2;
total=5; count=2;
while(count++<n)
{
temp=*(pa-1)*(*pa);//
if(temp<10)
{
total+=temp; *(++pa)=temp;
}
else
{*++pa=temp/10;
total+=*pa;
*(++pa)=temp%10;//
total+=*pa;
//if(count<n){count++; *pa++=temp%10; total=*pa;}
}
}
return total;
}
main()
{ int tol,n,i,num[N];//
do
{
printf("Input n=?(2<n<50)"); //
scanf("%d",&n);
}while(n<=2||n>=50);
tol=sum(n,num); //
for(i=0;i<n;i++)
printf((i+1)%5?"%5d":"%5d\n",num[i]);
printf("\n");
printf("%d",tol);
}
编译通过啦,给分撒
#define N 50
int sum(int n,int *pa) //
{
int count, total,temp;
*pa=3;*++pa=2;
total=5; count=2;
while(count++<n)
{
temp=*(pa-1)*(*pa);//
if(temp<10)
{
total+=temp; *(++pa)=temp;
}
else
{*++pa=temp/10;
total+=*pa;
*(++pa)=temp%10;//
total+=*pa;
//if(count<n){count++; *pa++=temp%10; total=*pa;}
}
}
return total;
}
main()
{ int tol,n,i,num[N];//
do
{
printf("Input n=?(2<n<50)"); //
scanf("%d",&n);
}while(n<=2||n>=50);
tol=sum(n,num); //
for(i=0;i<n;i++)
printf((i+1)%5?"%5d":"%5d\n",num[i]);
printf("\n");
printf("%d",tol);
}
编译通过啦,给分撒
展开全部
下面程序正确:
#include <stdio.h>
#define N 50
int sum(int n,int pa[]){
int i,total,temp;
pa[0]=3;pa[1]=2;
total=5;
i=1;
while(i<n-1){
temp=pa[i-1]*pa[i];
if (temp>9){
i++;
pa[i]=temp/10;
total+=pa[i];
temp%=10;
}
i++;
pa[i]=temp;
total+=pa[i];
}
return total;
}
main(){
int tol,n,i,num[N];
do{
printf("Input n=?(2<n<%d)", N);
scanf("%d",&n);
}while(n<=2 || n>=N);
tol=sum(n,num);
for(i=0;i<n;i++)
printf((i+1)%5?"%5d":"%5d\n",num[i]);
printf("\nsum=%d\n",tol);
}
#include <stdio.h>
#define N 50
int sum(int n,int pa[]){
int i,total,temp;
pa[0]=3;pa[1]=2;
total=5;
i=1;
while(i<n-1){
temp=pa[i-1]*pa[i];
if (temp>9){
i++;
pa[i]=temp/10;
total+=pa[i];
temp%=10;
}
i++;
pa[i]=temp;
total+=pa[i];
}
return total;
}
main(){
int tol,n,i,num[N];
do{
printf("Input n=?(2<n<%d)", N);
scanf("%d",&n);
}while(n<=2 || n>=N);
tol=sum(n,num);
for(i=0;i<n;i++)
printf((i+1)%5?"%5d":"%5d\n",num[i]);
printf("\nsum=%d\n",tol);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先 , sum的定义错了, 你是希望它返回个和的,可是定义成 void sum了
然后main定义没写返回值 , 应该是 void main()或者 int main()
然后 int num[n]这是不行的, 定义数组时必须在编译期间确定长度, n是个变量,编译期间确定不了,所以不能用它做初始化
然后main定义没写返回值 , 应该是 void main()或者 int main()
然后 int num[n]这是不行的, 定义数组时必须在编译期间确定长度, n是个变量,编译期间确定不了,所以不能用它做初始化
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询