C语言课后习题(31页).docx
《C语言课后习题(31页).docx》由会员分享,可在线阅读,更多相关《C语言课后习题(31页).docx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-C语言课后习题-第 31 页习 题 一、选择题1. 以下定义数组的语句中正确的是( )。A)int a(10);B)char str;C)int n=5; int a4n;D) #define SIZE 10; char str 1SIZE,strSIZE +2;2. 对两个数组a和b进行如下初始化:static char a=abcd;static char b=a,b,c,d;则下列叙述正确的是( )。A)a与b数组完全相同B)a数组比b数组长度长C. a与b中都存放字符串D. a与b长度相同3. 下列语句中,不正确的是( )。A. static int a23=1,2,3,4,5,6;
2、B. static int a23=1,4,5;C. static int a3=1,4;D. static int a=1,2,3,4,5,6;4. 设有如下形式的字符数组定义: static char str=Beijing; 则执行下列语句后的输出结果为( )。 printf(“%d”, strlen(strcpy(str,Hdllo); A. 7B) 5C) 8D) 9 5. 在下面给出的语句中,( )是对一维数组正确赋初值的语句。A) int a10=This is a string;B) char a =This is a string;C) int a3=1,2,3,4,5,10
3、;D) char a3=This is a string;6. 已知对一维数组ns有如下说明:int ns10;要求使ns的所有元素都取值0。下面不正确的程序段是( )。A) for(j=0;j10;j+) nsj=0;B) ns0=0; for(j=1;j10;j+) nsj=nj1;C) for(j=1;j=10;j+) nsj=0;D) ns0=ns1=ns2=ns3=ns4=ns5=ns6=ns7=ns8=ns9=0;7. 有说明语句:int a 4=1,5,8,7,12,22,9,41,55,27;则数组a第维的长度应该是( C )。A) 2B) 3C) 4D) 58、下面程序运行后
4、,其输出是( ) #includevoid main() static char s30=”abcdefg”; static char t=”abcd”; int i,j; i=0; while(si!=0) i+; j=0; while(tj!=0) si+j=tj; j+; si+j=0; printf(“%sn”,s); A.abcdabcdefg B.abcdefg C.abcd D.abcdefgabcd 9、下面程序运行后,其输出是( ) #includevoid main() int a44,i,j,k; for(i=0;i4;i+) for(j=0;j4;j+) aij=i+j
5、; for(i=1;i4;i+) for(j=i+1;j4;j+) k=aij; aij=aji; aji=k; for(i=0;i4;i+) printf(“n”); for(j=0;j4;j+) printf(“%d ”,aij); A 0 1 2 3 B0 1 2 3 C 0 1 2 3 D3 2 1 0 1 2 3 4 1 2 5 4 1 2 4 2 4 3 2 1 2 3 4 5 2 3 4 5 2 3 5 3 5 4 3 2 3 4 5 6 3 4 5 6 3 4 6 4 6 5 4 3二、填空题1. 任何一个数组的数组元素都具有相同的数绷名和_。2. 同一数组中,数组元素之间是通
6、过_来加以区分的。3. 已知数组e定义为int e 4=1,2,3,4,5,6,7,8;则e是一个_行_列的二维数组,总共有_个元素,最大行下标是_,最大列下标是_,其首行的各元素的值分别是_。4. 要使aa成为具有如下初始值的二维int型数组,则最简单的定义aa的语句是_。1 0 0 0 01 2 0 0 01 2 3 0 01 2 3 4 01 2 3 4 55. 执行下列语句序列后,数组str2中的字符串是_。char str1 =ABCD,str210=XYZxyz;for(i=0;str2i=str1i;i+);6. 有说明语句:int x 4=1,2,3;那么元素x11的取值是_。
7、7. 下面的语句显示输出3行3列数组a的主对角线上的所有元素,请补充完整。for(i=_;i_;_)_printf(_);8. 下面的语句按行显式输出5行3列数组aa的所有元素,请补充完整。for(i=_;i_;_) for(j=_;j_;_) printf(_); printf(_);三、程序阅读1. 写出下列程序的运行结果。#includevoid main ( )int i,a33=1,2,3,4,5,6,7,8,9;for (i=0;i3;i+)printf(%d n, ai2-i);2. 阅读程序,说明其功能及输出的结果。#includevoid main() int k; char
8、 x,a10=a,b,c,d,e,f,g,h,i,j; for(k=0;k5;k+) x=ak; ak=a9k; a9-k=x; for(k=0;k10;k+) printf(%c”,ak); printf(n”);3. 阅读程序,说明其功能及输出的结果。#includevoid main()int j,k;int str =2,-4,5,15,19,-11,16,7;for(j=0,k=j;jstrk) k=j;printf(%c”, k);4. 阅读程序,说明运行后s1,s2数组中保存的字符串内容。#includevoid main()int k=0,j=0; har s110=abcde
9、f,s220=inter; scanf(%s,s1); while(s2k) k+; while(s1j) s2-k=s1+j;printf(%s”, s1);printf(%s”, s2);时,若键盘输入的是net,则s1中的字符串是_,s2中的字符串是_。5. 阅读程序,说明其功能及输出的结果。#include #include main( ) int s1,s2,s3; s1=strcmp(China,Russia); s2=strcmp(China,China); s3=strcmp(Chinaf,Chinae);printf(s1=%dn,s1);printf(s2=%dn,s2),
10、;printf(s3=%dn,s3);四、编程题1. 从键盘输入一组数据,显式输出其最大值。2. 编程实现用插入排序法对55,2,6,4,32,12,9,73,26,37这10个整数进行排序。【提示】插入排序法是一个简单,但相对比较高效的排序方法。插入排序通过将数组中的元素插入到适当的位置来进行排序,步骤如下所述。(1) 将数组中的头两个元素按排序顺序排列。(2) 把下一个元素(第3个)插入到其对应于已排序元素的排序位置。(3) 对于数组中的每个元素重复(2),即把第4个元素插入到适当位置,然后是第5个元素,等等3. 有一个34的矩阵,要求编程求出其中值最大的那个元素的值,以及其所在的行号和列
11、号。4. 编写一个程序在已知字符串中查找某个字符首次出现的位置,若字符串中没有该字符,给出相应信息。5. 输入一个字符串,统计其中包含的单词个数,假定单词与单词之间用空格分隔。6.编写一个程序,从键盘上输入2行3列数组的元素值,将其转置(即将行和列的元素互换),存到另一个二维数组中。7.设计一个程序,统计某学校3门课程(英语,数学,计算机)的考试成绩。要求能输入考生人数,并按编号从小到大的顺序依次输入考生的成绩,再统计出每门课程的全校总分、平均分以及每个考生课程的总分和平均分。8.设计一程序,它输入10个整数到一个数组中,调整这10个数在数组中的排列位置,使得其中最大的一个数成为数组的首元素,
12、最小的一个数成为数组的末元素。9用字符串拷贝函数实现2个字符串的拷贝。习题 一、单项选择题 1C语言的函数题中,下面( )是正确的。 A)可以定义和调用其它函数 B)可以调用但不能定义其它函数 C)不可调用但可以定义其它函数 D)不可调用及定义其它函数 2以下叙述中不正确的是( )。 A)一个函数中可以有多个return语句 B)函数通过return语句传回函数值 C)主函数可以有形参 D)调用函数须独立语句完成 3以下叙述中不正确的是( )。 A)在不同的函数中可以使用相同的名字的变量 B)函数中的形式参数是局部变量 C)在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句
13、中定义的变量在本函数范围内有效 4以下正确的说法是( )。A)实参和与其对应的形参各占用独立的存储单元 B)实参和与其对应的形参共占用一个存储单元 C)只有当实参和与其对应的形参同名时才共占用相同的存储单元 D)形参时虚拟的,不占用存储单元 5C语言规定,函数返回值的类型是由( )决定的。 A)return语句中的表达式类型 B)调用该函数时的主调函数类型 C)调用该函数时由系统临时 D)在定义函数时所指定的函数类型 6若用数组名作为函数调用的实参,传递给形参的是( )。 A)数组的首地址 B)数组中第一个元素的值C)数组中的全部元素的值 D)数组元素的个数 7以下不正确的说法是( )。A)形
14、参的存储单元是动态分配的 B)函数中的局部变量都是动态存储C)全局变量都是静态存储D)动态分配的变量的存储空间在函数结束调用后就被释放了8C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为( )。 A)地址传递 B)单向值传递 C)由实参传给形参,再由形参传回给实参 D)由用户指定传递方式 9已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为( )。 int a34; f(a); A)f(int array6) B)f(int array3) C)f(int array4) D)f(int array25) 10设有如下宏定义: #defin
15、e MU(X,Y) (X)*(Y) a=MU(5,2); b=6/MU(a+3,a); 请问b的表达式是( )。 A) b=6/(a+3)*(a) B) b=6/(a+3)*(a) C) b=6/a+3*a D) b=6/(a+3*a) 二、阅读下面的程序,写出程序运行的结果。1#include void fun(int a,int b,int c) a=456;b=567;c=678; main() int x=10,y=20,z=30; fun(x,y,z); printf(%d,%d,%dn,x,y,z); 程序运行结果: 2func (int a,int b) static int m
16、=0,i=2; i+=m+1; m=i+a+b; return (m); main ( ) int k=4,m=1,p1,p2; p1=func(k,m) ; p2=func(k,m) ; printf(%d,%dn,p1,p2) ; 程序运行结果: 3#include # define MAX 10 int aMAX, i ; sub1 ( ) for (i=0; iMAX; i+) ai=i+i ; sub2 ( ) int aMAX, i ,max ; max=5; for (i=0; iMAX; i+) ai=i ; sub3 (int a ) int i ; for (i=0; iM
17、AX; i+) printf(“%d ”,ai); printf(“n”); main ( ) sub1( ); sub3(a); sub2( ); sub3(a); 程序运行结果: 4#include int fun(int ,int ); main() int a=36,b=4,c; c=fun(b,a); printf(%dn,c); int fun(int u,int v) int w; while(v) w=u%v;u=v;v=w; return u; 程序运行结果: 5#include #define G 3 #define MG(m) (m)*G #define PR(x) pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课后 习题 31
限制150内