C语言练习题附解析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言练习题

例1.已知圆柱体的底半径为radius ,高为high ,求其体积。

#include

main()

{

float radius,high,vol,pi=3.1415926;

printf("Please input radius & high: ");

scanf("%f%f",&radius,&high); /* 从键盘输入两个实数赋给变量r,h*/

vol=pi*radius*radius*high;

printf("radius=%7.2f, high=%7.2f, vol=%7.2f\n",radius,high,vol);

}

程序运行结果如下:

Please input radius & high: 2.5 □ 2.0 8

radius= □□□ 2.50,high= □□□ 2.00,vol= □□ 39.27

/* 例2 试编写求梯形面积的程序,数据由键盘输入。

分析:设梯形上底为A,下底为B,高为H面职为S,则S=(A+B)*H÷2

*/

#include

void main()

{

float a,b,h,s;

printf("please input a,b,h:");

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

s=0.5*(a+b)*h;

printf("a=%6.3f b=%6.3f h=%6.3f\n",a,b,h);

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

}

/*例3-1 输入一组学生成绩,评定其等级。方法是:90~100分为"A",80~89分为"B",70~79分为"C",60~69分为"D",60分以下为"E"。

使用if语句实现的程序段如下:*/

#include

void main()

{

int x;

scanf("%d",&x);

if (x>=90)

printf("A");

else if (x>=80)

printf("B");

else if (x>=70)

printf("C");

else if (x>=60)

printf("D");

else

printf("E");

}

/* 例3-2 将例3-1 使用switch.语句来实现的程序如下*/

#include

void main()

{

int x;

printf("Enter x=?");

scanf("%d",&x);

switch((int)(x/10))

{

case 10:

case 9: printf("A");

case 8: printf("B");

case 7: printf("C");

case 6: printf("D");

Default:printf("E");

}

}

/* 例4 计算sinx=1-x3/3!+x5/5!-x7/7!+.... 直到最后一项的绝对值小于1e-7时为止。

分析:这道题使用递推方法来做。让多项式的每一项与一个变量n对应,n的值依次为1,3,5,7,...,从多项式的前一项算后一项,只需将前一项乘一个因子:(-x2)/((n-1)*n)

用s表示多项式的值,用t表示每一项的值,程序如下:*/

#include

#include

void main()

{

double s,t,x;

int n;

printf("please input x:");

scanf("%lf",&x);

t=x; n=1; s=x;

do

{

n=n+2;

t=-t*x*x/(n-1)/n; /* 计算通项*/

s=s+t; /* 累加求和*/

}

while(fabs(t)>=1e-7); /* 当累加项的值大于1e-7继续循环*/

printf("sin(%f)=%lf",x,s);

}

例5:输出9*9口诀。

1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

2.程序源代码:

以下是引用片段:

#include

main()

{

int i,j,result;

printf("/n");

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

{

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

{

result=i*j;

printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/

}

printf("/n");/*每一行后换行*/

}

}

例6:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数

本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

2.程序源代码:

以下是引用片段:

#include

main()

{

int i,j,k,n;

printf("’water flower’number is:");

for(n=100;n<1000;n++)

{

i=n/100;/*分解出百位*/

j =(number%100)/10;/*分解出十位*/

k =number%10;/*分解出个位*/

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

{

printf("%-5d",n);

}

}

printf("/n");

}

/* 例7 求两个整数的最大公约数、最小公倍数

分析: 求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数)

(1)对于已知两数m,n,使得m>n;

(2)m除以n得余数r;

(3)若r=0,则n为求得的最大公约数,算法结束;否则执行(4);

(4)m←n,n←r,再重复执行(2)。

*/

相关文档
最新文档