山科大 C言程序设计编程精选44例
问题 : 三个数比较大小
题目描述
从键盘上输入0~100之间的三个数,按从小到大的顺序输出。
输入
输入只有一行,为三个整数。
输出
按从小到大输出这三个数。
样例输入
15 10 20
样例输出
10 15 20
提示
用if语句判断各种情况可以解决这个问题。
#include
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a>=b)
{
if(b>=c)
printf("%d %d %d",c,b,a);
else
{
if(a>=c)
printf("%d %d %d",b,c,a);
else
printf("%d %d %d",b,a,c);
}
}
else
{
if(b
printf("%d %d %d",a,b,c);
else
{
if(a
printf("%d %d %d",a,c,b);
else
printf("%d %d %d",c,a,b);
}
}
}
问题 2: 输出是m的倍数或n的倍数、但不是m和n的公倍数的数
题目描述
输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1<=m,n
输入
输入三个整数,依次为k、m、 n。
输出
从小到大输出符合题意的所有整数,两数之间用一个空格分开。
样例输入
15 2 3
样例输出
2 3 4 8 9 10 14 15
提示
难点在于输出格式的控制:空格在数的中间,学会用循环时边界情况的特殊处理。
#include
int main()
{
int k,m,n,i,a;
scanf("%d%d%d",&k,&m,&n);
if(m>=n)
a=n;
else
a=m;
printf("%d",a);
for(i=a+1;i<=k;i++)
if(i%m==0||i%n==0)
{
if(i%m==0&&i%n==0)
printf("");
else
printf(" %d",i);
}
}
问题 : A+B Problem
题目描述
计算a+b,0<=a,b<1000。
输入
输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。
输出
每行输出一个a+b的值,顺序与输入对应。
样例输入
1 2
10 20
样例输出
3
30
提示
OJ系统上测试输入结束符为EOF(End Of File),其值为-1。用scanf()把文件所有内容读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。本题解法参看FAQ。
#include
int main()
{
int a,b;
for(;scanf("%d%d",&a,&b)!=EOF;)
printf("%d\n",a+b);
}
问题 : A+B Problem (II) : Input/Output Pratice
题目描述
计算a+b,0<=a,b<1000。
输入
输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。
输出
每行输出一个a+b的和,顺序与输入对应。
样例输入
2
1 2
10 20
样例输出
3
30
提示
N给出了测试样例数,用for循环处理方便。
#include
int main()
{
int n,a,b,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
}
}
问题 : A+B Problem (III) : Input/Output Pratice
题目描述
计算a+b,0<=a,b<1000。
输入
输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。当测试样为0 0时表示输入结束,0 0不参与运算。
输出
每行输出一个a+b的值,顺序与输入对应。
样例输入
1 2
10 20
0 0
样例输出
3
30
提示
练习break的使用。
#include
int main()
{
int a,b;
for(;scanf("%d%d",&a,&b);)
{
if(a==0&&b==0)
break;
printf("%d\n"