C语言例题第三章.docx

上传人:b****8 文档编号:28514557 上传时间:2023-07-18 格式:DOCX 页数:29 大小:24.66KB
下载 相关 举报
C语言例题第三章.docx_第1页
第1页 / 共29页
C语言例题第三章.docx_第2页
第2页 / 共29页
C语言例题第三章.docx_第3页
第3页 / 共29页
C语言例题第三章.docx_第4页
第4页 / 共29页
C语言例题第三章.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C语言例题第三章.docx

《C语言例题第三章.docx》由会员分享,可在线阅读,更多相关《C语言例题第三章.docx(29页珍藏版)》请在冰豆网上搜索。

C语言例题第三章.docx

C语言例题第三章

第三章

【例3-3】输出单个字符。

#include

main()

{chara='B',b='O',c='Y';

putchar(a);putchar(b);putchar(c);putchar('\n');

}

【例3-4】用printf函数输出数据。

main()

{inta=25;

floatb=123.4567898;

doublec=34567890.1234567;

chard='k';

printf("a=%d,%5d,%o,%x,%u\n",a,a,a,a,a);

printf("b=%f,%lf,%10.4f,%5.4f,%e,%10.2e\n",b,b,b,b,b,b);

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

printf("d=%c,%8c,%i\n",d,d,d);

printf("string=%s,%8s,%8.3s,%-8.3s\n","china","china","china","china");

}

程序执行结果为:

a=25,25,31,19,25

b=123.456787,123.456787.123.4568,123.4568,1.23457e+02,1.2e+02

c=34567890.123457,3.45679e+07,3.45679e+07

d=k,k,107

string=china,china,chi,chi

【例3-6】用scanf函数输入数据。

main()

{inta,b,c;

printf("inputa,b,c\n");

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

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

}

程序执行结果为:

inputa,b,c↙

123

a=1,b=2,c=3

运行时可按以下任何一种方式输入变量a、b、c的值。

①123↙(以一个空格分隔)

②1↙(以回车符分隔)

2↙

3↙

③1↙

23↙(以一个空格分隔)

④12↙(以tab键分隔)

3↙

⑤123↙(以多个空格分隔)

【例3-7】计算任意两整数的和、差、积、商。

#include"stdio.h"

main()

