文档库 最新最全的文档下载
当前位置:文档库 › C语言基础编程练习

C语言基础编程练习

C语言基础编程练习
C语言基础编程练习

1.屏幕上输入:This is a C program

#include

int main()

{

printf("This is a C program.\n");

return 0;

}

2、求两个整数之和

#include

void main()

{

int a,b,sum;

a=123;

b=456;

sum=a+b;

printf("%d\n",sum);

}

3、求两个整数中的较大者

#include

void main()

{

int max(int x,int y);

int a,b,c;

scanf("%d,%d",&a,&b);

c=max(a,b);

printf("max=%d",c);

}

int max(int x,int y)

{

int z;

if(x>y)

z=x;

else

z=y;

return(z);

}

4、编写一个程序,输入a,b,c三个值,输出其中最大者#include

void main()

{int a,b,c,max;

printf("input a,b,c:\n");

scanf("%d,%d,%d",&a,&b,&c);

max=a;

if(max

max=b;

if(max

max=c;

printf("最大数是%d\n",max);

}

5、求5!

#include

void main()

{int t=1,i=2;

while(i<=5)

{t=t*i;

i=i+1;

}

printf("%d\n",t);

}

6、求多项式1-1/2+1/3-1/4+````+1/99-1/100的值#include

void main()

{

int sign=1;

double deno=2.0,sum=1.0,term;

while(deno<=100)

{

sign=-sign;

term=sign/deno;

sum=sum+term;

deno=deno+1;

}

printf("%f\n",sum);

}

7、将华氏温度64°F转换为摄氏度

#include

void main()

{

float f,c;

f=64.0;

c=(5.0/9.0)*(f-32);

printf("c=%f\n",c);

8、1000元存一年:(1)活期,年利率为r1;(2)一年期顶起,年利率r2;(3)存两次半年定期,年利率为r3.分别计算3种方法本息和

#include

void main()

{

float p0=1000,r1=0.0036,r2=0.0225,r3=0.0193,p1,p2,p3;

p1=p0*(1+r1);

p2=p0*(1+r2);

p3=p0*(1+r3/2)*(1+r3/2);

printf("p1=%f\np2=%f\np3=%f\n",p1,p2,p3);

}

9、给定一个大写字母A,输出其小写字母

#include

void main()

{

char c1,c2;

c1='A';

c2=c1+32;

printf("%c\n",c2);

printf("%d\n",c2);

}

10、给出三角形三边长,求面积

#include

#include

int main()

{

double a,b,c,s,area;

a=3.67;

b=5.43;

c=6.21;

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("a=%f\tb=%f\tc=%f\n",a,b,c);

printf("area=%f\n",area);

}

11、输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入后处理,然后输出此数,以便验证处理是否正确。

#include

void main()

double x;

printf("Enter x:");

scanf("%lf",&x);

printf("(1)x=%f\n",x);

x=x*100+0.5;

x=(int)x;

x=x/100;

printf("(2)x=%f\n",x);

}

12、编程从键盘输入两个整数给变量x和y,然后输出x和y的值,最后交换x和y的值并输出。

#include

void main()

{

int x,y,t;

printf("Enter x,y:\n");

scanf("%d %d",&x,&y);

printf("x=%d y=%d\n",x,y);

t=x;x=y;y=t;

printf("x=%d y=%d\n",x,y);

}

13、从键盘输入两个两位的正整数给变量x和y,并将x和y合并形成一个整数放在变量z 中。合并的方式是:将数x的十位和各位依次放在z的千位和十位,将y的十位和个位放在z的个位和百位上。

#include

void main()

{

int x,y,z;

printf("Input x,y:");

scanf("%d,%d",&x,&y);

x=x%100;y=y%100;

z=(x/10)*1000+(x%10)*10+y/10+(y%10)*100;

printf("x=%d,y=%d,z=%d\n",x,y,z);

}

14、输入3个整数,分别放入在变量a,b,c中,程序把输入的数据重新按由从小到大的顺序放在变量a,b,c中,最后输出a,b,c中的值

#include

void main()

{

int a,b,c,t;

printf("input a,b,c:");

scanf("%d%d%d",&a,&b,&c);

printf("a=%d,b=%d,c=%d\n",a,b,c);

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

{t=a;a=c;c=t;}

if(b>c)

{t=b;b=c;c=t;}

printf("a=%d,b=%d,c=%d\n",a,b,c);

}

15、根据输入的学生成绩,给出相应的等级,90分以上的等级为A,60以下为E,其余每10分一个等级。

#include

void main()

{

int g;

printf("Enter g:");

scanf("%d",&g);

printf("g=%d:",g);

if(g>=90) printf("A\n");

else if(g>=80) printf("B\n");

else if(g>=70) printf("C\n");

else if(g>=60) printf("D\n");

else printf("E\n");

}

#include

void main()

{

int g;

printf("Enter g:");

scanf("%d",&g);

printf("g=%d:",g);

switch(g/10)

{

case 9: 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");

}

}

16、平面点M(x,y),若M落在圆心在坐标原点单位圆上,key=1;圆外,key=2;圆内key=0 #include

#include

void main()

{

float x,y,r;

int key;

printf("input x,y:");

scanf("%f,%f",&x,&y);

r=sqrt(x*x+y*y);

if(r>1) key=2;

else if(r==1) key=1;

else if(r<1) key=0;

printf("(%.1f,%.1f):%d\n",x,y,key);

}

-1,x<0

17、编写一个程序实现符号函数y={0,x=0 的功能

1,x>0

#include

void main()

{

int x,y;

printf("Enter x:");

scanf("%d",&x);

if(x<0)

y=-1;

else

if(x==0)

y=0;

else

y=1;

printf("x=%d,y=%d\n",x,y);

}

#include

void main()

{

int x,y;

printf("Enter x:");

scanf("%d",&x);

y=-1;

if(x!=0)

{if(x>0)y=1;}

else

y=0;

printf("x=%d,y=%d\n",x,y);

}

18、判定某年是否闰年。

#include

void main()

{

int year,leap;

printf("input the year:");

scanf("%d",&year);

if((year%4==0&&year%100!=0)||(year%400==0)) leap=1;

else leap=0;

if(leap==1)

printf("%d is a leap year\n",year);

else

printf("%d is not a leap year\n",year);

}

#include

void main()

{

int year,leap;

printf("input the year:");

scanf("%d",&year);

if(year%4==0)

if(year%100!=0)

leap=1;

else

if(year%400==0)

leap=1;

else

leap=0;

else

leap=0;

if(leap==1)

printf("%d is a leap year\n",year);

else

printf("%d is not a leap year\n",year); }

#include

void main()

{

int year,leap;

printf("input the year:");

scanf("%d",&year);

if(year%400==0) leap=1;

else

if(year%4==0)

if(year%100==0)

leap=0;

else leap=1;

else leap=1;

if(leap==1)

printf("%d is a leap year\n",year);

else

printf("%d is not a leap year\n",year); }

#include

void main()

{

int year,leap;

printf("input the year:");

scanf("%d",&year);

if(year%4!=0) leap=0;

else if(year%100==0) leap=0;

else if(year%400==0) leap=1;

else leap=1;

if(leap==1)

printf("%d is a leap year\n",year);

else

printf("%d is not a leap year\n",year); }

19、求一元二次方程ax2+bx+c=0的解。

分析:a=0,非二次方程

b*b-4*a*c=0 ,两个相等实根

>0,两个不等实根

<0,两个共轭复根

#include

#include

void main()

{

float a,b,c,disc,x1,x2,realpart,imagpart;

printf("input a,b,c:");

scanf("%f,%f,%f",&a,&b,&c);

printf("The equation");

if(fabs(a)<=1E-6)

{printf("is not quadratic\n");}

else

disc=b*b-4*a*c;

if(fabs(disc)<=1E-6)

printf("has two equal root:%8.4f",-b/(2*a));

else

if(disc>1E-6)

{

x1=(-b+sqrt(disc))/(2*a);

x2=(-b+sqrt(disc))/(2*a);

printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2);

}

else

{

realpart=-b/(2*a);

imagpart=sqrt(-disc)/(2*a);

printf("has complex roots:\n");

printf("%8.4f+%8.4fi\n",realpart,imagpart);

printf("%8.4f-%8.4fi\n",realpart,imagpart);

}

}

20、编写程序,从键盘输入一个以秒为单位的时间数,将其换算成几小时几分几秒,然后输出。

#include

void main()

{

int x,h,m,s;

scanf("%d",&x);

h=x/3600;m=x%3600/60;s=x%60;

printf("%ds=%d:%d:%d!\n",x,h,m,s);

}

21、任意输入一个字符,若是大写字母将其转换成小写字母

#include

void main()

{

char ch;

ch=getchar();

ch=(ch>='A'&&ch<='Z')?ch+32:'x';

if(ch!='*'){putchar(ch);putchar('\n');}

}

22、编写程序,输入能代表一个日期的3个整数,计算并输出该日是改年的第几天。

#include

void main()

{

int y,m,d,dd=0;

printf("Enter y/m/d:");

scanf("%d/%d/%d",&y,&m,&d);

printf("%d/%d/%d",y,m,d);

switch(m-1)

{

case 11: dd=dd+30;

case 10: dd=dd+31;

case 9: dd=dd+30;

case 8: dd=dd+31;

case 7: dd=dd+31;

case 6: dd=dd+30;

case 5: dd=dd+31;

case 4: dd=dd+30;

case 3: dd=dd+31;

case 2: dd=dd+28;

case 1: dd=dd+31;

case 0: dd=dd+d;

}

if((m>2)&&(y%4==0&&y%100!=0||y%400=0))

dd=dd+1;

printf(" %d\n",dd);

}

23、当一个人的月收入在2000元以下时免税;月收入在2000元到5000元之间时,超过2000

的部分纳

税8%;月收入在5000元以上时,2000至5000之间的部分纳税8%,超过5000的部分纳税15%。编写程序

从键盘输入月收入income,计算并输出应交税款tax。

#include "stdio.h"

main()

{

int income;

float tax;

printf("enter income:");

scanf("%d",&income);

if(income<=2000)

tax=0;

else if(income<=5000)

tax=0.08*(income-2000);

else

tax=0.08*3000+0.15*(income-5000);

printf("tax=%f\n",tax);

}

24、回文是指正读和反读都一样的数或字符串。例如:12321、55455、35553等都是回文。请编写一

个程序,从键盘上读取一个包含五位数字的长整数,并判断它是否是回文。(提示:用除法运算和

求余运算把一个数的个位、十位、百位、千位等分别分离出来。)

#include "stdio.h"

main()

{

long x;

int a,b,d,e;

printf("enter x:");

scanf("%ld",&x);

a=x/10000;b=x%10000/1000;

d=x%100/10;e=x%10;

if(a==e&&b==d)

printf("%ld is a huiwen\n",x);

else

printf("%ld is not a huiwen\n",x);

}

25、设计一个简单的计算器,完成两个数的加减乘除分析:输入二个数及运算符

switch表达式:运算符

常量:'+''-''*''/'

#include

void main()

{

float x,y;

char op;

printf("enter x,op,y:");

scanf("%f %c %f",&x,&op,&y);

switch(op)

{

case '+':

printf("%.2f%c%.2f=%.2f\n",x,op,y,x+y);break;

case '-':

printf("%.2f%c%.2f=%.2f\n",x,op,y,x-y);break;

case '*':

printf("%.2f%c%.2f=%.2f\n",x,op,y,x*y);break;

case '/':

if(y==0)

printf("error\n");

else

printf("%.2f%c%.2f=%.2f\n",x,op,y,x/y);break;

}

}

26、编写程序,求1+2+3+。。。+100的值

#include

void main()

{

int i=1,sum=0;

while(i<=100)

{

sum=sum+i;

i++;

}

printf("sum=%d\n",sum);

}

#include

void main()

{

int i=1,sum=0;

do

{

sum=sum+i;

i++;

}while(i<=100);

printf("sum=%d\n",sum);

}

#include

main()

{

int i,sum;

for(i=1,sum=0;i<=100;i++)

sum=sum+i;

printf("sum=%d\n",sum);

}

27、求100以内奇偶数之和

#include

void main()

{

int n=1,odd=0,even=0;

while(n<100)

{

odd+=n;

even+=n+1;

n+=2;

}

printf("odd和=%d,even和=%d\n",odd,even);

}

28、求两个正整数m和n,求最大公约数和最小公倍数分析:1、用辗转相除法求最大公约数

2、最小公倍数=两数积/最大公约数

#include

void main()

{

int m,n,m1,n1,a;

printf("输入两个正整数:\n");

scanf("%d,%d",&m,&n);

m1=m;n1=n;

a=m1%n1;

while(a!=0)

{m1=n1;n1=a;a=m1%n1;}

printf("最大公约数是%d\n",n1);

printf("最小公倍数是%d\n",m*n/n1);

}

29、求n!

#include

main()

{

int i,n;

long s=1;

printf("enter n:");

scanf("%d",&n);

for(i=1;i<=n;i++) s=s*i;

printf("%d!=%ld\n",n,s);

}

30、编写一个程序,计算半径为0.5,1.5,2.5,3.5,4.5,5.5mm时的圆面积#include

main()

{

float r,s;

for(r=0.5;r<=5.5;r++)

{

s=3.14159*r*r;

printf("r=%f s=%f\n",r,s);

}

}

31、循环嵌套的应用——输出九九乘法表

#include

main()

{

int i,j;

for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)

printf("%d*%d=%d ",i,j,i*j);

printf("\n");

}

}

