C语言:重庆邮电大学2023 C语言考试试题-程序设计部分
题目:“含有5的整数之和问题”—从键盘输入一个数字n,计算1-n中所有含有5的整数之和
输入提示:"Input n(0<n<1000)\n" "%d"
输出提示:"%d\n"
部分函数已给出:
#include <stdio.h>
int main()
{
int sum = 0;
int i, n, b0, b1, b2;
printf("Input n(0<n<1000)\n");
scanf("%d", &n);
.........
printf("%d\n", sum);
return 0;
}
方法1:
#include <stdio.h>
int main()
{
int sum = 0;
int i, n, b0, b1, b2;
printf("Input n(0<n<1000)\n");
scanf("%d", &n);
b1 = 0;
b2 = 0;
for (i = 1; i <= n; i++)
{
if (i >= 1 && i <= 10)
{
if (i % 10 == 5)
{
b0 = i;//1-10之间只有5,赋值给b0
}
}
else if (i > 10 && i <= 100)
{
if (i / 10 == 5 || i % 10 == 5)//i/10 十位是5;i%10 个位是5
{
b1 = b1 + i;//10-100之间含有5的数字相加赋值给b1
}
}
else if (i > 100 && i < 1000)
{
if (i % 10 == 5 || i / 10 % 10 == 5 || i / 100 == 5)
//i/100 百位是5 i/10%10 十位是5;i%10 个位是5
{
b2 = b2 + i;
}
}
}
sum = b0 + b1 + b2;
printf("%d\n", sum);
return 0;
}
方法2:
#include <stdio.h>
int main()
{
int sum = 0;
int i, n, b0, b1, b2;
printf("Input n(0<n<1000)\n");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
if (i >= 1 && i <= 9)
{
b0 = i % 10;
b1 = 0;
b2 = 0;
}
else if (i >= 10 && i < 100)
{
b0 = i % 10;
b1 = i / 10;
b2 = 0;
}
else if (i >= 100 && i < 1000)
{
b0 = i % 10;
b2 = i % 100;
b1 = i / 10 - b2 * 10;
}
if (b0 == 5 || b1 == 5 || b2 == 5)
{
sum = sum + i;
}
}
printf("%d\n", sum);
return 0;
}