{inta,b,c,d,e,f;

printf("pleaseinputtwointegeraandb:

\n");

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

c=a+b;d=a-b;

e=a*b;f=a/b;

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

printf("%d*%d=%d%d/%d=%d\n",a,b,e,a,b,f);

}

程序执行结果为:

pleaseinputtwointegeraandb:

1510

15+10=2515-10=5

15*10=15015/10=1

【例3-8】计算圆柱的体积。

定义实型变量radius,high,vol分别表示圆柱的底面半径、高和体积。

#definePI3.1415926

main()

{floatradius,high,vol;

printf("Pleaseinputradius&high:

");

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

vol=PI*radius*radius*high;

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

}

程序执行结果为:

Pleaseinputradius&high:

25

radius=2.00,high=5.00,vol=62.83

【例3-9】计算一元二次方程ax2+bx+c=0的根。

(假设b2-4ac>0)

#include"math.h"/*为使用求平方根函数sqrt(),必须包含math.h头文件*/

main()

{floata,b,c,disc,x1,x2;

printf("inputa,b,c:

");

scanf("%f,%f,%f",&a,&b,&c);/*输入方程的三个系数的值*/

disc=b*b-4*a*c;/*求判别式的值赋给disc*/

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

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

printf("\nx1=%6.2fx2=%6.2f\n",x1,x2);

}

程序执行结果为:

inputa,b,c:

1,3,2

x1=-1.00x2=-2.00

【例3-10】按不同格式输出整型与长整型。

main()

{intnum1=123;

longnum2=123456;

/*用3种不同格式,输出int型数据num1的值*/

printf("num1=%d,num1=%5d,num1=%-5d,num1=%2d\n",num1,num1,num1,num1);

/*用3种不同格式,输出long型数据num2的值*/

printf("num2=%ld,num2=%8ld,num2=%5ld\n",num2,num2,num2);

}

程序执行结果为:

num1=123,num1=123,num1=123,num1=123

num2=123456,num2=123456,num2=123456

【例3-11】输入一个三位正整数,以倒序形式输出它的各位数。

(例如:

输入123,则输出321)

main()

{intx,a,b,c;

printf("pleaseinputx:

");

scanf("%d",&x);/*输入一个三位正整数*/

c=x%10;/*获得个位数字*/

b=x/10%10;/*获得十位数字*/

a=x/100;/*获得百位数字*/

printf("\nx=%d,daoshu=%d\n",x,100*c+10*b+a);

}

程序执行结果为:

pleaseinputx:

345

x=345,daoshu=543

【例3-12】输入两个整数,比较它们的大小,并将其中的大数输出。

main()

{inta,b,max;

printf("\ninputtwonumbers:

");

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

max=a;

if(max

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

}

程序执行结果为:

inputtwonumbers:

510

max=10

【例3-13】从键盘输入学生的考试成绩,利用计算机将学生的成绩划分等级并输出。

学生的成绩可分为5个等级,这5个等级是:

90~100分为A级,80~89分为B级,70~79分为级,60~69分为D级,0~59分为E级。

学生的考试成绩为0~99分。

main()

{intscore;

printf("pleaseinputascore:

\n");

scanf("%d",&score);

if((score<0)||(score>100))printf("dataerror!

\n");

elseif(score>=90)printf("thegradeisA.\n");

elseif(score>=80)printf("thegradeisB.\n");

elseif(score>=70)printf("thegradeisC.\n");

elseif(score>=60)printf("thegradeisD.\n");

elseprintf("thegradeisE.\n");

}

程序执行结果为:

pleaseinputascore:

95

A

【例3-14】比较两个数的大小关系。

main()

{

inta,b;

printf("pleaseinputa,b:

\n");

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

if(a!

=b)

if(a>b)printf("%d>%d\n",a,b);

elseprintf("%d<%d\n",a,b);

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

}

程序执行结果为:

pleaseinputA,B:

①35②64③55

3<56>45=5

【例3-15】利用switch语句重新完成例3-13编程任务。

main()

{intscore;

printf("inputascore(0~100):

");

scanf("%d",&score);

score=score/10;;/*将成绩整除10,转化成switch语句中的case标号*/

switch(score)

{case10:

case9:

printf("grade=A\n");/*标号10和9,都执行本行的语句*/

case8:

printf("grade=B\n");

case7:

printf("grade=C\n");

case6:

printf("grade=D\n");

case5:

case4:

case3:

case2:

case1:

case0:

printf("grade=E\n");/*标号5~0,都执行本行的语句*/

default:

printf("Thescoreisoutofrange!

\n");/*成绩超出范围时,提示出错*/

}

}

程序执行结果为:

inputascore(0~100):

95

grade=A

grade=B

grade=C

grade=D

grade=E

Thescoreisoutofrange!

main()

{intscore;

printf("inputascore(0~100):

");

scanf("%d",&score);

score=score/10;/*将成绩整除10,转化成switch语句中的case标号*/

switch(score)

{case10:

case9:

printf("grade=A\n");break;/*标号10和9,都执行本行的2条语句*/

case8:

printf("grade=B\n");break;

case7:

printf("grade=C\n");break;

case6:

printf("grade=D\n");break;

case5:

case4:

case3:

case2:

case1:

case0:

printf("grade=E\n");break;/*标号5~0,都执行本行的2条语句*/

default:

printf("Thescoreisoutofrange!

\n");/*成绩超出范围时,提示出错*/

}

}

【例3-16】计算器程序。

用户输入运算数和四则运算符,输出计算结果。

main()

{floata,b,s;

charc;

printf("inputexpressiona+(-,*,/)b:

\n");

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

switch(c)

{case'+':

printf("%f\n",a+b);break;

case'-':

printf("%f\n",a-b);break;

case'*':

printf("%f\n",a*b);break;

case'/':

printf("%f\n",a/b);break;

default:

printf("inputerror\n");

}

}

程序执行结果为:

inputexpressiona+(-,*,/)b:

15+10

25

【例3-17】输入三个整数x,y,z,请把这三个数由小到大输出。

main()

{intx,y,z,temp;

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

if(x>y)

{temp=x;x=y;y=temp;}/*交换x,y的值*/

if(x>z)

{temp=z;z=x;x=temp;}/*交换x,z的值*/

if(y>z)

{temp=y;y=z;z=temp;}/*交换z,y的值*/

printf("smalltobig:

%d%d%d\n",x,y,z);

}

程序执行结果为:

1001288

smalltobig:

1288100

【例3-18】输入并判断和显示任意一年是否为闰年。

main()

{intyear;

printf("pleaseinputayear:

\n");

scanf("%d",&year);

if(year%4==0&&year%100!

=0||year%400==0)

printf("theyear%disleapyear.\n",year);

else

printf("theyear%disnotleapyear.\n",year);

}

程序执行结果为:

pleaseinputayear:

2000

theyear%disleapyear.

【例3-19】编写一个计算售票收款数目的小程序。

具体要求为:

每张票零售价格为25元,团体票价为20元,一次购票数目超过30张(包含30)时按团体票出售。

对输入的购票数目计算并输出相应的购票款的数额。

main()

{intnumber;

floattotal;

printf("pleaseinputthenumberofticketsyouwanttobuy:

\n");

scanf("%d",&number);

if((number<0)||(number>3000))

printf("dataerror!

\n");

else

if(number>=30)

{total=20.0*number;

printf("youmustpay%.2fyuan.\n",total);}

else

{total=25.0*number;

printf("youmustpay%.2fyuan.\n",total);}

}

程序执行结果为:

①35

youmustpay700.00yuan

②15

youmustpay375.00yuan

【例3-20】编写一个已知利润计算薪水的程序。

标准如下:

(profit表示利润,薪水的单位是元)

profit≤1000基础薪水为500

1000<profit≤2000另按利润的10%提

2000<profit≤5000另按利润的15%提

5000<profit≤10000另按利润的20%提

10000<profit另按利润的25%提

程序如下:

main()

{longprofit;

intgrade;

floatsalary=500;

printf("Inputprofit:

");

scanf("%ld",&profit);

grade=(profit-1)/1000;/*将利润-1、再整除1000,转化成switch语句中的case标号*/

switch(grade)

{case0:

break;/*profit≤1000*/

case1:

salary+=profit*0.1;break;/*1000<profit≤2000*/

case2:

case3:

case4:

salary+=profit*0.15;break;/*2000<profit≤5000*/

case5:

case6:

case7:

case8:

case9:

salary+=profit*0.2;break;/*5000<profit≤10000*/

default:

salary+=profit*0.25;/*10000<profit*/

}

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

}

程序执行结果为:

①Inputprofit:

800

salary=500.00

②Inputprofit:

2500

salary=875.00

③Inputprofit:

6000

salary=1700.00

【例3-21】计算1+2+3+…100的和。

main()

{inti=1,sum=0;/*初始化循环控制变量i和累计器sum*/

while(i<=100)

{sum+=i;/*实现累加*/

i++;/*循环控制变量i增1*/

}

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

}

程序执行结果为:

sum=5050

例如:

利用do-while语句计算1+2+3+…100的和。

main()

{inti=1,sum=0;/*初始化循环控制变量i和累计器sum*/

do

{sum+=i;/*实现累加*/

i++;/*循环控制变量i增1*/

}while(i<=100);/*循环继续条件:

i<=100*/

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

}

【例3-22】求1、1、2、3、5、8、13、...Fibonacci数列的前20个数。

#include"stdio.h"

main()

{longf1=1,f2=1,fn;/*定义并初始化数列的前2个数*/

inti,n;

printf("\n%20ld%20ld",f1,f2);/*输出前2个Fibonacci数*/

for(i=3;i<=20;i++)

{fn=f1+f2;/*计算下1个Fibonacci数*/

f1=f2;f2=fn;

printf("%20ld",fn);

}

}

程序执行结果为:

1123

581321

345589144

233377610987

1597258441816765

也可以在循环体内每次产生两个Fibonacci数,程序修改如下:

main()

{longintf1=1,f2=1;/*定义并初始化数列的前2个数*/

inti=1;/*定义并初始化循环控制变量i*/

for(;i<=10;i++)/*每组2个数,20组40个数*/

{printf("%15ld%15ld",f1,f2);/*输出当前的2个数*/

if(i%2==0)printf("\n");/*输出2次(4个数)后换行*/

f1=f1+f2;f2=f2+f1;/*计算2个新数*/

}

}

【例3-23】break语句的应用。

main()

{intsum,i;

for(i=1,sum=0;;i++)/*省略了表达式2*/

{sum=sum+i;

if(i==100)break;/*利用if语句判断循环是否结束*/

}

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

}

程序执行结果为:

sum=5050

【例3-24】输出100以内所有8的倍数,要求输出时每5个数占一行。

main()

{intn,i=0;

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

{if(n%8!

=0)continue;

printf("%10d",n);

i++;

if(i%5==0)printf("\n");

}

printf("\n");

}

程序执行结果为:

816243240

4856647280

8896

【例3-25】图形的输出。

main()

{inti,j,k;

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

{for(j=1;j<=20-i;j++)

printf("");

for(k=1;k<=2*i-1;k++)

printf("*");

printf("\n");

}

}

【例3-26】编程计算n!

main()

{inti,n;

longfact=1;/*将累乘器fact初始化为1*/

printf("inputn:

");

scanf("%d",&n);

for(i=1;i<=n;i++)fact*=i;/*实现累乘*/

printf("%d!

=%ld\n",n,fact);

}

程序执行结果为:

inputn:

5

5!

=120

【例3-27】从键盘输入两个整数,计算并输出这两个整数的最大公约数和最小公倍数。

main()

{intm,n,p,temp;

printf("pleaseinputtwointegers:

\n");

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

p=m*n;/*先计算变量m与n的乘积*/

while(n)/*当n不为0时进行循环*/

{temp=m%n;/*把m与n的余数存入变量temp中*/

m=n;/*把n值作为m的新值*/

n=temp;/*把原m与n的余数作为n的新值*/

}

printf("gy=%dgb=%d\n",m,p/m);

}

程序执行结果为:

pleaseinputtwointegers:

1220

gy=4gb=60

本例利用辗转相除法先求出最大公约数,然后再求出最小公倍数。

【例3-28】输入一个正整数,计算并输出这个正整数的各位数字之和。

#include"stdio.h"

main()

{longnumber;

intsum=0;

printf("pleaseinputanumber:

");

scanf("%ld",&number);

if(number>0)

{do

{sum+=number%10;/*利用取余%运算可得到number的个位数*/

number/=10;}/*利用除法/运算可将number的个位数去掉*/

while(number>0);

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

}

else

printf("dataerror!

");

}

程序执行结果为:

①pleaseinputanumber:

1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1