c程序 1 设计一个程序,输入123,返回1+2+3也就是三个数的和6,输入-123 也还是三个数的和,是6.
发布网友
发布时间:2022-11-27 18:41
我来回答
共4个回答
热心网友
时间:2023-10-18 00:27
//1 设计一个程序,输入123,返回1+2+3也就是三个数的和6,输入-123 也还是三个数的和,是6.
#include <stdio.h>
int add(int n)
{
int sum=0;
if(n<0) n=-n; //如果n为负数则取相反数
while(n)
{
sum+=n%10;//分离出n的最后一位,将其加到sum中,如123则分离出3加到sum中,sum=3
n=n/10;//将n的最后一位去掉,如123则此时n=12,回到循环继续判断
}
return sum;
}
int main(void)
{
int n,sum;
printf("请输入一个数:\n");
scanf("%d",&n);
sum=add(n);
printf("该数各位的和为:%d\n",sum);
return 0;
}
//2 设计程序, 输入123 ,返回321。 输入-123, 返回321
#include <stdio.h>
int reverse(int n)
{
int m=0;
if(n<0) n=-n;
while(n)
{
m=m*10+n%10;
n=n/10;
}
return m;
}
int main(void)
{
int n,m;
printf("请输入一个数:\n");
scanf("%d",&n);
m=reverse(n);
printf("该数反转后为:%d\n",m);
return 0;
}
热心网友
时间:2023-10-18 00:27
用一个数组存下这三个数,然后头尾两数互换,就可以完成换序输出!至于输出1、2、3之和,那就直接求和就好了啊!追问这是一个数,不是三个数
热心网友
时间:2023-10-18 00:28
通过abs 取数的绝对值,然后通过%求余,分离出个位,十位,百位,然后你想加就加 想转换就转换了。。。
热心网友
时间:2023-10-18 00:29
#include "stdio.h"//
#include "stdlib.h"//
void main(void){//
char a[11];
int n,nn,i,sum;
printf("请输入一个不大于10位的十进制整数...\nnDec=");
scanf("%d",&n);
nn=n<0 ? -n : n;
itoa(nn,a,10);
for(sum=i=0;a[i];sum+=(a[i++]-48));
printf("%d的各位之和是 %d.\n",n,sum);
}
还有个办法也挺好,你选一个吧——
void main(void){//
int n,nn,sum;
printf("请输入一个不大于10位的十进制整数...\nnDec=");
scanf("%d",&n);
nn=n<0 ? -n : n;
for(sum=0;nn;sum+=nn%10,nn/=10);
printf("%d的各位之和是 %d.\n",n,sum);
}
分少就别给了,不在意……