沈阳航空航天大学习题的整理,仅供参考。
1.九九乘法表
【问题描述】输出乘法表。
【输入形式】输入要输出的乘法表行数。
【输出形式】输出相应的乘法表。
【样例输入】3
【样例输出】
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
【样例说明】
1、输入的整数应在1-9之间;
2、输出同一行的两个算式之间用两个空格隔开。
#include<stdio.h>
int main()
{
int i, h, l;
scanf("%d", &h);
for (i = 1; i <= h; i++)
{
for (l = 1; l <= i; l++)
printf("%d*%d=%d ", l, i, i * l);
printf("\n");
}
return 0;
}
2.判断强数
【问题描述】强数(strong number)的意思就是,一个正整数的各位阶乘之和等于它自身。输入任一个正整数,判断它是否是强数,是则输出'y',否则'n'。
【输入形式】一个正整数
【输出形式】y||n
【样例1输入】145
【样例1输出】y
【样例2输入】200
【样例2输出】n
#include <iostream>
#include <stdio.h>
int main()
{
int n, i, p, sum, t;
scanf("%d", &n);
t = n;
while (t != 0)
{
p = t % 10;
for (i = p - 1; i > 1; i--)
p = p * i;
sum += p;
t /= 10;
}
if (n == sum)
printf("y");
else printf("n");
return 0;
}
3.取任意个红白黑球,共有多少种解决方案?
【问题描述】从3个红球、5个白球和6个黑球中任意取出M个球,其中必须至少有1个红球,输出共有多少种可能方案。
【输入形式】输入整数M
【输出形式】解决方案的数目sum或错误信息”The value of M is wrong!"
【样例输入】8
【样例输出】sum=17
【样例输入】1
【样例输出】sum=1
【样例输入】-2
【样例输出】The value of -2 is wrong!
【样例输入】0
【样例输出】The value of 0 is wrong!
【样例输入】15
【样例输出】The value of 15 is wrong!
#include<stdio.h>
int main()
{
int M, h, b, e, sum = 0;
scanf("%d", &M);
if (M < 1 || M > 14)
printf("The value of %d is wrong!", M);
else
{
for (h = 1; h <= 3; h++)
for (b = 0; b <= 5; b++)
for (e = 0; e <= 6; e++)
if (h + b + e == M)
sum++;
printf("sum=%d", sum);
}
return 0;
}
4.求 [2,n] 区间所有素数之和
【问题描述】输入不小于2的正整数n,求 [2,n] 区间所有素数之和。其中n不大于100。
【输入形式】1个整数
【输出形式】1个整数
【样例输入】5
【样例输出】10
(1)使用sqrt
#include <iostream>
#include <stdio.h>
#include <math.h>
int main()
{
int m, i, k, n, sum = 0;
scanf("%d", &n);
for (m = 2; m <= n; m++)//1
{
k = sqrt((double)m);
for (i = 2; i <= k; i++)
if (m % i == 0)
break;//2
if (i >= k + 1)
sum = sum + m;
}
printf("和是%d", sum);
return 0;
}
(2)不使用sqrt
#include<stdio.h>
int main()
{
int n, i, k, sum = 0;
scanf("%d", &n);
for (i = 2; i <= n; i++)
{
for (k = 2; k < i; k++)
{
if (i % k == 0)//不是素数
break;
}
if (k == i)//是素数
sum += i;
}
printf("%d", sum);
return 0;
}
5.百钱百鸡问题
【问题描述】原始题目:一只公鸡 5 文钱,一只母鸡 3 文钱,三只小鸡 1 文钱,用 100 文钱买 100 只鸡,请问公鸡,母鸡,小鸡各多少只?现要求钱数和要买的鸡的数量由键盘输入,列举出所有可能的购买情况。
【输入形式】输入两个正整数 m 和 c,分别表示准备的钱数和要买的鸡的总量。
【输出形式】输出所有可能的购买情况(每种购买情况占一行,按照公鸡数量递增显示;每行显示顺序为公鸡数量、母鸡数量、小鸡数量;不考虑无解情况)。
【样例输入】100 100
【样例输出】备注:输出时行与行之间无空行。
cock=4 hen=18 chicken=78
cock=8 hen=11 chicken=81
cock=12 hen=4 chicken=84
【样例说明】友情提示:购买方案不会出现 0 只,小鸡数量一定是 3 的倍数。可以用三重循环,但也完全可以用二重循环!
#include<stdio.h>
int main()
{
int m, c, cock, hen, chicken;
scanf("%d%d", &m, &c);
for (cock = 1; cock <= m / 5; cock++)
{
for (hen = 1; hen <= m / 3; hen++)
{
chicken = c - cock - hen;
if (5 * cock + 3 * hen + chicken / 3 == m && chicken % 3 == 0)
printf("cock=%d hen=%d chicken=%d\n", cock, hen, chicken);
}
}
return 0;
}
6.组成三位数问题
【问题描述】1、2、3、4、5组成互不相同且无重复数字的三位数。
【输出形式】输出的三位数按由小到大排序,数据之间用两个空格隔开。
#include<stdio.h>
int main()
{
int g, s, b;
for (b = 1; b <= 5; b++)
for (s = 1; s <= 5; s++)
for (g = 1; g <= 5; g++)
if (b != s && s != g && b != g)
printf("%d ", b * 100 + s * 10 + g);
return 0;
}