C程序设计试题及题解.doc_第1页
C程序设计试题及题解.doc_第2页
C程序设计试题及题解.doc_第3页
C程序设计试题及题解.doc_第4页
C程序设计试题及题解.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C程序设计试题及题解1 选择题1.1 C语言概述1C程序中main函数的位置(C)A必须在最开始B必须在系统库函数后面C可以在自定义函数后面D必须在最后2下面关于C语言用户标识符的描述,正确的是(D)A不能区分大小写B用户标识符不能描述常量C类型名也是用户标识D用户标识符可以作为变量名3关于C语言的叙述中,不正确的是(D)AC程序可由一个或多个函数组成BC程序必须包含一个main()函数CC程序的基本组成单位是函数D注释说明只能位于一条语句的后面4若有说明语句:char C=95;则变量C包含(D)个字符A1B2C3D语法错误5结构化程序设计不包括(A)A最优化B自顶而下,逐步细化C模拟化设计D结构化编码6结构化程序设计的三种基本语句是(C)A函数结构、分支结构、判断结构B函数结构、嵌套结构、平行结构C顺序结构、分支结构、循环结构D分支结构、循环结构、嵌套结构7关于C语言数据类型的叙述中,正确的是(C)A枚举类型是基本类型B数组不是构造类型C变量必须先定义后使用 D不允许使用空类型8关于C语言的源程序的叙述中,错误的是(C)AC语言的源程序由函数构成Bmain函数可写在自定义函数后C必须包含有输入语句D一行可书写多个语句9下面叙述中,(A)不是结构化程序设计中的三种基本结构之一A数据结构B选择结构C循环结构D顺序结构10char型变量存放的是(A)AASCII码值B字符本身C十进制代码值D十六进制代码值11int a; char c1,c2; scanf(%d,%c,%c, &a, &c1, &c2);若要求a、c1、c2的值分别为10、A和B,正确的数据输入是(B)A10ABB10,A,BC10A BD10 AB12以下叙述不正确的是(D)AC程序的执行总是从main函数开始B一个C源程序必须包含1个main函数CC语言程序的基本组成单位是函数D在编译C程序源程序时,可发现注释中的拼写13int a, b; scanf(%d, %d, &a,&b);若要求a、b的值分别为10和20,正确的数据输入是(B)A10 20B10, 20Ca=10, b=20D10;2014在C语言源程序中,以下叙述正确的是(C)Amain函数必须位于文件的开头B每行只能写一条语句C程序中的每一语句可以写成几行D每个语句的最后必须有点号15对于C语言源程序,以下叙述错误的是(C)A可以有空语句B函数之间是平等的,在一个函数内部不能定义其它函数C程序调试时如果没有提示错误,就能得到正确结果D注释可以出现在在语句的前面16下面叙述中,(A)不是结构化程序设计三种基本结构的共同特点先判断后执行单入口,单出口程序中没有执行不到的语句无死循环17int x=1234, y=123, z=12;则printf(%4d+%3d+%2d, x,y,z);运行后的输出结果为(D)A123412312B12341234123412341231231231212C1234+1234+1234D1234+123 +12 1.2 数据类型、运算符和表达式1int x=2; y=3; float i; 则以下符合C语言语法的表达式是(B)Ax=x*3=2Bx=(y=1)Ci=float(x)Di%(-3)2int a=5, b=2, c=1;则表达式a-bc|b=c的值是(A)A0B1C2D-13float x=3.5; int z=8; 则表达式x+z%3/4的值是(B)A3.75B3.5C3D44int a=1, b=2, c=3;语句+a | +b & +a运行后b的值为(D)A1B0C2D35对于整型变量x,下述语句(B)与x=x%2=0 ? 1 : 0;不等价Aif(x%2!=0)x=0; else x=1;Bif(x%2)x=1; else x=0;Cif(x%2=0)x=1; else x=0;Dif(x%2=1) x=0; else x=1;6下面语句正确的是(B、C)Aint *p; *p=20;Bchar *s=abcdef; puts(s);Cchar str=abcdf; puts(str);Dchar str= a, b, c ; printf(%s, str);7int a=2;则正确的赋值表达式是(A)a-=(a*3)Bdouble(-a)Ca*Da*4=38int m=5, n=3;则表达式(m+1, n+1, (-m)+(n-)的值是(B)A6B7C8D99对于基类型相同的两个指针变量之间,不能进行的运算是(C)Ay&x!=y); x+=y;Cif(x!=y) scanf(%d, &x) else scanf(%d, &y);Dif(xB|C&D+17int a,b; double x;则以下不符合C语言的表达式是(A)Ax%(-3)Ba+=-2Ca=b=2Dx=a+b18int a33;则表达式&a21-a的值为(B)A7B8C6D919以下(D)是正确的变量名Aa.beeB-P11CintDP_1120若有定义int a=1, b=2, c=3, d=4, x=5, y=6;则表达式(x=ab) & (y=cb)的值为(A)A0B1C5D621以下(D)是正确变量名A5fBifCf.5D_f522int x=3, y=4, z=5;则值为0的表达式是(D)Ax & yBx=yCx|y=z & y-zD!(xj|iy&x!=y) x+=y;Cif(x!=y) scanf(%d, &x); else scanf(%d, &y);Dif(xy) x+; y+; 3以下程序运行结果是(D)main() int n=5; if ( n+=6 ) printf(%dn, n); else printf(%dn, +n );A4B5C6D74以下程序段运行后x的值为(B)int a= 1, 2, 3 , b= 4, 2, 5 ; int *p, *q, i, x;p=a; q=b;for(i=0; i3; i+) if(*(p+i)=*(q+i) x=*(p+i)*2;A2B4C6D不确定5int a=1, b=2, c=3;则执行以下程序后a、b、c的值分别为(D)if(ab) c=a, a=b, b=c; Aa=1 b=2 c=3Ba=2 b=3 c=1Ca=2 b=3 c=3Da=1 b=1 c=16以下程序的运行结果是(C)main() int n=e;switch (n-) default: puts(error);case a:case b: puts(good); break;case c: puts(pass);case d: puts(warn);AerrorBgoodCerror goodDwarn1.4 循环控制1对于int x,与while(!x)等价的是(B)Awhile(x!=0)Bwhile(x=0)Cwhile(x!=1)Dwhile(x)2以下程序运行后,循环体运行的次数为(B)int i=10, x;for( ; i10; i+) x=x+i;A10B0C1D无限3int x,下述语句(B)不会出现死循环Afor( ; ; x+=1);Bfor(; (x=getchar( )!= n; );Cwhile(1) x+; Dfor(x=10; ; x-);4while循环和do-while循环的主要区别是(B)Ado-while循环体内可以使用break语句,while循环体内不能用break语句Bdo-while的循环至少无条件执行一次,while的循环体不是Cdo-while循环体内可使用continue语句,while循环体内不能用continue语句Dwhile的循环体至少无条件执行一次,do-while的循环体不是5int x, y; for(x=0, y=0; (y!=123) & (x4); x+) y+;中的y+;被执行(A)次A4B0C123D36以下程序段运行后变量n的值为(D)int i=1, n=1;for( ; i3; i+) continue; n=n+i; A4B3C2D1int a33= 1, 0, 2, 1, 0, 2, 1, 0, 1 , i, j, s=0;for(i=0; i3; i+) for(j=0; ji; j+) s=s+aij;8以下程序运行结果(C)main()int sum=0, item=0;while(item=6) break;printf(%dn, sum);A10B15C6D79下面程序运行结果是(A)int i=0, a = 1, 2, 3, 4, 5 ;do ai+=10; while(a+i2);for(i=0; i5; i+) printf(%d , ai);A11 2 3 4 5B1 2 3 4 5C11 12 13 14 15D11 12 3 4 510若int i=0, x=0; int a33= 1, 2, 3, 4, 5, 6, 7, 8, 9 ;则以下程序运行后x的值为(C) for( ; i3; i+) x+=ai2-i;A0B12C15D1811以下程序的运行结果是(B)main() int sum=0, item=0;while (item5)item+; sum+=item;if(sum=5) break;printf(%dn, sum);A10B15C5D612下面程序段的运行结果是(D)int i=0, a= 3, 4, 5, 4, 3 ;do ai+; while(a+i5);for(i=0; i5);for(i=0; i0Cstr1=str2;D表达式strlen(str1)的值为65以下能对一维数组a进行正确初始化的语句是(D)Aint a5=( 0, 0, 0, 0, 0 );Bint a5=0;Cint a5= 1, 2, 3, 4, 5, 6, 7 ;Dint a= 0 ;6以下(A)是错误的字符串常量AabcB1212COD 7char str8= Fujian ;则分配给数组str的存储空间是(C)字节A6B7C8D98下列数组定义中,正确的是(A)Aint a10;Bint n=10, an;Cint N=10; int aN;Dint n; scanf(%d, &n); int an;9int a23;则对数组元素的非法引用是(D)Aa01/2Ba11Ca4-40Da0310int a=2;则a=strcmp(miss, miss)运行后a的值为(B)A1B0C-1D211以下程序结束后屏幕输出(B)char str=abcd; printf(%d, strlen(str);A4B5C6D712int a10;则对a数组元素引用不正确的是(A)Aa10Ba3+5Ca10-10Da513设有以下变量定义:char str1=string, str28, *str3, *str4=string;则(A)是正确的Astrcpy(str1, china);Bstr2=china;Cstrcpy(*str3, china”);Dstrcpy(str40, china);14以下能对一维数组a进行正确初始化的语句是(D)Aint a5=( 0, 0, 0, 0, 0 );Bint as=0;Cint a5= 1, 2, 3, 4, 5, 6, 7 ;Dint a =0;15int a 3= 1, 2, 3, 4, 5, 6, 7, 8, 9 ;则表达式sizeof(a)/sizeof(a0)的值为(A)A3B4C5D916下列数组定义中,正确的是(A)Aint a5=0;Bint a =0 1 2;Cint a5=0;Dint a ;18int a34= 1,2, 0, 1,2,3 ;则a11的值为(A)A0B1,2C1D319int a3= 0, 1, 2 ;则a1的值为(B)A0B1C2D320int a5= 1, 2, 3, 4, 5 ;则语句a1=a3+a2+2-a3-1;运行后a1的值为(A)A6B5C1D221char str6= a, b, 0, d, e, f ;则语句puts(str);的输出结果是(D)AabBabdefCab0Dab22char a=abcdef, b=xyz;以下程序运行后输出(B)strcpy(a, b); printf(%c, a2);AcBzC0Dd23以下程序段运行后屏幕输出为(A)char str80; strcpy(str, hello); printf(%d, strlen(str);A5B6C7D8024以下程序段运行后屏幕输出为(C)char a=abc0mis; printf(%d, strlen(a);A5B8C3D41.6 函数1C语言函数的描述中,正确的是(B)A函数的定义可以嵌套,但函数的调用不可以嵌套B函数的定义不可以嵌套,但函数的调用可以嵌套C函数的定义和函数的调用都可以嵌套D函数的定义和函数的调用都不可以嵌套2用scanf()函数输入一个字符给char a,不正确的函数调用是(B)Ascanf(%d, &a);Ascanf(%lf, &a);Cscanf(%c, &a);Dscanf(%u, &a);3putchar()函数的功能是向终端输出(B)A多个字符B一个字符C一个实型变量值D一个整型变量表达式4用scanf()函数输入一个整数给int a,正确的函数调用是(B)Ascanf(%d, a);Bscanf(%d, &a);Cscanf(A, &a );Dscanf(%df, &a );5C语言的函数体由(B)括起来A( )B C D/* */6如下fun函数的类型是( C )fun(float x) double y; y=x*x; return (int)y; AvoidBdoubleCintDfloat7int fun(char *str) char *p=str;if(p!= 0) p+;return (p-str);则以下语句执行后的输出结果是(A)printf(%dn, fun(student);A7B8C9D108以下程序的屏幕输出为(B)#include void f(int i) int a=2; a=i+; printf(%d ,a); main() int a=1, c=3; f(c); a=c+; printf(%d ,a); A4 3B3 3C4 5D3 59int fun () static int k=0; return +k; 以下程序段运行后屏幕输出为(D)int i;for (i=1;i=5; i+) fun();printf(%dn, fun();A0B1C5D610以下程序运行的结果是()int fun (int array44) int j;for(j=0; j4; j+) printf(%2d, array2j);main( ) int a44= 0,1,2,0, 1,0,0,4, 2,0,0,5, 0,4,5,0 ; fun(a); A 2 0 0 5B 1 0 0 4C 0 1 2 0D 0 4 5 011以下程序运行后屏幕输出为(D)#include int a=2, b=3;int max(int a, int b) return ab?a:b; main() int a=4; printf(%d , max(a, b); A2 3B2C3D412以下程序运行后屏幕输出为(B)#include int f(int x, int y) return(x+y); main() int a=2, b=3; printf(%d+%d=%dn, a,b, f(a, b); A0B2+3=5C2+3=0D3+2=513下面程序的输出结果是(D)#include int global=100;fun( ) int global=5; return +global; void main( ) printf( %dn, fun( ) ); A100B101C5D61.7 预处理命令1若有定义:#define PI 3,则表达式PI*2*2的值为(A)A12B4C3D不确定2设有如下定义typedef int *INTEGER; INTEGER p, *q;则正确的表述是(C)Ap是int型变量Bq是基类型为int的指针变量Cp是基类型为int的指针变量D程序中可用INTEGER代替int类型名。3以下叙述中,正确的是(A)A宏展开不占用运行时间,只占用编译时间B预编译处理命令行必须以分号结束C一个源程序只能有一个预编译处理命令行D使用带参数的宏定义时,应该说明每个参数的数据类型4以下叙述中,不正确的是(C)A宏展开不占用运行时间,只占用编译时间B宏名无类型C宏名必须用大写字母表示D预处理命令行都必须以#号开始5以下叙述中,正确的是(B)A#define PRICE=30定义了30等价的符号常量PRICEB预编译处理命令行都必须以#开头C宏名只能是含大写字母和数字字符D在程序的一行上可以书写几个有效的宏定义6下面程序的输出结果是(C)#include #define ONE 1#define TWO ONE+1#define THREE TWO+1void main () printf(%dn, THREE-ONE); A产生错误B1C2D37以下程序执行时,输入1 2 3 4 5输出为(A)#include #define N 5void main() int aN; int *p=a; while(pa) printf(%d , *(-p);A5 4 3 2 1B1 2 3 4 5C2 3 4 5 1D4 3 2 1 58#define MOD(x, y) x%y则执行以下程序段后,z的值是(D)int z, a=15, b=100; z=MOD(b, a);A100B15C11D109下面程序的输出结果是(A)#include #define SQR(x) (x*x)void main() int a, b=3; a=SQR(b+2); printf(n%d, a); A11B25C值不定D产生错误1.8 指针1若函数fun的函数头为int fun(int i, int j)且函数指针变量p定义如下:int (*p)(int i, int j);则要使指针p指向函数fun的赋值语句是(B)Ap=*funBp=fun;Cp=fun(i, j)Dp=&fun2设有以下语句,则(D)是对a数组元素的不正确引用,其中0i10。int a10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 , *p=a;Aap-aB*(&ai)CpiD*(*(a+i)3在16位编译系统上,若有定义int a = 10, 20, 30 , *p=&a;当执行p+;后下列叙述错误的是(A)Ap向高地址移了一个字节Bp与a+1等价C语句printf(%d, p);输出20Dp指向数组元素a14以下程序段运行后*(+p)的值为(C) char a6= work; char *p; p=a;AwB存放w的地址CoD存放的o地址5以下程序运行后*(p+3)的值为(A)char a=good; char *p; p=a;AdB0C存放d的地址D06以下程序运行后x的值为(D)int a9= 1, 2, 3, 4, 5, 6, 7, 8, 9 ;int *p, *q, i,x;p=&a0; q=&a8;for (i=0; i3; i+)if(*(p+i)=*(q-i) x=*(p+i)*2;A2B4C6D不确定7以下程序运行段运行后x的值为(D)int a= 1,2,3,4,5,6,7,8 , i, x=1, *p=&a2;for(i=0; i3; i+) x*=(p+i);A不确定B24C120D608下面程序的输出结果是(A)#include void main ( ) int i; char *s=abc;for (i=0 ; i0) j+; /*语句3*/A语句2错误,其它正确B语句1正确,其它错误C语句3正确,其它错误D语句都错误5以下C语言共用体类型数据的描述中,不正确的是(D)A共用体变量占的内存大小等于所需内存最大的成员所占的内存B共用体类型可以出现在结构体类型定义中C在定义共用体变量的同时允许对另一个成员的值进行初始化D同一共用体中各成员的首地址不相同6若有以下类型说明,叙述正确的是(A)typedef sturct int num; char *name; int score; STU, *PSTU;ASTU是变量名BPSTU是变量名CPSTU是指向结构体类型STU的指针类型名D类型说明语句有错误7union u_type int i; double x; float f; ;struct str_type char str100; union u_type u2; ;则语句printf(%d, sizeof(struct str_type) );的输出结果是(B)A100B116C120D2008下列对结构体类型变量定义不正确的是(C)Astruct teacher int num; int age; teacher1;Bstruct int num; int age; teacher1, teacher2;Cstruct int num; int age; teacher,Dstruct teacher int num; int age; ;9struct node int date; struct node *next; void fun(struct node *head) struct node *p=head; while(p) struct node *q=p-next; free(p); p=q; 则该函数的功能是(A)A删除整个单向链表B删除单向链表中的一个结点C显示单向链表中的所有数据D创建单向链表10对枚举类型进行定义,不正确的是(A)Aenum b 1, 2, 3 ;Benum a A, B, C ;Cenum c A=3, E, F ;Denum d x=0, y=5, z=9 ;11下面程序的输出结果为(B)#include void main() enum Weekday sum=7, mon=1, tue, thu, fri, sat day=sat; printf(%dn, day); A7B6C5D412以下程序的运行结果(D)#include union utype int i; float f U2;void main() printf(sizeof(u):%dn, sizeof(u) ; A2B4C6D813struct link int data; struct link *next; *head, *p;并已建立如下图示所示的链表结构:datanextdatanextdatanullhead则能保留链表其它结点,而删除p所指向结点的程序段是(A)Ahead-next=p-next; free(p);Bhead-next=p; p-next=head-next; free(p);Cfree(p); head-next=p; p-next=head-next;Dfree(p); head-next=p-next;14struct node int data; struct node *next; ;void fun(struct node *head)struct node *p=head;while(p) printf(%d, p-data); p=p-next; break; 则函数fun( )的功能是(C)A删除单向链表B显示单向链表中的所有数据C显示单向链表中的第一个数据D创建单向链表15函数fun的功能是(B),其中head指向链表着结点整个链表结构如下图: datanextdatanextdatanullheadstruct node int data; struct node *next; ;int fun(struct node *head) int n=0; struct node *t=head; while(t!=NULL) n+; t=t-next; return n;A删除链表head中的所有结点B计算链表head中的结点个数C插入一个元素到链表head中D创建一个链表head16struct link int date; struct link *next; *head, *p;并已建立如下图所示的链表结构:datanextdatanextdatanullhead指针p指向如下结点:data | next则能够把p所指结点插入到链表中成为链表第2个结点的程序段是(C)Ap-next=head-next; head-next=p;Bhead-next=p; p-next=head-next;Cp.next=head.next; head.next=p;D(*head).next = p; (*p).next = (*head).next;1.10 位运算1在对于无符号数的位运算中,操作数右移一位相当于(A)A操作数除于2B操作数乘以2C操作数除于4D操作数乘以42int a=20, b=28, C;则执行语句C=(a&b)2;后C的值为(A)A5B7C80D1123int x=3, y=4; 则表达式!x|y的值为(A)A1B0C3D41.11 文件1以下叙述正确的是(D)AC语言中的文件是流式文件,因此只能顺序存取数据B打开一个已存在的文件进行写操作后,该文件中的全部数据必定被覆盖C对文件进行写操作后,须先关闭该文件后再打开,才能读到第1个数据D对文件写操作后,须将它关闭,否则可能丢失数据2标准函数fgets(s, n, f)的功能是(D)A从f指向的文件中读取长度为n的字符串存入指针s所指的内存B从f指向的文件中读取长度不超过n-1的字符串存入指针s所指的内存C从f指向的文件中读取几个字符存入指针s所指的内在D从f指向的文件中读取长度为n-1的字符串存入指针s所指的内存3以下程序运行后,屏幕显示write ok!下列说法正确的是(D)#include main() FILE *fp=fopen(data.txt, wt); if(fp!=NULL) fprintf(fp, %sn, File write successed!n); fclose(fp); puts(write ok!); A当前工作目录下存在data.txt文件,其中内容是write ok!Bfclose(fp);语句的功能是打开文件C当前工作目录下一定不存在data.txt文件D当前工作目录下一定存在data.txt文件4以下程序的功能是(B)#include main() FILE *fp; long int n; fp=fopen(wj.txt, rb); fseek(fp, 0, SEEK_EN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论