C理论自测题及参考答案(第3次)
更新时间:2023-11-23 18:51:01 阅读量: 教育文库 文档下载
一、单选题
1.以下关于函数的叙述中,正确的是 。
A. 在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值 B. 在函数体中至少必须有一个return语句 C. 在函数体中可以定义另一个函数 D. 在函数体中可以调用函数自身
2. 以下关于变量的叙述中,不正确的是 。
A. 一个变量的作用域完全取决于该变量声明的位置 B. 全局变量可以在函数以外的任何位置声明 C. 动态局部变量的生存期仅限于本次函数调用,无法将局部变量的值保存到函数下一次调用 D. 用static声明一个变量是为了限制其他编译单位引用该变量
3. 以下选项是一个自定义函数的头部,其中正确的是 。
A. int fun(int a, b) B. int fun(int a, int a)
C. int fun(int a[],int b) D. int fun(static int a,int b) 4. 关于函数返回值,以下叙述中正确的是 。
A. 函数返回值的类型由函数体内return语句包含的表达式类型决定 B.函数返回值的类型由函数头部定义的函数类型决定
C.若函数体中有多个return语句,则函数返回值是排列在最后的return语句中表达式的值 D.若函数体内没有return语句,则函数没有返回值
5. 以下程序中main函数需要调用fun函数,所给选项中正确的调用语句是 。
A. fun(1,2); B. fun((1,2)); C. f(); D. fun(fun(1)); void fun (int c) { printf(“%d”,c ); } 6. 已知函数f定义如下:
void f(void)
{ printf(“ That’s great!”);}
则调用f函数的正确形式是 。
A. f; B. f(); C. f(void); D. f(1);
7. 已知有函数f的定义如下:
int f(int a, int b)
{ if (a
在main函数中若调用函数f(2,3),得到的返回值是 。 A. 2 B. 3 C. 2和3 D. 3和2
8. 在以下程序中,需要在fun函数中声明一个int型的变量,所给选项中不能用作该变量名的
是 。
A. x B. y C.a D. fun #include
{ int a=1; fun(a); }
int fun(int x)
{ /* int 型变量声明位置*/
1
}
9. 若有程序:
int x;
int f(int y)
{ return 标识符 ; } #include
{ int z=2; f(z); }
则在函数f中,return语句后允许出现的标识符是 。
A. x或w B. x或y C. z或w D. NULL 10. 在main函数体内部和外部均允许出现的实体是 。
A. 预处理命令 B. 操作语句 C.另一函数的定义 D.函数形式参数声明 11. 设有下列程序段:
static char b=2; void Y ( )
{ static float d=4;....... } int a=1; void X ( )
{ int c=3; ...... }
关于程序段中各变量的属性,以下叙述中错误的是 。 A. a是全局变量,函数X可以访问,函数Y不能访问 B. b是全局变量,函数X和函数Y都可以访问
C. c是动态局部变量,函数X可访问,函数Y不可访问 D. d是静态局部变量,函数X和函数Y都可以访问
12. 对应main函数中的fun函数调用,以下给出的四个fun函数定义的首部中,错误的是 。
main()
{ int a,n; fun(n,&a); }
A.void fun(int m,int x[]) B.void fun(int s,int h[41]) C.void fun(int p,int *s) D.void fun(int n,int a) 13. 下列全局变量声明中,正确的是 。
A. auto int i=1; B. float a=1, b=0.5, c=a+b; C. char for=1; D. static char ch;
14. 若有数组 A和B的声明“static char A[ ] = \] = { 'A', 'B', 'C', 'D', 'E',
'F'} ;”,则数组A和数组B的长度分别是 。 A. 7,6 B. 6,7 C. 6,6 D. 7,7 15. 以下程序运行后的输出结果是 。
A.2 2 B.7 2 C. 7 5 D.6 2 #include
{ char a[7]=\i=sizeof(a); j=strlen(a); printf(\
2
}
16. 假定已有声明“char a[30],*p=a;”,则下列语句中能将字符串\正
确地保存到数组a中的语句是 。
A. a[30]=\B. a=\
C. p= \ D. strcpy(p,\
17. 以下数组声明中正确的是 。
A. int n=10, a[n]; B. int a[];
C. int a[2][3]={{1},{2},{3}}; D. int a[][3]={{1},{2},{3}};
18.若有声明int a[10],b[3][3]; 则以下对数组元素赋值的操作中,不会出现越界访问的
是 。
A. a [-1]=0 B. a[10]=0 C. b[3][0]=0 D. b[0][3]=0 19.已有声明“int S[2][3]”,以下选项中 正确地引用了数组S中的元素。
A. S[1>2][!1]) B. S[2][0] C. S[1] D. S 20. 已知函数fun的定义如下:
void fun(int x[],int y) { int k;
for(k=0;k 若main函数中有声明int a[10]={10};及调用fun函数的语句,则正确的fun函数调用形式是 。 A. fun(a[],a[0]); B.fun(a[0],a[0]); C.fun(&a[0],a[0]); D. fun(a[0],&a[0]); 21.以下单目运算符均只需要一个操作数,其中要求操作数类型必须是指针型的选项 是 。 A. & B. ++ C. ! D. * 22.已有声明“int a[5];”,以下表达式中不能正确取得数组元素a[1]地址的选项是 。 A.&a[1] B.++a C.&a[0]+1 D.a+1 23.已知有声明:“int good=1;”, 若要使得表达式p=\在编译时不出现语法错和警 告,p应当声明为 。 A.char p; B. char *p; C. int p; D. int *p; 24.下列程序段的输出结果是 。 int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1]; for(i=0;i<4;i+=2) printf(\; A. 5 2 B. 5 1 C. 5 3 D. 9 7 25.若有以下声明和定义,如果在main函数中需要调用fun函数,以下调用语句中错误 是 。 A. fun(1); B. (*a)(1); C. b=fun; (*b)(1); D. c=a;(*c)(1); void fun (int c) { printf(“%d”,c ); } main () { void (*a)(int)=fun , *b(int), (*c)(int); /*调用fun函数语句位置*/ } void *b(int c){ } 3 26.若有声明“int a[][4]={1,2,3,4,5,6,7,8,9,10},*p=*(a+1);”,则值为9的表达式是 . A.p+=3,*p++ B. p+=4,*(p++) C. p+=4,*++p D. p+=4,++*p 27. 已知某程序中有声明int a[4],j;及语句for(j=0;j<4;j++)p[j]=a+j;,则标识符p正确的 声明形式应为 。 A.int p[4]; B.int *p[4]; C.int **p[4]; D.int (*p)[4]; 参考答案: 1~5:DDCBB 6~10:BBABA 11~15:DDDAB 16~20:DDDAC 21~25:DBBCC 26~27:BB 二、多选题 1. 在定义一个函数时,下列选项中 (21) 可以缺省。 A. 函数名之前的数据类型 B. 函数名之后一对圆括号 C. 函数名 D. 形式参数声明 E. 函数体中的语句 2. 以下程序中需要在main函数之后定义一个函数,在所给的选项中不能用作该函数名的标识符 是 。 A.x B.y C. p D.a #define p 1 int y; main() { int a=1; 函数名(a); } int 函数名(int x) { return x*x; } 3. 若已定义一个无返回值的函数,则以下关于调用该函数的叙述中错误的是 。 A.函数调用可以作为独立的语句存在 B.函数调用可以出现在表达式中 C.函数调用可以作为一个函数实参 D.函数调用可以作为一个函数形参 参考答案: 1.ADE 2. BCD 3.BCD 三、填空题 1. 以下程序运行后输出结果是 。 #include return(++k*(++i+(++j))); } 4 main( ) { int i,n; for (i=0;i<3;i++) printf(\} 2. 以下程序运行后输出结果是 。 void fun1(int); void fun2(void); main() { extern int x; printf(\ fun1(2); } int x=1; void fun1(int x) { printf(\ fun2(); } void fun2(void) { printf(\ while(1) { int x=5; printf(\ } } 3. 以下程序运行后输出结果是 。 int x=1; main() { int y,k; y=f(3); printf(\} int f(int x) { if(x==3) { int x=2; return x; } elseb return x; } 4. 下列程序运行后输出结果是 。 #include 5 { int i,j,k,x; for(i=0;i swap(&b[i], (1) ); i=0; j=0; k=0; while(i { if( (2) ) { x=a[i]; i++;} else { x=b[j]; j++; } c[k]=x ; k++; } while(k { c[k]=b[j] ; k++; j++; } else if(i { (3) ; k++; i++;} } return m+n; } void main() { int i,n,c[9],a[5]={12,10,5,3,1},b[4]={4,6,8,15}; n=sort(a,5,b,4,c); for(i=0;i printf(\ printf(\} 2.程序功能: 合并两个已经按照升序排列的一维数组。insert函数功能:将m插入x指向的含有n个元素的数组中,数组中n个元素已按升序排列,插入m后的n+1个元素仍保持有序。 void insert(int x[],int n,int m); main() { int a[10]={1,3,5,7,9},b[5]={2,4,8,16,32},k; for(k=0;k<5;k++) { insert(a, (1) ,b[k]); } for(k=0;k<10;k++) printf(\} void insert(int x[],int n,int m) { int i,j; if(m>x[n-1]) (2) =m; else { for(i=0; (3) ;i++); 11 for(j=n;j>=i;j--) x[j]= (4) ; x[i]=m; } } 3、 以下程序在已知n个人原始排列顺序的情况下,计算他们按以下规则出列的顺序。 设有n个人站成一个队列,每人有一个惟一的编号I(1≤I≤n),从左往右“1,2,1,2,?”报数,报到“1”的人出列,报到“2”的人立即站到队伍的最右端;报数过程反复进行,直到n个人都出列为止。例如,当n=8时,若初始编号序列为1,2,3,4,5,6,7,8,则出列顺序为1,3,5,7,2,6,4,8。 算法提示:声明数组p[n+1],将n个人的初始编号序列1~n依次存入p[1]~p[n]中,这里把p[0]~p[n]看作是一个循环队列,p[f]为队首元素,p[r]为队尾元素,令队首初始下标f=1,队尾初始下标r=0。反复执行下列操作直到队列为空(f=r):(1)输出队首元素并删除队首元素,(2)把队首元素插到队尾并删除队首元素。 #include { int p[n+1] ; int f,r; for(f=1;f<=n;f++)p[f]=f ; f=1; r=0; do { printf(\ f= (1) ; p[r]=p[f]; r= (2) ; f=(f+1)%(n+1) ; }while( (3) ); } 4. 以下程序中,函数encrypt的功能是对第一个形参指向的字符串做加密处理,函数返回已加 密字符串的首地址。加密算法:判断字符串中每个字符是否为英文字母,若不是字母则保持原字符不变;若是大写字母,则用字母表中该大写字母对应的小写字母之后的第n个小写字母取代原字母;若是小写字母,则用字母表中该小写字母对应的大写字母之后的第n个大写字母取代原字母。大写字母表和小写字母表均被看作是首尾相连的环形表。例如,当n=3时,若原字符是a,则加密后该字符被D取代;若原字符是Y,则加密后该字符被b取代。 #include char *encrypt( (1) , int n) { int i,t; for(i=0;a[i]!='\\0';i++) { if(isalpha(a[i])) { t=(toupper(a[i])-'A'+n)&; a[i]= (2) ? 'A'+t :'a'+t; } } 12 (3) ; } void main() { char *s[2]={\ printf(\输出Good */ printf(\输出Luck */ } 5. 以下程序的功能是:对于一个长度不超过50的字符串S,按输入的命令进行删除、插入字符的 操作。删除和插入命令的格式如下: 1)删除命令格式:D a (a表示被删除的字符) 命令功能:从字符串S中删除字符a,若S串中有多个a,只删除第一个。 例如:S字符串为“This is a book.”,执行命令“D s”后,S字符串变为“Thi is a book.” 2)插入命令格式:I a1 a2 (a1表示定位字符,a2表示要插入的字符) 命令功能:将字符a2插入到字符串S中最后一个出现的字符a1的前面。 例如:S字符串为“This is a book.”,执行命令“I s d”后,S字符串变为“This ids a book.” #include void delete(char s[], char c); void insert(char s[],char c1,char c2); main() { char s[50]=\ int i,p,k; printf (\ scanf (\&op); switch (op) { case 'D': scanf (\ case 'I': scanf(\insert (s,c1[0],c2[0]); break; default: printf (\ } printf (\} void delete (char s[], char c) { int i,n=-1; for (i=0;s[i]!='\\0';i++) if(s[i]==c){ n=i; (1) ;} if(n==-1) { printf (\ for (i=n; s[i]!='\\0'; i++) s[i]= (2) ; } void insert (char s[],char c1,char c2) { int i,n=-1,m; 13 for (i=0;s[i]!='\\0';i++) if (s[i]==c1) n=i; if(n==-1) { printf (\ m=strlen(s); for(i=m;i>n;i--) s[i]=s[i-1]; (3) ; } 参考答案: 1.(1) &b[n-1-i] (2) a[i]>b[j] (3) c[k]=a[i] 2.(1) k+5 (2) x[n] (3) x[i] 3.(1) (f+1)%(n+1) (2) (r+1)%(n+1) (3) f!=r 4.(1) char *a 或 char a[] (2) a[i]>='a'&&a[i]<=’z’或 islower(a[i]) (3) return a 5.(1) break (2) s[i+1] (3) s[n]=c2 14
正在阅读:
C理论自测题及参考答案(第3次)11-23
首批化学品物理危险性鉴定机构鉴定项目及参数检测能力范围01-18
天宝铁丰矿业排土场初步设计06-02
六年级数学思维训练:逻辑推理二09-22
久立集团技能人才自主评价标准化体系工作方案20131205-03
综合试卷204-28
让历史课上常有“发现”06-10
二级展开式圆柱齿轮减速器设计说明书(F=2600 - V=1.1 - D=220)12-24
2018-2024年中国有源滤波器市场深度调查与前景趋势报告(目录) - 图文12-31
行政执法机关预防职务犯罪讲课稿04-26
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 自测题
- 答案
- 理论
- 参考
- 佛说未曾有因缘经
- 分解车间氧化铝安全操作规程
- 怎样进行新闻作品分析
- 善行义举四德榜实施方案
- 20150415在高二年级全体教师会议上的讲话
- 酶工程复习整理
- 小学科学实验操作考核实施方案
- 仙女山国家森林公园总体规划
- 吉林省中成药生产行业企业名录2018版264家
- 工地施工材料封样管理办法
- 浅析中国情景喜剧的困境与突围
- 2005-2012全国各地中考化学真题分类汇编--第三单元自然界的水 - 图文
- 世界十大著名秘书2011.10.19
- 天津市《关于本市开展外商投资股权投资企业及其管理机构试点工作的暂行办法》
- 21.交通事故应急预案
- 年产5万吨PMMA装置工程融资投资立项项目可行性研究报告(中撰咨询)
- 路政执法人员题库
- 全国2010年7月自学考试计算机网络技术试题及答案+++
- 护基题库护理学基础
- 电力系统稳态分析习题