C语言习题课
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
switch (c-‘2’) { case 0 : case 1 : putchar (c+4) ; case 2 : putchar (c+4) ; break ; case 3 : putchar (c+3) ; default : putchar (c+2) ; break ; } printf(“ \n”); } A)668977 B)668966 C)66778777 。 15. 对于定义"int a[10];"的正确描述是: A) 定义一个一维数组 a,共有 a[1]到 a[10]10 个数组元素 B) 定义一个一维数组 a,共有 a(0)到 a(9)10 个数组元素 C) 定义一个一维数组 a,共有 a[0]到 a[9]10 个数组元素 D) 定义一个一维数组 a,共有 a(1)到 a(10)10 个数组元素 16. 引用数组元素时,其下标表达式的值类型一定是: A) char B) int C) double D) bool 17. 若有定义: double a[] = { 2.1,3.6,9.5}; double b = 6.0; 则下列错误的赋值语句是: A) b = a[2]; B) b = a + a[2]; C) a[1] = b; D) b = a[0] + 7; 18. 以下各语句中,字符串“abcde”能正确赋值的操作是 A ) char s[5]={ ‘ a ’ , ’ b ’ , ’ c ’ , ’ d’ , ’ e ’ }; B ) char *s;s= ” abcde ” ; C ) char *s;gets(s); D ) char s[6];scanf( “ %s ” ,&s); 。 19. 以下函数的功能对应于 int fun(char *s,char *t) { while ((*s)&&(*t)&&(*t==*s)){ t++; s++; } return(*s-*t); } A)strlen(s)+strlen(t) B)strcmp(s,t) C)strcpy(s,t) D)strcat(s,t) 20.若对两个数组 a 和 b 进行初始化 char a[]="ABCDEF"; char b[]={'A', 'B', 'C', 'D', 'E', 'F'}; 则下列叙述正确的是 。 A) a 与 b 数组完全相同 D)6688766
1
AB↙ C)10 20 AB↙ D)10 20AB↙ 。 9.若定义 x 为 double 型变量,则能正确输入 x 值的语句是 A)scanf(“%f”,x); B)scanf(“%f”,&x); C)scanf(“ %lf”,&x); D)scanf(“%5.1f”,&x); 10.下面程序段 int k=2; while (k=0) {printf(“%d”,k);k--;} 。 则下面描述中正确的是 A)while 循环执行 10 次 B)循环是无限循环 C)循环题语句一次也不执行 D)循环体语句执行一次 11.以下程序段的循环次数是 。 for (i=2; i= =0; ) printf(“%d”,i--) ; A)无限次 B)0 次 C)1 次 D)2 次 。 12.下面程序的输出结果是 #include<stdio.h> void main ( ) { int x=9; for (; x>0; x--) { if (x%3==0) { printf(“%d”,--x); continue ; } } } A)741 B)852 C)963 D)875421 。 13.下面程序的输出结果是 #include<stdio.h> void main ( ) { int k=0,m=0,i,j; for (i=0; i<2; i++) { for (j=0; j<3; j++) k++ ; k-=j ; } m = i+j ; printf(“ k=%d,m=%d”,k,m) ; } A)k=0,m=3 B)k=0,m=5 C)k=1,m=3 D)k=1,m=5 。 14.若运行以下程序时,输入 2473↙,则程序的运行结果是 #include<stdio.h> void main ( ) { int c; while ((c=getchar( )) !=’\n’)
C 语言习题课 一、选择题 1.以下叙述不正确的是( )
A.一个 C 源程序可由一个或多个函数组成 B.一个 C 源程序必须包含一个 main 函数 C.C 程序的基本组成单位是函数 D.在 C 程序中,注释说明只能位于一条语句的后面 2.C 语言规定:在一个源程序中,main 的位置( ) A.必须在最开始 C.可以任意 B.必须在系统调用的库函数后面 D.必须在最后
6.在 C 语言中,要求运算数必须为整型的运算符是 ( ) A./ B.++ C.!= D.%
7.判断字符型变量 c1 是否为小写字母的正确表达式为( ) A.’a’<=c1<=’z’ C. (‘a’>=c1)||(‘z’<=c1) B.(c1>=a)&&(c1<=z) D. (c1>=’a’)&&(c1<=’z’)
。
5
Biblioteka Baidu
language[2]的值是 。 A)一个字符 B)一个地址 C)一个字符串 D)一个不定值 。 38.以下正确的叙述是 A)C 语言允许 main 函数带形参,且形参个数和形参名均可由用户指定 B)C 语言允许 main 函数带形参,形参名只能是 argc 和 argv C)当 main 函数带有形参时,传给形参的值只能从命令行中得到 D)若有说明: int main(int argc,char **argv),则 argc 的值必须大于 1 。 39.如下说明语句,则下面叙述不正确的是 struct stu { int a ; float b ; } stutype ; A)struct 是结构体类型的关键字 B)struct stu 是用户定义的结构体类型 C)stutype 是用户定义的结构体类型名 D)a 和 b 都是结构体成员名 。 40.C 语言结构体类型变量在程序执行期间 A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中 。 41.下面程序的运行结果是 #iunclude<stdio.h> void main ( ) { struct complx { int x; int y ; } cnum[2]={1,3,2,7} ; printf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x) ; } A)0 B)1 C)2 D)6 。 42.若执行 fopen 函数时发生错误,则函数的返回值是 A)地址值 B)0 C)1 D)EOF 43.若以”a+”方式打开一个已存在的文件,则以下叙述正确的是 。 A)文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B)文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C)文件打开时,原有文件内容被删除,只可作写操作 D)以上说法都不正确 44.利用 fseek 函数可实现的操作是 。 A)改变文件的位置指针 B)文件的顺序读写 C)文件的随机读写 D)以上答案均正确 45.函数调用语句:fseek(fp,-20L,2)的含义是 。 A)将文件位置指针移到距离文件头 20 个字节处 B)将文件位置指针从当前位置向后移动 20 个字节 C)将文件位置指针从文件末尾向后退 20 个字节 D)将文件位置指针移到当前位置 20 个字节处
。
4
D)函数的定义和函数的调用均可以嵌套 28.已知一个函数的定义如下: double fun(int x, double y) { …… } 则该函数正确的函数原型声明为: A)double fun (int x,double y) B)fun (int x,double y) C)double fun (int ,double ); D)fun(x,y) ; 。 29.以下程序的运行结果是 #include<stdio.h> #define ADD(x) x+x void main ( ) { int m=1,n=2,k=3,sum ; sum = ADD(m+n)*k ; printf(“%d\n”,sum) ; A)9 B)10 C)12 D)18 。 30.下面能正确进行字符串赋值操作的是 A)char s[5]={“ ABCDE”}; B)char s[5]={‘A’,’B’,’C’,’D’,’E’}; C)char *s ; s=”ABCDE” ; D)char *s; scanf(“%s”,s) ; 。 31.下面程序段的运行结果是 char *s=”abcde” ; s+=2 ; printf(“ %s”,s); A)cde B)字符’c’ C)字符’c’的地址 D)不确定 。 32.设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是 A)s 和 p 完全相同 B)数组 s 中的内容和指针变量 p 中的内容相等 C)s 数组长度和 p 所指向的字符串长度相等 D)*p 与 s[0]相等 。 33.下面程序段的运行结果是 char a[ ]=”language” , *p ; p=a ; while (*p!=’u’) { printf(“%c”,*p-32); p++ ; } A)LANGUAGE B)language C)LANG D)langUAGE 34.若已定义 char s[10];则在下面表达式中不表示 s[1]的地址是 。 A)s+1 B)s++ C)&s[0]+1 D)&s[1] 35.若有定义:int a[5],*p=a;则对 a 数组元素的正确引用是 。 A)*&a[5] B)a+2 C)*(p+5) D)*(a+2) 36.若有定义: int a[2][3];则对 a 数组的第 i 行第 j 列元素值的正确引用是 A)*(*(a+i)+j) B)(a+i)[j] C)*(a+i+j) D)*(a+i)+j 37.若有说明:char *language[]={“ FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则
。
3
B) a 与 b 数组长度相同 C) a 与 b 数组都存放字符串 D) 数组 a 比数组 b 长度长 21.已知下列程序段: char a[3], b[]="Hello"; a=b; printf("%s", a); 。 则 A) 运行后将输出 Hello B) 运行后将输出 He C) 运行后将输出 Hel D) 编译出错 21.下列程序段的运行结果为 。 char a[]="continue", *p; p=a; while(*p!='i'){ printf("%c", *p-32); p++; } A) continue B) CONTINUE C) CONT D) contINUE 22.若有下列定义: int x[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int (*p)[3]=x; 。 则能够正确表示数组元素 a[1][2]的表达式为 A) *(*(p+1)+2) B) *((*p+1)[2]) C) *(*(p+5)) D) *((*p+1)+2) 23. 若有说明 int a[3][4];则 a 数组元素的非法引用是 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 24.若调用一个函数,且此函数中没有 return 语句,则正确的说法是 A)该函数没有返回值 B)该函数返回若干个系统默认值 C)能返回一个用户所希望的函数值 D)返回一个不确定的值 。 25.以下不正确的说法是 A)实参可以是常量,变量或表达式 B)形参可以是常量,变量或表达式 C)实参可以为任意类型 D)如果形参和实参的类型不一致,以形参类型为准 26.C 语言规定,函数返回值的类型是由 决定的。 A)return 语句中的表达式类型 B)调用该函数时的主调函数类型 C)调用该函数时由系统临时 D)在定义函数时所指定的函数类型 27.以下正确的描述是 。 A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套 C)函数的定义和函数的调用均不可以嵌套
3.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( ) A.7 C.6 B.8 D.2
4.下面四个选项中,均是合法的用户标识符的选项的是:( ) A. A B. float C. b-a D. _123 p_o lao goto temp INT do _A int
5.表达式 18/4*sqrt(4.0)/8 值的数据类型为( ) A.float C.double B char D.不确定
8.已有如下定义和输入语句,若要求 a1,a2,c1,c2 的值分别为 10,20,A 和 B,当从第一列开 始输入数据时,正确的输入方式是 。 int a1,a2; char c1,c2; scanf(“ %d%d”,&a1,&a2); scanf(“ %c%c”,&c1,&c2); A)1020AB↙ B)10 20↙
switch (c-‘2’) { case 0 : case 1 : putchar (c+4) ; case 2 : putchar (c+4) ; break ; case 3 : putchar (c+3) ; default : putchar (c+2) ; break ; } printf(“ \n”); } A)668977 B)668966 C)66778777 。 15. 对于定义"int a[10];"的正确描述是: A) 定义一个一维数组 a,共有 a[1]到 a[10]10 个数组元素 B) 定义一个一维数组 a,共有 a(0)到 a(9)10 个数组元素 C) 定义一个一维数组 a,共有 a[0]到 a[9]10 个数组元素 D) 定义一个一维数组 a,共有 a(1)到 a(10)10 个数组元素 16. 引用数组元素时,其下标表达式的值类型一定是: A) char B) int C) double D) bool 17. 若有定义: double a[] = { 2.1,3.6,9.5}; double b = 6.0; 则下列错误的赋值语句是: A) b = a[2]; B) b = a + a[2]; C) a[1] = b; D) b = a[0] + 7; 18. 以下各语句中,字符串“abcde”能正确赋值的操作是 A ) char s[5]={ ‘ a ’ , ’ b ’ , ’ c ’ , ’ d’ , ’ e ’ }; B ) char *s;s= ” abcde ” ; C ) char *s;gets(s); D ) char s[6];scanf( “ %s ” ,&s); 。 19. 以下函数的功能对应于 int fun(char *s,char *t) { while ((*s)&&(*t)&&(*t==*s)){ t++; s++; } return(*s-*t); } A)strlen(s)+strlen(t) B)strcmp(s,t) C)strcpy(s,t) D)strcat(s,t) 20.若对两个数组 a 和 b 进行初始化 char a[]="ABCDEF"; char b[]={'A', 'B', 'C', 'D', 'E', 'F'}; 则下列叙述正确的是 。 A) a 与 b 数组完全相同 D)6688766
1
AB↙ C)10 20 AB↙ D)10 20AB↙ 。 9.若定义 x 为 double 型变量,则能正确输入 x 值的语句是 A)scanf(“%f”,x); B)scanf(“%f”,&x); C)scanf(“ %lf”,&x); D)scanf(“%5.1f”,&x); 10.下面程序段 int k=2; while (k=0) {printf(“%d”,k);k--;} 。 则下面描述中正确的是 A)while 循环执行 10 次 B)循环是无限循环 C)循环题语句一次也不执行 D)循环体语句执行一次 11.以下程序段的循环次数是 。 for (i=2; i= =0; ) printf(“%d”,i--) ; A)无限次 B)0 次 C)1 次 D)2 次 。 12.下面程序的输出结果是 #include<stdio.h> void main ( ) { int x=9; for (; x>0; x--) { if (x%3==0) { printf(“%d”,--x); continue ; } } } A)741 B)852 C)963 D)875421 。 13.下面程序的输出结果是 #include<stdio.h> void main ( ) { int k=0,m=0,i,j; for (i=0; i<2; i++) { for (j=0; j<3; j++) k++ ; k-=j ; } m = i+j ; printf(“ k=%d,m=%d”,k,m) ; } A)k=0,m=3 B)k=0,m=5 C)k=1,m=3 D)k=1,m=5 。 14.若运行以下程序时,输入 2473↙,则程序的运行结果是 #include<stdio.h> void main ( ) { int c; while ((c=getchar( )) !=’\n’)
C 语言习题课 一、选择题 1.以下叙述不正确的是( )
A.一个 C 源程序可由一个或多个函数组成 B.一个 C 源程序必须包含一个 main 函数 C.C 程序的基本组成单位是函数 D.在 C 程序中,注释说明只能位于一条语句的后面 2.C 语言规定:在一个源程序中,main 的位置( ) A.必须在最开始 C.可以任意 B.必须在系统调用的库函数后面 D.必须在最后
6.在 C 语言中,要求运算数必须为整型的运算符是 ( ) A./ B.++ C.!= D.%
7.判断字符型变量 c1 是否为小写字母的正确表达式为( ) A.’a’<=c1<=’z’ C. (‘a’>=c1)||(‘z’<=c1) B.(c1>=a)&&(c1<=z) D. (c1>=’a’)&&(c1<=’z’)
。
5
Biblioteka Baidu
language[2]的值是 。 A)一个字符 B)一个地址 C)一个字符串 D)一个不定值 。 38.以下正确的叙述是 A)C 语言允许 main 函数带形参,且形参个数和形参名均可由用户指定 B)C 语言允许 main 函数带形参,形参名只能是 argc 和 argv C)当 main 函数带有形参时,传给形参的值只能从命令行中得到 D)若有说明: int main(int argc,char **argv),则 argc 的值必须大于 1 。 39.如下说明语句,则下面叙述不正确的是 struct stu { int a ; float b ; } stutype ; A)struct 是结构体类型的关键字 B)struct stu 是用户定义的结构体类型 C)stutype 是用户定义的结构体类型名 D)a 和 b 都是结构体成员名 。 40.C 语言结构体类型变量在程序执行期间 A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中 。 41.下面程序的运行结果是 #iunclude<stdio.h> void main ( ) { struct complx { int x; int y ; } cnum[2]={1,3,2,7} ; printf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x) ; } A)0 B)1 C)2 D)6 。 42.若执行 fopen 函数时发生错误,则函数的返回值是 A)地址值 B)0 C)1 D)EOF 43.若以”a+”方式打开一个已存在的文件,则以下叙述正确的是 。 A)文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B)文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C)文件打开时,原有文件内容被删除,只可作写操作 D)以上说法都不正确 44.利用 fseek 函数可实现的操作是 。 A)改变文件的位置指针 B)文件的顺序读写 C)文件的随机读写 D)以上答案均正确 45.函数调用语句:fseek(fp,-20L,2)的含义是 。 A)将文件位置指针移到距离文件头 20 个字节处 B)将文件位置指针从当前位置向后移动 20 个字节 C)将文件位置指针从文件末尾向后退 20 个字节 D)将文件位置指针移到当前位置 20 个字节处
。
4
D)函数的定义和函数的调用均可以嵌套 28.已知一个函数的定义如下: double fun(int x, double y) { …… } 则该函数正确的函数原型声明为: A)double fun (int x,double y) B)fun (int x,double y) C)double fun (int ,double ); D)fun(x,y) ; 。 29.以下程序的运行结果是 #include<stdio.h> #define ADD(x) x+x void main ( ) { int m=1,n=2,k=3,sum ; sum = ADD(m+n)*k ; printf(“%d\n”,sum) ; A)9 B)10 C)12 D)18 。 30.下面能正确进行字符串赋值操作的是 A)char s[5]={“ ABCDE”}; B)char s[5]={‘A’,’B’,’C’,’D’,’E’}; C)char *s ; s=”ABCDE” ; D)char *s; scanf(“%s”,s) ; 。 31.下面程序段的运行结果是 char *s=”abcde” ; s+=2 ; printf(“ %s”,s); A)cde B)字符’c’ C)字符’c’的地址 D)不确定 。 32.设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是 A)s 和 p 完全相同 B)数组 s 中的内容和指针变量 p 中的内容相等 C)s 数组长度和 p 所指向的字符串长度相等 D)*p 与 s[0]相等 。 33.下面程序段的运行结果是 char a[ ]=”language” , *p ; p=a ; while (*p!=’u’) { printf(“%c”,*p-32); p++ ; } A)LANGUAGE B)language C)LANG D)langUAGE 34.若已定义 char s[10];则在下面表达式中不表示 s[1]的地址是 。 A)s+1 B)s++ C)&s[0]+1 D)&s[1] 35.若有定义:int a[5],*p=a;则对 a 数组元素的正确引用是 。 A)*&a[5] B)a+2 C)*(p+5) D)*(a+2) 36.若有定义: int a[2][3];则对 a 数组的第 i 行第 j 列元素值的正确引用是 A)*(*(a+i)+j) B)(a+i)[j] C)*(a+i+j) D)*(a+i)+j 37.若有说明:char *language[]={“ FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则
。
3
B) a 与 b 数组长度相同 C) a 与 b 数组都存放字符串 D) 数组 a 比数组 b 长度长 21.已知下列程序段: char a[3], b[]="Hello"; a=b; printf("%s", a); 。 则 A) 运行后将输出 Hello B) 运行后将输出 He C) 运行后将输出 Hel D) 编译出错 21.下列程序段的运行结果为 。 char a[]="continue", *p; p=a; while(*p!='i'){ printf("%c", *p-32); p++; } A) continue B) CONTINUE C) CONT D) contINUE 22.若有下列定义: int x[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int (*p)[3]=x; 。 则能够正确表示数组元素 a[1][2]的表达式为 A) *(*(p+1)+2) B) *((*p+1)[2]) C) *(*(p+5)) D) *((*p+1)+2) 23. 若有说明 int a[3][4];则 a 数组元素的非法引用是 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 24.若调用一个函数,且此函数中没有 return 语句,则正确的说法是 A)该函数没有返回值 B)该函数返回若干个系统默认值 C)能返回一个用户所希望的函数值 D)返回一个不确定的值 。 25.以下不正确的说法是 A)实参可以是常量,变量或表达式 B)形参可以是常量,变量或表达式 C)实参可以为任意类型 D)如果形参和实参的类型不一致,以形参类型为准 26.C 语言规定,函数返回值的类型是由 决定的。 A)return 语句中的表达式类型 B)调用该函数时的主调函数类型 C)调用该函数时由系统临时 D)在定义函数时所指定的函数类型 27.以下正确的描述是 。 A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套 C)函数的定义和函数的调用均不可以嵌套
3.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( ) A.7 C.6 B.8 D.2
4.下面四个选项中,均是合法的用户标识符的选项的是:( ) A. A B. float C. b-a D. _123 p_o lao goto temp INT do _A int
5.表达式 18/4*sqrt(4.0)/8 值的数据类型为( ) A.float C.double B char D.不确定
8.已有如下定义和输入语句,若要求 a1,a2,c1,c2 的值分别为 10,20,A 和 B,当从第一列开 始输入数据时,正确的输入方式是 。 int a1,a2; char c1,c2; scanf(“ %d%d”,&a1,&a2); scanf(“ %c%c”,&c1,&c2); A)1020AB↙ B)10 20↙