#include

main()

{

int m,n;

m=1;

while(m<=9)

{

n=1;

while(n<=m)

{printf("%d*%d=%d ",m,n,m*n);

n++;

}

printf("\n");m++;

}

}

32、找所有三位数要求①其百位数不大于2②将个位与百位对换,得到的三位数是原三位数的2倍

分析:用三重循环控制变量分别表示百位数、十位数和个位数

百位数i取值1~2

十位数j取0~9

个位数k取2~9

n=100*i+10*j+k

m=100*k+10*j+i

若m>=2*n并m<=3*n

#include

main()

{

int i,j,k,n,m,s=0;

for(i=1;i<=2;i++)

for(j=0;j<=9;j++)

for(k=2;k<=9;k++)

{

n=100*i+10*j+k;

m=100*k+10*j+i;

if(m>+2*n&&m<3*n)

{

++s;

printf("%d ",n);

if(s%10==0) printf("\n");

}

}

}

分析:用一重循环的循环控制变量i=101~299

百位数n1=i/100

十位数n2=(i-n1*100)/10

个位数n3=i-n1*100-n2*10

m=100*n3+10*n2=n1

m>=2*i并m<=3*i

#include

main()

{

int i,n1,n2,n3,m,s=0;

for(i=101;i<=299;++i)

{

n1=i/100;

n2=(i-n1*100)/10;

n3=i-n1*100-n2*10;

m=100*n3+10*n2+n1;

if(m>=2*i&&m<3*i)

{

printf("%d ",i);

s++;

if(s%10==0) printf("\n");

}

}

}

