《C试题及答案-.pdf》由会员分享,可在线阅读,更多相关《C试题及答案-.pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1.若有声明:int a43=1,2,3,4,5,6,*p=a1,(*q)3=a;则不能够输出的语句是C。A.printf(“%d”,a12);B.printf(“%d”,*(p+2);C.printf(“%d”,*(q+1);D.printf(“%d”,q12);2.已知函数f 定义为:void f(int a2,int*b)a0=*b;若 main 函数中声明了int x,y,t2=1,2;且在 main 函数中需要调用 f 函数,则以下函数调用语句中错误的是D,C。A f(&y,&x)B f(t,t+1)C y=f(&t0,&x)D.f(x,y)3.以下函数的功能是B。A字符串复制B.计
2、算 x 指向的字符串的长度C比较两个字符串的长度D.将 x 指向的字符串连接到y 指向的字符串之后int f(char*x)int*y=x while(*y+);return y x 1;4.设有以下声明和语句:int a3=1,2,3,*p3,i;for(i=0;iy?x:y;且 main 函数中有声明:int a=1,b=2,c2=0;则以下语句中正确的是B。A.printf(“%d”,fun(a,b,c);B.fun(a,b,c+1);C.fun(a,b,c2);D.fun(1,2);9.若已有二维数组声明 int a33=1,2,3,4,5,6,7,8,9;不能正确输出数组 a 中第
3、2 行(行下标为 1)第 3 列元素(列下标为 2)的语句是C。A.printf(“%d”,a12)B.printf(“%d”,*(*(a+1)+2);C.printf(“%d”,*(a+1)2);D.printf(“%d”,*(a1+2);10.在基于以下全局对象标识符p 的声明中,不能做p+运算的声明是C。A.int p;B.int a10,*p=a;C.int a2,*p2=a;D.int a22,(*p)2=a;11.以下选项均为 fun 函数的定义,其中有语法错误的是B。A.void fun(int x,int*y)x*=*y;B.void fun(int x,int*y)*x*=*
4、y;C.void fun(int*x,int y)*x+=y;D.int *fun(int*x,int y)return x+=y;12.以下表达式中,不要求操作数a 必须是左值的选项是B。应为:(*(a+1))2);A.a+B.*a C.-a D.a=0;13.已知有声明:int a,*b=&a,(*c)3,*d3;则以下表达式中有语法错误的是C。A、(&a)0=0;B、b0=0;C、c0=0;D、d0=&a 14.以下单目运算符均只需要一个操作数,其中要求操作数的类型只能是指针型的是C。A、&B、+C、*D、!15.若有声明语句:int a43=1,2,3,4,5,6,*p=a1,(*q)
5、3=a;不能够输出的语句是C。A、printf(“%d”,a12);B、printf(“%d”,*(p+2);C、printf(“%d”,*(q+1);D、printf(“%d”,*(*(+q)+2);16.若使以下程序没有语法错误并能输出正确结果,p 应当声明为C。main()p 的声明;p=language;puts(p);A、char p;B、char p10;C、char *p;D、char*p10;17.已知有声明 intjoke=1;则表达式“joke”+joke 值的类型是B。A、char B、char*C、int D、int*18.以下声明中正确的是B。A、int n=10,a
6、n;B、int a 10=0,(*p)10=a;C、int n,*p=n;D、int n=10,a10=n;19.以下函数的功能是B。int fun(char*x)char*y=x;while(*y+);return y-x-1;A、字符串复制 B、计算 x 指向的字符串长度C、比较两个字符串长度 D、将 x 指向的字符串连接到y 指向的字符串之后(*c)3的 访 问 形式 相 当 于cxy,cx只是常量1 2 3 4 5 6 0 0 0 0 0 0 20.若有定义:int a =0,1,2,3,4,5,6,7,8,9 ,*p=a,i=3;则对 a 数组元素的引用不正确的是D。A、apa B、
7、*(&ai)C、pi D、*(*(a+i)21.下列关于指针的叙述错误的是D。A、一个指针只能指向与该指针的基类型有相同类型的变量。B、指向不同类型变量的 指针所占内存的大小相同。C、数组元素的类型可以是指针类型。D、int *p3 和 int(*p)3中的 p 没有区别。22.设有声明:char *a2=“abcd”,“ABCD”;以下说法中正确的是C。A、a 是指针变量,它指向含有两个数组元素的字符型一维数组。B、a 是行指针变量,它指向字符串“abcd”。C、a 是指针数组,它的两个元素中分别存放了字符a和A的地址。D、a 是指针数组,它的两个元素分别存放的是存储4 个字符的一维数组的首
8、地址。23.以下程序中,输出值是B。#define M 3#define N M+1#define NN N*N/2 main()n“,NN);A、5 B、6 C、7 D、8 24.已知定义 long a1010,tmp;则能够正确地将 a55 的值赋给变量 tmp 的语句是D。A、tmp=*(a+5)+5;B、tmp=*(*(a+5)+5;C、&tmp=*(*(a+5)+5);D、*&tmp=*(*(a+5)+5);23.若有以下调用语句,则不正确的 fun 函数的原型是C。void main(),char a50;int n;,fun(n,&a3);,应为5个3+1*3+1/2 A、voi
9、d fun(int m,char a )B、void fun(int s,char n100)C、void fun(int n,char a)D、void fun(int p,char*s)24.执行以下程序段后,result 的值为B。#define P(x,y)x*y+x/y void main()int x=2,y=3;float result;result=P(x,x+y);A、10 B、11 C、10.4 D、5 25若函数定义为 void fun(int x,int y,int*p)*p=xy?x:y;,且 main 函数中有声明“int a=1,b=2,c2=0;”,则以下语句中
10、正确的是B。A.printf(“%d”,fun(a,b,c);B.fun(a,b,c+1);C.fun(a,b,c2);D.fun(1,2);26.若 已 有声 明“int a3=1,2,3,4,5,6,*p1=&a00,(*p2)3=a;”,以下选项中的语句分别被执行后,屏幕输出结果不是4 选项是C。A.printf(%d,a10);B.printf(%d,a03);C.printf(%d,p14);D.p2+;printf(%d,p200);27.已知有声明“int x,*px=&x;”,以下选项中不能将1 赋值给x 的语句是C。A.*px=1;B.px0=1;C.*+px=1;D.*px
11、+=1;28.已知 f 函数定义如下,若main 函数中有声明“int a,b10;”,则以下在main 函数内出现的函数调用语句中正确的是D。A.f(1,1);B.f(b10,1);C.f(a,1);D.f(&a,1);【函数定义】void f(int p10,int n)int j;for(j=0;jn;j+)pj=0;29.已知在main 函数中有声明“int n;char a50;”和语句“n=fun(10,&a3);”,则以下 fun 函数声明中正确的是C .。A.void fun(int a,char b);B.int fun(int a,char a);C.int fun(int
12、 a,char*b);D.int fun(int a,char b);30.以下声明中错误的是B。A.char*p4=yes,no;B.char (*p)4=yes,no;B.char (*p)(char*)=strcpy;D.char *p(char*);31.已 知 某 函 数 中 有 声 明“int x10,*p10,i;”并 已 执 行 过 语 句“for(i=0;i=0;i-)printf(%c,bi);main()int a,b;change(10,2);printf(n);change(10,4);43、以下程序运行时输出b2 的值是6 ,b4的值是15。#include voi
13、d sum(int*pa,int*pb,int n)int i;if(n=1)*pb=*pa;else for(i=0;in;i+)*(pb+n-1)+=*(pa+i);sum(pa,pb,n-1);main()int a5=1,2,3,4,5;int b5=0,i;sum(a,b,5);printf(%d,%d,b2,b4);44、下列程序运行后的输出是。int fun(int first,int second)return first+*second+;main()int p=1,r;r=p+fun(p+,p+);n“,r);45、以下程序运行后输出结果的第一行是2 3 4 1 第二行是0
14、。#include void f(int*a,int n,int times)int i,t=a0;for(i=0;in;i+)ai=ai+1;an-1=t;times+;main()int a5=1,2,3,4,i;f(a,4,a4);for(i=0;i4;i+)printf(%d,ai);printf(n%d,a4);46、以下程序运行后输出结果的第一行是6第二行是15。#include int f()int i,s=0;for(i=1;i=3;i+)static int i=1;s=s+i;i+;return s;main()int i;for(i=0;i2;i+)printf(%dn,
15、f();47、以下程序运行后输出结果的第一行是2第二行是12。#include int f(int n,int x)if(n=1)return x;else return f(n-1,x+2)+x;main()printf(%dn,f(1,2);printf(%d,f(3,2);48、下面程序的输出结果是abcd,bcd efgh,mnpq#include#define T“%s,n”void main()char*x=“abcd”,”efgh”,”mnpq”,”rstu”;char*y;y=x;+y;printf(T,*x,*x+1);printf(T,*y,y1);49、下面程序的输出结果
16、是1#include int f(int x,int y)return(y-x);main()int a=5,b=6,c=2;int(*g)(int,int)=f;c=(*g)(a,b);printf(“%d n”,c);50、下面程序的输出结果是3,4,2,4,#include int a2=1,2,3,4;void main()int(*p)2,i;p=a;printf(“%d,%d,”,p10,(*(p+1)1);for(i=0;i2;i+)printf(“%d,”,*(*(p+i)+1);51、执行以下程序段后,输出的第一行是_ GooD_;#include#include void
17、func(char*a,int n)int i,t;char*p=a;for(i=0;i=a&*p=A&*p=Z)t=(*p-A+3)%26;*p=a+t;p+;void main()char s100=dLLa,iRZh:);func(s0,strlen(s0);puts(s0);func(s1,strlen(s1);puts(s1);52、执行以下程序段后,输出的第一行是_2,1_,输出的第三行是 _3,3 _;#include void main()int a16,i,j,t;for(i=0;i16;i+)*(a+i)=i*10;for(i=0;i4;i+)for(j=0;ji;j+)t
18、=*(a+i*4+j);*(a+i*4+j)=*(a+j*4+i);*(a+j*4+i)=t;for(i=1;i=16;i+)printf(%4d,ai-1);if(i%4=0)printf(n);53.执行以下程序段后,输出的第一行是_12345 _,输出的第二行是 _1817 _#include void func(int m,int n)if(mn)printf(%d,m);else func(m/n,n);printf(%d,m%n);void main()void(*p)(int,int);p=func;(*p)(12345,10);putchar(n);(*p)(377,20);p
19、utchar(n);54、以下程序中函数 float fun(int n)的功能是:根据所给公式计算s 的值并作为函数返回值,n 通过形参传入,n 的值大于等于 0。float fun(int n)float s=0.0,w,f=-1.0 ;int i;for(i=0;i=n;i+)f=-f;w=f/(2*i+1);s+=w;return s;main()int n=5;float s;s=fun(n);printf(%f,s);55、以下程序实现对 main函数内声明的局部数组a中的后 10 个元素做升序排序。#include void sort(int*x,int n);main()int
20、 a12=4,2,8,5,6,7,1,9,10,3,k;sort(&a2,10);for(k=0;k1;k+)printf(%d”,ak);niiis012)1(void sort(int*x,int n)int i,j,t,k;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(xjxk)k=j;if(k!=i)t=xi;xi=xk;56、以下程序中函数 find的功能是:在 a 指向的一维数组中存储的m n 矩阵内查找数值最大的元素,将该元素所在的行、列的值分别保存到 pm 和 pn 指向的变量中。void find(int a,int m,int n,int*pm,int*pn)int i,j,k,s;k=a0;*pm=0;*pn=0;for(i=0;im;i+)for(j=0;jk)k=s;*pm=i;*pn=j;main()int b34=1,2,2,4,55,4,6,9,12,14,11,13,maxr,maxc;find(&b00,3,4,&pm,&pn);printf(“the largest nember is located in b%d%d”,maxr,maxc);