C语言习题及答案.doc

上传人:可****阿 文档编号:77575966 上传时间:2023-03-15 格式:DOC 页数:79 大小:1.01MB
返回 下载 相关 举报
C语言习题及答案.doc_第1页
第1页 / 共79页
C语言习题及答案.doc_第2页
第2页 / 共79页
点击查看更多>>
资源描述

《C语言习题及答案.doc》由会员分享,可在线阅读,更多相关《C语言习题及答案.doc(79页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、_习题一【习题1-1】C语言源程序最多可能由_部分组成?A) 预处理部分 B)变量说明部分C) 函数原型声明部分 D)函数定义部分【习题1-2】一个完整的C语言源程序最少必须有_。A)若干个主函数 B)若干个函数C)且只能有一个主函数 D)一个函数【习题1-3】C语言以函数为源程序的基本单位最主要有利于_。A)程序设计结构化 B)程序设计模块化C)程序设计简单化 D提高程序设计有效性【习题1-4】要使得C语言编写的程序能够在计算机上运行并得出正确结果,必须要先经过_。A)编辑和链接 B)编译和链接C)修改和运行 D运行并输入数据【习题1-5】选择一个C语言集成开发环境并启动它,然后分别输入【例

2、1-1】、【例1-2】、【例1-3】的源程序,依次编译、链接、运行,看看能否达到预想的结果?从中了解程序的开发过程。习题二一、单项选择题【习题2-1】 已知A的ASCII代码是65,以下程序的输出结果是( )#includestdio.hmain( )intc1=65,c2=66;printf(%c,%c,c1,c2);A. 因输出格式不合法,输出错误信息B. 65,66C. A,B D. 65,66【习题2-2】若变量已正确定义,要将a和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

3、=b;b=a;a=t;【习题2-3】 若k是整型变量,则以下程序段的输出是( )k=-8567;printf(“|%d|n”,k);A. 输出格式不正确B. 输出为|008567|C. 输出为|8567|D. 输出为|-8567|【习题2-4】下列可作变量的标识符是( )A. 3rtB. je_cC.$89D. a+6【习题2-5】C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )A.必须为字母或下划线 B.必须为下划线C.必须为字母 D.可以是字母、数字和下划线中的任一种字符【习题2-6】 C语言并不是非常严谨的算法语言,在以下关于C语言的不严谨的叙述中,错误的说法是(

4、 )A. 大写字母和小写字符的意义相同 B. 有些不同类型的变量可以在一个表达式中运算C. 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型D. 同一个运算符号在不同的场合可以有不同的含义二、简答题【习题2-7】 C语言数据类型有哪几类?基本数据类型包括哪几类?【习题2-8】 C语言中十进制、八进制和十六进制整常量是如何表示的?【习题2-9】 C语言为什么规定对所用到的变量“先定义,后使用”,这样做有什么好处?【习题2-10】C语言中的语句有几类?控制语句有哪些?【习题2-11】 怎样区分表达式和表达式语句?为什么有人称C为表达式语言?【习题2-12】字符常量与字符串常量有什么区别?

5、【习题2-13】下面各数用八进制和十六进制数表示:(1)10 (2)32 (3)75 (4)-617(5)-111 (6)2483 (7)-28654 (8)21003三、阅读程序写结果或填空【习题2-14】写出以下程序的运行结果:#includemain() char c1=a,c2=b,c3=c,c4=101,c5=116; printf(a%c b%ctc%ctabcn,c1,c2,c3); printf(tb%c %cn,c4,c5);【习题2-15】写出以下程序的运行结果:#includemain()int n=177;printf(%on,n);【习题2-16】写出以下程序的运行结

6、果:#includemain()int a,n=0;n+=(a=10);printf(%dn,a);【习题2-17】写出以下程序的运行结果:#include main() int a=5,b=7;float x=67.8564,y=-789.124;char c=A;long n=1234567;unsigned u=65535;printf(%d%dn,a,b);printf(%3d%3dn,a,b);printf(%f,%fn,x,y);printf(%-10f,%-10fn,x,y);printf(%8.2f,%8.2f,%.4f,%.4f,%3f,%3fn,x,y,x,y,x,y);p