33、在循环体中使用break语句

#include

main()

{

int i,s;

s=0;

for(i=1;i<=10;i++)

{

s+=i;

if(s>5)

break;

printf("s=%d\n",s);

}

}

34、在循环体中使用continue语句

#include

main()

{

int i,s=0;

for(i=1;i<=8;i++)

{

s+=i;

printf("\ni=%d",i);

if(i%2==0)

continue;

printf(" s=%d\n",s);

}

}

35、从键盘输入全班的学习成绩,统计出最高分、最低分和平均分#include

main()

{

int x,max,min,n;

float sum=0;

max=0;

min=100;

n=0;

printf("enter x(-1 to end):");

scanf("%d",&x);

while(x>=0)

{

sum=sum+x;

n=n+1;

if(x>max) max=x;

if(x

scanf("%d",&x);

}

if(max>0) printf("max=%d,min=%d,aver=%f\n",max,min,sum/n); }

36、编程求输入的某个正整数是否为素数

#include

main()

{

int m,i,t;

printf("enter a integer:");

scanf("%d",&m);

for(i=2;i<=m-1;i++)

if(m%i==0)

{

t=0;

break;

}

else t=1;

printf("%d:",m);

if(t=1)

printf("is a prime number!\n");

else

printf("is not a prime number!\n"); }

#include

#include

main()

{

int m,i, k;

scanf("%d",&m);

k=sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0) break;

if(i>k)

printf("%d是素数",m);

else

printf("%d是合数",m);

}

