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 { 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;(i 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 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 { 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 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 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 main() { int a=10,b=20; FUN(a,b); printf(“%d,%d”,a,b); } 5、以下程序的执行结果是: # include 6、以下程序的执行结果: #include 7、以下程序的执行结果 #include void main() { func(x); 19 printf(“x=%d\\n”,x); } 8、以下程序的执行结果 #include 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 10、以下程序的执行结果 #include 四.编程(每小题10分, 共20分) 1、编写一段将n个数按输入顺序的逆序排列输出的程序,要求应用指针且不另外开设数组。 2、编写一段实现二分法查找的程序。 20
正在阅读:
C语言课程习题04-08
有机化学试验教案参考模板03-18
选修三综合题答案07-21
汽车保险知识全面分析-上传用06-28
农作物生产试题及答案05-29
毕业典礼主持词及会务流程02-23
抹茶蛋糕的做法-选购抹茶蛋糕的注意事项12-21
三3班红十字主题班会06-19
道路交通规划复习资料09级 - 图文09-10
- 必修一物理寒假作业
- 2019-201X年5月大学生入党积极分子思想汇报-word范文模板(3页)
- 药物分析习题五
- 重拾应用意识 体会数学价值(沈建军)
- 2017全国高校辅导员结构化面试题集及参考答案
- 广东徐闻县实验中学2014届高三第二次月测地理试题
- 今天你共鸣了么?
- 2018-2019正能量读后感1000字-推荐word版(6页)
- 2018年中国截切型盖板针布行业专题研究分析报告目录
- 中国移动业务处理流程大全
- 公文写作常用词汇和句子集锦2016
- ARM课程设计说明书
- 教师资格证教育学论文
- 中考试卷分析
- 环境监测试卷(五)
- 党风廉政建设广播稿1
- 快速制作香香宫煮麻辣烫教程
- 《国际金融学》习题
- 文明施工保障措施方案
- 春兰维修资料故障代码
- 习题
- 语言
- 课程
- 招投标违法案件文书标准格式
- 马原习题整理
- 煤炭企业集团工商管理系统化模式的创建
- 数据库服务器集群及磁盘阵列配置方案
- 旅游经济学B试卷及答案
- 税法考试计算题
- 2012年政府工作报告11
- 核医学试卷+答案1
- K2014-2015学年上学期期中考试高一政治试卷
- 劳动关系协调员(员级)
- 排水排污方案
- 2011年仁怀市人民政府工作报告
- 2107内蒙古公务员在线培训答案,生态文明建设与可持续发展答案(
- 饲料原料目录2014 - 图文
- 体育基础理论试题
- 营销公司驻外分公司(办事处)管理制度
- (关兴小学)实施《义务教育学校管理标准》工作自查报告
- 科目2练车笔记 - 图文
- 小学奥数论:整除和余数知识点总结及经典例题
- 51testing软件测试培训笔记