收集了一些经典C语言计算机二级和C语言期末考试题库
整理不易,大家点赞收藏支持一下
祝大家计算机二级和期末考试都高分过
系列文章:
C语言计算机二级/C语言期末考试 刷题(一)
C语言计算机二级/C语言期末考试 刷题(二)
C语言计算机二级/C语言期末考试 刷题(三)
C语言计算机二级/C语言期末考试 刷题(四)
C语言计算机二级/C语言期末考试 刷题(五)
C语言计算机二级/C语言期末考试 刷题(六)
C语言计算机二级/C语言期末考试 刷题(七)
C语言计算机二级/C语言期末考试 刷题(八)
C语言计算机二级/C语言期末考试 刷题(九)
C语言计算机二级/C语言期末考试 刷题(十)函数专题
C语言计算机二级/C语言期末考试 刷题(十一)数据类型及输入输出专题
C语言计算机二级/C语言期末考试 刷题(十二)数组专题一
C语言计算机二级/C语言期末考试 刷题(十三)数组专题二
C语言计算机二级/C语言期末考试 刷题(十四)指针专题
目录
一、填空 共5题 (共计5分)
二、判断 共5题 (共计5分)
三、单选 共15题 (共计15分)
四、程序填空 共2题 (共计20分)
五、程序改错 共1题 (共计20分)
六、程序设计 共1题 (共计25分)
一、填空 共5题 (共计5分)第1题
在C程序中,可以通过三种运算来移动指针,它们是【1】,【2】,【3】.
=======(答案1)=======
自增
=========或=========
++
=======(答案2)=======
自减
=========或=========
--
=======(答案3)=======
p+n
=========或=========
p-n
=========或=========
加减一个常量
第2题
设P是指向A的指针,Y为整形变量,A=5,A的地址为EFO3;B=6,B的地址为EFO4;执行语句P=&A后P的结果是【1】.
=======(答案1)=======
EFO3
第3题
执行下列语句后,*(p+1)的值是【1】.
char s[3]="ab",*p;
p=s;
=======(答案1)=======
b
第4题
在c程序中,只能给指针赋NULL值和【1】值.
=======(答案1)=======
地址
第5题
变量的指针,其含义是指该变量的【1】.
=======(答案1)=======
地址
二、判断 共5题 (共计5分)第1题
将一维双精度实数数组x的下标为i的变量的地址赋给指针变量p的语句为:
double *p,x[10];int i=5;p=&x[i];
答案:Y
第2题
char (*p)[6]; 若p值为1000,则p++;后p值为1006.
答案:Y
第3题
指针就是一个变量的地址.
答案:Y
第4题
若有int a[10],*p;p=&a[5];则p[-1]是合法的.
答案:Y
第5题
将函数fun的入口地址赋给指针变量p的语句是p=fun;
答案:Y
三、单选 共15题 (共计15分)第1题
若有int a[][2]={{1,2},{3,4}}; 则*(a+1),*(*a+1)的含义分别为().
A:非法,2B:&a[1][0],2C:&a[0][1],3D:a[0][0],4答案:B
第2题
若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是().
A:i=*p;B:*p=*&j;C:i=&j;D:i=**p;答案:B
第3题
若数组名作实参而指针变量作形参,函数调用实参传给形参的是().
A:数组的长度B:数组第一个元素的值C:数组所有元素的值D:数组第一个元素的地址答案:D
第4题
若有定义:char *p1,*p2,*p3,*p4,ch;则不能正确赋值的程序语句为().
A:p1=&ch; scanf("%c",p1);B:p2=(char *)malloc(1);scanf("%c",p2);C:*p3=getchar();D:p4=&ch;*p4=getchar();答案:C
第5题
int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p[-3]的值是().
A:2B:3C:4D:不一定答案:B
第6题
若有int *p=(int *)malloc(sizeof(int));则向内存申请到内存空间存入整数123的语句为().
A:scanf("%d",p);B:scanf("%d",&p);C:scanf("%d",*p);D:scanf("%d",**p);答案:A
第7题
已知p,p1为指针变量,a为数组名,j为整型变量,下列赋值语句中不正确的是().
A:p=&j,p=p1;B:p=a;C:p=&a[j];D:p=10;答案:D
第8题
以下定义语句中,错误的是().
A:int a[]={1,2};B:char *a[3];C:char s[10]="test";D:int n=5,a[n];答案:D
第9题
char *s1="hello",*s2;s2=s1;则().
A:s2指向不确定的内存单元B:不能访问"hello"C:puts(s1);与puts(s2);结果相同D:s1不能再指向其它单元答案:C
第10题
若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5的语句为().
A:printf("%d",*(a+5));B:printf("%d",p[5]);C:printf("%d",*(p+5));D:printf("%d",*p[5]);答案:D
第11题
若有int i=3,*p;p=&i;下列语句中输出结果为3的是().
A:printf("%d",&p);B:printf("%d",*i);C:printf("%d",*p);D:printf("%d",p);答案:C
第12题
若有说明:int *p, m=5, n;以下正确的程序段是().
A:p = &n;scanf("%d", &p);B:p = &n;scanf("%d,*p);C:scanf("%d", &p);*p = n;D:p = &n;*p = m;答案:D
第13题
char *match(char c)是().
A:函数定义的头部B:函数预说明C:函数调用D:指针变量说明答案:A
第14题
设 char *s="\ta\017bc";则指针变量s指向的字符串所占的字节数是().
A:9B:5C:6D:7答案:C
第15题
设变量定义为"int x, *p=&x;",则&(*p)相当于().
A:pB:*pC:xD:*(&x)答案:A
四、程序填空 共2题 (共计20分)第1题
题目:使用指向变量的指针编写交换两个变量值函数,按主调函数的调用形式编写。 void swap();void main(){int x, y;printf("输入两个整数 x,y \n");scanf("%d%d", &x, &y);swap(&x, &y);printf("x=%dy=%d", x, y);}void swap(int* p, int* q){int t;t = *p;【 ? 】;【 ? 】;}答案:
=======(答案1)=======*p=*q=======(答案2)=======*q=t第2题
题目:给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数 放在形参a所指数组中(此数组在主函数中已置0)。 #include #include #define N 20void fun(int* a){int i, x, j = 0;x = rand() % 20;while (j < 【 ? 】){for (i = 0; i < j; i++)if (x == a[i])【 ? 】;if (i == 【 ? 】){a[j] = x;j++;}x = rand() % 20;}}main(){int x[N] = { 0 }, i;fun(x);printf("The result : \n");for (i = 0; i < N; i++){printf("%4d", x[i]);if ((i + 1) % 5 == 0)printf("\n");}printf("\n\n");}答案:
=======(答案1)=======N=========或=========20=======(答案2)=======break=======(答案3)=======j 五、程序改错 共1题 (共计20分)第1题
功能:输入一个字符串,过滤此串,滤掉字母字符,并统计新生 成串中包含的字符个数。例如:输入的字符串为ab234$df4,则输出为: The new string is 234$4 There are 5 char in the new string. #include #include #define N 80int fun(char* ptr){int i, j;for (i = 0, j = 0; *(ptr + i) != "\\0"; i++)if (*(ptr + i) > 'z' || *(ptr + i) < 'a' || *(ptr + i) > 'Z' || *(ptr + i) < 'A'){(ptr + j) = (ptr + i);j++;}*(ptr + j) = '\0';return(j);}main(){char str[N];int s;printf("input a string:"); gets(str);printf("The original string is :"); puts(str);s = fun(str);printf("The new string is :"); puts(str);printf("There are %d char in the new string.", s);}答案:
=======(答案1)=======for(i=0,j=0;*(ptr+i)!='\0';i++)=======(答案2)=======if(*(ptr+i)>'z'|| *(ptr+i)'Z'||*(ptr+i)