沈阳航空航天大学习题的整理,仅供参考。
1.完数判断程序
【问题描述】一个数如果恰好等于它的真因子之和,这个数就称为"完数"。例如,6的真因子有1、2、3,而6=1+2+3,因此6是"完数"。从键盘输入一个正整数m,判断其是否是完数,并按下面格式输出判断结果:
1、m是完数:6=1+2+3
2、m不是完数,真因子之和小于m:4>1+2
2、m不是完数,真因子之和大于m:12<1+2+3+4+6
【输入形式】输入正整数m。
【输出形式】判断m是否为完数并输出可能的结果。
【样例输入】6
【样例输出】6=1+2+3
【样例输入】4
【样例输出】4>1+2
【样例输入】12
【样例输出】12<1+2+3+4+6
#include <stdio.h>
int main()
{
int n, i, sum = 0;
scanf("%d", &n);
for (i = 1; i < n; i++)
{
if (n % i == 0)
sum += i;
}
if (n == sum)
{
printf("%d=1", n);
for (i = 2; i < n; i++)
{
if (n % i == 0)
printf("+%d", i);
}
}
else if (n > sum)
{
printf("%d>1", n);
for (i = 2; i < n; i++)
{
if (n % i == 0)
printf("+%d", i);
}
}
else if (n < sum)
{
printf("%d<1", n);
for (i = 2; i < n; i++)
{
if (n % i == 0)
printf("+%d", i);
}
}
return 0;
}
2.整数反序输出
【问题描述】输入一个正整数m,将该数反序输出,如1234,反序输出为4321。
【输入形式】输入正整数m。
【输出形式】反序输出m。
【样例输入】1234
【样例输出】4321
【样例输入】100
【样例输出】1
#include <stdio.h>
int main()
{
int a, b, sum = 0;
scanf("%d", &a);
b = a;
while (b != 0)
{
sum = sum * 10 + b % 10;
b = b / 10;
}
printf("%d", sum);
return 0;
}
3.某序列求和
【问题描述】从键盘输入正整数 n,编程实现序列 2/1,3/2,5/3,8/5,13/8,21/13 ...... 的前 n 项之和。
【输入形式】输入正整数 n。
【输出形式】输出求和结果,保留小数点后两位。
【样例输入】1
【样例输出】2.00
【样例输入】25
【样例输出】40.75
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;
double sum = 0;
scanf("%d", &n);
int i;
double x = 2, y = 1, t;
for (i = 1; i <= n; i++)
{
sum += x / y;
t = x; //把分子的值赋给t
x = y + x; //把x+y的值赋给分母x
y = t; //把t的值赋给分子
}
printf("%.2lf", sum);
return 0;
}
4.求多项式 1+2+3+...+n 的前n项之和
【问题描述】求多项式 1+2+3+...+n 的前n项之和。n值由键盘输入(n不大于100)。
【输入形式】1个整数
【输出形式】1个整数
【样例输入】3
【样例输出】6
#include <iostream>
#include <stdio.h>
int main()
{
int i, n, sum;
sum = 0;//1
scanf("%d", &n);
for (i = 1; i <= n; i++)
sum = sum + i;//2
printf("%d", sum);
return 0;
}
5.求水仙花数的个数
【问题描述】输出区间[a, b]内所有水仙花数的个数。(水仙花数指一个三位数其各位的立方和等于该数,如:153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3。)
【输入形式】包含2个正整数a, b(a <= b; 例如:[100, 999])
【输出形式】输出区间[a, b]内的所有水仙花数个数
【样例输入】100 200
【样例输出】1
#include<stdio.h>
int main()
{
int m, n, a, b, c, i = 0;
scanf("%d%d", &m, &n);
while (m <= n)
{
a = m / 100;
b = m % 100 / 10;
c = m % 10;
if (m == a * a * a + b * b * b + c * c * c)
i++;
m++;
}
printf("%d\n", i);
return 0;
}