C语言练习作业及答案.docx
《C语言练习作业及答案.docx》由会员分享,可在线阅读,更多相关《C语言练习作业及答案.docx(20页珍藏版)》请在冰点文库上搜索。
C语言练习作业及答案
习题一
1、C语言源程序最多可能由____ABCD____________部分组成?
A)预处理部分B)变量说明部分
C)函数原型声明部分D)函数定义部分
2、一个完整的C语言源程序最少必须有___C____。
A)若干个主函数B)若干个函数
C)且只能有一个主函数D)一个函数
3、C语言以函数为源程序的基本单位最主要有利于__B_____。
A)程序设计结构化B)程序设计模块化
C)程序设计简单化D提高程序设计有效性
4、要使得C语言编写的程序能够在计算机上运行并得出正确结果,必须要先经过______________B_______________________。
A)编辑和链接B)编译和链接
C)修改和运行D运行并输入数据
5、 一个C程序的执行是从______A______。
A)本程序的main函数开始,到main函数结束。
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序main函数结束
6、 以下叙述正确的是__A______。
A)在C程序中,main函数必须位于程序的最前面
B)C程序的每行中只能写一条语句
C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
7、以下叙述不正确的是___D_____。
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
8、C语言规定:
在一个源程序中,main函数的位置是___A_____。
A)必须在最开始
B)必须在系统调用的库函数的后面
C)可以任意
D)必须在最后
习题二
一、程序题
1、阅读程序写运行结果
(1)#include
intmain()
{
intx=10,y=6,z=3,t;
if(x>y){t=x;x=y;y=t;}
if(y>z){t=y;y=z;z=t;}
if(x>y){t=x;x=y;y=t;}
printf("%d\t%d\t%d\n",x,y,z);
return0;
}
运行结果3610
(2)#include
intmain()
{
intn=123;
intx,y,z;
x=n/100;
y=n%100/10;
z=n%10;
printf("x=%d,y=%d,z=%d\n",x,y,z);
return0;
}
运行结果1,2,3
(3)#include
intmain()
{
intx=10,y=6;
printf("%d\n",!
x);
printf("%d\n",x||y);
printf("%d\n",x&&y);
return0;
}
运行结果0
1
1
(4)#include
intmain()
{
intx=10,y=6,z=3,s=0;
s+=x;
s+=y;
s+=z;
printf("%d\n",s);
return0;
}
运行结果19
(5)#include
intmain()
{
inta=2,b=3;
floatx=3.5,y=2.5;
printf("%f\n",(float)(a+b)/2+(int)x%(int)y);
return0;
}
运行结果3.5
(6)#include
intmain()
{
inta=-100;
unsignedb,c;
longd=32768;
floate=4.56;
b=a;
a=c=d;
printf("%d,%u,%u,%ld\n",a,b,c,d);
a=e;
printf("%d,%f\n",a,e);
return0;
}
本题假设int型数据占两个字节。
(提示:
%u表示以无符号整型的格式输出;%ld表示以长整型的格式输出)
运行结果32768,100,32768,32768L
4,4.56
(7)#include
intmain()
{
inti=1,j,k;
j=i++;printf("j=%d,i=%d\n",j,i);
k=++i;printf("k=%d,i=%d\n",k,i);
j=i--;printf("j=%d,i=%d\n",j,i);
k=--i;printf("k=%d,i=%d\n",k,i);
return0;
}
运行结果j=1,i=2
k=3,i=3
j=3,i=2
k=1,i=1
(8)#include
#defineM(x)x*(x+1)
intmain()
{
inta=2,b=3;
printf("%d\n",M(1+a+b));
return0;
}
运行结果
2、仿照本章的例题写程序
(1)输入三个整数,计算并输出它们的平均值。
(2)输入三个整数,对它们进行从小到大排序,并输出排序后的结果。
(3)输入一个0-100的整数,若该数是偶数且是5的倍数,则输出“Y”,否则输出“N”。
(4)输入两个英文小写字母,输出其中的较大字母、较小字母,以及较大字母和较小字母之间间隔的字符个数。
(5)输入圆的半径r,计算并输出圆的周长和面积,要求将
定义为符号常量。
二、选择题
1、在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为____A___。
A) charB) char=int C) charD)char=int=long int<=float2、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)
的值是____B___。
A) 7 B) 8 C)6 D)2
3、下面四个选项中,均是不合法的用户标识符的选项是_C______。
A)A B)float C)b-a D)_123
P_0 la0 goto struct
do _A int type
4、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符____C___。
A)必须为字母
B)必须为下划线
C)必须为字母或下划线
D)可以是字母、数字和下划线中任一种字符
习题三
一、程序题
1、阅读程序写运行结果
(1)请写出以下程序的运行结果
intmain()
{
inta=5,b=8;
floatx=34.5678,y=-567.123;
charc='A';
longn=1234567;
unsignedu=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%10f%-10f\n",x,y);
printf("%e%10.2e\n",x,y);
printf("%c%d%o%x\n",c,c,c,c);
printf("%ld%lo%lx%x\n",n,n,n,n);
printf("%u%d%o%x\n",u,u,u,u);
printf("%s%3.2s\n","CHINA","CHINA");
return(0);
}
运行结果
(2)用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=35.19,c1=‘Q’,c2=‘q’。
问在键盘上如何输入?
intmain()
{
inta,b;
floatx,y;
charc1,c2;
scanf("a=%db=%d",&a,&b);
scanf("%f,%f",&x,&y);
scanf("%c%c",&c1,&c2);
printf("%d%d%f%f%c%c\n",a,b,x,y,c1,c2);
return(0);
}
运行结果
(3)下面程序运行时从键盘上输入123445216750,程序运行结果是什么?
#include
intmain()
{
inta,b,c;
scanf("%2d%3d%*2d%3d",&a,&b,&c);
printf("\na=%d,b=%d,c=%d\n",a,b,c);
return(0);
}
运行结果
(4)下面程序的输出结果是什么?
#include
intmain()
{
intc;
chard;
c=66;
d='B';
putchar(c);putchar(d);putchar('B');putchar(66);
c=68;
d='D';
putchar(c);putchar(d);putchar('B');putchar(66);
return(0);
}
运行结果
(5)下面程序的输出结果是什么?
#include
intmain()
{
inta=-1;longb=-2;floatf=123.456;charc='a';
printf("a=%d,a=%o,a=%x,a=%u\n",a,a,a,a);
printf("b=%1d,b=%1o,b=%1x,b=%1u\n",b,b,b,b);
printf("f=%f,f=%7.2f,f=%-7.2f\nf=%e,f=%g\n",f,f,f,f,f);
printf("c=%c,c=%3c,c=%-3c,c=%d,c=%c\n",c,c,c,'a',65);
printf("s1=%s,s2=%7.3s,s3=%-7.3s\n","12345","ABCD","12345");
return(0);
}
运行结果
(6)下面程序的输出结果是什么?
#include
intmain()
{
intn,x1,x2,x3,y;
printf("Pleaseinputnumbern:
");
scanf("%3d",&n);
x1=n/100;
x2=n/10%10;
x3=n%100;
y=x3*100+x2*10+x1;
printf("y=%d\n",y);
return(0);
}
运行结果
2、写程序
(1)设圆柱底面圆半径r=1.5,圆柱高h=3,求底面圆周长、圆柱侧面积、圆柱面积、圆柱体积。
(2)输入一个华氏温度,要求输出摄氏温度。
公式为
要求输出要有文字说明,保留两位小数。
(3)若a=3,b=4,c=5,x=1.2,y=2.4,z=—3.6,u=33278,n=126765,c1=’a’,c2=’b’,编写程序输出以下的输出结果。
a=▁3▁▁b=▁4▁▁c=▁5
x=1.200000,y=2.400000,z=-3.6000000
x+y=▁3.60▁▁y+z=-1.20▁▁=-2.40
u=▁33278▁▁n=▁▁▁▁126765
c1=’a’其ASCII码值为97
c2=’b’其ASCII码值为98.
(4)编写程序,读入一个字母,输出与之对应的ASCII码,输入输出都要有相应的文字提示。
二、选择题
1、已知’A’的ASCII代码是65,以下程序的输出结果是(B)
#include "stdio.h"
main()
{int c1=65,c2=66;
printf("%c, %c",c1,c2);
}
A.因输出格式不合法,输出错误信息B.65,66
C.A,B D.65,66
2、若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是(B)
A.a=a+b,b=a-b,a=a-b; B.t=a,a=b,b=t;
C.a=t,t=b,b=a; D.t=b;b=a;a=t;
3、若k是整型变量,则以下程序段的输出是(D)
k=-8567;
printf (“|%d|\n”,k);
A.输出格式不正确 B.输出为|008567|
C.输出为|8567| D.输出为|-8567|
4、下列可作变量的标识符是(B)
A.3rt B.je_cC.$89 D.a+6
5、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(A)
A.必须为字母或下划线B.必须为下划线
C.必须为字母
D.可以是字母、数字和下划线中的任一种字符
6、C语言并不是非常严谨的算法语言,在以下关于C语言的不严谨的叙述中,错误的说法是(A)
A.大写字母和小写字符的意义相同
B.有些不同类型的变量可以在一个表达式中运算
C.在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型
D.同一个运算符号在不同的场合可以有不同的含义
一、程序题
1、阅读程序写运行结果
(1)intmain()
{
floata=2.5,b=3.4;
intc,d;
c=(a>b);
d=(c==0);
printf("%d%d\n",c,d);
return(0);
}
运行结果01
(2)intmain()
{
inta,b,c,d;
a=!
3.1;printf("%d\n",a);
b=!
'a';printf("%d\n",b);
b=!
0;printf("%d\n",b);
c=1&&2;printf("%d\n",c);
c=a&&2;printf("%d\n",c);
d=a||2;printf("%d\n",d);
d=a||c;printf("%d\n",d);
return(0);
}
运行结果0
1
1
1
0
1
0
(3)
#include
intmain()
{
intop1,op2,result;
charoperato;
scanf("%d",&op1);
operato=getchar();
while(operato!
='='){
scanf("%d",&op2);
switch(operato){
case'+':
result=op1+op2;break;
case'-':
result=op1-op2;break;
case'*':
result=op1*op2;break;
case'/':
result=op1/op2;break;
default:
result=0;
}
op1=result;
operato=getchar();
}
printf("%d\n",result);
return(0);
}
程序运行时,
输入2*3−4=,输出:
输入2+1/4=,输出:
输入1+2*5−10/2=,输出:
(4)
#include
intmain()
{
floata=2.5,b=3.4;
intc,d;
c=(a>b);
printf("%d",c);
d=(c==0);
printf("%d",d);
return(0);
}
运行结果
(5)
#include
intmain()
{
inttestnum,remainder;
printf("Enteryournumbertobetested.\n");
scanf("%d",&testnum);
remainder=testnum%2;
if(remainder==0)
printf("Thenumberiseven.\n");
else
printf("Thenumberisodd.\n");
return(0);
}
运行结果
(6)
#include
intmain()
{
inti;
scanf("%d",&i);
switch(i)
{
case1:
case2:
putchar('i');
case3:
printf("%d\n",i);
default:
printf("OK!
\n");
}
return(0);
}
运行结果
(7)下面程序运行时,分别输入‘5’、‘D’、‘w’和‘!
’后的输出结果是什么?
#include
intmain()
{
charc;
scanf("%c",&c);
if(c>='0'&&c<='9')
printf("0-9\n");
elseif(c>='A'&&c<='Z')
printf("A-Z\n");
elseif(c>='a'&&c<='z')
printf("a-z\n");
else
printf("othercharacter\n");
return(0);
}
运行结果
2、写程序
(1)有一分段函数如下:
写程序实现,输入x值,输出y值。
(2)编写程序实现,输入一个整数,判断它能否被3、5、7整除,并输出以下信息之一:
1)同时被3、5、7整除;
2)能被其中两个数整除(要指出是哪两个数);
3)能被其中一个数整除(要指出是哪个数);
4)不能被3、5、7中任意一个整数整除。
(3)某幼儿园收2岁到6岁的儿童,2、3岁儿童进小班,4岁儿童进中班,5、6岁儿童进大班,用switch语句编程实现,输入一个儿童的年龄,输出该儿童应当进入的班级。
(4)编程实现,输入4个整数,按从小到大的顺序输出。
(5)给一个不多于5位的正整数,要求:
①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数为321,应输出123。
(6)企业发放的奖金根据利润提成。
利润I低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元(100000
高于20万元的部分按5%提成;400000
从键盘输入当月利润I,求应发奖金总数。
要求:
(1)用if语句编程序;
(2)用switch语句编程序。
(7)编写程序实现功能:
输入整数a和b,若a2+b2>100,则输出a2+b2之和的百位以上的数字,否则直接输出a2+b2的和。
(8)编写程序判断输入的正整数是否既是5又是7的整数倍。
若是则输出“yes”,否则输出“no”。
二、单项选择题
1、“基本结构”不具有以下特点()
A.只有一个入口,只有一个出口B.没有死循环
C.没有永远执行不到的语句D.不允许退出循环
2、在流程图中,菱形框表示的操作是()
A.数据的输入输出 B.程序的开始
C.条件判断D.赋值
3、以下程序的运行结果是()
#include
main()
{intm=5,n=10;
printf("%d,%d\n",m++,--n);
}
A.5,9B.6,9
C.5,10D.6,10
4、逻辑运算符两侧的数据类型()
A.只能是0和1B.只能是0或非0正数
C.只能是整型或字符型数据D.可以是任何类型的数据
5、下列关系表达式结果为假的是()
A.0!
=1B.2<=8
C.(a=2*2)==2D.y=(2+2)==4
6、下列运算符中优先级最低的是()
A.?
:
B.+=
C.>=D.==
5、下面四个选项中,均是合法整型常量的选项是_______。
A)160 B)-0xcdf C)-01 D)-0x48a
-0xffff 0la 986,012 2e5
011 0xe 0668 0x
6、下面正确的字符常量是_______。
A)“c” B)‘\\”
C) ‘W’ D) ‘’
7、若有代数式3ae/bc,则不正确的c语言表达式是_______。
A)a/b/c*e*3 B) 3*a*e/b/c
C)3*a*e/b*c D)a*e/c/b*3
8、sizeof(float)是_______。
A)一个双精度型表达式
B)一个整型表达式
C) 一个单精度型表达式
D)一个不合法的表达式
9、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为_______。
A)int B)float C)double D)不确定
10、在C语言中,char型数据在内存中的存储形式是_______。
A)补码 B)反码
C)原码 D)ASCII码
11、设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是_______。
A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0D)n=(n/100+0.5)*100.0
12、设以下变量均为int类型,则值不等于7的表达式是。
A)(x=y=6,x+y,x+1) B)(x=y=6,x+y,y+1)
C)(x=6,x+1,y=6,x+y) D)(y=6,y+1,x=y,x+1)