C语言教材前15章书上例题代码
2023-3-22 来源:不详 浏览次数:次第一章无
第二章
程序代码
#includestdio.h
#includestdlib.h
intmain(void)
{
inta;//用关键int指定变量a的类型
floatb;//用关键字float指定变量b的类型
charc;//用关键字char指定变量c的类型
a=1;//为int型变量a赋值整形常量1
b=2.5;//为float型变量b赋值实型常量2.5
c=A;//为char型变量c赋值字符型常量‘A’
return0;
}
例2.1a可修改如下:
intmain()
inta=1;//定义整型常量a并对其初始化
floatb=2.5;//定义实型变量b并对其初始化
charc=A;//定义字符型变量c并对其初始化
程序代码
inta=1;
floatb=2.5;
charc=A;
printf("a-%d\n",a);
printf("b=%f\n",b);
printf("c=%c\n",c);
printf("Endofprogram\n");
运行结果
a-1
b=2.
c=A
Endofprogram
程序代码
printf("DatetypeNumberofbytes\n");
printf("------------------------\n");
printf("char%d\n",sizeof(char));
printf("int%d\n",sizeof(int));
printf("shortint%d\n",sizeof(short));
printf("longint%d\n",sizeof(long));
printf("longlongint%d\n",sizeof(longlong));
printf("float%d\n",sizeof(float));
printf("double%d\n",sizeof(double));
printf("longdouble%d\n",sizeof(longdouble));
DatetypeNumberofbytes
------------------------
char1
int4
shortint2
longint4
longlongint8
float4
double8
longdouble12
程序代码
floata;
doubleb;
a=.e4;
b=.e4;
printf("%f\n%f\n",a,b);
7936.
0.
第三章
程序代码
intx=,b0,b1,b2,sum;
b2=x/;//计算百位数字
b1=(x-b2*)/10;//计算十位数字
b0=x%10;//计算个位数字
sum=b2+b1+b0;
printf("b2=%d,b1=%d,b0=%d,sum=%d\n",b2,b1,b0,sum);
b2=1,b1=5,b0=3,sum=9
程序代码
doubler=5.3;//圆的半径
printf("circumference=%f\n",2*3.*r);
printf("area=%f\n",3.*r*r);
circumference=33.
area=88.
程序代码
doubler;
printf("Inputr:");//提示用户输入半径的值
scanf("%lf",r);//以双精度实型从键盘输入x的值
Inputr:5.3
运行代码
#definePI3.//定义宏常量
printf("Inputr:");
scanf("%lf",r);
printf("circumference=%f\n",2*PI*r);//编译时PI被替换为3.
printf("area=%f\n",PI*r*r);//编译时PI被替换为3.
程序代码
constdoublePI=3.;//定义实型的const常量PI
printf("circumference=%f\n",2*PI*r);
printf("area=%f\n",PI*r*r);
程序代码
intm=5;
printf("m/2=%d\n",m/2);
printf("(float)(m/2)=%f\n",(float)(m/2));
printf("(float)m/2=%f\n",(float)m/2);
printf("m=%d\n",m);
m/2=2
(float)(m/2)=2.
(float)m/2=2.
m=5
程序代码
#includemath.h
floata,b,c,s,area;
printf("Inputa,b,c:");
scanf("%f,%f,%f",a,b,c);
s=(a+b+c)/2;
area=(float)sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%f\n",area);
Inputa,b,c:3,4,5
area=6.
第四章
程序代码
charch;
printf("PressakeyandthenpresstheEnter:");
ch=getchar();//从键盘中输入一个字符,按回车键结束输入,该字符被存入变量ch
ch=ch+32;//将大写英文字母转化为小写英文字母
putchar(ch);//在屏幕上显示变量ch中的字符
putchar(\n);//输出一个人回车换行控制符
PressakeyandthenpresstheEnter:B
B
程序代码
printf("PressakeyandthenpressEnter:");
ch=getchar();
ch=ch+32;
printf("%c,%d\n",ch,ch);//分别输出变量ch中的字符及ASCII码值
PressakeyandthenpressEnter:B
b,98
程序代码
constdoublepi=3.;
doubler,circum,area;
circum=2*pi*r;
area=pi*r*r;
printf("printfWITHOUTWIDTHorprecisionspecifications:\n");
printf("circumference=%f,area=%f\n",circum,area);
printf("printfWITHwidthandprecisionspecifications:\n");
printf("circumference=%7.2f,area=%7.2f\n",circum,area);
printfWITHOUTWIDTHorprecisionspecifications:
circumference=33.,area=88.
printfWITHwidthandprecisionspecifications:
circumference=33.30,area=88.25
(1)程序代码
inta,b;
scanf("%d%d",a,b);
printf("a=%d,b=%d\n",a,b);
a=12,b=34
(2)程序代码
scanf("%d,%d",a,b);
12,34
(3)程序代码
scanf("a=%d,b=%d",a,b);
(4)程序代码
scanf("%2d%2d",a,b);
(5)程序代码
printf("a=\"%d\",b=\"%d\"\n",a,b);
12
34
a="12",b="34"
(6)程序代码
scanf("%d%*c%d",a,b);
运行结果(无论以何种形式输出,均能得到相同结果)
(1)
(2)
(3)
(4)
(7)程序代码
scanf("%2d%*2d%2d",a,b);
a=12,b=56
(8)程序代码
a
a=12,b=3
(9)程序代码
a=,b=8
(10)错误代码
scanf("%d%d",a,b);//未对a,b取址
程序代码
intdate1,date2;
charop;
printf("Pleaseentertheexpressiondate1+date2\n");
scanf("%d%c%d",date1,op,date2);
printf("%d%c%d=%d\n",date1,op,date2,date1+date2);
Pleaseentertheexpressiondate1+date2
12+3
12+3=15
程序代码
inta;
charb;
floatc;
printf("Pleaseinputaninteger:");
scanf("%d",a);
printf("integer:%d\n",a);
printf("Pleaseinputacharacter:");
scanf("%c",b);
printf("characte:%c\n",b);
printf("Pleaseinputafloatnumber:");
scanf("%f",c);
printf("float:%f\n",c);
Pleaseinputaninteger:12
integer:12
Pleaseinputacharacter:characte:
Pleaseinputafloatnumber:3.5
float:3.
改进(1)
getchar();/*将存于缓存区中的回车符读入,避免在后面作为有效字符读入*/
Pleaseinputacharacter:a
characte:a
改进(2.)
scanf("%c",b);/*在%c前面加一个空格,将存在缓存区中的回车符读入*/
printf("character:%c\n",b);
character:a
第五章
程序代码
inta,b,max;
printf("Inputa,b:");
if(ab)max=a;
if(a=b)max=b;
printf("max=%d\n",max);
Inputa,b:3,5
max=5
程序代码
elsemax=b;//相当与a小于等于b的情况
程序代码
max=ab?a:b;//用条件表达式计算两整数的最大值
程序代码
#defineEPS1e-6
floata,b,c,disc,p,q;
printf("Pleaseenterthecoeficientsa,b,c:");
if(fabs(a)=EPS)//a=0是输出“不是二次方程”
printf("Itisnotaquadraticequation!\n");
exit(0);
disc=b*b-4*a*c;/*计算判别式*/
p=-b/(2*a);
q=sqrt(fabs(disc))/(2*a);
if(fabs(disc)=EPS)/*判别式等于0,输出两相等实根*/
printf("x1=x2=%.2f\n",p);
else
if(discEPS)/*判别式大于0时,输出两不相等实根*/
printf("x1=%.2f,x2=%.2f\n",p+q,p-q);
else/*判别式小于0,输出两共轭负根*/
printf("x1=%.2f+%.2fi",p+q,p-q);
printf("x2=%.2f-%.2fi\n",p,q);
运行结果(1)
Pleaseenterthecoeficientsa,b,c:0,10,2
Itisnotaquadraticequation!
Pleaseenterthecoeficientsa,b,c:1,2,1
x1=x2=-1.00
Pleaseenterthecoeficientsa,b,c:2,6,1
x1=-0.18,x2=-2.82
Pleaseenterthecoeficientsa,b,c:2,3,2
x1=-0.09+-1.41ix2=-0.75-0.66i
程序代码
printf("Pleaseenteranexpression:");
scanf("%d%c%d",date1,op,date2);//输入运算表达式
switch(op)//根据输入的运算符确定实行的运算
case+://加法运算
printf("%d+%d=%d\n",date1,date2,date1+date2);
break;
case-://减法运算
printf("%d-%d=%d\n",date1,date2,date1-date2);
case*://乘法运算
printf("%d*%d=%d\n",date1,date2,date1*date2);
case/://除法运算
if(0==date2)//为避免除0错误,检验除数是否为0
printf("Divisionbyzero!\n");
printf("%d/%d=%d\n",date1,date2,date1/date2);
;break;
default://处理非法运算符
printf("Invalidopreator!\n");
Pleaseenteranexpression:22+12
22+12=34
Pleaseenteranexpression:22-12
22-12=10
Pleaseenteranexpression:22*12
22*12=
Pleaseenteranexpression:22/12
22/12=1
(5)
Pleaseenteranexpression:22/0
Divisionbyzero!
(6)
Pleaseenteranexpression:22\12
Invalidopreator!
程序代码
floatdate1,date2;
scanf("%f%c%f",date1,op,date2);//输入运算表达式
printf("%f+%f=%f\n",date1,date2,date1+date2);
printf("%f-%f=%f\n",date1,date2,date1-date2);
printf("%f*%f=%f\n",date1,date2,date1*date2);
if(fabs(date2)=1e-7)//实数与0比较
printf("%f/%f=%f\n",date1,date2,date1/date2);
Pleaseenteranexpression:1.2+0.3
1.+0.=1.
Pleaseenteranexpression:1.2-0.3
1.-0.=0.
Pleaseenteranexpression:1.2*0.3
1.*0.=0.
Pleaseenteranexpression:1.2/0.3
1./0.=4.
Pleaseenteranexpression:1.2/0
Pleaseenteranexpression:1.2\3
程序代码
#defineEPS1e-1
floata,b,c;
intflag=1;//置标志变量flag为非0值
scanf("%f,%f.%f",a,b,c);
if(a+bcb+caa+cb)//如果满足三角形的基本条件
if(fabs(a-b)=EPS
fabs(b-c)=EPS
fabs(c-a)=EPS)
printf("等腰");//等腰
flag=0;//标志变量flag为0值
elseif(fabs(a-b)=EPSfabs(b-c)=EPSfabs(c-a)=EPS)
printf("等边");//等边
flag=0;
if(fabs(a*a+b*b-c*c)=EPS
fabs(a*a+c*c-b*b)=EPS
fabs(b*b+c*c-a*a)=EPS)
printf("直角");//直角
flag=0;//置标志变量flag为0值
if(flag)//若标志变量flag非0,则是一般三角形
printf("一般");
printf("三角形\n");
printf("不是三角形\n");
直角三角形
Inputa,b,c:4,4,5
等腰三角形
Inputa,b,c:3,4,6
一般三角形
Inputa,b,c:3,4,9
不是三角形
(5)Inputa,b,c:10,10,14.4
等腰直角三角形
Inputa,b,c:4,4,4,
等边三角形
程序代码
intscore,mark;
printf("pleaseenterthescore:");
scanf("%d",score);
mark=score0
score?-1:score/10;
switch(mark)
case10:
case9:printf("%d--A\n",score);
case8:printf("%d--B\n",score);
case7:printf("%d--C\n",score);
case6:printf("%d-D\n",score);
case5:
case4:
case3:
case2:
case1:
case0:printf("%d--E\n",score);
default:printf("Inputerror!\n");
pleaseenterthescore:0
0—E
pleaseenterthescore:15
15—E
pleaseenterthescore:25
25—E
pleaseenterthescore:35
35—E
pleaseenterthescore:45
45—E
pleaseenterthescore:55
55—E
(7)
pleaseenterthescore:65
65-D
(8)
pleaseenterthescore:75
75—C
(9)
pleaseenterthescore:85
85—B
(10)
pleaseenterthescore:95
95—A
(11)
pleaseenterthescore:
—A
(12)
pleaseenterthescore:-10
Inputerror!
(13)
pleaseenterthescore:
程序代码
printf("%Inputa,b:");
max=ab?a:b;
Inputa,b:3.2,1
max=53
Inputa,b:1,3.2
max=3
Inputa,b:q
程序代码
inta,b,max,ret;
ret=scanf("%d,%d",a,b);//记录scanf()韩束的返回值
if(ret!=2)//根据scanf()函数返回值,判断输入数据个数或者格式是否错误
printf("Inputdatequantityorformaterror!\n");
fflush(stdin);//清除输入缓冲区中的错误数据
else//以此可以是正确读入数据后应该执行的操作
Inputa,b:1.2
Inputdatequantityorformaterror!
Inputa,b:13
程序代码
shortx=12,y=8;
printf("%5hd%5hd%5hd\n",x,x
y,xy);
printf("%5hu%5hd%5hd\n",~x,x
y,xy);
printf("%5hd%5hd%5hd\n\n",~x,x
y,xy);
-