年号中每个数之和是20的是特殊年号,例如2099。编写程序输出1000~5000之间所有的特殊年号,要求每行显示五个特殊年号
迭代法修改
#include <stdio.h>
int func(int year,int start){
if(year == 1){
return start;
}
return func( (year - 1) ,start) + 5;
}
int main(){
int result = func(20 , 20 % 5 + 5);
cout<<result<<endl;
return 0;
}
公式法修改
#include <stdio.h>
int func(int year,int start){
int result = (year - start)*(year - start)/10;
return result;
}
int main(){
int result = func(20, 20 % 5 + 5);
cout<<result<<endl;
return 0;
}
直接看代码:
#include <stdio.h>
int sum_of_digits(int num);
int main() {
int year;
int count = 0; // 计数器,每行显示五个特殊年号
printf("1000~5000之间的特殊年号如下:\n");
for (year = 1000; year <= 5000; year++) {
if (sum_of_digits(year) == 20) { // 判断是否是特殊年号
printf("%d\t", year);
count++;
if (count % 5 == 0) { // 每行显示五个特殊年号
printf("\n");
}
}
}
return 0;
}
// 计算一个整数的各个数字之和
int sum_of_digits(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
这个程序定义了一个名为sum_of_digits的函数,该函数接受一个整数作为输入,计算该整数的各个数字之和,并返回结果。
在主函数中,我们使用了一个for循环,遍历1000~5000之间的每一个年号。对于每个年号,我们调用sum_of_digits函数计算它的各个数字之和,判断是否等于20,如果是,就输出这个年号,并将计数器加1。当计数器达到5时,我们就输出一个换行符,以实现每行显示五个特殊年号的要求。
还定义了一个计数器count,用于记录当前行已经输出了几个特殊年号。每输出一个特殊年号,我们就将计数器加1,当计数器达到5时,就输出一个换行符,并将计数器清零。