7、rintf(%e,%10.2en,x,y);printf(%c,%d,%o,%xn,c,c,c,c);printf(%ld,%lo,%xn,n,n,n);printf(%u,%o,%x,%dn,u,u,u,u);printf(%s,%5.3sn,COMPUTER,COMPUTER);【习题2-18】写出以下程序的运行结果:#includemain()int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(%d,%d,%d,%d,i,j,m,n);【习题2-19】下面运算表达式的值是: x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7【习题2-20】

8、下面运算表达式的值是: (float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5【习题2-21】 写出下面赋值表达式运算后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【习题2-22】 数学表达式:-5x5或x-5又是如何表达?请写出相应的C语句。四、编写程序题【习题2-23】 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积(4R2)、圆球体积(V=4R/3)、圆柱体积。用scanf()输入数据,输出计算结果,输出时要求

9、有文字说明,取小数点后2位数字。请编写程序。【习题2-24】 输入一个华氏温度,要求输出摄氏温度。公式为c=(F-32),输出要有文字说明,取2位小数。 【习题2-25】 编程序,用getchar()函数读入两个字符给cl、c2,然后分别用putchar()函数和printf()函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整型?抑或二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整型变量与字符变量是否在任何情况下都可以互相代替?如“char c1,c2;”与“int cl,c2;”是否无条件地等价?【习

10、题2-26】编写程序,从终端键盘输入圆的半径r,圆柱的高h,分别计算出圆周c1、圆面积cs和圆柱的体积cvz。输出计算结果要求有文字说明,并取小数点后两位数字。【习题2-27】编写程序,读入一个字母,输出与之对应的ASCII码,输入输出都要有相应的文字提示。习题三一、单项选择题【习题3-1】“基本结构”不具有以下特点( )A. 只有一个入口,只有一个出口B. 没有死循环C. 没有永远执行不到的语句D. 不允许退出循环【习题3-2】 在流程图中,菱形框表示的操作是( )A. 数据的输入输出B. 程序的开始C. 条件判断D. 赋值【习题3-3】以下程序的运行结果是( )#includemain()

11、int m=5,n=10;printf(%d,%dn,m+,-n);A. 5,9 B.6,9C. 5,10 D.6,10【习题3-4】逻辑运算符两侧的数据类型( )A. 只能是0和1 B. 只能是0或非0正数C. 只能是整型或字符型数据 D. 可以是任何类型的数据【习题3-5】下列关系表达式结果为假的是( )A. 0!=1 B. 2= D. = =【习题3-7】写出下面各逻辑表达式的值。设a=3,b=4,c=5。a+bc&b=ca|b+c&b-c!(ab)&!c|1!(x=a)&(y=b)&0!(a+b)+c-1&b+c/2二、简单题【习题3-8】什么是算法?算法有哪些特性?从日常生活中举出几

12、个算法的例子。【习题3-9】算法有哪些描述方法?各有什么优缺点?【习题3-10】结构化的算法有哪几种结构?试分别描述。【习题3-11】选择语句和循环语句对条件的判断的标准是什么?(即何值为真、何值为假?)三、用传统流程图表示求解以下问题的算法。【习题3-12】有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换(即A瓶原来盛醋,现改盛酱油,B瓶则相反);【习题3-13】依次将10个数输入,要求将其中最大的数打印出来;【习题3-14】有三个数a、b、c,要求按大小顺序把它们打印出来;【习题3-15】求1+2+3+100;【习题3-16】判断一个数n能否同时被3和5整除;【习题3-17】将10020

13、0之间的素数打印出来;【习题3-18】求两个数m和n的最大公约数;【习题3-19】求方程式ax2+bx+c=0的根(a、b、c从键盘输入)。四、编写程序题【习题3-20】有一函数写一程序,输入x,输出y值。【习题3-21】给一个不多于5位的正整数,要求:求出它是几位数;分别打印出每一位数字;按逆序打印出各位数字,例如原数为321,应输出123。【习题3-22】企业发放的奖金根据利润提成。利润I低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元(100000I200000)时,低于10万元的部分按10%提成,高于100000元的部分,可提成7.5%;200000I400000时

14、,低于20万元的部分仍按上述办法提成(下同)。高于20万元的部分按5%提成;400000I600000时,高于40万元的部分按3%提成;600000100,则输出a2+b2之和的百位以上的数字,否则直接输出a2+b2的和。【习题3-27】编写程序判断输入的正整数是否既是5又是7的整数倍。若是则输出“yes”,否则输出“no”。【习题3-28】编写程序实现功能:根据表3-1的函数关系,对输入的每个x的值,计算出相应的y值。表3-1 习题3-28的函数关系xyx000x10x10x201020x40-0.5x+20【习题3-29】编写程序实现,输入一个整数,判断它能否被3、5、7整除,并输出以下信

15、息之一:(1)同时被3、5、7整除;(2)能被其中两个数整除(要指出是哪两个数);(3)能被其中一个数整除(要指出是哪个数);(4)不能被3、5、7中任意一个整数整除。【习题3-30】用switch编程实现以下函数关系: 【习题3-31】编写程序,用switch实现:对于给定的百分制成绩,改成相应的A、B、C、D、E表示,90分以上为A,8089为B,7079为C,6069为D,60以下为E。【习题3-32】编写程序实现功能:输入一个复数,输出其共轭复数,如,输入2+3i,输出2-3i。【习题3-33】求Sn=a+aa+aaa+aaa(n个a)之值,其中a是一个数字。例如:2+22+222+2

16、222+22222(此时n=5),n由键盘输入。【习题3-34】求(即求1!+2!+3!+4!+20!)。【习题3-35】求+ 。【习题3-36】打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。【习题3-37】每个苹果0.8元,的一天买了2个苹果;从第二天开始,每天买前一天的两倍,直到每天购买的苹果个数达到不超过100的最大值,编写程序求每天平均花多少钱。【习题3-38】试编写程序,找出199之间的全部同构数。同构数是这样一组数,它出现在平方数的右边。例如,5是25的右边数,25是625的右边数,所

17、以5和25都是同构数。【习题3-39】假设x、y是整数,编写程序求xy的最后3位数,要求x、y从键盘输入。【习题3-40】一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1,2,3【习题3-41】有一分数序列,求出这个数列的前20项之和。【习题3-42】一球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?【习题3-43】猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃

18、了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少桃子。【习题3-44】编程打印出以下图案。* * *【习题3-45】用迭代法求x=。求平方根的迭代公式为 xn+1=(xn+a/xn) 要求前后两次求出的x的差的绝对值小于10-5 。【习题3-46】用牛顿迭代法求下面方程在1.5附近的根。 2x3-4x2+3x-6=0【习题3-47】两个乒乓球队进行比赛,各出3人。甲队为A、B、C 3人,乙队为X、Y、Z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不

19、和X比,C说他不和X、Z比,请编程序找出3对赛手的名单。习题四一、单项选择题【习题4-1】一个C程序的执行是从 。A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序文件的第一个函数开始,到本程序main函数结束D) 本程序的main函数开始,到本程序文件的最后一个函数结束【习题4-2】以下叙述正确的是 。A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误B) 在C程序中,main函数必须位于程序的最前面C) C语言本身没有输入输出语句D) C程序的每行中只能写一条语句【习题4-3】以下叙述正确的是_。A)ma

