
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
//求位数
void fun(int n,int buf[],int *m)
{
int i = 0;
while(n > 0)
{
buf[i] = n%10;
n /= 10;
i++;
}
*m = i;
}
int main()
{
int n;//输入的整数
int buf[10] ={0};//存储各位数字
int nmb = 0; //位数
int i,j;
int sz[10]; //存储(4)中的数字
int sznmb = 0;
int sum = 0;//(5)求n的各位数字之和
printf("请输入n:");
scanf("%d",&n);
//(1)
fun(n,buf,&nmb);
printf("%d是一个%d位数,各位数字分别为:\n",n,nmb);
//(2)
for (i = nmb-1;i>= 0;i--)
{
printf("%d ",buf[i]);
}
//(3)
printf("\n逆序输出数字:");
for(i = 0;i<nmb;i++)
printf("%d",buf[i]);
printf("\n");
//(4)
sznmb = 0;
for (i = 1;;i++)
{
if( i * i < n)
sz[sznmb++] = i;
else
break;
}
for (j = 0; j < sznmb;j++)
{
if(j < sznmb -1)
printf("%d、",sz[j]);
else
printf("%d\n",sz[j]);
}
//(5)求n各位数字的和
for (i = 0;i<nmb;i++)
{
sum += buf[i];
}
printf("%d的各位数字之和等于%d\n",n,sum);
return 0;
}