C语言例题练习习题A.docx
《C语言例题练习习题A.docx》由会员分享,可在线阅读,更多相关《C语言例题练习习题A.docx(24页珍藏版)》请在冰豆网上搜索。
C语言例题练习习题A
C语言例题、练习、习题
【例1.1】输出一字符串。
#include"stdio.h"
voidmain()
{
printf("thisisaCprogram.\n");
}
程序运行结果为:
thisisaCprogram.
【例1.2】求a,b相加的和放在sum中。
#include"stdio.h"
voidmain()
{
inta,b,sum;
a=123;
b=456;
sum=a+b;
printf("sumis%d\n",sum);
}
程序运行结果为:
sumis579
【例1.2】求a,b相加的和放在sum中。
#include"stdio.h"
voidmain()
{
inta,b,sum;
a=123;
b=456;
sum=a+b;
printf("sumis%d\n",sum);
}
程序运行结果为:
sumis579
例如:
0x12=1*161+2*160=18(十进制)
*八进制的数码范围为0~7;018
*十六进制的数码除了数字0~9外,
还使用英文字母a~f(或A~F)表示10~15。
如:
0x1e√
如VisualC++6.0中,有short(2字节)≤int(4字节)≤long(4字节)
关键字所占位数取值范围
short16-32768~32767(-215~215-1)
unsignedshort160~65535(216-1)
int32-2147483648~2147483647
unsigned320~4294967295
long32-2147483648~2147483647
unsignedlong320~4294967295
(1)十进制小数形式:
由数字和小数点组成;
例如:
5.2,4.,.3。
(2)指数形式:
"十进制小数"+"e(或E)"+"十进制数整数"。
例如:
12.5e-6表示12.5×10-6。
小数点不能单独出现;0.√.0√.
e或E的两边必须有数,且其后面必须为整数;
如:
6E0.2e5
例如:
字符A的ASCII码为:
65D(十进制)=41H(十六进制)=101Q(八进制)
∴字符A可以表示为‘A’、‘\x41’、‘\101’。
【例1.5】符号常量的应用。
#definePI3.14159
#include"stdio.h"
voidmain()
{
intmj,r=5;
mj=PI*r*r;
printf("mj=%d",mj);
}
程序运行结果:
mj=78
【例1.11】字符变量的使用。
#include"stdio.h"
voidmain()
{
charc1,c2;
c1=97;
c2=98;
printf("%c,%c\n",c1,c2);//结果为:
a,b
printf("%d,%d\n",c1,c2);//结果为:
97,98
}
【例1.12】字符变量和整型变量可以相互赋值。
#include"stdio.h"
voidmain()
{
inti;
charc;
c=97;
i=c;
printf("%c,%d\n",c,c);
printf("%c,%d\n",i,i);
}程序运行结果为:
a,97 a,97
例如
inta=5;floatb=3.5;
!
a(0)!
(a
(1)
&&:
只要有一个为假,结果则为假;
a&&b
(1)!
a&&b(0)
||:
只要有一个为真,结果则为真;
a¦¦b
(1)!
a||b
(1)
练一练
inta=5;floatb=3.5;
a&&b!
a&&b
!
a&&!
b!
(a&&b)
&&:
只要有一个为假,结果则为假;
(a0)
||:
只要有一个为真,结果则为真;
(a0)
练一练
inta=5;floatb=3.5;
a&&b
(1)!
a&&b(0)
!
a&&!
b(0)!
(a&&b)(0)
&&:
只要有一个为假,结果则为假;
(a0)(0)
||:
只要有一个为真,结果则为真;
(a0)
(1)
!
高
算术运算符
关系运算符
&&和||
赋值运算符低
例如:
x=(y=12)/4
y值为12,x值为3,表达式的值为3
例如:
a+=b相当于a=a+b
a*=b相当于a=a*b
a*=b+c相当于a=a*(b+c)而不是a=a*b+c
练习
设x为整型变量,值为1,则表达式(x&&1)!
=(x%2)的值为?
若已知a=10,b=20,则表达式!
a
在以下一组运算符中,优先级最高的运算符是()
(A)<=(B)=(C)%(D)&&
4.(!
x)!
=(x==0)的值为?
5.C语言源程序经编译后生成目标程序文件,其扩展名是;连接后生成文件,其扩展名是。
6.C语言规定,标识符必须以_________或_____开头,是_____、数字和_____的序列。
7.以下说法中正确的是()
(A)C语言程序总是从第一个定义的函数开始执行
(B)在C语言程序中,要调用的函数必须在main()函数中定义
(C)C语言程序总是从main()函数开始执行
(D)C语言程序中的main()函数必须放在程序的开始部分
答案
0
1
C
0
.obj可执行.exe
字母下划线字母下划线
C
第3章顺序结构程序设计
例3-1:
已知圆半径radius=1.5,求圆周长和圆面积。
#include"stdio.h"/*编译预处理命令:
文件包含*/
voidmain()
{floatradius,length,area,pi=3.1415926;
radius=1.5;
length=2*pi*radius;/*求圆周长*/
area=pi*radius*radius;/*求圆面积*/
printf("radius=%f\n",radius);/*输出圆半径*/
printf("length=%7.2f,area=%7.2f\n",length,area);/*输出圆周长、面积*/
}
程序运行结果如下:
radius=1.500000
length=9.42,area=7.07
例3-2.类型转换字符d的使用。
#include"stdio.h"/*编译预处理命令:
文件包含*/
voidmain()
{intnum1=123;
printf("num1=%d,num1=%5d,num1=%-5d,num1=%2d\n",
num1,num1,num1,num1);/*用4种不同格式,输出int型数据num1的值*/
}
程序运行结果如下:
num1=123,num1=□□123,num1=123□□,num1=123
例3-3.类型转换字符f的使用。
#include"stdio.h"/*编译预处理命令:
文件包含*/
voidmain()
{floatf=123.456;
doubled1,d2;
d1=111111111111.111111111;
d2=222222222222.222222222;
printf("%f,%12f,%12.2f,%-12.2f,%.2f\n",f,f,f,f,f);
printf("d1+d2=%f\n",d1+d2);
}
程序运行结果如下:
123.456001,□□123.456001,□□□□□□123.46,123.46□□□□□□,123.46
d1+d2=333333333333.333010
本案例程序的输出结果中,数据123.456001和3333333333333.333010中的001和010都是无意义的,因为它们超出了有效数字的范围。
例3-4:
类型转换字符c的使用。
#include"stdio.h"/*编译预处理命令:
文件包含*/
voidmain()
{charc='A';
inti=65;
printf("c=%c,%5c,%d\n",c,c,c);
printf("i=%d,%c",i,i);
}
程序运行结果如下:
c=A,□□□□A,65
i=65,A
例3-5:
已知圆柱体的底半径为radius,高为high,求其体积。
#include"stdio.h"
voidmain()
{floatradius,high,vol,pi=3.1415926;
printf("Pleaseinputradius&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);
}
程序运行结果如下:
Pleaseinputradius&high:
1.5□2.0↙
radius=□□□1.50,high=□□□2.00,vol=□□14.14
例如,
scanf("%c%c%c",&ch1,&ch2,&ch3);printf("ch1=%c,ch2=%c,ch3=%c\n",ch1,ch2,ch3);
假设输入:
A□B□C↙,则系统将字母'A'赋值给ch1,空格'□'赋值给ch2,字母'B'赋值给ch3。
3.3顺序结构程序设计练习
1.输入整数a和b,交换a,b后输出。
#include"stdio.h"
voidmain()
{inta,b,temp;
printf("输入整数a,b?
");
scanf("%d,%d",&a,&b);
temp=a;
a=b;
b=temp;
printf("a=%db=%d\n",a,b);
}
2.输入圆的半径,求周长和面积。
#include
#definePI3.14159
voidmain()
{floatc,s,i;
printf("输入圆的半径:
");
scanf("%f",&i);
c=2.0*PI*i;
s=PI*i*i;
printf("圆的周长:
%f\n",c):
printf("圆的面积:
%f\n",s);
}
3、有以下程序,请写出输出结果。
#include
voidmain()
{inta=3,b=12;
floatx=1.23,y=4.785;
printf("a=%5d,b=%5d\n",a,b);
printf("%5.2f*%5.2f=%5.2f",x,y,x*y);
}
a=□□□□3,b=□□□12
1.23*4.79=5.89
例如,假设num=12,则:
!
num的值=0,num>=1&&num<=31的值为?
,num||num>31的值为?
答案:
1,1
[案例4-1]输入任意三个整数num1、num2、num3,求三个数中的最大值。
#include
voidmain()
{intnum1,num2,num3,max;
printf("Pleaseinputthreenumbers:
");
scanf("%d,%d,%d",&num1,&num2,&num3);
if(num1>num2)
max=num1;
else
max=num2;
if(num3>max)
max=num3;
printf("Thethreenumbersare:
%d,%d,%d\n",num1,num2,num3);
printf("max=%d\n",max);
}
程序运行情况如下:
Pleaseinputthreenumbers:
11,22,18↙
Thethreenumbersare:
11,22,18
max=22
例4-2.判断闰年
#include
voidmain()
{intyear;
printf("Pleaseinputtheyear:
");
scanf("%d",&year);
if((year%4==0&&year%100!
=0)||(year%400==0))
printf("%disaleapyear.\n",year);
else
printf("%disnotaleapyear.\n",year);
}
[案例4-3]从键盘上输入一个百分制成绩score,按下列原则输出其等级:
score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。
#include
voidmain()
{intscore,grade;
printf("Inputascore(0~100):
");
scanf("%d",&score);
grade=score/10;/*将成绩整除10,转化成switch语句中的case标号*/
switch(grade)
{
case10:
case9:
printf("grade=A\n");break;
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;
default:
printf("Thescoreisoutofrange!
\n");
}
}
程序运行情况如下:
Inputascore(0~100):
85↙
grade=B
练习
1.以下4个选项中,不能看做一条语句的是:
A.{;}B.a=0,b=0,c=0;
c.If(a>0);D.if(b==0)m=1;n=2;
2.已知字符¡¯A¡¯的ASCII代码值是65,字符变量C1的值是¡¯A¡¯,C2的值是¡¯D¡¯。
执行语句printf(¡°%d,%d¡±,C1,C2-2);后,输出结果为?
练习
2.若inti=11;执行下列程序后,变量i的正确结果是?
switch(i)
{
case0:
i=i+1;
case10:
i=i+1;
case11:
i=i+1;
default:
i=i+1;
}
答案
1.D
2.65,66
3.13
[案例5.1]求1~100的累计和。
/*程序功能:
求1~100的累计和*/
#include
voidmain()
{inti,sum=0;/*将累加器sum初始化为0*/
for(i=1;i<=100;i++)sum+=i;/*实现累加*/
printf("sum=%d\n",sum);
}
程序运行情况如下:
sum=5050
for语句和while语句
[案例5.2]求n的阶乘n!
(n!
=1*2*……*n)。
/*程序功能:
求n!
*/
#include
voidmain()
{
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
[案例5.3]用while语句求1~100的累计和。
/*程序功能:
求1~100的累计和*/
#include
voidmain()
{inti=1,sum=0;/*初始化循环控制变量i和累计器sum*/
while(i<=100)
{sum+=i;/*实现累加*/
i++;/*循环控制变量i增1*/
}
printf(“sum=%d\n”,sum);
}
程序运行情况如下:
sum=5050
[案例5.4]用do-while语句求解1~100的累计和。
/*程序功能:
求1~100的累计和*/
#include
voidmain()
{
inti=0,sum=0;/*初始化循环控制变量i和累计器sum*/
do
{sum+=i;/*实现累加*/
i++;/*循环控制变量i增1*/
}while(i<=100);
printf("sum=%d\n",sum);
}do-while语句比较适用于处理:
不论条件是否成立,先执行1次循环体语句组的情况。
除此之外,do-while语句能实现的,for语句也能实现,而且更简洁。
5-5:
#include/*打出100-200间的素数,每打10个换一行*/
#include
voidmain()
{
intm,i,k,n=0;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k){printf("%5d",m);
n=n+1;}
if(n%10==0)printf("\n");
}
}
5-6:
#include
/*输出100~200间不能被3整除的数,每行输出5个*/
voidmain()
{
intn,k=0;
for(n=100;n<=200;n++)
{if(n%3==0)
continue;
printf("%d",n);
k++;
if(k%5==0)printf("\n");
}
}
5-7:
输入10个数,求出其中的最大值和最小值。
#include
voidmain()
{
floatx,max,min;
inti;
scanf("%f",&x);
max=min=x;
for(i=2;i<=10;i++)
{
scanf("%f",&x);
if(x>max)max=x;
elseif(x}
printf("max=%f,min=%f\n",max,min);
}
练习
1、有以下程序
#include
voidmain()
{
inti,s=0;
for(i=2;i<11;i+=2)
s=s+i;
printf("%d\n",s);
}
程序执行后的输出结果是?
(A)自然数1~9的累加和
(B)自然数1~10的累加和
(C)自然数1~9中的奇数之和
(D)自然数1~10中的偶数之和
2、有以下程序
#include
voidmain()
{
chark;
inti;
for(i=1;i<3;i++)
{
scanf("%c",&k);
switch(k){
case'0':
printf("another\n");
case'1':
printf("number\n");
}
}
}
程序运行时,从键盘输入:
101<回车>,程序执行后的输出结果是?
3、以下错误的描述是()
(A)break语句不能用于循环语句和switch语句外的任何其他语句。
(B)在switch语句中使用break语句或continue语句的作用相同。
(C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环。
(D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环。
答案
1.D
2.number
another
number
3.B
6-1:
#include
intmax(intx,inty){/*函数头*/
intz;/*函数体内部说明*/
z=x>y?
x:
y;
return(z);/*返回值*/
}
voidmain(){
inta,b,c;
scanf("%d%d",&a,&b);
c=max(a,b);
printf("maxis%d",c);
}
函数的形参与实参
6-2:
#include
voidmain()
{
inta,b,sum;
a=10;
b=24;
sum=add(a,b);
printf("sum=%d\n",sum);
}
intadd(intx,inty)
{
x=x+y;
return(x);
}
6-3:
#include
voidmain()
{voids(intn);/*说明函数*/
intn=100;/*定义实参n,并初始化*/
s(n);/*调用函数*/
printf("n_s=%d\n",n);/*输出调用后实参的值,便于进行比较*/
}
voids(intn)
{inti;