20、in函数不可以有返回值) main函数不可以有参数C)函数可以有多个返回值 D)函数的形参可以是静态变量 【习题4-4】以下叙述正确的是_。A)void类型的函数体中不可以有return语句 B) void类型的函数体中可以有return语句 C) 函数体中不可以有多个return语句 D) 函数体中定义的变量名称与形式参数的名称可以相同【习题4-5】以下叙述正确的是_。A)一个程序文件中定义的内部函数,其他文件可以调用它 B)一个程序文件中定义的内部函数,其他文件不可以调用它 C)不同文件中定义的内部函数不可以有相同的名称 D)函数的定义不能放在调用它的函数之后【习题4-6】在由多个文件构成

21、的C程序中,以下叙述正确的是_。A)外部变量与局部变量不能同名 B)不同程序文件中可以定义相同名称的内部变量 C)只能把外部变量指定为静态存储方式 D)只能把局部变量指定为静态存储方式 【习题4-7】以下叙述正确的是_。A) 一个C程序必须由多个函数组成 B)一个C源程序必须包括宏命令C)C源程序的宏命令以分号标明命令行的结束 D) C注释可以位于源程序的任意位置二、判断题(正确用错误用标记)【习题4-8】宏替换时先求出实参表达式的值,然后代入形参求值。 ( )【习题4-9】.在C语言中,函数不可以嵌套定义,但宏可以嵌套定义。( )【习题4-10】所有的递归问题都可以用非递归算法来实现。 (

22、)【习题4-11】在C语言中,不同函数体内定义的变量可以同名。 ( )【习题4-12】多个文件组成的C语言程序,其中各个文件中可以定义同名函数。 ( )【习题4-13】在C语言中,一个函数只能被它所在文件的其它函数调用,称之为内部函数。 ( )三、阅读程序写结果或填空【习题4-14】下列程序执行后的输出结果是_。int fun(int k)static int s=0; while(k0) s=s+k-; return s; main( ) int s,t;s=fun(4);t=fun(5);printf(s=%d,t=%dn,s,t);【习题4-15】下列程序执行后的输出结果是_。#incl

