《C语言期末考试题目.pdf》由会员分享,可在线阅读,更多相关《C语言期末考试题目.pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 指 针 一、单项选择题 1。已知:int a,y=a;则下列函数调用中错误的是 。A)scanf(d,&a);B)scanf(”%d,y);C)printf(”%d”,a);D)printf(”d”,y);2.说明语句”int(*p)();”的含义是 .A)p 是一个指向一维数组的指针变量 B)p 是指针变量,指向一个整型数据 C)p 是一个指向函数的指针,该函数的返回值是一个整型 D)以上都不对 3.设有说明 int(p)4;其中的标识符 p 是 。A)4 个指向整型变量的指针变量 B)指向 4 个整型变量的函数指针 C)一个指向具有 4 个整型元素的一维数组的指针 D)具有 4 个指向整
2、型变量的指针元素的一维指针数组 4.已知:char s10,*p=s,则在下列语句中,错误的语句是 .A)p=s+5;B)s=p+s;C)s2=p4;D)p=s0;5.已知:char s100;int i;则引用数组元素的错误的形式是 。A)si+10 B)*(s+i)C)(i+s)D)((s+)+i)6。已知:char s6,*ps=s;则正确的赋值语句是 。A)s=12345;B)*s=12345;C)ps=”12345;D)*ps=12345;7.已知:char a310=BeiJing,ShangHai,”TianJin”,*pa=a;不能正确显示字符串”ShangHai”的语句是。A
3、)printf(%s”,a+1);B)printf(s,*(a+1);C)printf(%s”,*a+1);D)printf(%s,a10);8.已知:int a4 3=1,2,3,4,5,6,7,8,9,10,11,12;int(ptr)3=a,*p=a0;则以下能够正确表示数组元素 a12的表达式是 。A)(a+1)+2)B)*(*(p+5)C)(*ptr+1)+2 D)((ptr+1)2)9。已知:int a =1,2,3,4,5,6,7,8,9,10,11,12,p=a;则值为 3 的表达式是 。A)p+=2,*(p+)B)p+=2,*+p C)p+=2,p+D)p+=2,+p 10。
4、已知:int a=1,2,3,4,y,p=a;则执行语句 y=(+p)-;之后,数组 a 各元素的值变为 。A)0,1,3,4 B)1,1,3,4 C)1,2,2,4 D)1,2,3,3 变量 y 的值是 。A)1 B)2 C)3 D)4 11.已知:int a=1,3,5,7 ,y p=a;为使变量 y 的值为 3,下列语句正确的是 。A)y=+p+;B)y=+(p+);C)y=(+p)+;D)y=(+p)+;12.已知:int x=1,3,5,7,9,11 ,ptr=x;则能够正确引用数组元素的语句是 。A)x B)*(ptr)C)x6 D)*(-ptr)13。函数的功能是交换变量 x 和
5、 y 中的值,且通过正确调用返回交换的结果.能正确执行此功能的函数是 。A)funa(int x,int y)B)funb(int x,int y)int*p;int t;p=x;*x=*y;*y=p;t=x;x=y;y=t;C)func(int*x,int*y)D)func(int x,int y)*x=*y;*y=x;x=x+y;y=xy;x=x-*y;14.有定义如下:struct sk int a;float b;data,*p;如果 p=&data;则对于结构变量 data 的成员 a 的正确引用是_.A)(*).data.a B)(*p)。a C)p-data.a D)p。data
6、。a 15。已知:struct st int n;struct st next;static struct st a3=1,a1,3,a2,5,&a0,p;如果下述语句的显示是 2,则对 p 的赋值是 .printf(”%d”,+(p-nextn));A)p=a0;B)p=&a1;C)p=a2;D)p=&a3;16。已知:struct person char name10;int age;class10=LiMing,29,”ZhangHong”,21,WangFang”,22;下述表达式中,值为 72 的一个是 。A)class0-age+class1-age+class2-age B)cl
7、ass1。name5 C)person1。name5 D)clase-name5 17。已知:struct int i;char c;float a;test;则 sizeof(test)的值是 .A)4 B)5 C)6 D)7 18.已知:union int i;char c;float a;test;则 sizeof(test)的值是 。A)4 B)5 C)6 D)7 19。已知:union u_type int i;char ch;float a;temp;现在执行temp。i=266;printf(”d,temp。ch)”的结果是 。A)266 B)256 C)10 D)1 20.若有
8、以下程序段:struct dent int n;int m;int a=1,b=2,c=3;struct dent s3=101,a,102,&b,103,&c ;struct dent p=s;则以下表达式中值为 2 的是 .A)(p+)m B)*(p+)-m C)(p).m D)(+p)m 21.若有以下说明语句,则对结构变量 pup 中 sex 域的正确引用是 。struct pupil char name20;int sex;pup,*p;p=&pup;A)p.pup。sex B)ppup。sex C)(*p)。pup。sex D)(p)。sex 22.以下对结构变量 stul 中成员
9、 age 的非法引用是 .struct student int age;int num;stu1,*p;p=&stu1;A)stu1。age B)student.age C)page D)(*p)。age 23。若有以下定义和语句:union data int i;char c;float f;a;int n;则以下语句正确的是 。A)a=5;B)a=2,a,1.2;C)printf(dn”,a);D)n=a;24.已知:struct sk int a;int age;date,p;如果要使指针 p 指向 data 中的成员 a,正确的赋值语句是 。A)p=(struct sk)&data.a
10、;B)p=(struct sk)data.a;C)p=data。a;D)p=data。a;25。已知 enum week sun,mon,tue,wed,thu,fri,satday;则正确的赋值语句是 。A)sun=0;B)san=day;C)sun=mon;D)day=sun;26。已知 enum color red,yellow=2,blue,white,blackren;执行下述语句的输出结果是 。printf(”d,ren=white);A)0 B)1 C)3 D)4 27.已知 enum namezhao=1,qian,sun,liman;执行下述程序段后的输出是 。man=0;s
11、witch(man)case 0:printf(”Peoplen”);case 1:printf(”Mann”);case 2:printf(Womann);default:printf(Errorn”);A)People B)Man C)Woman D)Error 28。下述关于枚举类型名的定义中,正确的是 。A)enem a=one,two,three ;B)enem a one=9,two=-1,three ;C)enem a=one”,two,three;D)enem a”one”,two”,three”;29.语言中标准输入文件 stdin 是指 。A)键盘 B)显示器 C)鼠标 D
12、)硬盘 30.要打开一个已存在的非空文件”file用于修改,选择正确的语句 。A)fp=fopen(”file,”r);B)fp=fopen(file,a+);C)fp=fopen(”file,”w);D)fp=fopen(file”,”r+);31。当顺利执行了文件关闭操作时,fclose 函数的返回值是 。A)-1 B)TRUE C)0 D)1 32。fscanf 函数的正确调用形式是 。A)fscanf(文件指针,格式字符串,输出列表);B)fscanf(格式字符串,输出列表,文件指针);C)fscanf(格式字符串,文件指针,输出列表);D)fscanf(文件指针,格式字符串,输入列表
13、);33.使用 fgetc 函数,则打开文件的方式必须是 .A)只写 B)追加 C)读或读/写 D)参考答案 B 和 C 都正确 34。已知宏定义 define N 3#define Y(n)((N+1)*n)执行语句 z=2*(N+Y(5+1);后,变量 z 的值是 。A)42 B)48 C)52 D)出错 35。已知宏定义 define SQ(x)x*x,执行语句 printf(d”,10/SQ(3);后的输出结果是 .A)1 B)3 C)9 D)10 36.下面程序的输出结果是 。void main()int a=1,2,3,4,5,6;int*p;p=a;printf(”d,*p);p
14、rintf(d”,(+p));printf(%d”,*+p);printf(”d”,*(p-);p+=3;printf(%d%d,*p,*(a+3);A)1 2 3 3 5 4 B)1 2 3 4 5 6 C)1 2 2 3 4 5 D)1 2 3 4 4 5 37.下面程序的输出结果是 .void main()int a34=1,2,3,4,5,6,7,8,9,10,11,12;int p=a;p+=6;printf(”d,p);/*/printf(d”,*(a+6));/*/printf(d,(a1+=2);/printf(”%d”,(a0 0+6);/*/A)7 7 7 7 B)句语法错
15、误 C)句语法错误 D)句语法错误 38.下面程序的输出结果是 。#define FMT%Xn#include main()static int a 4=1,2,3,4,5,6,7,8,9,10,11,12 ;printf(FMT,a22);/*/printf(FMT,*((a+1)+1);/A)9 B)11 C)A D)B A)6 B)7 C)8 D)前面三个参考答案均是错误的 39。下面程序的输出结果是 。include stdio。h void main()int a=1,2,3,4,5;int x,y,*p;p=&a0;x=*(p+2);y=*(p+4);printf(%d,d,%dn
16、”,*p,x,y);A)1,3,5 B)1,2,3 C)1,2,4 D)1,4,5 40.下面程序的输出结果是 .void ive(x,n)int x,n;int t,*p;p=x+n-1;while(xp)t=*x;*x+=*p;*p-=t;return;void main()int i,a=1,2,3,4,5,6,7,8,9,0;ive(a,10);for(i=0;i10;i+)printf(”d”,ai);printf(”n);A)1 2 3 4 5 6 7 8 9 0 B)0 9 8 7 6 5 4 3 2 1 C)1 3 5 7 9 2 4 6 8 0 D)0 8 6 4 2 9 7
17、 5 3 1 41.下面程序的输出结果是 。include”string.h fun(char*w,int n)char t,*s1,s2;s1=w;s2=w+n-1;while(s1s2)t=s1+;s1=s2-;*s2=t;void main()static char p=1234567”;fun(p,strlen(p);printf(s,p);A)7654321 B)1717171 C)7171717 D)1711717 42.下面程序的输出结果是 。#include char*p=”abcdefghijklmnopq”;void main()int i=0;while(p+!=e);p
18、rintf(”%cn”,p);A)c B)d C)e D)f 43.下面程序的输出结果是 .include stdio。h f(int x,int y)return(yx);void main()int a=5,b=6,c;int f(),(g)()=f;printf(”%dn”,(g)(a,b);A)1 B)2 C)3 D)前面三个参考答案均是错误的 44。下面程序的输出结果是 。include void main()int a=1,*p,*pp;pp=p;p=a;a+;printf(”%d,d,dn,a,p,*pp);A)2,1,1 B)2,1,2 C)2,2,2 D)程序有错误 45.下
19、面程序的输出结果是_。void main()char*alpha7=ABCD,”EFGH”,IJKL,”MNOP”,”QRST”,”UVWX,YZ”;char*p;int i;p=alpha;for(i=0;i4;i+)printf(”c,(pi));printf(n”);A)AEIM B)BFJN C)ABCD D)DHLP 46.以下程序的输出结果是 A)15 B)100 C)10 D)150 define MIN(x,y)(x)void main()int i,n=10,a10=1,2,3,4,5,6,7,8,9,10;invert(a,n1);for(i=0;i10;i+)printf
20、(%4d”,ai);printf(”n);void invert(int*s,int num)int*t,k;t=s+num;while()k=*s;s=*t;t=k;2.下面函数的功能是将字符变量的值插入已经按ASCII码值从小到大排好序的字符串中。void fun(char*w,char x,int n)int i,p=0;while(xwp);for(i=n;i=p;i-);wp=x;+n;3.以下程序的功能是:读入一行字符(如:a、。.y、z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。#include stdi
21、o。h void main()struct node char info;struct node link;*top,p;char c;top=NULL;while(c=getchar())p=(struct node)malloc(sizeof(struct node);p-info=c;p-link=top;top=p;while(top);top=toplink;putchar(pinfo);free(p);三、编程题 1.编写函数,通过指针将一个字符串反向。2.编写一个函数 insert(s1,s2,ch),实现在字符串 s1 中的指定字符 ch 位置处插入字符串 s2。3。利用结构:struct complx int real;int im;;编写求两个复数之积的函数 cmult,并利用该函数求下列复数之积:(3+4i)(5+6i)(10+20i)(30+40i)4。编写成绩排序程序。按学生的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名次、该名次的分数、相同名次的人数和学号;同名次的学号输出在同一行中,一行最多输出 10 个学号.
限制150内