c语言程序阅读练习.docx
《c语言程序阅读练习.docx》由会员分享,可在线阅读,更多相关《c语言程序阅读练习.docx(139页珍藏版)》请在冰点文库上搜索。
![c语言程序阅读练习.docx](https://file1.bingdoc.com/fileroot1/2023-5/21/ad91a6e0-26c3-4073-825a-c36efc38e0c3/ad91a6e0-26c3-4073-825a-c36efc38e0c31.gif)
c语言程序阅读练习
C语言第1章
[例1.3]求2个数中较大者
#include
voidmain()
{
intmax(intx,inty);
inta,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("max=%d\n",c);
}
intmax(intx,inty)
{
intz;
if(x>y)z=x;
elsez=y;
return(z);
}
1.5编写一个C程序,输出以下信息:
*****************************
Verygood!
*****************************
//chapter1.cpp:
Definestheentrypointfortheconsoleapplication.
//
#include"stdafx.h"
intmain(intargc,char*argv[])
{
printf("******************\n");
printf("Verygood!
\n");
printf("******************\n");
return0;
}
1.6编写一个C程序,输入a、b、c3个值,输出其中最大者。
//chapter1.cpp:
Definestheentrypointfortheconsoleapplication.
//
#include"stdafx.h"
intmax(inta,intb,intc)
{
inttemp;
temp=a;
if(temp
temp=b;
if(temptemp=c;
returntemp;
}
intmain(intargc,char*argv[])
{
inta,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("max=%d\n",max(a,b,c));
return0;
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
C语言第2章
[例2.1]求1×2×3×4×5
[例2.2]有50个学生,要求将他们之中成绩在80分以上的学号和成绩输出
[例2.3]判定2000-2500年中的每一年是否是闰年
[例2.4]求1-1/2+1/3-1/4+…+1/99-1/100
[例2.5]对一个大于或等于3的正整数,判断它是不是一个素数
[例2.6]将例2.1求5!
的算法用流程图表示
[例2.7]将例2.2的算用流程图表示。
将50名学生中成绩在80分以上者的学号和成绩输出
[例2.8]将例2.3判定闰年的算法用流程图表示
[例2.16]将例2.11表示的算法(求5!
)用C语言表示
#include
main()
{
inti,t;
t=1;
i=2;
while(i<=5)
{
t=t*i;
i=i+1;
}
printf(“%d”,t);
}
例2.17]求例2.14表示的算法(求级数的值)求1-1/2+1/3+…+1/99-1/100
用C语言表示
#include
main()
{
intsign=1;
floatdeno=2.0,sum=1.0,term;
while(deno<=100)
{
sign=-sign;
term=sign/deno;
sum=sum+term;
deno=deno+1;
}
printf(“%f”,sum);
}
2.4用传统流程图表示求解以下问题的算法
(1)有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换。
#include"stdafx.h"
intmain(intargc,char*argv[])
{
intA;
intB;
A=1;
B=2;
printf("A=%dB=%d\n",A,B);
intC;
C=A;
A=B;
B=C;
printf("A=%dB=%d\n",A,B);
return0;
}
(2)依次将10个数输入,要求将其中最大的数输出
#include"stdafx.h"
intmain(intargc,char*argv[])
{
inta;
intmax;
scanf("%d",&a);
max=a;
for(inti=2;i<=10;i++)
{
scanf("%d",&a);
if(a>max)
{
max=a;
}
}
printf("max=%d\n",max);
return0;
}
(3)有3个数a、b、c,要求按大小顺序把它们输出
#include"stdafx.h"
intmain(intargc,char*argv[])
{
inta,b,c;
inttemp;
scanf("a=%db=%dc=%d",&a,&b,&c);
if(a>b)
{
temp=a;
a=b;
b=temp;
}
if(b>c)
{
temp=b;
b=c;
c=temp;
}
if(a>b)
{
temp=a;
a=b;
b=temp;
}
printf("a=%db=%dc=%d\n",a,b,c);
return0;
}
(4)求1+2+3+……+100
#include"stdafx.h"
intmain(intargc,char*argv[])
{
intsum;
sum=0;
for(inti=1;i<=100;i++)
{
sum=sum+i;
}
printf("1+2+3+...+100=%d\n",sum);
return0;
}
(5)判断一个数n能否同时被3和5整除
#include
intmain(intargc,char*argv[])
{
intn;
scanf("n=%d",&n);
if(n%3==0&&n%5==0)
{
printf("%d能够被3和5同时整除\n",n);
}
else
{
printf("%d不能够被3和5同时整除\n",n);
}
return0;
}
(6)将100-200之间的素数输出
#include
#include
intjudge(intn)
{
intw;
w=0;
for(inti=2;i<=sqrt(n);i++)
{
intr;
r=n%i;
if(r==0)
{
w=1;
break;
}
}
returnw;
}
intmain(intargc,char*argv[])
{
intn;
for(n=100;n<=200;n++)
{
if(judge(n)==0)
{
printf("%d是素数\n",n);
}
else
{
printf("%d不是素数\n",n);
}
}
return0;
}
(7)求两个数m和n的最大公约数
#include
intmain(intargc,char*argv[])
{
intm,n;
intmin;
scanf("%d%d",&m,&n);
if(m{
min=m;
}
else
{
min=n;
}
for(inti=min;i>=1;i--)
{
if(m%i==0&&n%i==0)
{
printf("%d是%d和%d的最大公约数\n",i,m,n);
break;
}
}
return0;
}
(8)求方程式ax2+bx+c=0的根。
分别考虑:
有两个不等的实根;有两个相等的实根
#include
#include
intmain(intargc,char*argv[])
{
floata,b,c;
scanf("a=%fb=%fc=%f",&a,&b,&c);
floatdisc;
disc=b*b-4*a*c;
if(disc>0)
{
printf("x1=%f\n",(-b+sqrt(disc))/(2*a));
printf("x2=%f\n",(-b-sqrt(disc))/(2*a));
}
if(disc==0)
{
printf("x=%f",-b/(2*a));
}
if(disc<0)
{
printf("方程没有实根");
}
return0;
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
C语言第3章
[例3.7]大小写字母的转换
#include
voidmain()
{
charc1,c2;
c1='a';
c2='b';
c1=c1-32;
c2=c2-32;
printf("%c%c",c1,c2);
}
3.6写出以下程序的运行结果:
#include
voidmain()
{
charc1=‘a’,c2=‘b’,c3=‘c’,c4=‘\101’,c5=‘\116’;
printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);
printf(“\t\b%c%c\n”,c4,c5);
}
3.7要将“China”译成密码,密码规律是:
用原来的字母后面第4个字母代替原来的字母。
例如,字母“A”后面第4个字母是”E“,用”E“代替”A”。
因此,“China”应译为“Glmre”。
请编一程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为’C‘、’h‘、’I‘、’n’、‘a’,经过运算,使c1、c2、c3、c4、c5分别变为‘G’、‘l’、‘m’、‘r’、‘e’,并输出。
#include
intmain(intargc,char*argv[])
{
charc1,c2,c3,c4,c5;
c1='C';
c2='h';
c3='i';
c4='n';
c5='a';
printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
c1+=4;
c2+=4;
c3+=4;//c3=c3+4
c4+=4;
c5+=5;
printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
3.8例3.6能够改成如下:
#include
voidmain()
{
intc1,c2;
c1=97;
c2=98;
printf(“%c%c\n”,c1,c2);
printf(“%d%d\n”,c1,c2);
}
3.9求下面算术表达式的值
(1)x+a%3*(int)(x+y)%2/4
设x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=3.5,y=2.5
#include
main()
{
floatx=2.5;
inta=7,b;
floaty=4.7;
printf("%lf\n",x+a%3*(int)(x+y)%2/4);
//2.5
a=2;
b=3;
x=3.5;
y=2.5;
printf("%lf\n",(float)(a+b)/2+(int)x%(int)y);
//3.5
}
3.10写出下面程序的运行结果
#include
voidmain()
{
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(“%d,%d,%d,%d\n”,i,j,m,n);
}
3.11写出下面赋值的结果
#include
main()
{
inti=99;
charc;
unsignedintui;
floatf;
longintli;
c=i;//c='c'
ui=i;//ui=99
f=i;//f=99.0
li=i;//li=99
printf("c=%c\n",c);
printf("ui=%u\n",ui);
printf("f=%f\n",f);
printf("li=%ld\n",li);
}
3.12写出下面赋值表达式运算后a的值,设原来a=12:
(1)a+=a
(2)a-=2
(3)a*=2+3
(4)a/=a+a
(5)a%=(n%=2),n的值等于5
(6)a+=a-=a*=a
#include
main()
{
inta=12;
printf("a+=a%d\n",a+=a);//a=a+a
printf("a-=2%d\n",a-=2);//a=a-2
printf("a*=2+3%d\n",a*=2+3);//a=a*(2+3)=22*5
printf("a/=a+a%d\n",a/=a+a);//a=a/(a+a)
intn=5;
printf("a%=(n%=2)%d\n",a%=(n%=2));//a=a%
printf("a+=a-=a*=a%d\n",a+=a-=a*=a);
}
/*
1)a+=a
(2)a-=2
(3)a*=2+3
(4)a/=a+a
(5)a%=(n%=2),n的值等于5
(6)a+=a-=a*=a
*/
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
C语言第4章
[例4.1]输出单个字符
#include
voidmain()
{
chara,b,c;
a=‘B’;b=‘O’;c=‘Y’;
putchar(a);putchar(b);putchar(c);putchar(‘\n’);
}
[例4.2]输入单个字符
#include
voidmain()
{
charc;
c=getchar();
putchar(c);
putchar(‘\n’);
}
[例4.3]无符号数据的输出
#include
voidmain()
{
unsignedinta=65535;
intb=-2;
printf(“a=%d,%o,%x,%u\n”,a,a,a,a);
printf(“b=%d,%o,%x.%u\n”,b,b,b,b);
}
[例4.5]字符串的输出
#include
voidmain()
{
printf(“%3s,%7.2s,%.4s,%-5.3s\n”,
”CHINA”,”CHINA”,”CHINA”,”CHINA”);
}
[例4.6]输出实数时的有效位数
#include
voidmain()
{
floatx,y;
x=111111.111;
y=222222.222;
printf(“%f\n”,x+y);
}
[例4.7]输出双精度数时的有效位数
#include
voidmain()
{
doublex,y;
x=1111111111111.111111111;
y=2222222222222.222222222;
printf(“%f\n”,x+y);
}
[例4.9]用scanf函数输入数据
#include
voidmain()
{
inta,b,c;
scanf(“%d%d%d”,&a,&b,&c);
printf(“%d,%d,%d\n”,a,b,c);
}
[例4.10]输入三角形的三边长,求三角形面积
其中s=(a+b+c)/2
#include
main()
{
floata,b,c,s,area;
scanf(“%f,%f,%f”,&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s);
printf(“area=%7.2f\n”,area);
}
[例4.11]从键盘输入一个大写字母,要求改用小写字母输出
#include
voidmain()
{
charc1,c2;
c1=getchar();
printf(“%c,%d\n”,c1,c1);
c2=c1+32;
printf(“%c,%d\n”,c2,c2);
}
[例4.12]求ax2+bx+c=0方程的根。
a,b,c由键盘输入,设b2-4ac>0
#include
main()
{
floata,b,c,disc,x1,x2,p,q;
scanf(“a=%f,b=%f,c=%f”,&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;
x2=p-q;
printf(“x1=%5.2f\nx2=%5.2f\n”,x1,x2);
}
4.8输入圆半径,求圆周长、圆面积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
请编程序。
#include
voidmain()
{
floatr;
scanf("%f",&r);
printf("圆的半径=%.2f\n",r);
printf("圆的面积=%.2lf\n",3.14*r*r);
printf("圆的周长=%.2lf\n",3.14*r*2);
}
4.9输入一个华氏温度,要求输出摄氏温度。
公式为c=5/9*(F-32)。
输出要有文字说明,取2位小数。
#include
voidmain()
{
floatF;
scanf("%f",&F);
doublec;
c=5.0/9*(F-32);
printf("华式温度=%f对应的摄氏温度%lf=\n",F,c);
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
C语言第5章
[5.1]输入两个实数,按代数值由小到大的顺序输出这两个数
#include
voidmain()
{
floata,b,t;
scanf(“%f,%f”,&a,&b);
if(a>b)
{
t=a;a=b;b=t;
}
printf(“%5.2f,%5.2f\n”,a,b);
}
[例5.2]输入3个数a、b、c,要求按由小到大的顺序输出
#include
voidmain()
{
floata,b,c,t;
scanf(“%f,%f,%f”,&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;}
}
[例5.3]编程,输入x值,输出y值,函数:
-1(x<0)
y=