23、ude stdio.hint a=0;main( )int i;for(i=1;i=3;i=i+1) static int b=0;int c=1;a+;b+;c+;printf(%d: result is %dn,i,a+b+c);【习题4-16】下列程序执行后的输出结果是_。#include stdio.hint func(int n)int s; if(n=1) s=1;else s=2+func(n-1);return s;main( ) int k=1, s=0; while(k(b)? (a):(b)main( )int i=10,j=15; printf(“%dn”,10*M(i

24、,j);【习题4-18】下列程序的输出结果是:#include “stdio.h”#define SQR(x) x*xmain()int a,k=3; a=SQR(k+1);printf(“%d”,a);【习题4-19】以下程序运行的结果是long f(int n) long s; if(n= =1|n= =2) s=2; else s=n+f(n-1); return(s); main( ) long x; x=f(4); printf(x=%dn,x); 【习题4-20】下列程序的输出结果是_?#define Tap(x) 2*x+1main( )int a=6,k=2,m=1; a+=T

25、ap(k+m);printf(“%d”,a);【习题4-21】在以下程序的下划线处填写适当的语句使程序执行的结果4,16,256。test( ) int x=2; x=x*x;printf(%d,x); main( ) test( );test( );test( );【习题4-22】下列程序的输出结果是 #include int f(int c)static int a=10; int b=+a; return(a+b+c);main( )printf(“%d”,f(f(5);【习题4-23】以下函数调用语句中实参的个数是_?Sub1(x1,x2),(x3,x4,x5),x6)四、程序设计题【

26、习题4-24】编写一个递归函数计算 1+X+2X2+3X3+nXnF(n,x)=1 n=0F(n-1,x)+n Xn n0【习题4-25】编写递归程序的输出如右所示的结果* * *【习题4-26】编写递归程序的输出杨辉三角形【习题4-27】编写程序计算: S= 直到N!106为止。【习题4-28】编写程序计算1100之间的素数,并按照由大到小的次序输出。习题五一、单项选择题【习题5-1】在C语言中,数组名代表了_。A) 数组的全部元素值 B)数组中第一个元素的值C) 数组中元素的个数 D)数组中第一个元素的地址【习题5-2】不能把字符串china赋予数组a的语句是_ 。A)char a8=c,

27、h,i,n,a B)char a=chinaC)char a8;a=china; D)char a8;strcpy(a,china);【习题5-3】设有如下定义语句: int a10=1,2,3,4,5,6,7,8,9,10; 则下面是正确的数组元素的是 。A)aa2+1 B)a(4) C)a10 D)aa4+5【习题5-4】设a,b是两个已定义的字符数组,则下面语句中正确的是 。A)gets(a,b); B)scanf(%s%s,a,b);C)scanf(%s%s,&a,&b); D)gets(a);gets(b);【习题5-5】设有定义: int j=2,a=1,2,3,4,5; 则数组a

28、j的值为 。A)2 B)3 C)4 D)5【习题5-6】C语言中,一维数组下标的最小值是 。A)随便 B)根据说明 C)1 D)0【习题5-7】下面描述中不正确的是 。A)字符数组中可以存放字符串B)可以对字符数组进行整体输入、输出C)可以对任何数组进行整体输入、输出D)不能通过赋值运算符=对字符数组进行整体赋值【习题5-8】若有说明: char a=ABCDEF; char b=A,B,C,D,E,F; 则下面描述中正确的是 。A) a数组长度比b数组长 B) a和b不相同,a是指针数组C) a数组和b数组长度相同 D) a和b完全相同二、阅读程序写结果或填空题【习题5-9】设有定义语句:

