c语言,两个题目

来源:百度知道 编辑:UC知道 时间:2024/06/25 00:03:44
1,输出2.3.4位ARMSRONGSHU
2. 1,2,5,10,21,42,85,170,342,682。。。要求将数列延长至50项。并以5个一行输出。
我写的那里有问题~~想不通想不通阿
1。
void main()
{
int a,b,i,s;
for(i=10;i<9999;i++);
{
while(i)
{ a=i%10;
s=s+a*a;
i/=10;
}
if (s==i) printf("%d",i);
}
getch();
}
2。
#include<stdio.h>
void main()
{float a[50];
int i;
a[0]=1;
for(i=0;i<=49;i++)
{ if((i+1)%2==0) a[i+1]=2*a[i];
else a[i+1]=2a[i]+1;

if ((i+10)%5==0)printf("\n");
printf(" %d",a[i]);
}
getch();
}
有个地方打错了倒数第三句是(i+1)%5

1、楼主是要求阿姆斯特朗数么?如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数。楼主的求数公式错误。a=i%10,a永远求的是十位数,千位和百位,个位就求不出来了,而且应该是立方和。
2、拆分成两个数列:
float a[50];
int i;
a[0]=1;
a[1]=2;
for(i=2;i<50;i++){
if(i%2==0)
a[i]=2*a[i-1]+1;
else
a[i]=2*a[i-1]+1;
}
for(i=0;i<50;i++) {
if(i%5==0)
printf("\n");
printf("%f ",a[i]);
}
输出a[i]时候注意要用%f ,另外输出不能卸载循环里面。