C语言课程习题

更新时间:2024-04-08 10:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言综合练习题(一)

一 选择题(7分,每小题0.5分)

1.设a为整型变量,初值为12,执行完语句 a+=a-=a*a后,a的值是( )。 A 552 B 144 C 264 D -264

2.下列标识符中,不能作为合法的C用户定义标识符的是( )。 A a3_b3 B void C _123 D IF

3.下列整数值中,不正确的八进制或十六进制数值常量是( )。 A 0xcd B -017 C -ox123 D 0xfdc

4.若给定条件表达式(M)?(a++):(a--),则其中表达式M和( )等价。 A M==0 B M=1 C M!=1 D M!=0

5.在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式为( )。 A 只能是逻辑表达式 B只能是关系表达式 C 只能是逻辑表达式或关系表达式 D可以是任意表达式 6.以下程序的输出结果为( )。 main( ) { char c; int i;

for(i=65;i<68;i++) { c=i+32; switch(c)

{ case ‘a’:printf(\ case ‘b’:case ‘e’:printf(\default: printf(\} } }

A a,ok,end B a,ok,endend C a,ok,end,end D a,ok,ok 7.数组名作为实参数传递给函数时,数组名被处理为( )。 A 该数组的长度 B 该数组的元素个数 C 该数组的首地址 D 该数组中各元素的值 8.关于return语句,下列正确的说法是( )。

A 可以在同一函数中出现多次 B 在主函数中不能出现

C 必须在每个函数中出现 D 只能在除主函数之外的函数中出现一次 9.以下程序的输出结果为( )。 #define A 3

#define B(a) (A+1)*a main() { int x;

x=3*A+B(7);

printf(\}

A x=93 B x=37 C x=60 D x=90

10.设有以下定义,则以下对变量w的赋值( )是错误的。 enum week{sun,mon=4,tue,wed,thu,fri,sat}w;

A w=sun; B w=(enum week)4; C w=san; D w=(enum week)9; 11.以下定义结构体类型st1,其中正确的是( )。 A typedef struct student { int num; int age; }STD; STD st1;

B struct st1{int num,age;}s;

C struct { int num; float age;}st1; D struct st1 {int num; int age; }

12.若有下面的变量定义,以下语句中合法的是( )。 int i,a[10],*p;

A p=a+2; B p=a[5]; C p=a[2]+2; D p=&(i+2); 13.设有说明 int *ptr[3];,其中标识符ptr是( )。

A 是一个指向整形变量的指针

B 是一个指针,它指向一个具有三个整形元素的一维数组 C 是一个指针数组名,每个元素是一个指向整形变量的指针 D 定义不合法

14.要打开一个已存在的非空文件“file”用于修改,选择正确的语句( )。

A fp=fopen(\C fp=fopen(\二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分) 1.在Turbo C中,实型数据在内存中占4个字节。( ) 2.若有形参定义:int a[10];则a++是合法的表达式。( )

3.若有宏定义:#define PI 3.14i5926,则系统预编译时会报错。( ) 4.函数的递归调用不过是一个函数直接地调用它自身。( ) 5.定义在main函数后的任何函数都需在main中进行函数声明。( ) 6.若有定义:int a;则scanf(“%d\可以给变量a赋值。( ) 7.任何数组在使用前必须先定义。( )

8.在int *p;和语句printf(“%d”, *p);中的*p含义相同。( ) 9.共用体变量的各个成员所占内存单元的地址相同。( )

10.在使用缓冲文件系统时,与文件输入和输出相关的数据都先送到缓冲区中。(三 写出下列程序的运行结果(10分,每小题2分) 1.main( )

{ char c1=‘A’,c2=‘\\144’,c3=‘\\x44’,c=0xf5,x=13,a; int i=0122,j=0xa4;

printf(“c1=%c,c4=%c\\tc5=%c\\n”,c1,c2,c3); printf(“%d,%d\\n”,i,j); i=-34; j=20;

printf(“%d,%d,%d\\n”,i%j,i&j<<2,sizeof(j)); printf(“c=%d\\n”,c|x); a=c^x<<2;

printf(“a=%d\\n”,a); }

2.main() {

int x,y=1,z=10; if(y!=0) x=5;

printf(“x=%d\\t”,x); x=1; if(z<0)

if(y>0) x=3; else x=5;

printf(“x=%d\\n”,x); if(z=y<0) x=3; else if(y==0) x=5; else x=7;

printf(“x=%d\\t”,x); printf(“z=%d\\n”,z); }

3.main( )

{ char s[20]=“I like it.”,t[20]=“Are you?”,c[20]; int i=0;

while(s[++i]!=‘\\0’) t[i]=s[i]; t[i]=0;

printf(“string s:%s\\n”,s); 2

) printf(“string t:%s\\n”,t); }

4.int i=5; main( ) { int i=3; { int i=10; i++;

printf(“%d\\n”,i); }

f1( ); i+=1;

printf(“%d\\n”,i); }

int f1( ) { i=i+1; return(i); }

5.main()

{ int i=10,a[]={10,20,30,15},*p1; char *b=”Learning”,**p2=&b; p1=&i;

printf(“M”,*p1+20); for(p1=a;p1

printf(“\\n%c\\t%s\\n”,*(b+4),*p2); }

四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分)1.用冒泡法对任意10个整数排序。 main()

{ int a[11],i,j,t; for(i=1;i<11;i++)

scanf(\

printf(\

for(i=1; (1) ;i++) for(j=1; (2) ;j++) if(a[j+1]>a[j])

{ t=a[j]; (3) ; (4) ;} printf(\ for(i=1;i<11;i++)

printf(\ printf(“\\n”); }

2.求100~200间的素数。 (5) main()

{ int m,flag;

for(m=101;m<=200;m+=2) { flag=prime(m); if( (6) )

printf(“M”,m); } }

prime( (7) ) { 3

int i,k,flag; k=sqrt(a); for(i=2;i<=k;i++) if(a%i==0)

(8) ; if(i==k+1) flag=1; else flag=0; }

C语言综合练习题(二)

一 选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是( )。

A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是( )。

main( )

{ int a=7,b=5;

printf(\}

A 5 B 1 C 0 D不确定值

3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。 A 7 B 8 C 9 D 2

4.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。

a=125.534; a=(int)125.521%4; a=5<<2;

A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是 ( )。

int k=10; while(k=0) k=k-1;

A 循环执行一次 B循环是无限循环 C循环体语句一次也不执行 D循环体语句执行一次 6.以下程序的输出结果为( )。 int i;

void prt( )

{ for(i=5;i<8;i++) printf(\ printf(\}

main( )

{ for(i=5;i<=8;i++) prt( ); }

A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是( )。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有( )个实参。

func((e1,e2),(e3,e4,e5));

A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为( )。

#define ADD(x) x*x main( )

{ int a=4,b=6,c=7,d=ADD(a+b)*c;

printf(\}

A d=70 B d=80 C d=140 D d=700

10.已知职工记录描述如下,在Turbo C中,系统为变量w分配( )字节的空间。

struct worker { int no; 4

char name[20]; char sex; union

{ int day; int month; int year;}birth; } w;

A 29 B 20 C 25 D 6

11.设有以下定义,值为5的枚举常量是( )。

enum week{sun,mon=4,tue,wed,thu,fri,sat} w; A tue B sat C fri D thu

12.下面选项中正确的赋值语句是(设 char a[5],*p=a;)( )。 A p=\13.设有以下程序段,则值为6的表达式是( )。

struct st { int n; struct st *next;};

static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p; p=&a[0];

A p++->n B ++p->n C p->n++ D (*p).n++ 14.C语言中的文件类型只有( )。

A 索引文件和文本文件两种 B 文本文件一种

C 二进制文件一种 D ASCII码文件和二进制文件两种 二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分) 1.在Turbo C中,整型数据在内存中占2个字节。( )

2.int i=20;switch(i/10){case 2:printf(\的输出结果为A。( )

3.break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。(4.函数的递归调用不过是一个函数直接或间接地调用它自身。( ) 5.函数strlen(\的值是7。( )

6.通过return语句,函数可以带回一个或一个以上的返回值。( ) 7.结构体类型只有一种。 ( )

8.char *p=\;的含义是定义字符型指针变量p,p的值是字符串\。( ) 9.若有定义:char *p(char a[10]);则p是函数名。( )

10.用fopen(\打开的文件\可以进行修改。 ( ) 三 写出下列程序的运行结果(10分,每小题2分) 1.float average (float array[10]) sum=sum+array[i];

main( )

={89,67.5,78,91,56,82.5,65,70,79,88},aver; “average score is %5.2f\\n”,aver); 2.main( )

{ char a[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a,**pa; for(p=0;p

printf(“,”,*p);

printf(“\\n”);

printf(“,\\n”,**(pa=&p)); }

3.main( )

{ int a,b,s=0;

5

) { int i;

float aver,sum=array[0]; for (i=1;i<10;i++)

aver=sum/10; return(aver); }

{ float score[10] int i;

aver=average (score);

printf ( }

for(a=1,b=1;a<=100;a++)

{ if(b>=20) break; if(b%3==1)

{ b+=3; continue; }

b-=5; }

printf(“a=%d\\tb=%d\\n”,a,b); } 4.main()

{ printf(“main( ) :%d\\n”,fact(5)); fact(-5); }

fact(int value) { int f;

if(value<0)

{ printf(“Arg error\\n\ return(-1); }

else if(value==1||value==0) f=1; else f=value*fact(value-1)+1;

printf(“This called value=%d\\n”,f); return f; }

5.main( )

{ int a=012,b=0x12,k=12; char c=‘\\102’,d=‘\\r’;

printf(“a=%d\\tb=%d\\tk=%d\\n”,a,b,k); printf(“c=%c,d=%c%o\\n”,c,d,a); a=‘A’; c=49;

printf(“a=%d\\tc=%c\\n”,a,c); }

四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分) 1.有一个3*4矩阵,求其中的最大元素。 max_value( (1) )

{ int i,j,max;

max=array[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++)

if(array[i][j]>max) max=array[i][j]; (2) ; }

main( )

{ int a[3][4], i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) (3) ;

printf(“max value is %d\\n”,max_value(a)); }

2.输入x、y两个整数,按先大后小的顺序输出x、y。 #include “stdio.h” main( )

{ int x,y, *px,*py, (4) ; scanf(“%d%d”,&x,&y); 6

(5) ; (6) ; if(x

{ p=px; px=py; py=p; } printf(“x=%d,y=%d\\n”,x,y);

printf(“MAX=%d,MIN=%d\\n”,*px,*py);

}

3.用选择排序法对任意10个整数按照由小到大排序。 main()

{ int a[11],i,j,k,t;

printf(\ for(i=1;i<11;i++) scanf(\ printf(\ for(i=1;i<=9;i++) { (7) ;

for(j=i+1; (8) ;j++)

if(a[j]>a[k]) k=j;

if(k!=i)

{ t=a[k]; a[k]=a[i]; a[i]=t;} }

printf(\

for(i=1;i<11;i++) printf(\ }

C语言综合练习题(三)

一 选择题(24分,每小题2分)

1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是( )。A 存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针 C 一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数 2.以下程序的输出结果为( )。 main( )

{ int i=010,j=10;

printf(\ }

A 11,9 B 9,10 C 8,10 D 9,9

3.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。

a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2;

A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20 4.设i和k都是int类型,则for循环语句( )。 for(i=0,k=-1;k=1;i++,k++) printf(\

A 循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 D 是无限循环 5.以下程序的输出结果为( )。 main( ) { char c;

int i;

for(i=65;i<68;i++)

{ c=i+32; switch(c)

{ case 'a':case 'b':case 'c':printf(\} }

A a,b,c,end B a,a,a,end C a,a,a, D a,b,c, 6.函数调用语句:fseek(fp,-10L,2);的含义是( )。 A 将文件位置指针从文件末尾处向文件头的方向移动10个字节 B 将文件位置指针从当前位置向文件头的方向移动10个字节 C 将文件位置指针从当前位置向文件末尾方向移动10个字节

7

D 将文件位置指针移到距离文件头10个字节处 7.以下程序的输出结果为( )。 main( )

{ char s1[40]=\int i=0,j=0;

while(s1[i]!='\\0') i++;

while(s2[j]!='\\0') s1[i++]=s2[j++]; s1[i]=0;

printf(\}

A side B country C sidetry D countryside 8.下列说法不正确的是( )。

A 主函数main中定义的变量在整个文件或程序中有效 B 不同函数中,可以使用相同名字的变量 C 形式参数是局部变量

D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效 9.在下列程序段中,枚举变量 c1的值是( )。

enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white; A 1 B 3 C 5 D 6

10.设有说明 int (*ptr)();其中标识符ptr是( )。

A 是一个指向整形变量的指针 B 是一个指针,它指向一个函数值是int的函数 C 是一个函数名 D定义不合法

11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为( )。 A int p; B int (*p)[n]; C int *p[n]; D int (*p)( ); 12.具有相同类型的指针类型变量p与数组a,不能进行的操作是( )。 A p=a; B *p=a[0]; C p=&a[0]; D p=&a;

二 判断对错,对的划“√”,错的划“×”(20分,每小题2分) 1.参加位运算的数据可以是任何类型的数据。( )

2.若有定义和语句:int a;char c;float f;scanf(\若通过键盘输入:10,A,12.5,则a=10,c=‘A’,f=12.5。( )

3.C语言把文件看作是一个字符(字节)的序列。( )

4.若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。( ) 5.在Turbo C中,下面的定义和语句是合法的:file *fp;fp=fopen(\6.若有定义:char s[ ]=\;则Turbo C系统为数组s开辟6个字节的内存单元。( )

7.若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21。( )

8.若有定义和语句:struct student { int num; char name[10]; float score;} s[5]={{1,\输出结果是1。( )

9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。( ) 10.在Turbo C中,此定义和语句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( ) 三 写出下列程序的运行结果(36分,每小题6分) 1.main( )

{ int i=29,j=6,k=2,s; s=i+i/j%k-9;

printf(“s=%d\\n”,s); }

2.main( )

{ int x=31,y=2,s=0; do

{ s-=x*y;

x+=2;

y-=3;} while( x%3==0);

printf(“x=%d\\ty=%d\\ts=%d\\n”,x,y,s); } 8

3.main( )

{ int a[6]={10,20,30,40,50,60},i; invert(a,0,5);

for(i=0;i<6;i++) printf(“%d,”,a[i]); printf(“\\n”); }

invert(int s[ ],int i,int j) { int t; if(i

{ invert(s,i+1j-1);

t=s[i];s[i]=s[j];s[j]=t; } }

4.#include main()

{ char str[ ]=“The C program”,c; int i;

for(i=2;(c=str[i])!=‘\\0’;i++) { switch(c)

{ case ‘g’: ++i; break; case ‘o’: continue;

default: printf(“%c”,c); continue; }

printf(“*”); }

printf(“\\n”); }

5.struct w

{ char low; char high; }; union u

{ struct w byte; short word; }uw; main( )

{ int result; uw.word=0x1234;

printf(“word value:x\\n”,uw.word);

printf(“high byte:x\\n”,uw.byte.high); printf(“low byte:x\\n”,uw.byte.low); uw.byte.low=0x74;

printf(“word value:x\\n”,uw.word); result=uw.word+0x2a34;

printf(“the result:x\\n”,result); }

6.main()

{ char *s2=“I love China!”,**s1=&s2; char *s3,c,*s4=“w”; s3=&c;

*s3=‘H’; s2=s2+2;

printf(“%s\\t%c\\t%s\\t%c\\n”,s2,*s3,s4,**s1); } 9

四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)

1. 百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹?

main( )

{ int hb,hm,hl,n=0;

for(hb=0;hb<=100;hb+= (1) ) for(hm=0;hm<=100-hb;hm+= (2) ) { hl=100-hb- (3) ;

if(hb/3+hm/2+2* (3) ==100) { n++;

printf(\ } }

printf(\ }

2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。 #define N 10 char str[N]; main()

{ int i,flag;

for(flag=1;flag==1;) { scanf(\ flag=0;

printf(\ }

sort(___(4)___); for(i=0;i

printf(\ printf(\ }

sort(char str[N]) { int i,j; char t;

for(j=1;j

for(i=0;(istr[i+1]) { t=str[i]; ____(5)____; ____(6)____; } }

3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)

例如,矩阵为: 3 0 0 3 2 5 7 3 1 0 4 2

则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。 add(int m,int n,int arr[]) { int i,j,sum=0;

for(i=0;i

sum=sum+ (7) ; for(j=0;j

for(i=1; (8) ;i++) sum=sum+arr[i*n+j]; return(sum); }

4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。 #define N 10 main()

{ void maxmin(int arr[],int *pt1,int *pt2,int n);

int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; p1=&a; p2=&b;

maxmin(array,p1,p2,N);

printf(\ }

void maxmin(int arr[],int *pt1,int *pt2,int n) { int i;

*pt1=*pt2=arr[0]; for(i=1;i

{ if(arr[i]>*pt1) (9) ; if(arr[i]<*pt2) (10) ; } }

C语言综合练习题(四)

一.选择题(每小题1分,共40分)

1.在C语言中,下列类型属于构造数据类型的是( )。

A.整型 B.字符型 C.实型 D.数组类型 2.以下对c语言函数的描述中,正确的是( )。

A. c程序必须由一个或一个以上的函数组成。 B. c函数既可以嵌套定义又可以递归调用。 C. 函数必须有返回值,否则不能使用函数。

D. c 程序中有调用关系的所有函数必须放在同一个程序文件中。 3.下列字符串是合法标识符的是( ) 。

A. 3sum B. _score C. -day_night D. M.D.JOHN 4. 在C语言中,退格符是( )。

A. '\\n’ B. '\\t’ C. '\\r’ D. '\\b’ 5.下面有关结构体变量的定义,不正确的是( )

A.struct B.struct abc

{int x;char y;} {int x;char y;}s1,s2; struct s1,s2;

C.struct abc D. struct

{int x;char y;}; {int x;char y;}s1,s2; struct abc x,y;

6.若有说明语句:char ch='\\72';则变量ch( )

A.包含1个字符 B.包含2个字符

C.包含3个字符 D.说明不合法,c的值不确定 7.下列运算符优先级最高的是( )。

A.>= B.&& C.^ D. ++

8.设a,b为整型变量,执行scanf(“a=%d,b=%d”,&a,&b);后要使a值为10,

b值为20,则从键盘的正确输入是( )。

A.10 20 B. 10,20 C. a=10,b=20 D. A=10,B=20 9.当c值为0时,下列选项能正确将c值赋给变量a,b的是( )。 A.c=b=a; B.(a=c)||(b=c); C.(a=c)&&(b=c); D.a=c=b;

10.若已定义x和y为int类型,则逗号表达式:(x=1.5,y=x+(int)(3.0/2.0))的值是( A.1 B.2 C.2.500000 D.2.000000

。11

) 11.若有以下定义和语句:

int u=012,v=0x11,w=10;

printf(“%d,%d,%d\\n”,u,v,w); 则输出结果是( )。

A.12,11,10 B.8,16,10 C.10,17,10 D.8,11,10 12.设有如下定义: int x=6,y=4,z=2;

则语句printf(“%d”,z+=x/y)); 的输出结果是( )。

A.3 B.2 C.5 D.4 13.以下程序的输出结果是( )。

main( )

{char c1=‘a’,c2=‘B’;

printf(“%c,%c,%d \\n”,c1,c2,c1-c2);}

A.因输出格式不合法,输出出错信息 B.a,B,33 C.a,B,31 D.a,b,-32

14.定义char str[20];语句,用键盘把“how are you?”字符串赋给str字符数组,下列哪项能够实现( )。 A.scanf (“%s”,str); B.gets(str);

C.str[ ]=getch( ); D.scanf ( “%c”,&str[0]); 15.假定所有变量均已正确说明,下列程序段运行后x的值是( )。 a=b=c=1;x=30; if(!a) x--;

else if (!c) x=3; else x=4;

A.4 B.29 C.30 D.3 16.以下不是无限循环的是( )。

A.for(y=6,x=1;x

C.while(-5) x++; D.for(i=20; ; i--) sum+=i; 17.有如下程序段:

int number=0;

while(number++<=3) printf(“%d\\n”,number++); 则正确的执行结果是( )。

A.2 B.0 C.1 D. 2

3 1 3 4 4 2

18.程序段如下:

int m=1,n=0,sum;

while(n=m) {sum=m+n;m--;n++;} 则以下说法正确的是( )。

A. while循环执行10次 B. 循环是无限循环

C. 循环体语句一次也不执行 D. 循环体语句执行一次

19.以下可以作为文件打开函数fopen中的第一个参数的正确格式是( )。

A.“file1.txt” B.file1.txt

C. file1.txt,w D.“file1.txt,w” 20.下列数组的定义中,正确的是( )。

A. int x[]; B. int a[5],b[2,3];

C. char a[m]; D.int x[5]={1,2,3};

21.若有以下定义:char s[20]= “C programming”,*p=s;则不能正确表示s[3]元素的表达式是( )。 A.p+3 B.*(s+3) C.p[3] D.p+=3,*p

22.若有以下定义:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则能正确表示a数组元素的表达式是( )。 A.p+2 B.a[10] C. a[p+a] D. *a 23.若有以下定义和语句:

int w[3][4],(*p)[4];p=w;则对w数组元素非法引用是( )。

A.*(w[0]+3) B.*p[4] C.p[2][3] D.*(p[2]+2) 12

24.下面程序的执行结果是( )。 main( )

{ int i=1,j=0, *pointer1, *pointer2;

pointer1=&i;pointer2=&j; *pointer2=*pointer1;

printf(“i=%d,j=%d”,i,j); }

A.i=1,j=0 B.i=1,j=1 C.i=0,j=0 D.i=0,j=1 25.以下程序段的输出结果是( )。

char str[ ]=“china”, *p=str; printf(“%d\\n”, *(p+5 ));

A. 97 B. 0

C. 104 D. 不确定的值 26.数组定义为int a[4][5];, 引用*(*(a+1)+2)表示( )。

A.a[1][0]+2 B. a数组第1行第2列元素的地址 C.a[0][1]+2 D. a数组第1行第2列元素的值

27.设有int a[ ]={1,2,3},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是 ( A.1,2,3 B.3,2,3 C.1,3,3 D.1,2,4 28.若有以下定义和语句:

char *s1=“abcde”,*s2=“efg”;

printf(“%d\\n”,strlen(strcpy(s1,s2))); 则输出结果是( )。

A.5 B.3 C.8 D.9 29.C语言中的文件类型只有( )。

A.文本文件一种 B.ASCII文件和二进制文件两种 C.索引文件和文本文件两种 D.二进制文件一种

30.在c 语言中,if语句后的一对圆括号中,用以决定分支流程的表达式( )。

A.只能用逻辑表达式 B.只能用关系表达 C. 只能用逻辑表达式或关系表达 D.可用任意表达式 31.下列函数调用中不正确的是( )。

A.max(a,b); B.max(3,5); C.max(3,a+b); D.int max(a,b); 32.下列程序运行结果是( )。

#define P 3

#define S(a) P*a*a main( ) { int r; r=S(3+5);

printf(“%d”,r); }

A.192 B.29 C.27 D.25

33.已知职工记录描述为:

struct worker {int no;

char name[20]; char sex; struct

{int day;int month;int year;}birth; }w;

设变量w中的生日是1976年10月25日,下列对生日的正确赋值是( )。 A. day=25; B. w.day=25;

month=10; w.month=10; year=1976; w.year=1976; C. w.birth.day=25; D. birth.day=25; w.birth.month=10; birth.month=10;

w.birth.year=1976; birth.month=1976;

。 13

)34.下面程序运行结果是( )。

main( )

{ int x,y,z; x=0;y=z=-1; x+=-y---z;

printf(“x=%d”,x); }

A.x=4 B.x=0 C.x=2 D.x=3

35.下列程序段中,功能与其它程序段不同的是( )。

A. for(i=1,p=1;i<=5;i++) B. for(i=1;i<=5;i++)

p*=i; { p=1;p*=i;i++; }

C. i=1;p=1; D. i=1;p=1;

while(i<=5){p*=i;i++;} do{p*=i;i++;}while(i<=5);

36.若k为整型变量,则以下语句( )。

k=-8247;

printf(“|D|\\n”,k);

A.输出为|D| B.输出为|0-8247| C.格式描述不合法,输出无定值。 D.输出为|-8247|

37.设a=12,a定义为整形变量。表达式a+=a-=a*a的值为( )。 A.12 B.-132 C.0 D.-264 38.以下程序的输出结果为( )。

int i;

void prt( )

{ for(i=5;i<8;i++) printf(“%c”,‘*'); printf(\}

main( )

{ for(i=5;i<=8;i++) prt( ); }

A. *** B. *** *** *** *** C. *** *** D. * *

39.C语言源程序的基本单位是( )。

A. 过程 B. 函数 C. 子程序 D. 标识符

40.设a=3,b=4,c=5,则表达式!(a+b)+c-1&&b+c/2的值是( )。

A. 5 B. 8 C. 0 D. 1

二、判断题(对的打”∨”,错的打”╳”,每题2分,共10分)

1. 若int i=5;则printf(“%d,%d”,i++,++i);的运行结果是6,6。( ) 2. 在微机上使用的Tc编译系统,每一个长整型变量在内存中占2个字节。( ) 3. 在C语言中,函数的定义不可以嵌套,但函数可以嵌套调用。( ) 4. 若i=5%-3;则i=-2。( )

5. 在微机上使用Tc编译系统,若有float f,*pf; pf=&f;则pf在内存中占4个字节。( ) 三、程序填空题(每空2分,共26分)

1. 斐波那契数列头两个数是0和1 ,从第三个数开始,每个数等于前两个数的和。即:0,1,1,2,3,5,8,

13等等。求斐波那契数列前20个数。要求每行输出5个数。 main( )

{ int f,f1,f2,i;

printf(“Fibonacci series:\\n”); f1=0; f2=1;

printf(“m,m”,f1,f2); for( (1) ;i<=20;i++) { f= (2) ;

printf(“m”,f);

if( (3) ) printf(“\\n”); f1=f2;

f2= (4) ; 14

}

printf(“\\n”);

}

2.从键盘输入一个大写字母,要求改用小写字母输出。 (1)

main( )

{ char c1,c2; c1=getchar( ); c2= (2) ;

printf(“ (3) ”,c2); }

3.有一个3×4的矩阵,求所有元素中的最大值。 maxvalue(int array[ ][4]) { int i,j,max;

max= (1) ; for(i=0;i<3;i++) for(j=0;j<4;j++)

if(array[i][j]>max) max=array[i][j];

return( (2) ); }

main() {int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}}; printf(\%d\n\, (3) ); }

4. 下列程序把从键盘输入到数组中的数据按由大到小的顺序排序。

main( )

{ int a[11],i,j,t;

printf(“input 10 number:\\n”);

for(i=1;i<11;i++) scanf(“%d”,&a[i]); printf(“\\n”);

for(j=1; (1) ;j++) for(i=1;i<=10-j;i++)

if( (2) )

{ t=a[i]; (3) ;a[i+1]=t;} printf(“the sorted number:\\n”); for(i=1;i<11;i++)

printf(“%d”,a[i]); }

四、读程序写出运行结果(每题4分,共24分)

1.main( )

2.int d=1; { int i,j,x=0;

fun(int p) for(i=0;i<2;i++)

{int d=5; { x++;

d+=p++;

printf(“%d”,d); 3.f(int c)

for(j=0;j<=3;j++) { if(j%2) continue; }

{ int a=2;

main( ) x++;

static int b=3;

x++;}

{ int a=3; a=a+3;b++; }

fun(a); printf( return(a+b+c);

“x=%d”,x);

d+=a++;

}

} printf(“]”,d); main( ) }

{ int i; for(i=0;i<3;i++)

printf(“M”,f(i)); }

15

C语言综合练习题(五) 一、 选

择题(

4.main( )

{ int i,k;

char *p,num[6]=“china”; p=num;

k=strlen(num); sort(p,k);

printf(“%s”,num); }

sort(char *p,int m) { int i;

char change,*p1,*p2; for(i=0;i

{ p1=p+i; p2=p+m-1-i; change=*p1;

*p1=*p2; *p2=change; } }

6.int i=5;

main( ) { int i=3;

{ int i=10; i++;

printf(“%d\\t”,i); }

f1( ); i+=1;

printf(“%d\\t”,i);

}

int f1( ) { i=i+1;

printf(“%d\\t”,i); return(i); }

5. hcf( int u,int v)

1、一个

{ int a,b,c,r;

A、一

if(u>v){c=u;u=v;v=c;} B、一

a=u;b=v; C、若

while((r=b%a)!=0) D、若

{ b=a;a=r;}

2、以下 return(a);

}

main( )

{ int u,v,h; u=24;v=16;

h=hcf(u,v); 3、设

A、0 printf(“h=%d”,h); B、3 }

每题1分,共10分)

C语言源程序是由( )。 个主程序和若干个子程序组成 个或多个函数组成 干个过程组成 干个子程序组成

不正确的C语言标识符是( )。 A、 ABC B、 abc C、 a_bc D、 ab.c

n=10,i=4,则运算n%=i-1执行后,n 的值是( )。

C、2

D、1

4、设int a=4,b=2,则++a-b的结果为( ),a的结果为( );b的结果为( )。 A、2 B、3 C、4 D、5

5、C语言用( )表示逻辑“假”的值。 A、 true B、 t或y C、 非零整数值 D、 整数0

6、对于for(表达式1;;表达式3)可以理解为( )。 16

A、for(表达式1;0;表达式3) B、for(表达式1;1;表达式3)

C、for(表达式1;表达式1;表达式3) D、for(表达式1;表达式3;表达式3)

7、在定义int a[10];之后,对a的引用正确的是( )。 A、 a[10] B、 a[6.3] C、 a(6) D、 a[10-10]

8、以下不正确的叙述是( )。 A、宏替换不占用运行时间 B、宏名无类型

C、宏替换只是字符替换

D、宏名必须用大写字母表示

二、 填空题(每空2分,共20分)

阅读以下C代码,将答案填入___(n)___内。 [程序1]

#include int p(int k,int a[]) {int m,i,c=0;

for(m=2;m<=k;m++){ for(i=2; i<=m;i++) if(!(m%i)) break; if(i==m) a[c++]=m; }

return c; }

#define MAXN 20 void main ( ) {int i,m,s[MAXN]; m=p(13,s);

for(i=0;i

printf(\ printf(\ }

函数int p(int k,int a[])的功能是(1)__________________。

[程序2]

本程序找出正文文件“st.dat”中的各个不同整数。该正文文件中各整数间以空格字符、TAB符(制表符)、回车符分隔。程序中用数组b[]存贮不同的整数,变量k为已存入数组b中的不同整数的个数,并假定文件中的不同整数个数不超过1000个。 #include #define N 1000 main ( )

{ FILE ___(2)___; int b[N],d,i,k ;

if ((fpt=fopen(“st.dat”,”r”)==NULL) { /* 以读方式打开文件 */

printf (“Cannot open file.\\n”); return; } k=0;

17

while (fscanf (___(3)___)==1) { /* 从文件中读一个整数 */ b[k]=d;

for (i=0;b[i]!=d;i++); if (i==k) k++; }

fclose(fpt);

for (i=0;i

[答案] (2)________________________________________

(3)________________________________________

[程序3]

#include void s(int a[],int n) {int i,j,t;

for (i=0;i

for(t=a[i],j=i-1;j>=0&&t

main( )

{int i,c[]={15,3,8,9,6,2}; s(c,6);

for(i=0;i<6;i++)

printf(\printf(\}

程序3的输出结果是(4)______________;

函数s(int a[],int n)的功能是(5)_________________________。

4、执行下列语句后,a的值是___________。 int a=12; a*=2+3;

5、定义int a[]={1,2,3,4,5,6},*p=a;表达式(*++p)--的值是______。 6、设a=13.6,b=8 表达式a+b%3*(int)(a-b)/4的值为________。

7、C语言源程序文件的后缀是___________,经编译后生成的文件的后缀是_________,连接后生成的文件的后缀是.exe。

三、 理解题(每题5分,共50分)

1、 以下程序,从键盘上输入”how are you?”,输出是什么? main() { char a[7];

scanf(“%s”,a); printf(“%s”,a); } 2、以下程序执行结果是什么? #include main() { int a[3][3]={1,2,3,4,5,6,7,8,9},i,s=1; 18

for(i=0;i<=2;i++) s*a[i][i]; printf(“s=%d\\n”.s); }

3、若已定义int a[]={1,2,3,4,5,6};且有*p=a;则表达式(*++p)++的值是__________. 4、以下程序执行结果是: #include void FUN(int x,int y) { int temp; temp=x; x=y; y=temp; }

void main() { int a=10,b=20; FUN(a,b); printf(“%d,%d”,a,b); }

5、以下程序的执行结果是: # include typedef struct{ long x[2]; int y[4]; char z[8]; }MYTYPE; void main() { MYTYPE a; printf(\}

6、以下程序的执行结果: #include main() { int *p,i; i=5; p=&i; i=*p+10; printf(“i=%d\\n”,i); }

7、以下程序的执行结果 #include int x=1; func(int x) { x=3; }

void main() { func(x);

19

printf(“x=%d\\n”,x); }

8、以下程序的执行结果 #include struct stru { int x; char c; };

void func(struct stru *b) { b->x=20; b->c='y'; }

void main() { struct stru a={10,'x'},*p=&a; func(p); printf(\}

9、以下程序 输入language programming的执行结果 #include main() { char str[30]; gets(str); printf(\}

10、以下程序的执行结果 #include main() { int i,j; for(i=4;i>=1;i--) { printf(“*”); for(j=1;j<=4-i;j++) printf(“\\n”); } }

四.编程(每小题10分, 共20分)

1、编写一段将n个数按输入顺序的逆序排列输出的程序,要求应用指针且不另外开设数组。

2、编写一段实现二分法查找的程序。

20

本文来源:https://www.bwwdw.com/article/0qpr.html

Top