29、char c5=ABCD; 则数组c是 维数组,数组中共有 个元素,数组元素c01= 。【习题5-10】设有定义语句: char s15=123ab0abc; 则表达式strlen(s)的值为 。【习题5-11】下面程序是求二维数组a主对角线上的元素和,请在划线处填上恰当的内容,以完成程序的功能。 #include main() int a33=1,2,3,2,3,4,3,4,5,s=0,k; for(k=0;k3;k+)s=s+ ; printf(s=%dn,s); 【习题5-12】下面程序的功能是将一维整型数组a循环左移一位,第一个数据存放到最后。例如假设数组为3,7,2,6,5,9,则循

30、环左移后数组变成7,2,6,5,9,3。请在划线处填上恰当的内容,以完成程序的功能。 #include main() int a10,k,t; for(k=0;k10;k+) scanf(%d,&ak); t= ; for(k=1;k10;k+) ak-1= ; a9= ; for(k=0;k10;k+) printf(%3d,ak); 【习题5-13】下面程序功能是将数组a,b合并,且合并后的数组也是从小到大排序。请在划线处填上恰当的内容,以完成程序的功能。#include main() int a7=2,5,8,12,14,19,21,b5=13,15,21,25,30,c12; int

31、i=0,j=0,k=0,m; while(i7&j5) if(aibj) ck=ai;i+;else ck= ;j+; k+; if(i7)for(m=i;m7;m+) ck= ;k+; elsefor(m=j;m5;m+) ck=bm;k+; for(k=0; ;k+) printf(%3d,ck); 【习题5-14】阅读下面程序,写出运行结果。 #include main() int m,n; for(m=1;m=m;n-) printf( );for(n=1;n=2*m-1;n+) printf(*);printf(n); 【习题5-15】阅读下面程序,写出运行结果。 #include

32、main() int n3,i,j,k; for(i=0;i3;i+) ni=0; k=2; for(i=0;i=k;i+) for(j=0;j=i;j+) nj=ni+1; for(i=0;i=k;i+)printf(%3d,ni); printf(n); 【习题5-16】阅读下面程序,写出运行结果。 #include main() int j,ch,a8; for(j=0;j=0&ch=7) ach-0+; for(j=0;j8;j+) printf(a%d=%dn,j,aj); 程序运行时输入:12345678900987654321234806三、编写程序题【习题5-17】已知整型数组

33、a中有10个元素,整型数组b中有6个元素。编程将那些在数组a中而不在数组b的数据组成新数组c并输出。【习题5-18】已知a是34的整型二维数组,编程求数组a中所有外围元素之和。【习题5-19】不用strcmp函数,编程判断两个长度不超过20的字符串的大小:若第一个字符串大于第二个字符串输出1;若两个字符串相等输出0;否则输出-1。【习题5-20】输入长度不超过20的字符串,编程判断其中字母的个数。【习题5-21】已知整型数组a中有10个元素,编程将其中某个数k删除,输出删除后的数组。习题六一、选择题【习题6-1】变量的指针,其含义是指该变量的_ A)值 B)地址 C)名 D)一个标志 【习题6

34、-2】若有语句int *point,a; 则point=&a;中运算符&的含义是_ A)位与运算 B)逻辑与运算 C)取指针内容 D)取地址【习题6-3】若x是整型变量,pb是整型的指针变量,则正确的赋值表达式是A) pb=&x B) pb=x; C) *pb=&x; D) *pb=*x【习题6-4】下面程序段的运行结果是_ char *s=abcde; s+=2;printf(%d,s); A)cde B)字符c C)字符c的地址 D)无确定的输出结果 【习题6-5】设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是_ A)c=*p1+*p2; B)p2=

35、c C)p1=p2 D)c=*p1*(*p2); 【习题6-6】若有定义语句 char a=It is mine; char *p=It is mine; 则以下不正确的叙述是_. A)a+1表示的是字符t的地址 B)p指向另外的字符串时,字符串的长度不受限制 C)p变量中存放的地址值可以改变 D)a中只能存放10个字符 【习题6-7】若有定义:int a23,则对a数组的第i行j列元素地址的正确引用为_ A)*(ai+j) B)(a+i) C)*(a+j) D)ai+j 【习题6-8】 设有如下定义:int (*ptr)( );则以下叙述中正确的是:A)ptr是指向一维组数的指针变量B)ptr是指向int型数据的指针变量C)ptr是指向函数的指针,该函数返回一个int型数据D)ptr是一个函数名,该函数的返回值是指向int型数据的指针【习题6-9】设有定义int (*ptr)m;其中的标识符ptr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