先来看三位整数,举个例子,如123,求其百位为123除以100的商,十位为123除以100的余数(即23)再除以10的商,个位为123除以100的余数(即23)再除以10的余数。
那么,上代码!!!
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num; //num是从键盘输入的三位数
int hun,ten,one; //hun,ten,one分别表示该三位数的百位,十位,个位
int sum; //sum表示百位、十位、个位数字之和
printf("请输入这个三位整数:");
scanf("%d",&num);
hun = num/100;
ten = (num%100)/10;
one = (num%100)%10;
sum = hun + ten + one;
printf("这个三位数的百位是%d,十位是%d,个位是%d\n",hun,ten,one);
printf("这个三位数百位、十位、个位数字之和为%d\n",sum);
}
运行结果举例如下:
依次类推,四位整数五位整数都应该可以写出来了,那么扩展到n位整数,这个时候显然不可能一位位列出来算,所以要用到循环了,那么直接上代码!!!
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n; //n是所输入的数字位数
int num; //num是从键盘输入的n位整数
int sum = 0; //sum表示各位数之和
int mul;
printf("请输入该正整数位数及其大小(中间用空格分开):");
scanf("%d %d",&n,&num);
printf("该%d位正整数各位数从高位到低位依次为:",n);
int temp_q, temp_r;
for(int i=n-1; i>0; i--){
mul = 1;
for(int j=0; j<i; j++){
mul = mul*10;
}
temp_q = num/mul;
temp_r = num%mul;
num = temp_r;
printf("%d ",temp_q);
sum += temp_q;
if(mul == 10) {
printf("%d\n",temp_r);
sum += temp_r;
}
}
printf("这个%d位数各位数和为%d\n",n,sum);
}
运行结果举例如下:
噢,再加一句,我的编译环境是codeblocks。
OK,那么到这里这个问题就解决了,还有什么问题或者更好的方法欢迎交流哦!