1)oj1022三个整数排序 从键盘输入三个整数x,y和z,按从大到小的顺序输出它们的值。
不要害怕,一点一点的想,得把思路理清楚。其实很简单,即三组 两个数之间先进行比较并从大到小排列。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x,y,z,n;
scanf("%d%d%d",&x,&y,&z);
if(x<y)
{
n=x;x=y;y=n;
}
if(x<z)
{
n=x;x=z;z=n;
}
if(y<z)
{
n=y;y=z;z=n;
}
printf("%d %d %d\n",x,y,z);
return 0;
}
2)oj1023大小写转换 输入一个字符,若是小写字母,则变为大写输出,否则,原样输出。
注意要记住char ch;和%c 。
小写字母=大写字母+32.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch;
scanf("%c",&ch);
if(ch>='a'&&ch<='z')
ch-=32;
printf("%c",ch);
return 0;
}
ASCII码:
48~57 0~9
65~90 A~Z
97~122 a~z
3)oj1028闰年的判断 (x%400==0)||(x%4==0&&x%100!=0)
4)oj1040输入一个整数n,输出数列1+1/3+1/5+……前n项的和。
不用考虑累加的分数的分母是否为奇数偶数,只需注意分母m=1,然后依次+2即可。
int n,i;//定义数字n和循环次数i
double z,m,sum;//定义分子z和分母m以及和sum
scanf("%d",&n);//键盘输入数字n的值
sum=0,m=1,z=1;//给分子分母和赋初值,这个操作也可以在定义时实现
for(i=1;i<=n;i++)//循环n次
{
sum=sum+1.0*z/m;//sum每次进行累加计算
m=m+2;//分母每次+2
z=z;//分子不变等于1
}
printf("%.2lf",sum);//输出结果h的值,保留两位小数
return 0;//程序正常退出
oj1041输入一个整数n,输出数列1-1/3+1/5-……前n项的和。
只需在for循环内将z改变为z=-z即可。
5)oj1048输出1到n之间的阶乘表,格式见输出样例。每行两个数据,第一个数据占4列,第二个数据占20列,左对齐。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
double mul=1;//每次循环时,mul要重新赋值为1,避免累乘
for(int j=1;j<=i;j++)
{
mul=mul*j;
}
printf("%-4d%-20.0lf\n",i,mul); //左对齐为-,右对齐为+
} //使用double型定义避免溢出
return 0;
}
输出的-20lf必须是-20.0lf
用double防止溢出!