C语言经典例题 复习
C语言经典例题
编写一个程序,输入a、b、c三个值,输出其中最大值。
#include
int main(void)
{
int a, b,c;
scanf("%d%d%d",&a,&b,&c);
int x;
if(a>b){
if(a>c) x=a;
else x=c;
}
else {
if(b>c) x=b;
else x=c;
}
printf("%d",x);
return 0;
}
要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,'C’、'h’、'i’、'n’、'a’,经过运算,输出变换后的密码。
#include
int main(void)
{
char c1,c2,c3,c4,c5;
c1='C';
c2='h';
c3='i';
c4='n';
c5='a';
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
return 0;
}
设圆半径r,圆柱高h 求圆周长C1、圆面积Sa、圆球表面积Sb、圆球体积Va、圆柱体积Vb。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后一位数字。请编程序。PI=3.14
#include
int main(void)
{
double r,h,C1,Sa,Sb,Va,Vb,PI;
PI=3.14;
scanf("%lf%lf",&r,&h);
C1=2*PI*r;
Sa=PI*r*r;
Sb=4*PI*r*r;
Va=4*PI*r*r*r/3;
Vb=Sa*h;
printf("C1=%.1f\nSa=%.1f\nSb=%.1f\nVa=%.1f\nVb=%.1f\n",C1,Sa,Sb,Va,Vb);
return 0;
}
输入一个华氏温度,要求输出摄氏温度。公式为 c=5(F-32)/9 输出要求有文字说明,取2位小数。#include
int main(void)
{
double c,F;
scanf("%lf",&F);
c=5*(F-32)/9;
printf("c=%.2f\n",c);
return 0;
}
有一个函数
y={ x x<1
| 2x-1 1<=x<10
\ 3x-11 x>=10
写一段程序,输入x,输出y
#include
int main(void)
{
double x,y;
// printf(" Enterx:\n");
scanf("%lf",&x);
if(x<1){
y=x;
}
else{
if(x>=1&&x<10){
y=2*x-1;
}
else{
y=3*x-11;
}
}
printf("%.0f\n",y);
return 0;
}
给出一百分制成绩,要求输出成绩等级…A?、…B?、…C?、…D?、…E?。90分以上为A 80-89分为B 70-79分为C 60-69分为D 60分以下为E。必须使用switch语句
#include
int main(void)
{
int i,n;
scanf("%d",&i);
n=i/10;
switch(n)
{
case 9:case 10:
printf("A\n");break;
case 8:
printf("B\n");break;
case 7:
printf("C\n");break;
case 6:
printf("D\n");break;
default:
printf("E\n");break;
}
return 0;
}
给出一个不多于5位的整数,要求1、求出它是几位数2、分别输出每一位数字3、按逆序输出各位数字,例如原数为321,应输出123
#include
int main(void)
{
long i,a,b,c,d,e;
scanf("%ld",&i);
if(i>=1&&i<10)
printf("1\n%ld\n%ld\n",i,i);
if(10<=i&&i<100){
a=i/10;
b=i%10;
printf("2\n%ld %ld\n%ld%ld\n",a,b,b,a);
}
if(100<=i&&i<1000)
{
a=i/100;
b=i%100/10;
c=i%10;
printf("3\n%ld %ld %ld\n%ld%ld%ld\n",a,b,c,c,b,a);
}
if(1000<=i&&i<10000)
{
a=i/1000;
b=i%1000/100;
c=i%1000%100/10;
d=i%1000%100%10;
printf("4\n%ld %ld %ld %ld\n%ld%ld%ld%ld\n",a,b,c,d,d,c,b,a);
}
if(10000<=i&&i<100000)
{
a=i/10000;
b=i%10000/1000;
c=i%10000%1000/100;
d=i%10000%1000%100/10;
e=i%100000%10000%1000%100%10;
printf("5\n%ld %ld %ld %ld %ld\n%ld%ld%ld%ld%ld\n",a,b,c,d,e,e,d,c,b,a);
}
return 0;
}
输入两个正整数m和n,求其最大公约数和最小公倍数。
#include
int main(void)
{
int m,n;
int m_cup,n_cup,res;
// printf("Enter two integer:\n");
scanf("%d%d",&m,&n);
if(m>0&&n>0)
{
m_cup=m;
n_cup=n;
res=m_cup%n_cup;
while(res!=0)
{
m_cup=n_cup;
n_cup=res;
res=m_cup%n_cup;
}
printf("%d %d",n_cup,m*n/n_cup);
}
else printf("Error!\n");
return 0;
}
输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
#include
int main(void)
{
//输入一行字符,分别统计出英文字符,数字,空格和其他字符的个数。
char ch;
int char_num=0,int_num=0,space_num=0,other_num=0;
while((ch=getchar())!='\n')//回车键结束输入,并且回车符不计入
{
if(ch>='a'&&ch<='z'||ch<='Z'&&ch>='A')
{
char_num++;
}
else if(ch>='0'&&ch<='9')
{
int_num++;
}
else if(ch==' ')
{
space_num++;
}
else
{
other_num++;
}
}
printf("%d %d %d %d\n",char_num,int_num,space_num,other_num);
return 0;
}
求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。
#include
int main(void)
{
int i,n,j;
double s,t;
t=0;
//printf("enter n");
scanf("%d",&n);
for(i=1;i<=n;i++){
s=0;
for(j=1;j<=i;j++){
s=s*10+2;}
t=t+s;}
printf("%.f",t);
return 0;
}
求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。
#include
int main(void)
{
int a,b,c;
int i,j,k;
int s1=0,s2=0;
float s3=0,sum=0;
scanf("%d %d %d",&a,&b,&c);
for(i=1;i<=a;i++)
{
s1=s1+i;
}
for(j=1;j<=b;j++)
{
s2=s2+j*j;
}
for(k=1;k<=c;k++)
{
s3=s3+1.000000/k;
}
sum=s1+s2+s3;
printf("%.2f\n",sum);
return 0;
}
打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。Output:
#include
int main(void)
{
int a,b,c,i;
for(i=100;i<=999;i++)
{
a=i/100;
b=i%100/10;
c=i%100%10;//*求出水仙花数每位的数值*//
if((a*a*a+b*b*b+c*c*c)==i)
printf("%d%d%d\n",a,b,c);
}
return 0;
}
有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。
#include
main()
{ int m,i,j,a,n;
float sum=0;
scanf("%d",&n);
i=2;
j=1;
for(m=1;m<=n;m++)
{
sum+=(float)(i)/j;
a=i;
i=i+j;
j=a;
}
printf("%.2f\n",sum);
return 0;
}
一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。它在第N次落地时反弹多高?共经过多少米?保留两位小数
#include
int main(void)
{
int N,i;
double M,s,a;
scanf("%lf%d",&M,&N);
s=M;
a=M/2;
if(N!=1){
for(i=2;i<=N;i++){
s=s+2*a;
a=a/2;
}}
else s=M,a=M/2;
printf("%.2f %.2f",a,s);
return 0;
}
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
#include
int main(void)
{
int i,n,s;
s=1;
//printf("n");
scanf("%d",&n);
for(i=1;i s=(s+1)*2; } printf("%d",s); return 0; } 用筛法求N(<=200)之内的素数。需要定义数组 #include #include int main(void) { int N,i,j,a[200]; scanf("%d",&N); for (i=2;i<=N;i++) a[i]=1; for (i=2;i if(a[i]) for(j=i+i;j<=N;j+=i) a[j]=0; for(i=2;i<=N;i++) if(a[i]) printf("%d\n",i); printf("\n"); return 0; } 用选择法对10个整数从小到大排序。需要定义数组#include int main(void) { int i,index,k,temp; int a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); for(k=0;k<10-1;k++){ index=k; for(i=k+1;i<10;i++)