C语言程序设计例题源程序清华大学出版社黄保和编第三版Word格式.docx
- 文档编号:22083169
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:50
- 大小:38.59KB
C语言程序设计例题源程序清华大学出版社黄保和编第三版Word格式.docx
《C语言程序设计例题源程序清华大学出版社黄保和编第三版Word格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计例题源程序清华大学出版社黄保和编第三版Word格式.docx(50页珍藏版)》请在冰豆网上搜索。
,sum);
第二章C语言基础
例2.3.1编写程序,将一个字面常量21分别按十进制、八进制、十六进制形式输出
#include<
main()
{
printf("
Decimal:
%dOctal:
%oHexadecimal:
%x\n"
21,21,21);
例2.3.2观察下面程序的运行结果。
{printf("
%c---%d,%c---%d\n"
'
a'
A'
);
%d---%c,%d---%c\n"
-32,'
+32,'
+32);
Thevalueof\'
a\'
-\'
A\'
is%d.\n"
-'
printf("
Pleaseenter\”Yes\”or\”No\”:
\n"
);
例2.3.3编写程序,计算并输出半径为10的球表面积和球体的体积。
#defineR10//定义符号常量R
#definePI3.14159//定义符号常量PI
{floats,v;
s=4*PI*R*R;
v=s*R/3;
printf("
s=%fv=%f\n"
s,v);
例2.3.4整型数据的溢出。
{shortinta,b;
//定义短整型变量a和b
longintc;
//定义长整型变量c
a=32767;
b=a+10;
c=a+10;
a=%d,b=%d,c=%ld\n"
a,b,c);
例2.3.5浮点型数据的存储误差。
将一个有效数字超过7位的实数赋给浮点型变量,然后输出该浮点型变量。
main()
{
floata=12.3,b;
doublec;
b=12345.678;
c=12345.678;
printf(“a=%f,b=%f,c=%lf\n”,a,b,c);
}
例2.3.6浮点型数据的计算误差。
floata,b;
a=123456789;
b=a+20;
b=%f"
b);
例2.4.2编写一个强制类型转换程序
{inti,j,k;
floatx=5.8,y=3.7,f=8.56;
i=(int)(x+y);
j=(int)x+y;
k=(int)f%3;
i=%d,j=%d,k=%d,x=%f\n"
i,j,k,x);
例2.4.3请说明以下程序中逗号的不同用法,哪些逗号是作为分隔符使用,哪些是作为逗号运算符使用。
{inta,b,x,y;
a=(x=8,x%5);
b=x=8,x%5;
%d,%d,%d\n"
a,b,(y=2,y*3));
第3章顺序程序设计
例3.3.1交换变量x和y的值。
main()
{intx=6,y=8,temp;
x=%d,y=%d\n"
x,y);
temp=x;
//将x的初值赋予变量temp
x=y;
//仅改变变量x的值,y的值不变
y=temp;
//变量y被赋予新的值,原值被覆盖。
x,y);
例3.3.2输入一个四位整数,然后打印出它的四位数字的和。
main()
{intn,a,b,c,d,sum;
Inputn:
scanf("
%d"
&
n);
a=n%10;
//求个位数
b=n/10%10;
//求十位数
c=n/100%10;
//求百位数
d=n/1000;
//求千位数
sum=a+b+c+d;
n=%d,sum=%d\n"
n,sum);
例3.4.1不同格式的整数输出。
#include<
inta=120;
longintb=135790;
printf("
a=%d,b=%d\n"
a,b);
//a、b按十进制数格式输出
a=%o,b=%o\n"
//a、b按八进制数格式输出
a=%x,b=%x\n"
//a、b按十六进制数格式输出
a=%u,b=%u\n"
//a、b按无符号数格式输出
}
例3.4.2输出实数时观察其有效位数。
main()
{floatx,y;
x=333333.333;
y=444444.444;
printf("
%f"
,x+y);
}
例3.4.3输出双精度数时观察其有效位数。
{doublex,y;
x=3333333333333.333333333;
y=4444444444444.444444444;
,x+y);
}
例3.4.4字符数据的输出。
charc='
B'
;
inti=66;
%c,%d\n"
,c,c);
,i,i);
}
例3.4.5字符串数据的输出。
voidmain()
%s%s"
,"
China"
□Beijing"
printf("
%3s,%7.2s,%.4s,%-5.3s"
"
Hello"
例3.4.6格式不匹配的输出示例。
floatf=12345;
inti=100;
f=%d\n"
f);
i=%f\n"
i);
}
例3.4.7用scanf函数输入数据。
main()
{
inta;
floatb;
doublec;
scanf(“%d%f%lf”,&
a,&
b,&
c);
a=%d,b=%f,c=%f\n"
,a,b,c);
}
例3.4.8用putchar函数输出单个字符。
#include<
//*包含I/O标准库函数的头文件*/
main()
{
chara,b,c;
//定义字符型变量a,b,c
a=’O’;
b=’K’;
c=’!
’;
//对变量a,b,c进行赋值
putchar(a);
putchar(b);
putchar(c);
//输出OK!
putchar(‘\n’);
//输出换行
putchar(‘\x41’);
putchar(‘\102’);
}
例3.4.9输入单个字符
stdio.h>
{charc;
inti;
c=getchar();
printf(“c=%-4c”,c);
i=getchar();
printf(“i=%-5d”,i);
printf(“c1=%-4c”,getchar());
例3.5.1输入长方体的长、宽、高,求长方体的体积和表面积。
floatx,y,z,v,s;
Inputx,y,z:
scanf("
%f,%f,%f"
&
x,&
y,&
z);
v=x*y*z;
s=2*(x*y+x*z+y*z);
x=%8.3f,y=%8.3f,z=%8.3f,v=%8.3f\n"
x,y,z,v);
s=%8.2f\n"
s);
例3.5.2编写并运行一个程序,打印出两个通过交互方式输入的整数的和、差、积、商及余数。
{intm,n,a,b,c,d,e;
Inputm,n:
scanf("
%d%d"
m,&
n);
a=m+n;
b=m-n;
c=m*n;
d=m/n;
e=m%n;
m+n=%d\tm-n=%d\tm*n=%d\tm/n=%d\tm%%n=%d\n"
a,b,c,d,e);
例3.5.3求ax2+bx+c=0方程的根。
math.h>
{floata,b,c,disc,x1,x2,p,q;
Inputa,b,c:
%f%f%f"
,&
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;
x2=p-q;
x1=%5.2f\nx2=%5.2f\n"
,x1,x2);
第4章选择结构程序设计
例4.1.1分析程序的运行结果。
intx=2,y=2;
%d"
(x=3)&
&
(y=3));
x=%d\ty=%d\n"
(x=4)||(y=4));
例4.2.1编一程序,测试一个正整数是否能被另一个正整数整除。
main()
{intn,d;
Entertwopositiveintegers:
"
scanf(“%d,%d”,&
n,&
d);
if(n%d)//等同于if(n%d!
=0)
printf(“%disnotdivisibleby%d\n”,n,d);
例4.2.2编一程序,实现下列分段函数的求值。
x-1(x≤1)
y=2x2-3x+1(1<
x≤10)
x/4(x>
10)
{floatx,y;
Inputx:
x);
if(x<
=1)
y=x-1;
if(x>
1&
x<
=10)
y=2*x*x-3*x+1;
10)
y=x/4;
x=%f,y=%f\n"
例4.2.3求三个整数的最小值。
{//找出三个输入整数的最小值
inta,b,c,min;
"
%d,%d,%d"
b,&
c);
min=a;
//把a的值赋给min
if(min>
b)min=b;
//如果min的值比b的值大,把b的值赋给min
c)min=c;
//如果min的值比c的值大,把c的值赋给min
a=%d,b=%d,c=%d,min=%d\n"
a,b,c,min);
例4.2.4输入两个实数,分别存放在变量a和b中,如果a的值比b大,交换a,b两个变量的值。
程序代码如下:
{floata,b,temp;
Inputa,b:
%f,%f"
Before:
a=%6.2f,b=%6.2f\n"
a,b);
if(a>
b)
{temp=a;
a=b;
b=temp;
}//交换变量a与b的值
After:
例4.2.5编一程序,判断一个5位正整数是否是回文数。
{intn,ge,shi,qian,wan;
Inputn(10000~99999):
ge=n%10;
//求出n的个位数
shi=n/10%10;
//求出n的十位数
qian=n/1000%10;
//求出n的千位数
wan=n/10000;
//求出n的万位数
if(ge==wan&
shi==qian)
%d是回文数。
,n);
else
%d不是回文数\n"
n);
例4.2.6阅读下面的程序,注意else配对问题并分析其执行结果。
{intx=4;
if(x>
6)
12)++x;
else--x;
x=%d:
x);
例4.2.7某商场进行打折销售,如顾客一次购买商品500元以上(含500元)1000元以下,则按9折结算;
如一次购买商品1000元(含1000元)以上,则按8折结算。
已知某顾客的购货金额,求该顾客的实际支付金额。
程序1:
输入购买金额:
%f"
if(x>
=1000)y=0.8*x;
elseif(x>
=500)y=0.9*x;
elsey=x;
实际支付金额为:
%f\n"
y);
程序2:
=500)if(x>
=1000)y=0.8*x;
elsey=0.9*x;
elsey=x;
例4.2.8编写程序,求一元二次方程ax2+bx+c=0的根。
分析:
求解一元二次方程ax2+bx+c=0的根,应该考虑以下几种可能情况:
(1)当a=0时,不是二次方程;
(2)当b2-4ac=0时,方程有两个相同的实根;
(3)当b2-4ac>0时,方程有两个不同的实根;
(4)当b2-4ac<0时,方程有两个共轭复根。
这是一个4分支问题,根据相应条件执行不同的分支,即可获得方程完整的解。
math.h>
{floata,b,c,d,disc,x1,x2,realpart,imagpart;
Theequation"
if(fabs(a)<
=1e-6)
printf("
isnotaquadratic\n"
else
{disc=b*b-4*a*c;
if(fabs(disc)<
hastwoequalroots:
%.4f\n"
-b/(2*a));
if(disc>
0)
{x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
hasdistinctrealroots:
%.4fand%.4f\n"
}
{realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
hascomplexroots:
%.4f+%.4fiand"
realpart,imagpart);
%.4f-%.4fi\n"
}
例4.2.9用if…elseif语句实现商场打折销售程序。
%f"
elseif(x>
elsey=x;
printf(”实际支付金额为:
%f\n”,y);
例4.2.10比较两数的大小关系,并输出判断结果。
比较两个数a和b的大小关系,分为三种情况:
A=B、A>
B、或A<
B。
用嵌套if语句实现的程序代码如下:
voidmain()
inta,b;
pleaseinputa,b:
if(a==b)
A=B\n"
else
if(a>
b)
A>
B\n"
A<
例4.2.11把学生百分制分数换算成五分制成绩。
要求输入一个百分制成绩,输出其对应五级(A,B,C,D,E)制的评定。
评定的标准是:
分数90~100分为A,80~89分为B,70~79分为C,60~69分为D,0~59分为E,否则显示出错信息。
{intscore;
Inputyourtestscore:
score);
if(score>
100||score<
0)printf("
Error:
thatscoreisoutofrange.\n"
elseif(score>
=90)printf("
YourgradeisanA.\n"
=80)printf("
YourgradeisaB.\n"
=70)printf("
YourgradeisaC.\n"
=60)printf("
YourgradeisaD.\n"
elseprintf("
YourgradeisanE.\n"
例4.2.12编写程序,由键盘输入字符,判断并显示该字符的类别:
数字字符、大写字母、小写字母、空格或其它。
判断字符的类别,实际上是判断字符ASCII码值的范围。
{charc;
PressacharacterKey:
c=getchar();
\nCharacter%cis"
c);
if(c>
='
0'
c<
9'
)//c>
等价于c>
=48&
=57
printf("
adigit\n"
elseif(c>
Z'
)//c>
=65&
=90
anuppercaseletter\n"
z'
=97&
=122
alowercaseletter\n"
elseif(c=='
'
)//c=='
等价于c==32
aspace\n"
else//否则,不是上述提到的字符。
notadigit,letter,orspace\n"
运行结果:
6(回车)
Character6isadigit.
例4.2.13编一程序,判断某一年份是否为闰年
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 例题 源程序 清华大学出版社 第三