计算机二级c语言第八章 指针习题
- 格式:doc
- 大小:57.00 KB
- 文档页数:7
2009年4月,全国计算机等级二级C考试你准备好了没?考计算机等级二级C语言考试的朋友可以多关注一下考试365为大家整理的2009年4月,全国计算机等级二级C语言考前练习!希望对大家的备考有好的帮助!考试365祝各位考个好成绩!大家每天都来练习哦!不断的加强巩固!每天都有更新哦!考试365提示:每十道题的难度不同!继续上一篇...1.有以下结构体说明和变量的定义,且如下图所示指针p指向变量a,指针q指向变量b。
则不能把结点b连接到结点a之后的语句是()struct node{char data;struct noe*next;}a,b,*p= &a,*q=&b;A)a.next=q;B)p.next= &b;C)p- >next=&b;D)(*p).next=q;?2.若有如下定义:int(*p)(),*q();则下列说法正确的是()A)p是一个函数名,q是一个指针变量B)p是一个指向整型变量的指针变量,q是一个指向一维数组的指针变量C)p和q是等价的,都是指针变量D)p是指向函数的指针变量,函数的返回值是整型数据;q是带回指针值的函数3.有以下程序# includemain(){ float x,y;scanf( "%f",&x);if(x <0.0)y=0.0;else if((x <5.0)&&(x!=2.0))y=1.0/(x+2.0);else if(x <10.0)y=1.0/x;else y=10.0printf( "%f\n",y);}若运行时从键盘上输入2.0 (表示回车),则上面程序的输出结果是()A)0.000000B)0.250000C)0.500000D)1.0000004.以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是()A)main (){int*p;fun (p);…}intfun (int*p){ int s;p= &s;}B)main{int*p;fun ( &p);…}intfun (int**p){ints;*p= &s;}C)#includemain (){int*p;fun ( &p);…}intfun (int**p){*p=(int*)malloc (2); }D)#includemain (){ int*p;fun (p);…}int fun (int*p){p=(int*)malloc(sizeof (int)); }5.执行下列程序时输入:23 <空格>456<空格>789<回车>,输出结果是() main(){ char s[100]int c,i;scanf( "%c",&c);scanf( "%d",&i);scanf( "%s",s);printf( "%c,%d,%s\n",c,i,s);}A)1,456,789B)1,23,456C)1,23,456,789D)23,456,7896.有以下程序#include#includemain(){ char b1[8]= "abcdefg",b2[8],*pb=b1+3;while(--pb >b1)strcpy(b2,pb);printf( "%d\n",strlen(b2));}程序运行后的输出结果是()A)8B)3C)1D)67.设有如下定义和声明:structs{ inta;structs*next};structsx[4]={1, &x[1],3,&x[2],5,&x[3],7,’\0’},*t;t= &x[0];则下列表达式值为2的是()A)++t- >aB)(*t).a++C)t- >a++D)t++- >a8.若有如下程序:main(){int a=6; char ch=c;printf( "%d\n",(a&2)&&(ch<′m′));}则程序运行后的输出结果是()A)0B)1C)2D)39.下列说法不正确的是()A)下列结构体定义时,占据了5个字节的空间struct s {int num;int age;char sex;}B)结构体的成员名可以与程序中的变量名相同C)对结构体中的成员可以单独使用,它的作用相当于普通变量D)结构体的成员可以是一个结构体变量10.若要打开A盘中user子目录下名为aaa.txt的文本文件进行读、写操作,下面符合此要求的函数调用是()A)fopen( "A:\user\aaa.txt","r")B)fopen( "A:\\user\\aaa.txt","r+")C)fopen( "A:\user\aaa.txt","rb")D)fopen( "A:\\user\\aaa.txt","w")答案:1.B 2.D 3.C 4.C 5.B 6.D 7.A 8.A 9.A 10.B2009年4月,全国计算机等级二级C考试你准备好了没?考计算机等级二级C语言考试的朋友可以多关注一下考试365为大家整理的2009年4月,全国计算机等级二级C语言考前练习!希望对大家的备考有好的帮助!考试365祝各位考个好成绩!大家每天都来练习哦!不断的加强巩固!每天都有更新哦!考试365提示:每十道题的难度不同!继续上一篇...1.分析以下程序,执行后的输出结果是()int f1(int x,int y){return x >y? x:y;}int f2(int x,int y){return x >y? y:x;}main(){int a=4,b=3,c=5,d,e,f;d=f1(a,b);d=f1(d,c);e=f2(a,b);e=f2(e,c);f=a+b+c-d-e;printf( "%d,%d,%d",d,f,e);}A)3,4,5B)5,3,4C)5,4,3D)3,5,42.分析下面函数swap(int *p1,*p2){ int *p;*p=*p1;*p1=*p2;*p2=*p;}则该程序功能为()A)交换*p1和*p2的值B)正确,考试365提示:但无法改变*p1和*p2的值C)交换*p1和*p2的地址D)可能造成系统故障,因为使用了空指针3.有以下程序main(){int n[3],i,j;for(i=0;i <3;i++)n[i]=0;for(i=0;i <2;i++)for(j=0;j <2;j++)n[j]=n[i]+1;printf( "%d\n",n[1]);}程序运行后的输出结果是()A)2B)1D)34.有如下程序段:int a=14,b=15,x;char c=′A′;x=(a &&b)&&(c<′B′);执行该程序段后,x的值为()A)1B)0C)falseD)true5.有以下程序# includestruct NODE{int num;struct NODE*next;}main(){struct NODE*p,*q,*r;p=(struct NODE*)malloc(sizeof(struct NODE)); q=(struct NODE*)malloc(sizeof(struct NODE)); r=(struct NODE*)malloc(sizeof(struct NODE)); p- >num=10;q->num=20;r->num=30;p- >next=q;q->next=r;printf( "%d\n",p->num+q->next->num);}程序运行后的输出结果是()A)10B)20C)30D)406.设有如下定义:structsk{ inta;float b;} data;int *p;若要使p指向data中的a域,正确的赋值语句是()A)p= &a;B)p=data.a;C)p= &data.a;D)*p=data.a;7.若有如下说明:unions{char a[9];intb;float c;则下列叙述正确的是()A)共用体变量t不能作为函数的参数B)通过引用共用体变量名t可以得到成员的值C)共用体变量t的地址和它的各成员的地址不同D)共用体变量t所占的内存长度等于它的各成员所占的内存长度之和8.若定义了以下函数:void sub(......){......*t=(int*)malloc(10*sizeof(int));......}其中t是该函数的形参,要求通过t把动态分配存储单元的地址传回主调函数,则形参t的正确定义应该是()A)int *tB)int **tC)long **tD)long *t9.以下对枚举类型名的定义中正确的是()A)enum a={one,two,three};B)enum a {one=9,two=-1,three=200};C)enum a={ "one","two","four"};D)enum a { "nine","two","three"};10.C语言规定如果调用fputc函数输出成功,则返回值是()A)1B)输出的字符C)0D)true答案:1.C 2.D 3.D 4.A 5.D 6.C 7.A 8.B 9.B 10.B2009年4月,全国计算机等级二级C考试你准备好了没?考计算机等级二级C语言考试的朋友可以多关注一下考试365为大家整理的2009年4月,全国计算机等级二级C语言考前练习!希望对大家的备考有好的帮助!考试365祝各位考个好成绩!大家每天都来练习哦!不断的加强巩固!每天都有更新哦!考试365提示:每十道题的难度不同!继续上一篇...1.s1和s1已正确定义并分别指向两个字符串,若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是()A)if(s1>s2)S;B)if(strcmp(s1,s2))S;C)if(strcmp(s2,s1)>0)S;D)if(strcmp(s1,s2)>0)S;2.设有定义语句intx[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是()A)for(i=0;i<6;i++)printf("%2d",*(p++));B)for(i=0;i<6,i++)printf("%2d",*(p+i));C)for(i=0;i<6;i++)printf("%2d",*p++);D)for(i=0;i<6;i++)printf("%2d",(*p)++);3.以下程序的输出结果是()#includemain(){int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;*q=*(q+5);printf("%d%d\n",*p,*q);}A)运行后报错B)66C)611D)5104.设有以下定义和语句int a[3][2]={1,2,3,4,5,6},*p[3];p[0]=a[1];则*(p[0]+1)所代表的数组元素是()A)a[0][1]B)a[1][0]C)a[1][1]D)a[1][2]5.以下程序的输出结果是()main(){char str[][10]={"china","Beijing"},*p=str;printf("%s\n",p+10);}A)ChinaB)BeijingC)ngD)ing6.Examda提示: 以下程序的输出结果是()main(){char s[]="ABCD",*p;for(p=s+1;p }A)ABCDBCDCDDB)ABCDC)BCDD)BCDCDD7.在函数调用过程中,如果函数funA调用了函数funB,函数funB Examda提示: 又调用了函数funA,则()A)称为函数的直接递归调用B)称为函数的间接递归调用C)称为函数的循环调用D)C语言中不允许这样的递归调用8.已有定义:int i,a[10],*p;,则合法的赋值语句是()A)p=10;B)p=a[5]C)p=a[2]+2;D)p=a+2;9.以下叙述中正确的是()A)局部变量说明为static的存储类,其生存期将得到延长B)全局变量说明为static存储类,其作用域将被扩大C)任何存储类的变量在未赋初值时,其值都是不确定的D)形参可以使用的存储类说明符与局部变量完全相同10.设有定义语句:char c1=2,c2=2;,则以下表达式中值为零的是()A)c1^c2B)c1&c2C)~c2D)c1|c2答案:1.D 2.D 3.A 4.C 5.B 6.D 7.B 8.D 9.A 10.A来2009年4月,全国计算机等级二级C考试你准备好了没?考计算机等级二级C语言考试的朋友可以多关注一下考试365为大家整理的2009年4月,全国计算机等级二级C语言考前练习!希望对大家的备考有好的帮助!考试365祝各位考个好成绩!大家每天都来练习哦!不断的加强巩固!每天都有更新哦!考试365提示:每十道题的难度不同!继续上一篇...1.有以下程序:main(){char a[]="abcdefg",b[10]="abcdefg";printf("%d %d\n",sizeof(a),sizeof(b));}执行后输出结果是()A)7 7B)8 8C)8 10D)10 102.有以下程序:void swapl(int c[]){int t;t=c[0];c[0]=c[1];c[1]=t;}void swap2(int c0,int c1){int t;t=c0;c0=c1;c1=t;}main(){int a[2]={3,5},b[2]={3,5};swap1(a);swap2(b[0],b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}其输出结果是()A)5 3 5 3B)5 3 3 5C)3 5 3 5D)3 5 5 33.有以下程序:void sum(int *a){a[0]=a[1];}main(){int aa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}执行后的输出结果是()A)4B)3C)2D)14.有以下程序:int f(int b[][4]){int i,j,s=0;for(j=0;j<4;j++){i=j;if(i>2)i=3-j;s+=b[i][j];}return s;}main(){int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}}; printf("%d\n",f(a));}执行后的输出结果是()A)12B)11C)18D)165.有以下定义:#includechar a[10],*b=a;不能给a数组输入字符串的语句是()A)gets(a)B)gets(a[0]);C)gets(&a[0]);D)gets(b);6.有以下程序:main(){char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"}; printf("%d\n",strlen(p[4]));}执行后输出结果是()A)2B)3C)4D)57.有以下程序:int a=2;int f(int *a){return(*a)++;}main(){int s=0;{int a=5;s+=f(&a);}s+=f(&a);printf("%d\n",s);}执行后输出结果是()A)10B)9C)7D)88.有以下程序:#define f(x) x*xmain(){int i;i=f(4+4)/f(2+2);printf("%d\n",i);}执行后的输出结果是()A)28B)22C)16D)49.设有以下语句:typedef struct S{int g;char h;}T;则下面叙述中正确的是()A)可用S定义结构体变量B)可以用T定义结构体变量C)S是struct类型的变量D)T是struct S类型的变量10.有以下程序:struct STU{char name[10];int num;};void f1(struct STU c){struct STU b={"LiSiGuo",2042};c=b;}void f2(struct STU *c){sturct STU b={"SunDan",2044};*c=b;}main(){struct STU a={"YangSan",2041},b={"WangYin",2043};f1(a);f2(&b);printf("%d%d\n",a.num,b.num);}执行后的输出结果是()A)2041 2044B)2041 2043C)2042 2044D)2042 2043答案:1.C 2.B 3.A 4.D 5.B 6.A 7.C 8.A 9.D 10.A2009年4月,全国计算机等级二级C考试你准备好了没?考计算机等级二级C语言考试的朋友可以多关注一下考试365为大家整理的2009年4月,全国计算机等级二级C语言考前练习!希望对大家的备考有好的帮助!考试365祝各位考个好成绩!大家每天都来练习哦!不断的加强巩固!每天都有更新哦!考试365提示:每十道题的难度不同!继续上一篇...1.下面程序的输出结果是()func (int x){ static int a=2;return (a+=x); }main(){ int b=2, c=4, d;d=func (b);d=func (c);printf("%d\n",d); }A)4B)6C)8D)12?2.以下程序运行后的输出结果是()main(){ chars[]="1234",*ps;for(ps=s;ps printf("\n");}A)123B)112123C)1234D)乱码3.以下关于宏的叙述中正确的是()A)宏名必须用大写字母表示B)宏替换时要进行语法检查C)宏替换不占用运行时间D)宏定义中不允许引用已有的宏名4.如果文件1包含文件2,文件2中要用到文件3的内容,而文件3中要用到文件4的内容,则可在文件1中用三个#include命令分别包含文件2、文件3和文件4。
国家二级计算机考试c语言试题及答案一、选择题1. 下面哪个选项是C语言的数据类型?A. int、char、floatB. if、for、whileC. 指针、数组、结构体D. printf、scanf、main2. 在C语言中,以下哪个是用于定义常量的关键字?A. defineB. constC. constantD. var3. 下面哪个选项是C语言的逻辑运算符?A. +B. &&C. /D. !4. 在C语言中,下面哪个选项表示“相等”?A. ==B. =C. ++D. <=5. 下面哪个选项是C语言中的循环语句?A. breakB. continueC. switchD. if二、填空题1. C语言中的关键字有____个。
2. C语言中用于读取输入的函数是____。
3. C语言中的注释符号是____。
4. C语言中的结构体定义关键字是____。
三、编程题根据以下要求完成编程任务。
任务描述:编写一个程序,实现输入两个整数并输出它们的和。
输入:两个整数。
输出:两个整数的和。
示例:输入:2 3输出:5编程代码如下:```C#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("它们的和为:%d\n", sum);return 0;}```以上是一套关于国家二级计算机考试C语言试题及答案的简要介绍。
希望对您的学习有所帮助。
如有其他问题,请随时与我们联系。
感谢阅读!。
C语言计算机二级考试题目及答案一、单项选择题(每题2分,共20分)1. 在C语言中,以下哪个选项是正确的整型常量表示?A. 0x123B. 123.0C. '123'D. 123e2答案:A2. 下列哪个关键字用于定义C语言中的函数?A. structB. intC. voidD. return答案:B3. 在C语言中,以下哪个选项是合法的变量名?A. 2variableB. variable2C. _2variableD. int答案:B4. C语言中,以下哪个选项是正确的数组声明?A. int array[10];B. int array[];C. int array[10][];D. int array[3][5];答案:D5. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. =D. ==答案:A6. 在C语言中,以下哪个选项是正确的字符串声明?A. char str[] = "Hello";B. char str[] = 'Hello';C. char str = "Hello";D. char str[] = {"Hello"};答案:A7. C语言中,以下哪个选项是正确的函数定义?A. int function(int x, int y) { return x + y; }B. int function(int x, int y) = { return x + y; }C. int function(int x, int y) { return x + y; } intD. int function(int x, int y) { return x + y; }答案:A8. 在C语言中,以下哪个选项是正确的文件包含指令?A. #include <stdio.h>B. #include "stdio.h"C. #include <stdio.h>D. #include "stdio.h"答案:A9. 下列哪个选项是C语言中的正确注释?A. /* This is a comment */B. // This is a commentC. /* This is a comment */D. // This is a comment答案:A10. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int *ptr = 0;C. int ptr = 0;D. int *ptr = 0;答案:A二、填空题(每题2分,共20分)1. 在C语言中,用于定义一个结构体的关键字是______。
计算机二级《C语言》测试题(附答案)2016计算机二级《C语言》测试题(附答案)单项选择题1[单选题]以下叙述中错误的是A.可以通过typedef增加新的类型B.可以用typedef将已存在的类型用一个新的名字来代表C.用typedef定义新的类型名后,原有类型名仍有效D.用typedef可以为各种类型起别名,但不能为变量起别名参考答案:A参考解析:关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型,所以A错误。
2[单选题]以下叙述中正确的是A.两个字符串可以用关系运算符进行大小比较B.函数调用strlen(s);会返回字符串S实际占用内存的大小(以字节为单位)C.C语言本身没有提供对字符串进行整体操作的运算符D.当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和参考答案:C参考解析:本题考查字符串处理函数strien、strcat、strcmp。
B 选项中strlen返回的是字符串s实际占用内存大小加上结尾符,A选项中不能用关系运算符进行大小比较,可以使用strcmp。
D选项当使用连接函数strcat时,内存空间会减少一个字符位置。
3[单选题]一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是()。
A.一对一B.一对多C.多对多D.多对一参考答案:C参考解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。
4[单选题]对于while(!E)s;,若要执行循环体s,则E的取值应为:A.E等于1B.E不等于0C.E不等于1D.E等于0参考答案:D参考解析:while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体。
while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。
该题中如要执行语句s,则!E应为真,因此E应等于0,D选项正确。
1.2算法1[填空题]一颗二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为【2】O参考解析:[2】DEBFCA【解析】根据二叉树的中序遍历原则可知D为二叉树的最左边的叶子结点,根据二叉树的前序遍历原则可知A是二叉树的根结点,就可以确定二叉树的结构,所以二叉树的后序遍历结果为:DEBFCA02[填空题]队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。
允许删除的一端称作。
参考解析:队头【解析】队列是只允许在一端删除,在另一端插入的顺序表,在队列中。
允许插入的一端叫做“队尾”,允许删除的一端叫做“队头”。
3[填空题]在最坏情况下,堆排序需要比较的次数为。
参考解析:0(nlog2n)【解析】在最坏情况下,冒泡排序所需要的比较次数为n(nr1)/2;简单插入排序所需要的比较次数为n(n-1)/2;希尔排序所需要的比较次数为0(nl.5);堆排序所需要的比较次数为0(nlog2n)。
4[单选题]算法的有穷性是指()。
Λ,算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用参考答案:A参考解析:算法具有5个特性:①有穷性:一个算法必须(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;②确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生歧义。
③可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。
,④输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。
⑤输出:一个算法有一个或多个输出。
5[单选题]下列叙述中正确的是()。
A.数据的逻辑结构与存储结构是一一对应的B.算法的时间复杂度与空间复杂度一定相关C.算法的效率只与问题的规模有关,而与数据的存储结构无关D.算法的时间复杂度是指执行算法所需要的计算工作量参考答案:D参考解析:根据时间复杂度和空间复杂度的定义可知,算法的时间复杂度与空间复杂度并不相关。
全国计算机等级考试二级C语言指针测试题一、选择题(1)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是A)*p=*q;B)p=q;C)*p=&n1;D)p=*q;(2)若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是A)随机值B)0C)x的地址D)p的地址(3) 以下定义语句中正确的是A) char a='A'b='B'; B) float a=b=10.0;C) int a=10,*b=&a; D) float *a,b=&a;(4) 有以下程序main(){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=p; p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);}程序运行后的输出结果是A) 8,7,8,7B) 7,8,7,8C) 8,7,7,8D) 7,8,8,7(5) 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是A) scanf(“%d”,p a) ;B) scanf(“%d”,a) ;C) scanf(“%d”,&pa) ;D) scanf(“%d”,*p a) ;(6) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是A) p=1;B) *q=2;C) q=p;D) *p=5;(7) 有以下程序以下是引用片段:void fun(char *a, char *b){ a=b; (*a)++; }main (){ char c1=’A’, c2=’a’, *p1, *p2;p1=&c1; p2=&c2; fun(p1,p2);printf(“%c%c\n”,c1,c2);}程序运行后的输出结果是A) AbB) aaC) AaD) Bb(8) 若程序中已包含头文件stdio.h, 以下选项中,正确运用指针变量的程序段是A) int *i=NULL; B) float *f=NULL;scanf("&d",f); *f=10.5;C) char t="m", *c=&t; D) long *L;*c=&t; L=‘\0’;(9) 有以下程序以下是引用片段:#inc1udemain(){ printf("%d\n", NULL); }程序运行后的输出结果是A) 0B) 1C) -1D) NULL没定义,出错(10) 已定义以下函数int fun (int *p){ return *p: }该函数的返回值是A) 不确定的值B) 形参p中存放的值C) 形参p所指存储单元中的值D) 形参p的地址值(11) 下列函数定义中,会出现编译错误的是A) max(int x, int y,int *z) B) int max(int x,y){ *z=x>y ? x:y; } int z ;z=x>y ? x:y;return z ;}C) max (int x,int y) D) int max(int x,int y){ int z; { return(x>y?x:y) ; }z=x>y?x:y; return(z);}(12) 有以下程序段以下是引用片段:main(){ int a=5, *b, **c;c=&b; b=&a;……}程序在执行了c=&b:b=&a;语句后,表达式:**c的值是A) 变量a的地址B) 变量b中的值C) 变量a中的值D) 变量b的地址(13) 有以下程序以下是引用片段:main(){ char a,b,c,*d;a=’\’;b=‘\0xbc’;c=‘\xab’; d="\0127";printf("%c%c%c%c\n",a,b,c,*d);}编译时出现错误,以下叙述中正确的是A) 程序中只有a=’\’;语句不正确B) b=‘\0xbc’;语句不正确C) d="\0127";语句不正确D) a=’\’;和c=‘\0xab’;语句都不正确(14) 若有以下定义和语句以下是引用片段:#includeint a=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;则以下选项中错误的语句是A) *q=0;B) w=p;C) *p=a;D) *p=*w;(15) 有以下程序以下是引用片段:int *f(int *x,int *y){ if(*x<*y)return x;elsereturn y;}main(){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf(“%d,%d,%d”,*p,*q,*r);}执行后输出结果是A) 7,8,8B) 7,8,7C) 8,7,7D) 8,7,8(16) 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是A) p=q;B) *p=*q;C) n=*q;D) p=n;(17) 有以下程序以下是引用片段:void fun(char *c,int d){ *c=*c+1;d=d+1;printf(“%c,%c,”,*c,d);}main(){ char a=’A’,b=’a’;fun(&b,a); pri ntf(“%c,%c\n”,a,b);}程序运行后的输出结果是A)B,a,B,aB) a,B,a,BC) A,b,A,bD) b,B,A,b(18) 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是A) scanf("%d%d%d",&a,&b,d);B) scanf("%d%d%d",&a,&b,&d);C) scanf("%d%d%d",a,b,d);D) scanf("%d%d%d",a,b,*d);(19) 若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为A) 无确定值B) a的地址C) 512D) 511(20) 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是A) i=*p;B) p*=*&j;C) i=&j;D) i=**p;(21) 下列程序段的输出结果是A) 2 1 4 3B) 1 2 1 2C) 1 2 3 4D) 2 1 1 2以下是引用片段:void fun(int *x, int *y){ printf(“%d%d”, *x, *y); *x=3; *y=4;}main(){ int x=1,y=2;fun(&y,&x);printf(“%d%d”,x, y);}(22) 下列程序的运行结果是A) 6 3B) 3 6C) 编译出错D) 0 0以下是引用片段:void fun(int *a, int *b){ int *k;k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, *y=&b;fun(x,y);printf(“%d%d”, a, b);}(23) 有如下程序段int *p,a=10,b=1p=&a; a=*p+b;执行该程序段后,a的值为A) 12B) 11C) 10D) 编译出错(24) 有以下函数char fun(char *p){ return p; }该函数的返回值是A) 无确切的值B) 形参p中存放的地址值B) 一个临时存储单元的地址D) 形参p自身的地址值(25) 请选出正确的程序段A) int *p; B) int *s, k;scanf("%d",p); *s=100;……C) int *s, k; D) int *s, k;char *p, c; char *p, e;s=&k; s=&k;p=&c; p=&c;*p='a'; s=p;…*s=1;…(26) 若有以下定义和语句:double r=99,*p=&r;*p=r;则以下正确的叙述是A) 以下两处的*p含义相同,都说明给指针变量p赋值B) 在"double r=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元C) 语句"*p=r;"把变量r的值赋给指针变量pD) 语句"*p=r;"取变量r的值放回r中(27) 以下程序运行后,a的值是A) 4 B) 1 C) 0 D) 运行时出错,a无定值以下是引用片段:main(){ int a,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}(28) 有以下程序以下是引用片段:int fun(int x,int y,int *cp,int *dp){ *cp=x+y; *dp=x-y; }main(){ int a, b, c, d;a=30; b=50;fun(a,b,&c,&d);printf("%d,%d\n", c, d);}输出结果是A) 50,30B) 30,J50C) 80,-20D) 80,20(29) 若有定义和语句:int **pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);则输出结果是:A)10,20B)10,10C)20,10D)20,20(30) 以下程序的输出结果是以下是引用片段:#includesubl(char a,char b) {char c; c=a;a=b;b=c;}sub2(char* a,char b) {char c; c=*a;*a=b;b=c;}sub3(char* a,char*b) {char c; c=*a;*a=*b;*b=c;} { char a,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}A) BABBABB) ABBBBAC) BABABAD) BAABBA(31) 若有说明:int i,j=7,*p=&i;,则与i=j;等价的语句是A) I= *P;B) *P=*&J;C) i=&j;D) i=* *p;(32) 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。
目录题目一“回文”字符串 (3)题目二迭代法求给定多项式的值 (4)题目三迭代法求给定方程的根 (5)题目四二维数组三角元素操作1 (6)题目四二维数组三角元素操作2 (7)题目四二维数组三角元素操作3 (9)题目五二维数组元素求最值 (10)题目六二维数组周边元素1 (11)题目六二维数组周边元素2 (12)题目七二维数组转一维数组1 (13)题目七二维数组转一维数组2 (14)题目七二维数组转一维数组3 (15)题目七二维数组转一维数组4 (16)题目八结构体数组排序1 (17)题目八结构体数组排序2 (18)题目八结构体数组排序3 (19)题目八结构体数组排序4 (20)题目九结构体数组求最值1 (22)题目九结构体数组求最值2 (23)题目九结构体数组求最值3 (23)题目九结构体数组求最值4 (24)题目十结构体数组筛选 (25)题目十一结构体数组字符串比较 (26)题目十二矩阵操作1 (27)题目十二矩阵操作2 (28)题目十三类似素数判断1 (29)题目十三类似素数判断2 (30)题目十四累加累乘求和1 (30)题目十四累加累乘求和2 (31)题目十四累加累乘求和3 (31)题目十四累加累乘求和4 (32)题目十四累加累乘求和5 (32)题目十四累加累乘求和6 (33)题目十四累加累乘求和7 (34)题目十四累加累乘求和8 (35)题目十四累加累乘求和9 (35)题目十四累加累乘求和10 (36)题目十四累加累乘求和11 (37)题目十四累加累乘求和12 (37)题目十四累加累乘求和13 (38)题目十四累加累乘求和14 (39)题目十四累加累乘求和15 (39)题目十四累加累乘求和16 (40)题目十五链表2 (42)题目十六删除整数位某数位 (43)题目十七删除字符串中指定字符1 (44)题目十七删除字符串中指定字符2 (45)题目十七删除字符串中指定字符3 (45)题目十七删除字符串中指定字符4 (46)题目十七删除字符串中指定字符5 (47)题目十七删除字符串中指定字符6 (47)题目十七删除字符串中指定字符7 (48)题目十七删除字符串中指定字符8 (48)题目十七删除字符串中指定字符9 (49)题目十七删除字符串中指定字符10 (50)题目十七删除字符串中指定字符11 (50)题目十七删除字符串中指定字符12 (51)题目十七删除字符串中指定字符13 (52)题目十七删除字符串中指定字符14 (53)题目十七删除字符串中指定字符15 (54)题目十七删除字符串中指定字符16 (54)题目十七删除字符串中指定字符17 (55)题目十七删除字符串中指定字符18 (56)题目十八数字字符串转整数1 (57)题目十八数字字符串转整数2 (58)题目十九素数判定1 (58)题目十九素数判定2 (59)题目十九素数判定3 (60)题目二十统计问题 (61)题目二十一小数位操作 (62)题目二十二一维数组或字符串排序1 (62)题目二十二一维数组或字符串排序2 (63)题目二十二一维数组元素的筛选1 (64)题目二十二一维数组元素的筛选2 (64)题目二十二一维数组元素的筛选3 (65)题目二十二一维数组元素的筛选4 (66)题目二十二一维数组元素的筛选5 (67)题目二十二一维数组元素的筛选6 (67)题目二十二一维数组元素的筛选7 (68)题目二十二一维数组元素的筛选8 (69)题目二十二一维数组元素的筛选9 (70)题目二十三一维数组元素筛选 (70)题目二十五一维数组最值求解1 (71)题目二十五一维数组最值求解2 (72)题目二十五一维数组最值求解3 (73)题目二十六移动问题1 (73)题目二十七整数合并1 (75)题目二十七整数合并2 (75)题目二十七整数合并3 (76)题目二十七整数合并4 (76)题目二十七整数合并5 (77)题目二十七整数合并6 (77)题目二十七整数合并7 (78)题目二十七整数合并8 (78)题目二十八字符串长度比较1 (78)题目二十八字符串长度比较2 (79)题目二十九字符串的逆置 (80)题目三十字符串计数 (81)题目三十一字符串连接1 (82)题目三十一字符串连接2 (82)题目三十一字符串连接3 (83)题目三十二字符串中指定字符查找 (84)题目三十三字母大小的判断及转换 (84)题目一“回文”字符串3.请编写函数fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出"YES",否则返回0,主函数中输出"NO"。
计算机二级试题c语言试题及答案计算机二级试题 C 语言试题及答案一、选择题1. 下面哪个选项是关于 C 语言的描述?A. C 语言是一种面向过程的编程语言。
B. C 语言是一种面向对象的编程语言。
C. C 语言是一种支持并发的编程语言。
D. C 语言是一种解释型的编程语言。
答案:A2. 下面哪个选项是定义一个整型变量的正确方式?A. int x;B. x as Integer;C. int x = 0;D. Integer x;答案:A3. 下面哪个选项是计算整型变量 y 的平方的正确方式?A. y * 2;B. y ^ 2;C. pow(y, 2);D. y * y;答案:D二、填空题1. 下面这段代码的输出是什么?```c#include <stdio.h>int main() {int x = 5;int y = 2;float result = x / y;printf("%f", result);return 0;}```答案:2.0000002. 下面这段代码的输出是什么?```c#include <stdio.h>int main() {int x = 7;int y = 3;printf("%d", x % y);return 0;}```答案:1三、简答题1. 请简述 C 语言中指针的概念及用途。
答:C 语言中的指针是指存储变量内存地址的变量,通过指针可以访问内存中的内容。
指针的用途包括但不限于以下几个方面: - 动态内存管理:通过指针可以在运行时分配内存和释放内存,灵活地管理内存空间。
- 数组访问:通过指针可以更高效地访问数组元素,通过指针进行数组操作。
- 函数传参:通过指针可以在函数之间传递复杂的数据结构,如数组、结构体等。
- 数据结构实现:指针可以用来实现各种数据结构,如链表、树等。
2. 请简述 C 语言中的控制结构 if 语句和 switch 语句的区别。
(第一章)1. 以下关于算法的描述不正确的是__________。
A. 任何一个问题,它的实现算法是唯一的B. 描述算法常用的表达工具有流程图、N-S图、PAD图、伪码等C. 算法的最终实现是计算机程序D. 正确性和清晰易懂性是一个好算法的基本条件2.下面是一个加法程序,指出存在的逻辑错误和语法错误。
/* 求整数a和b的和 */main( ){int a,b;a=8;b=2000;print("%d\n",a-b);}3.在每个C程序中都必须包含有这样一个函数,该函数的函数名为__________。
A.main B. MAIN C. name D. function4.以下叙述不正确的是__________。
A.C程序书写格式规定,一行内只能写一个语句B.main()函数后面有一对花括号,花括号内的部分称为函数体C.一个C程序必须有main()函数D.C规定函数内的每个语句以分号结束5.以下各标识符中,合法的用户标识符为_________。
A.A#C B.mystery C.main D.ab*6.已知求解某问题的算法如下:⑴输入a、b、c三个数。
⑵将a和b比较,较大者放在a中,小者放在b中。
⑶将a和c比较,较大者放在a中,小者放在c中。
⑷将b和c比较,较大者放在b中,小者放在c中。
⑸依次输出a、b、c。
请根据上述算法描述,把算法的功能表达出来。
【答案】把任意输入的三个数a、b、c按降序排列的顺序输出。
7.一个C语言程序可以包括多个函数,程序总是按照如下_________所描述的方式执行当前的程序。
A.从本程序的main()函数开始,到本程序文件的最后一个函数结束。
B.从本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
C.从main()函数开始,到main()函数结束。
D.从本程序文件的第一个函数开始,到本程序main()函数结束。
8.以下叙述正确的是_________。
计算机二级C语言习题集汇总及答案目录第一章C语言基础知识第二章C语言程序设计的初步知识第三章顺序结构程序设计第四章选择结构程序设计第五章循环结构程序设计第六章数组第七章函数第八章指针第九章结构体与共用体第十章文件附录1 预处理命令附录2 位运算模拟试题一模拟试题二模拟试题三模拟试题四模拟试题五第一章答案第二章答案第三章答案第四章答案第五章答案第六章答案第七章答案第八章答案第九章答案第十章答案附录1 答案附录2 答案模拟试题一答案模拟试题二答案模拟试题三答案模拟试题四答案模拟试题五答案第一章C语言基础知识一、选择题1.C语言规定,必须用C 作为主函数名。
(0级)A)Function B)include C)main D)stdio 2.一个C程序可以包含任意多个不同名的函数,但有且仅有一个,一个C程序总是从 B 开始执行。
(0级)A)过程B) 主函数C)函数D)include3. A 是C程序的基本构成单位。
(0级)A)函数B) 函数和过程C) 超文本过程D) 子程序4.下列说法正确的是C 。
(0级)A) 一个函数的函数体必须要有变量定义和执行部分,二者缺一不可B) 一个函数的函数体必须要有执行部分,可以没有变量定义C) 一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数D) 以上都不对5.下列说法正确的是D 。
(0级)A) main函数必须放在C程序的开头B) main函数必须放在C程序的最后C) main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的D) main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的6.下列说法正确的是 C 。
(0级)A) 在执行C程序时不是从mian函数开始的B) C程序书写格式严格限制,一行内必须写一个语句C) C程序书写格式自由,一个语句可以分写在多行上D) C程序书写格式严格限制,一行内必须写一个语句,并要有行号7.在C语言中,每个语句和数据定义是用C 结束。
第二章C程序设计的初步知识一、选择题1。
以下选项中正确的整型常量是()。
A。
12. B。
—20 C。
1,000 D。
4 5 62。
以下选项中正确的实型常量是()。
A.0B.3。
1415 C。
0。
329×102 D. 。
8713. 以下选项中不正确的实型常量是()。
A.2.607E—1B.0.8103e 2 C。
—77.77 D.456e—24。
以下选项中不合法的用户标识符是()。
A。
abc.c B.file C.Main D.PRINTF5。
以下选项中不合法的用户标识符是()。
A._123B.printfC.A $D.Dim6.C语言中运算对象必须是整型的运算符是()。
A.%B./ C。
! D.**7。
可在C程序中用作用户标识符的一组标识符是( )。
A.void define WORDB.as_b3 _123 IfC。
For —abc case D.2c DO SIG8。
若变量已正确定义并赋值,符合C语言语法的表达式是()。
A。
a=a+7; B。
a=7+b+c,a++ C。
int(12.3%4) D.a=a+7=c+b9。
以下叙述中正确的是()。
A。
a是实型变量,C允许进行赋值a=10,但可以这样说:实型变量中允许存放整型值B。
在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式C。
执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0D.已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为310。
以下叙述中正确的是()。
A。
在C程序中无论是整数还是实数,只要在允许的范围内部都能准确无误的表示B。
C程序由主函数组成C.C程序由若干函数组成D.C程序中只允许包含一个函数11.VC6。
0中int类型变量所占字节数是( )。
A.1B.2C.3D.412。
合法的八进制数是().A.0B.028C.—077D.01.013。
全国计算机等级考试二级C语言指针测试题一、选择题(1)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是A)*p=*q;B)p=q;C)*p=&n1;D)p=*q;(2)若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是A)随机值B)0C)x的地址D)p的地址(3) 以下定义语句中正确的是A) char a='A'b='B'; B) float a=b=10.0;C) int a=10,*b=&a; D) float *a,b=&a;(4) 有以下程序main(){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=p; p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);}程序运行后的输出结果是A) 8,7,8,7B) 7,8,7,8C) 8,7,7,8D) 7,8,8,7(5) 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是A) scanf(“%d”,pa) ;B) scanf(“%d”,a) ;C) scanf(“%d”,&pa) ;D) scanf(“%d”,*pa) ;(6) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是A) p=1;B) *q=2;C) q=p;D) *p=5;(7) 有以下程序以下是引用片段:void fun(char *a, char *b){ a=b; (*a)++; }main (){ char c1=’A’, c2=’a’, *p1, *p2;p1=&c1; p2=&c2; fun(p1,p2);printf(“%c%c\n”,c1,c2);}程序运行后的输出结果是A) AbB) aaC) AaD) Bb(8) 若程序中已包含头文件stdio.h, 以下选项中,正确运用指针变量的程序段是A) int *i=NULL; B) float *f=NULL;scanf("&d",f); *f=10.5;C) char t="m", *c=&t; D) long *L;*c=&t; L=‘\0’;(9) 有以下程序以下是引用片段:#inc1udemain(){ printf("%d\n", NULL); }程序运行后的输出结果是A) 0B) 1C) -1D) NULL没定义,出错(10) 已定义以下函数int fun (int *p){ return *p: }该函数的返回值是A) 不确定的值B) 形参p中存放的值C) 形参p所指存储单元中的值D) 形参p的地址值(11) 下列函数定义中,会出现编译错误的是A) max(int x, int y,int *z) B) int max(int x,y){ *z=x>y ? x:y; } int z ;z=x>y ? x:y;return z ;}C) max (int x,int y) D) int max(int x,int y){ int z; { return(x>y?x:y) ; }z=x>y?x:y; return(z);}(12) 有以下程序段以下是引用片段:main(){ int a=5, *b, **c;c=&b; b=&a;……}程序在执行了c=&b:b=&a;语句后,表达式:**c的值是A) 变量a的地址B) 变量b中的值C) 变量a中的值D) 变量b的地址(13) 有以下程序以下是引用片段:main(){ char a,b,c,*d;a=’\’; b=‘\0xbc’;c=‘\xab’; d="\0127";printf("%c%c%c%c\n",a,b,c,*d);}编译时出现错误,以下叙述中正确的是A) 程序中只有a=’\’;语句不正确B) b=‘\0xbc’;语句不正确C) d="\0127";语句不正确D) a=’\’;和c=‘\0xab’;语句都不正确(14) 若有以下定义和语句以下是引用片段:#includeint a=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;则以下选项中错误的语句是A) *q=0;B) w=p;C) *p=a;D) *p=*w;(15) 有以下程序以下是引用片段:int *f(int *x,int *y){ if(*x<*y)return x;elsereturn y;}main(){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf(“%d,%d,%d”,*p,*q,*r);}执行后输出结果是A) 7,8,8B) 7,8,7C) 8,7,7D) 8,7,8(16) 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是A) p=q;B) *p=*q;C) n=*q;D) p=n;(17) 有以下程序以下是引用片段:void fun(char *c,int d){ *c=*c+1;d=d+1;printf(“%c,%c,”,*c,d);}main(){ char a=’A’,b=’a’;fun(&b,a); printf(“%c,%c\n”,a,b);}程序运行后的输出结果是A)B,a,B,aB) a,B,a,BC) A,b,A,bD) b,B,A,b(18) 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是A) scanf("%d%d%d",&a,&b,d);B) scanf("%d%d%d",&a,&b,&d);C) scanf("%d%d%d",a,b,d);D) scanf("%d%d%d",a,b,*d);(19) 若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为A) 无确定值B) a的地址C) 512D) 511(20) 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是A) i=*p;B) p*=*&j;C) i=&j;D) i=**p;(21) 下列程序段的输出结果是A) 2 1 4 3B) 1 2 1 2C) 1 2 3 4D) 2 1 1 2以下是引用片段:void fun(int *x, int *y){ printf(“%d %d”, *x, *y); *x=3; *y=4;}main(){ int x=1,y=2;fun(&y,&x);printf(“%d %d”,x, y);}(22) 下列程序的运行结果是A) 6 3B) 3 6C) 编译出错D) 0 0以下是引用片段:void fun(int *a, int *b){ int *k;k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, *y=&b;fun(x,y);printf(“%d %d”, a, b);}(23) 有如下程序段int *p,a=10,b=1p=&a; a=*p+b;执行该程序段后,a的值为A) 12B) 11C) 10D) 编译出错(24) 有以下函数char fun(char *p){ return p; }该函数的返回值是A) 无确切的值B) 形参p中存放的地址值B) 一个临时存储单元的地址D) 形参p自身的地址值(25) 请选出正确的程序段A) int *p; B) int *s, k;scanf("%d",p); *s=100;……C) int *s, k; D) int *s, k;char *p, c; char *p, e;s=&k; s=&k;p=&c; p=&c;*p='a'; s=p;…*s=1;…(26) 若有以下定义和语句:double r=99,*p=&r;*p=r;则以下正确的叙述是A) 以下两处的*p含义相同,都说明给指针变量p赋值B) 在"double r=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元C) 语句"*p=r;"把变量r的值赋给指针变量pD) 语句"*p=r;"取变量r的值放回r中(27) 以下程序运行后,a的值是A) 4 B) 1 C) 0 D) 运行时出错,a无定值以下是引用片段:main(){ int a,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}(28) 有以下程序以下是引用片段:int fun(int x,int y,int *cp,int *dp){ *cp=x+y; *dp=x-y; }main(){ int a, b, c, d;a=30; b=50;fun(a,b,&c,&d);printf("%d,%d\n", c, d);}输出结果是A) 50,30B) 30,J50C) 80,-20D) 80,20(29) 若有定义和语句:int **pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);则输出结果是:A)10,20B)10,10C)20,10D)20,20(30) 以下程序的输出结果是以下是引用片段:#includesubl(char a,char b) {char c; c=a;a=b;b=c;}sub2(char* a,char b) {char c; c=*a;*a=b;b=c;}sub3(char* a,char*b) {char c; c=*a;*a=*b;*b=c;} { char a,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}A) BABBABB) ABBBBAC) BABABAD) BAABBA(31) 若有说明:int i,j=7,*p=&i;,则与i=j;等价的语句是A) I= *P;B) *P=*&J;C) i=&j;D) i=* *p;(32) 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。
第八章指针一、选择题1、设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是A)*p=*q; B)p=q; C)*p=&n1; D)p=*q;2、若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是A)随机值 B)0 C)x的地址 D)p的地址3、以下定义语句中正确的是A)char a='A'b='B'; B)float a=b=10.0;C)int a=10,*b=&a; D)float *a,b=&a;4、有以下程序main(){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=p; p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);}程序运行后的输出结果是A)8,7,8,7 B)7,8,7,8 C)8,7,7,8 D)7,8,8,75、设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是A)scanf("%d",pa) ; B)scanf("%d",a) ;C)scanf("%d",&pa) ; D)scanf("%d",*pa) ;6、设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是A)p=1; B)*q=2; C)q=p; D)*p=5;7、有以下程序void fun(char *a,char *b){ a=b; (*a)++; }main (){ char c1='A', c2='a', *p1, *p2;p1=&c1; p2=&c2; fun(p1,p2);printf("%c%c\n",c1,c2);}程序运行后的输出结果是A)Ab B)aa C)Aa D)Bb8、有以下程序#includemain(){ printf("%d\n", NULL); }程序运行后的输出结果是A)0 B)1 C)-1 D)NULL没定义,出错9、已定义以下函数fun(int *p){ return *p; }该函数的返回值是A)不确定的值 B)形参p中存放的值C)形参p所指存储单元中的值 D)形参p的地址值10、有以下程序段main(){ int a=5, *b, **c;c=&b; b=&a;……}程序在执行了c=&b:b=&a;语句后,表达式:**c的值是A)变量a的地址 B)变量b中的值C)变量a中的值 D)变量b的地址11、有以下程序int *f(int *x,int *y){ if(*x<*y)return x;elsereturn y;}main(){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}执行后输出结果是A)7,8,8 B)7,8,7 C)8,7,7 D)8,7,812、若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是A)p=q; B)*p=*q; C)n=*q; D)p=n;13、有以下程序void fun(char *c,int d){ *c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){ char a=’A’,b=’a’;fun(&b,a); printf("%c,%c\n",a,b);}程序运行后的输出结果是A)B,a,B,a B)a,B,a,B C)A,b,A,b D)b,B,A,b14、若有说明语句:int a,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是A)scanf("%d%d%d",&a,&b,d); B)scanf("%d%d%d",&a,&b,&d);C)scanf("%d%d%d",a,b,d); D)scanf("%d%d%d",a,b,*d);15、若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为A)无确定值 B)a的地址 C)512 D)51116、若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是A)i=*p; B)*p=*&j; C)i=&j; D)i=**p;17、下列程序段的输出结果是void fun(int *x, int *y){ printf("%d %d", *x, *y); *x=3; *y=4;}main(){ int x=1,y=2;fun(&y,&x);printf("%d %d",x, y);}A)2 1 4 3 B)1 2 1 2 C)1 2 3 4 D)2 1 1 218、下列程序的运行结果是void fun(int *a, int *b){ int *k;k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, *y=&b;fun(x,y);printf("%d %d", a, b);}A)6 3 B)3 6 C)编译出错 D)0 019、有如下程序段int *p,a=10,b=1;p=&a; a=*p+b;执行该程序段后,a的值为A)12 B)11 C)10 D)编译出错20、有以下函数char fun(char *p){ return p; }该函数的返回值是A)无确切的值 B)形参p中存放的地址值C)一个临时存储单元的地址 D)形参p自身的地址值21、请选出正确的程序段A)int *p; B)int *s, k;scanf("%d",p); *s=100;……C)int *s, k; D)int *s, k;char *p, c; char *p, e;s=&k; s=&k;p=&c; p=&e;*p='a'; s=p;… *s=1;…22、若有以下定义和语句:double r=99, *p=&r;*p=r;则以下正确的叙述是A)以下两处的*p含义相同,都说明给指针变量p赋值B)在"double r=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元C)语句"*p=r;"把变量r的值赋给指针变量pD)语句"*p=r;"取变量r的值放回r中23、以下程序运行后,a的值是main(){ int a,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}A)4 B)1 C)0 D)运行时出错,a无定值24、有以下程序int fun(int x,int y,int *cp,int *dp){ *cp=x+y; *dp=x-y; }main(){ int a, b, c, d;a=30; b=50;fun(a,b,&c,&d);printf("%d,%d\n", c, d);}输出结果是A)50,30 B)30,50 C)80,-20 D)80,2025、若有定义和语句:int **pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);则输出结果是:A)10,20 B)10,10 C)20,10 D)20,2026、以下程序的输出结果是sub1(char a,char b) {char c; c=a;a=b;b=c;}sub2(char *a,char b) {char c; c=*a;*a=b;b=c;}sub3(char *a,char *b) {char c; c=*a;*a=*b;*b=c;}main(){ char a,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}A)BABBAB B)ABBBBA C)BABABA D)BAABBA27、若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是A)i=*p; B)*p=*&j; C)i=&j; D)i=* *p;28、要求函数的功能是交换x和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)fund(int *x,int *y){ *x=*y;*y=*x;} { *x=*x+*y; *y=*x-*y;*x=*x-*y; }二、填空题:1、有以下程序void f( int y,int *x){ y=y+*x; *x=*x+y;}main(){ int x=2,y=4;f(y,&x);printf("%d %d\n",x,y);}执行后输出的结果是。
2、下面程序的运行结果是:void swap(int *a,int *b){ int *t;t=a; a=b; b=t;}main(){ int x=3,y=5,*p=&x,*q=&y;swap(p,q);printf("%d%d\n",*p,*q);}3、设有以下程序:main(){ inta, b, k=4, m=6, *p1=&k, *p2=&m;a=pl==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}执行该程序后,a的值为,b的值为。