下面是一个C语言程序示例,它接收一个4位整数,然后计算各位数之和和各位数的平方和,并继续这个过程直到平方和小于10为止:
#include <stdio.h>
int main() {
int number, sum, squareSum, digit;
// 输入一个4位整数
printf("Enter a 4-digit integer: ");
scanf("%d", &number);
// 如果输入的不是4位数,处理错误
if (number < 1000 || number > 9999) {
printf("The number is not a 4-digit integer.\n");
return 1;
}
// 初始化和与平方和
sum = 0;
squareSum = 0;
while (squareSum >= 10) {
// 计算各位数之和与各位数的平方和
while (number > 0) {
digit = number % 10; // 获取最低位数字
sum += digit; // 加到各位数之和
squareSum += digit * digit; // 加到各位数的平方和
number /= 10; // 移除最低位数字
}
// 输出结果
printf("Sum of digits: %d\n", sum);
printf("Sum of squares of digits: %d\n", squareSum);
// 重置sum和number,以便进行下一轮计算
sum = 0;
number = squareSum; // 将平方和作为下一个计算的数字
squareSum = 0; // 重置平方和
// 输出新的数字
printf("Next number: %d\n", number);
// 如果平方和小于10,退出循环
if (squareSum < 10) {
break;
}
}
// 输出最终结果
printf("Sum of digits: %d\n", sum);
printf("Final sum of squares of digits: %d\n", squareSum);
return 0;
}
这个程序首先提示用户输入一个4位整数。然后,它使用两个while循环:外层循环负责重复计算直到平方和小于10,内层循环负责计算每个数字的各位数之和和平方和。在每次外层循环结束时,程序会输出当前的各位数之和和平方和,并将平方和作为下一个数字重新计算,直到平方和小于10。
请注意,如果输入的数字不是4位数,程序将输出错误消息并返回。
这段代码可以直接复制到C/C++编译器中进行编译和执行。