C语言练习作业及参考答案.docx
- 文档编号:27845057
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:20
- 大小:28.54KB
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) char B) char=int C) char D)char=int=long int<=float 2、假设所有变量均为整型,则表达式(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)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 练习 作业 参考答案