在前面我要说一下,我写的时候是在VS2017上写的,有些代码可能需要读者自己改一下(我尽量不出现这样的错误吧),另外我也是边写边改,上面有很多注释掉的是草稿,(emmmm就是因为我太菜了所以要弄成这样)当然,这些程序放PTA上面肯定是可以过的(如有例外还请读者大老爷提出意见和建议,留言)
欢迎交流试题答案(如有我未写到的可以补充噢,我会注明提供源的)
7-1 【C0139】输出所有的水仙花数 (10分)
若一个三位数等于其各位上数字的立方和,则称这个三位数为水仙花数。编写一个程序,输出所有的水仙花数。
输入格式:
无输入
输出格式:
按照从小到大的顺序输出所有水仙花数,一行输出一个数。
输入样例:
在这里给出一组输入。例如:
输出样例:
在这里给出相应的输出。例如:
153
370
371
407
#include <stdio.h>
#include <math.h>
int main()
{
int i, g, s, b, sum;
for (i = 100; i <= 999; i++)
{
g = i % 10;//取个位数
s = (i / 10) % 10;//取十位数
b = i / 100;//取百位数
sum = pow(g, 3) + pow(s, 3) + pow(b, 3);//求和
if (i == sum)
{
printf("%d\n", i); }
}
return 0;}
7-2 【C0140】输入两个整数,用辗转相除法计算其最大公约数和最小公倍数 (10分)
编写一个程序,输入两个整数,用辗转相除法计算其最大公约数和最小公倍数。
输入格式:
在一行中输入两个以逗号为间隔的整数。
输出格式:
以逗号为间隔输出这两个整数的最大公约数和最小公倍数。
输入样例:
在这里给出一组输入。例如:
24,36
输出样例:
在这里给出相应的输出。例如:
12,72
#include "stdio.h"
#include "math.h"
int main()
{
int a, b,c,A,B;
scanf("%d,%d", &a, &b);
A = a; B = b;//保留原数值
if (a <= b)
{
a = a; b = b;}
else
{
c = a; a = b; b = c;}
while (a>0)
{
c = b % a;
b = a; a = c;
}
printf("%d,%d", b, A*B / b);
return 0;
}
7-3 【C0141】计算阶乘和 (10分)
编写一个程序,计算s=1!+2!+3!+…+n!。其中!为阶乘运算,n由输入决定。
输入格式:
输入正整数n。
输出格式:
输出1!+2!+3!+…+n!的值。
输入样例:
在这里给出一组输入。例如:
3
输出样例:
在这里给出相应的输出。例如:
9
#include "stdio.h"
#include "math.h"
int main