37、求100~200之间的素数

#include

#include

main()

{

int m,i,k,n=0;

for(m=101;m<200;m=m+2)

{

k=sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0) break;

if(i>k)

{printf("%6d",m);n++;

if(n%10==0)printf("\n");

}

}

}

38、公鸡5块一个,母鸡3块一个,小鸡3个一块,百元买百只,问分别多少只?

分析:设公鸡x,母鸡y,小鸡z,x<=19

#include

main()

{

int x,y,z;

for(x=0;x<=19;x++)

for(z=0;z<=99;z=z+3)

{

y=100-x-z;

if((y>=0)&&(x*5+y*3+z/3==100))

printf("x=%d,y=%d,z=%d\n",x,y,z);

}

}

#include

main()

{

int x=0,y,z;

while(x<=19)

{

y=0;

while(y<=33)

{

z=100-x-y;

if(5*x+3*y+z/3==100)

printf("x=%d y=%d z=%d\n",x,y,z);

y++;

}

x++;

}

}

39、有一根长度为323米的钢材,要将它截取为两种规格a,b的长度分别为17米和27米的短料,每种

至少一段,问分割成a,b各多少段后,剩余的残料r最少?

#include

main()

{

int na,nb,a,b,r,rmin;

na=1;nb=1;rmin=323-17-27;

for(na=1;na<=(323-27)/17;na++)

{

nb=(323-na*17)/27;

r=323-na*17-nb*27;

if(r

{rmin=r;a=na;b=nb;}

}

printf("a=%d,b=%d,min=%d\n",a,b,rmin);

}

40、猴子吃桃问题。小猴在某天摘桃若干个,当天吃掉一半,觉得还不过瘾,又多吃了一个;第二

天吃了剩下桃子的一半又多一个;以后每天都这样吃下去,直到第8天要吃时只剩一个桃子了,问小

猴子第一天共摘下多少个桃子?

分析:递推问题X(n-1)=(Xn+1)*2

#include

main()

{

int tao,n;

tao=1;

for(n=1;n<=7;n++)

tao=(tao+1)*2;

printf("tao(1)=%d\n",tao);

}

41、斐波那契数列:1,1,2,3,5,8,13,21.。。。此数列的第一项和第二项为1,从第三项开始,每

一项为前两项之和。编程输出该数列的前15项,每行输出5个数。

#include

main()

{

int i,f1=1,f2=1,f3;

printf("%5d%5d",f1,f2);

相关文档