我叫离殇浅墨(一名互联网优质资源分享者)
每天发布热点话题文章及独家资源福利等以外亦致力于资源干货(破解资源、精品神器、好物推荐、科技普及、生活冷知识、互联网大事)的交流分享。
本文编辑:离殇浅墨 耗时:无法计算
希望更好的资源能被更多的人知晓
大家每次拿资源都很积极,小编都来不及整理,但内心很高兴,感谢大家对小编的支持!小编同时也希望大家能够把我推荐给更多的人,今后将继续再接再厉为大家献上更好资源哦!
正
文
相信好多老铁已经报名计算机等级考试了,可能有的老铁想问复习比较好的方法是什么?方法可以是在网上购买题库、自己练习等等,当然也有准备裸考的。但小编认为最划算的还是计算机二级知识点总结以及相关的题库!
之前小编也为大家分享过好几次知识点总结以及相关的题库,不知道帮助到大家了没?
最新全国计算机等级考试二级C语言-题库(全)
一、选择题
在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(21)以下选项中,当x为大于l的奇数时,值为0的表达式是
A)x%2==1
B)x/2
C)x%2!=0
D)x%2==0
(22)有以下程序
main()
{int k=5,n=0;
do
{switch(k)
{case 1: case 3:n+=1;k--;break;
default:n=0;k--;
case 2: case 4:n+=2;k--;break;
}
printf("%d",n);
}while(k>0 && n<5);
}
程序运行后的输出结果是
A)235
B)0235
C)02356
D)2356
(23)有如下程序
main()
{ int n=9;
while(n>6){n--; printf("%d",n);} }
该程序的输出结果是
A)987
B)876
C)8765
D)9876
(24)有以下程序
#include<stdio.h>
main()
{ int c;
while((c=getchar())!=′\n)
{ switch(c-′2′)
{ case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
case 4:putchar(c+3);break; } }
printf("\n")}
从第一列开始输入以下数据<CR>代表一个回车符。
2743<CR>
程序的输出结果是
A)66877
B)668966
C)6677877
D)6688766
(25)有以下程序
main()
{ int x=0,y=0,i;
for (i=1;;++i)
{ if (i%2==0) {x++;continue;}
if (i%5==0) {y++;break;} }
printf (" %d,%d",x,y); }
程序的输出结果是
A)2,1
B)2,2
C)2,5
D)5,2
(26)有以下程序
main()
{int a[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/
for(i=0;i<4;i++)printf("%d,",a[i][i]);
}
程序运行后的输出结果是
A)1,6,5,7,
B)8,7,3,1,
C)4,7,5,2,
D)1,6,2,1,
(27)有以下程序
int f(int n)
{ if(n==1)return 1;
else return f(n-1)+1;}
main()
{ int i,j=0;
for(i=1;i<3;i++)j+=f(i);
printf("%d\n",j);}
程序运行后的输出结果是
A)4
B)3
C)2
D)1
(28)当运行以下程序时,从键盘输入AhaMA(空格)Aha<CR>,则下面程序的运行结果是
#include<stdio.h>
main()
{ char s[80],c=′a′;
int i=0;
scanf("%s",s);
while(s[i]!=′
{ if(s[i]==c)s[i]-32;
else if(s[i]==c-32)s[i]=s[i]+32;
i++; }
puts(s); }
A)ahaMa
B)AbAMa
C)AhAMa[空格]ahA
D)ahAMa[空格]ahA
(29)下面程序输出的结果是
main()
{ int i;
int a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d ",a[2-i][i]); }
A)1 5 9 B)7 5 3 C)3 5 7 D)5 9 1
(30)现有如下程序段
#include "stdio.h"
main()
{ int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};
int i=0,j=5;
printf("%d\n",*(&a[0][0]+2*i+j-2));}
则程序的输出结果为
A)21
B)78
C)23
D)28
(31)请选出正确的程序段
A)int *p;
scanf("%d",p);
…
B)int *s, k;
*s=100;
…
C)int *s, k;
char *p, c;
s=&k;
p=&c;
*p=′a′;
…
D)int *s, k;
char *p, e;
s=&k;
p=&c;
s=p;
*s=1;
…
(32)下面程序段的运行结果是
char a[]="lanuage",*p;
p=a;
while(*p!=′u′){printf("%c",*p-32);p++;}
A)LANGUAGE
B)language
C)LAN
D)langUAGE
(33)以下程序的输出结果是
#include<stdio.h>
int a[3][3]={1,2,3,4,5,6,7,8,9,},*p;
main()
{ p=(int*)malloc(sizeof(int));
f(p,a);
printf("%d\n",*p);
free(p); }
f(int *s, int p[][3])
{ *s=p[1][1];}
A)1
B)4
C)7
D)5
(34)有以下程序
void f(int *q)
{int i=0;
for(;i<5; i++) (*q)++;
}
main()
{int a[5] ={1,2,3,4,5}, i;
f(a);
for(i=0;i<5; i++) printf("%d,", a[i]);
}
程序运行后的输出结果是
A)2,2,3,4,5,
B)6,2,3,4,5,
C)1,2,3,4,5,
D) 2,3,4,5,6,
(35)以下合法的字符型常量是
A)′\x13′
B) ′\081′
C) ′65′
D)"\n"
(36)有以下语句,则对a数组元素的引用不正确的是
int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A)a[p-a]
B)*(&a[i])
C)p[i]
D)*(*(a+i))
(37)有以下程序
# include <string.h>
main()
{char p[20]={′a′, ′b′, ′c′, ′d′}, q[]="abc", r[]="abcde";
strcat(p, r); strcpy(p+strlen(q), q);
printf("%d\n",strlen(p));
}
程序运行后的输出结果是
A)9
B)6
C)11
D)7
(38)在C语言中,变量的隐含存储类别是
A)auto
B)static
C)extern
D)无存储类别
(39)以下程序的输出结果是
main()
{ int c=35; printf("%d\n",c&c);}
A)0
B)70
C)35
D)1
(40)有以下程序
#include <stdio.h>
main()
{ FILE *fp; int i=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n); printf("%d %d\n",k,n);
fclose(fp); }
程序运行后的输出结果是
A)20 30
B)20 50
C)30 50
D)30 20
解析
(21)D
【解析】 因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选项A)、C)中表达式的结果为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式的结果为假,即等于0。
(22)A
【解析】 因为变量的初始值分别为"k=5,n=0",所以程序第一次进入循环时,执行default语句,这时k=4,执行"case 4:"这个分支,结果是"n=2,k=3",打印出2;程序然后进行第二次循环,这时"n=2,k=3",执行"case 3:"这个分支,结果是"n=3,k=2",打印出3;程序进行第三次循环,这时"n=3,k=2",执行"case 2: case 4:"这两个分支,结果是“n=5,k=1",打印出5,这时因为n=5不满足n<5的循环条件,因此退出循环,程序运行结束,故输出结果为235。
(23)B
【解析】 该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时,n的值是9,循环体内,先经过n--运算,n的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。由循环条件n>6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环时,输出为6,由此可以排除选项C)。
(24)A
【解析】 本题主要考查了字符输入输出函数getchar和putchar的使用。getchar函数用来从标准输入设备上读入一个字符,putchar(c)函数是将字符变量c中的字符输出到标准输出设备上,并且字符可以看作整数参与运算。
(25)A
【解析】 本题考查了continue和break语句在循环语句中的作用。break语句的作用是结束本层循环,而continue语句的作用是结束本次循环直接进入到下次循环。
(26)A
【解析】 本题利用多重 for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列,最后输出对角线上的元素值。
(27)B
【解析】 在main函数中,对f(1)和f(2)的值进行了累加。
f(1)=1
f(2)=f(1)+1=2
最后,j的值为1+2=3
(28)A
【解析】 本题主要考查的知识点是大写字母比它对应的小写字母ASCII码值小32,并且字符可以看作整数进行算术运算等操作。
(29)B
【解析】 本题用循环的方法考查对数组概念的掌握。首先,当i=0时,数组中的位置是a[2][0]=7,当然,如果用排除法,就不用考虑后面的循环,因为在4个选项中,第1个数为7的选项只有B)。本题执行第2次循环时,i的值为1,则printf函数中的数组指向为a[1][1]=5,依次循环,可求出答案。
(30)A
【解析】 通过地址来引用二维数组,若有以下定义:int a[3][4],i,j;且当0≤i≤3,0≤j<4则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表达式&a[0][0]+2*i+j-2相当于是地址&a[0][0]加上多少偏移量。
(31)C
【解析】 本题的选项A)和B)犯了同样的错误,即指针变量在定义后并没有指向具体的变量。也就是说,指针变量中没有确定的地址值,它的值是不可预见的,所指的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D)中,s是int型指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。
(32)C
【解析】 本段程序的作用是输出字符串"lanuage"中字母u之前的字符,并将其转化为大写字母。
注意:如果一个字符数组用来作为字符串使用,那么在定义该字符数组时,数组的大小就应该比它将要实际存放的最长字符多一个元素,以存放"\0"。
(33)D
【解析】 本题考查了二维数组元素引用的方法。题中用动态存储分配函数malloc分配了一个int型数据长度大小的内存,然后指针p指向了这段内存,函数f()中对p所指向的数据进行了赋值,p[1][1]为二维数组第二行第二列的元素,对应于实参a的元素5,所以输出结果为5。
(34)B
【解析】 调用函数f()时,将数组a的地址传递给了指针q,此时q指向的就是数组a的第一个元素a[0]。在5次循环过程中,q始终指向a[0],因此a[0]的值增加了5。最后的输出结果为"6,2,3,4,5"。
(35)A
【解析】 C语言的字符常量是用单引号(即撇号)括起来的一个字符。除此之外,在C语言中还允许用一个"\" 开头的字符序列来表示字符常量。其中,形式"\ddd"表示1到3位8进制数所代表的字符;形式"\xhh"表示1到2位16进制数所代表的字符。在本题中,"\x13"表示回车符,是一个字符常量;"\081"用8进制数所代表的字符,但形式不正确,因为8进制数所代表的字符中不会出现数字"8";"65"不是一个字符,而是一个十进制数字;"\n"是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。
(36)D
【解析】 本题考查数组指针的应用。选项D)第一层括号中为数组a中第i项元素的值,外面再加指针运算符没有意义。
(37)B
【解析】 strcpy()函数的功能是将字符串q复制到从p[3]位置开始的存储单元,同时复制字符串结束标志"\0" 到p[6]中。函数strlen()返回的是字符串中不包括"\0"在内的实际长度,故本题答案为B)
(38)A
【解析】 auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关键字"auto "可以省略,auto不写则隐含确定为"自动存储类别",属于动态存储方式。
(39)C
【解析】 本题考查按位与"&"。因为1&1=1,0&0=0,所以任何数与自身按位与,结果仍为此数,不发生变化。
(40)A
【解析】 本题中,最主要的是掌握几个有关文件函数的应用。
函数名:fopen
功能:打开一个文件
调用方式FILE *fp ;
fp=fopen(文件名,使用文件方式);
函数名:fprintf
功能:传送格式化输出到一个文件中
调用方式:fprintf(文件指针,格式字符串,输出表列);
函数名:fclose
功能:关闭一个文件
调用方式:fclose(文件指针);
函数名:fscanf
功能:从磁盘文件执行格式化输入
调用方式:fscanf(文件指针,格式字符串,输入列表)。
最后预祝所有报考计算机二级的小伙伴顺利过关。Fighting......
如果你对小编的公众号运营发展有比较好的建议,欢迎在下方小程序客服或在后台提出建议,我们的公众号有你的存在会变得更加优秀!另外喜欢这篇文章,可以在看完随手点赞、顺便可以帮助小编转发一下,分享到微信朋友圈、微信群都可以,让小编可以涨涨阅读量和粉丝,感谢你的帮助啦!
可能有些老铁知道,写文章本身是没有收益的全凭文中文末的广告所以下次发文,如果大家看到如下图带有广告字样的小卡片麻烦大家点一下,你的每次点击是我继续向前的动力。
THE
END