还有一道题,..我就是不明白各位数字怎么求和编写一个程序,从键盘输入n个非零整数(0 < n < 1000),将这n个数中每个数的各位数字取出来相加,并按照从小到大的次序依次输出这些数字和.例如,
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/14 23:32:30
还有一道题,..我就是不明白各位数字怎么求和
编写一个程序,从键盘输入n个非零整数(0 < n < 1000),将这n个数中每个数的各位数字取出来相加,并按照从小到大的次序依次输出这些数字和.例如,497的各位数字和为20(4+9+7),1069的各位数字和为16(1+0+6+9).
输入格式说明:一组数据,输入的整数之间以空格分隔,输入为0时表示数据结束(0不算作有效数据).
输出格式说明:在一行上从小到大输出计算结果,整数之间用空格分隔,最后换行.
输入示例:
497 1069 68 71 137 0
输出示例:
8 11 14 16 20
#include
void main()
{
\x05int a[100];
\x05int b[100];
\x05int i = 0;
\x05int j,k,temp;
\x05do
\x05{
\x05\x05scanf("%d",&a[i]);
\x05\x05i++;
\x05} while (a[i - 1] != 0);
\x05for (j = 0; j != i - 1; ++j)
\x05{
\x05\x05b[j] = 0;
\x05\x05while (a[j])
\x05\x05{
\x05\x05\x05b[j] += a[j] % 10;
\x05\x05\x05a[j] /= 10;
\x05\x05}
\x05}
\x05for (k = 0; k != i - 1; ++k)
\x05{
\x05\x05for (j = k; j != i - 1; ++j)
\x05\x05{
\x05\x05\x05if (b[k] > b[j])
\x05\x05\x05{
\x05\x05\x05\x05temp = b[k];
\x05\x05\x05\x05b[k] = b[j];
\x05\x05\x05\x05b[j] = temp;
\x05\x05\x05}
\x05\x05}
\x05}
\x05for (j = 0; j != i - 1; ++j)
\x05{
\x05\x05printf("%d ",b[j]);
\x05}
\x05printf("\n");
}
设计的时候直接用字符型的
像497可以储存为字符‘4’ ‘9’ ‘7’,再用ascll码翻译成数字