《高级语言程序设计试题二》 、单项选择题(每题1分,共20分) 1、在C语言中合法的字符型常量是() B.“A 2、已知:intx; float y;所用的 scanf调用语句格式为: scant(x=%d,y=%f,&x&y 则为了将数据10和666分别赋给ⅹ和y,正确的输入应当是 A.x=10,y=666 B.10,666 C.1066.6 D.x=10y=666回车> 3、下列do- while循环的循环次数为() 已知:inti=5; o{ printf("%odIn”,l-) i while(il=0); A.0 D.无限 4、已知:inty;执行语句y=5%3;则变量y的结果是() A.2 B.-2 D 5、C语言中的函数() A.可以嵌套定义 B.不可以嵌套调用 C.可以嵌套调用,但不能递归调用D.嵌套调用和递归调用均可 6.设有intx=1l;则表达式(x++*1/3)的值是 A.3 B.4 C.11 7.以下合法的数组定义是 A. int al="string nta[5}={0,1,2,3,4,5} C. char al=” string D. char a={0,1,2,345}; 8.下面的程序会 no {intx=3,y=0,z=0 if(x=y+z) printf((“***”) else printf(“##”); A.有语法错误不能通过编译 B.输出★★★六 C.可以通过编译,但不能通过连接,因而不能运行D.输出#### 9.有如下程序 maino {intx=1,a=0.b=0, switch(x)i case 0: b++ case 2: a++; b++;) printf(“a=%d,b=%odln”ab); 该程序的输出结果是 A 2b=1 B. a=lb=1 C. a=lb=0 10、已知inta3][4]:则对a数组元素的非法引用是() A.叫[0J2*1 B.a[l][3 C.a[4-20D.a[o4
《高级语言程序设计试题二》 一、单项选择题(每题 1 分,共 20 分) 1、 在 C 语言中合法的字符型常量是( ) A.‘\t’ B.“A” C.65 D.A 2、已知:int x;float y;所用的 scanf 调用语句格式为:scanf(“x=%d,y=%f”,&x,&y); 则为了将数据 10 和 66.6 分别赋给 x 和 y,正确的输入应当是( ) A.x=10,y=66.6 B.10,66.6 C.10 66.6 D.x=10y=66.6 3、下列 do-while 循环的循环次数为( ) 已知: int i=5; do { printf(“%d\n”,i--); i--; } while (i!=0); A.0 B.1 C.5 D.无限 4、已知:int y;执行语句y=5%-3;则变量y的结果是( ) A.2 B.-2 C.1 D.-1 5、C语言中的函数( ) A.可以嵌套定义 B.不可以嵌套调用 C.可以嵌套调用,但不能递归调用 D.嵌套调用和递归调用均可 6.设有 int x=11;则表达式(x++*1/3)的值是 A.3 B.4 C.11 D.12 7.以下合法的数组定义是 A.int a[]=”string”; B. int a[5]={0,1,2,3,4,5}; C.char a[]=”string”; D. char a[]={0,1,2,3,4,5}; 8.下面的程序会 main() { int x=3,y=0,z=0; if(x=y+z) printf(“****”); else printf(“####”); } A.有语法错误不能通过编译 B.输出**** C.可以通过编译,但不能通过连接,因而不能运行 D.输出#### 9.有如下程序 main() { int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf(“a=%d,b=%d\n”,a,b); } 该程序的输出结果是 A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2 10、已知 int a[3][4];则对 a 数组元素的非法引用是( ) A.a[0][2*1] B.a[1][3] C.a[4-2][0] D.a [0][4]
11、凡在函数中未指定存储类别的变量,其隐含的存储类别为() A.自动(auto) B.静态( statIc) C.外部( exter) D.寄存器( register) 12、在intb[3]F={1},3,2},14,5,6},{0}:中a[2]2]的值是() 13.在宏定义# define pi3.1415926,用宏名PI代替一个 A.单精度数 B.双精度数 C.常量 D.字符串 14.若定义inta[7]*p1=a*p2=pl;则对数组元素a[3]的正确引用是 A.*(p2+3)B.*(p1 C. pl+3 D.*(&a[O]+4) 15.C语言中的文件类型有 A.索引文件和文本文件两种 B.ASCI文件和二进制文件两种 C.文本文件一种 D.二进制文件一种 16.希望下面的程序运行后输出17,请将程序填完整 maino {inti=80,a={3,5.8,9,10} for( )j-=a[i; printf(“%d”j50); A.F4:12:1 B.i=0;<3;++1C.=l;<3,++iD.P=3,p1;-i 17.若定义iti=100,*p=&i;设为分配的内存地址为200-201,则 A.p为201B.*p为 p为200 p为 18.若有说明 char sll5s2[7要给sl和s2赋值,下列语句正确的是 A. scant(“%s%s”,&sl,&s2),B.gets(sl,s2 C. scanf(“%s%s”,sl,s2) D. sl=getchar(; S2-getcharO 19.设有以下定义: typedef union{ long i;ntk5] char c;}DATE; struct date( int cat; DATE cow double dog )too DATE ma 则执行下列语句的结果是 printf("%d", sizeof(struct date)+sizeof(max)): B 20、已知:int*p;则变量p是() A.指向int的指针 B.指向指针的指针 C.int型变量 D.以上三种说法均是错误的 、多项选择题(下列各题中,有一个或多个正确答案,多选或少选均不得分。每题2分,共10分) 1、以下标识符中合法的是( B. E2 main 2、已知:inta,*p=&a;则下列函数调用中正确的是() A.sanf(%od”,&ea); B. scanf("%d, p): C. printf(" %od, a D. printf("%d”,*p) E、 scant(%od”&p); 3、设有说明int(*ptr)M];其中的标识符ptr是() A、M个指向整型变量的指针 B、数组指针 C、具有M个指针元素的一维指针数组,每个元素都只能指向整型变量 D、一个指向具有M个整型元素的一维数组的指针
11、凡在函数中未指定存储类别的变量,其隐含的存储类别为( ) A.自动(auto) B.静态(static) C.外部(extern) D.寄存器(register) 12、在int b[][3]={{1},{3,2},{4,5,6},{0}};中a[2][2]的值是( ) A.0 B.5 C.6 D.2 13.在宏定义#define PI 3.1415926,用宏名PI代替一个 A.单精度数 B.双精度数 C.常量 D.字符串 14.若定义 int a[7],*p1=a,*p2=p1; 则对数组元素a[3]的正确引用是 A.*(p2+3) B.*(p1+4) C.p1+3 D.*(&a[0]+4) 15.C语言中的文件类型有 A.索引文件和文本文件两种 B.ASCII文件和二进制文件两种 C.文本文件一种 D.二进制文件一种 16.希望下面的程序运行后输出17,请将程序填完整 main() { int i,j=80,a[]={3,5,8,9,10}; for( ) j-=a[i]; printf(“%d”,j-50); } A. i=4;i>2;i-- B.i=0;i1;--i 17.若定义 int i=100,*p=&i;设为i分配的内存地址为200-201,则 A.p为201 B.*p为100 C.*p为200 D.p为100 18.若有说明char s1[5],s2[7];要给s1和s2赋值,下列语句正确的是 A.scanf(“%s%s”,&s1,&s2); B. gets(s1,s2); C. scanf(“%s%s”,s1,s2); D. s1=getchar();s2=getchar(); 19.设有以下定义: typedef union { long i;int k[5];char c;}DATE; struct date { int cat;DATE cow;double dog;} too; DATE max; 则执行下列语句的结果是 printf(“%d”,sizeof(struct date)+sizeof(max)); A. 25 B. 30 C. 18 D. 8 20、已知:int **p;则变量 p 是( ) A.指向 int 的指针 B.指向指针的指针 C.int 型变量 D.以上三种说法均是错误的 二、多项选择题(下列各题中,有一个或多个正确答案,多选或少选均不得分。每题 2 分,共 10 分) 1、 以下标识符中合法的是( ) A.day B.E2 C.int D.ab_cd E、main 2、已知:int a, *p=&a; 则下列函数调用中正确的是( ) A.scanf(“%d”, &a); B.scanf(“%d, p”); C.printf(“%d”, a); D.printf(“%d”, *p); E、scanf(“%d”,&p); 3、设有说明 int (*ptr)[M]; 其中的标识符 ptr 是( ) A、 M 个指向整型变量的指针 B、数组指针 C、具有 M 个指针元素的一维指针数组,每个元素都只能指向整型变量 D、 一个指向具有 M 个整型元素的一维数组的指针
E、是一个指向函数的指针 4、已知: static int a[2[3}={2,4,6,8,10,12};正确表示数组元素的是() A.*(a+1)B.*(a[1]+2)C.*(*a+1)+1)D.a[O]E、a[2][3] 、若有以下说明和语句 struct student i std,'*p; p=&std 则以下对结构变量std中成员age的引用方式正确的是( A. std. age age C. ('p). age D.*p. age E, p 、判断对错题(每题1分,共5分) 1、在C程序中, maino函数可以放在程序的任意位置。 2、'abc'属于字符串常量。 3、在 switch语句中,使用 break和 continue语句的作用相同。 4、若定义 double w[5,则该数组元素下标的上限是4。 5、若定义nta=8,b,*p=&b,则对于赋值语句p=&a;和*p=a;都是使p指向a 四、阅读程序,写出程序的运行结果(每题3分,共15分) 1、 void fun(intx) X=20,} f int x=10; printf(" %odIn”,x) 2、main int*pl,*p2,i=10,12=20, pl=&i p2=&i2 printf("%d, %d,"*pl, *p2) printf("%d, %d\n",*pl, *p2); 3、intx=1 void fun(int x) maino i fun(x) printf(“%dn”,x)} 、man( {inta4}={10,25,3648} f("%ad",*p)
E、是一个指向函数的指针 4、已知:static int a[2][3]={2,4,6,8,10,12};正确表示数组元素的是( ) A.*(a+1) B.*(a[1]+2) C.*(*(a+1)+1) D.a[0][0] E、a[2][3] 5、若有以下说明和语句: struct student { int age; int num; } std, *p; p=&std; 则以下对结构变量 std 中成员 age 的引用方式正确的是( ) A.std.age B.p->age C.(*p).age D.*p.age E、p.age 三、判断对错题(每题 1 分,共 5 分) 1、在C程序中,main()函数可以放在程序的任意位置。 2、’abc’属于字符串常量。 3、在switch语句中,使用break和continue语句的作用相同。 4、若定义double w[5];则该数组元素下标的上限是4。 5、若定义int a=8,b,*p=&b;则对于赋值语句p=&a;和*p=a;都是使p指向a。 四、阅读程序,写出程序的运行结果(每题 3 分,共 15 分) 1、void fun (int x) { x=20;} main() { int x=10; fun(x); printf(“%d\n”,x); } 2、main() { int *p1,*p2,i1=10,i2=20,i; p1=&i1; p2=&i2; printf("%d,%d, ",*p1,*p2); i=*p1;*p1=*p2;*p2=i; printf("%d,%d\n",*p1,*p2); } 3、int x=1; void fun(int x) { x=3; } main() { fun(x); printf(“%d\n”,x);} 4、main() { int a[4]={10,25,36,48}; int *p=a; printf("%d ",*p); p++;
printf("%d "p++); 5、 Int fun(ntn) {if(n>0) (n* fun(n-2) else return(1); i int x; xfun(5) printf(“%dn”,x) 五、填空题(每空2分,共20分) 1.若输入字符串: abcde,则以下 while循环将执行( )次。 while(ch= getchar==’e) printf(“*”) 2.以下函数的功能是:把两个整数指针所指的存储单元中的内容进行交换。请填空。 swap(int*x, int *y) ); 3.若函数fun的类型为void,且有以下定义和调用语句 #define m 50 i int a[M fun(a); 定义fum函数首部可以用三种不同的形式,请写出这三种形式 (注意:①形参的名字请用q,②使用同一种风格) 4.下面的程序段运行后,第一个 printf()语句输出是( 第二 printf(()语句输出是( char s=free trade,p=s while(*s)s++ printf(%osn”p) printf(%snp+7); 5.若有以下定义: double w[10],则w数组元素下标的上限是( 下限是( 编写程序题(共30分)
printf("%d ",*p++); printf("%d ",*++p); } 5、int fun(int n) { if (n>0) return (n* fun (n-2)); else return (1); } main() { int x; x=fun(5); printf(“%d\n”, x ); } 五、填空题(每空 2 分,共 20 分) 1.若输入字符串:abcde,则以下while循环将执行( )次。 while((ch=getchar())==’e’) printf(“*”); 2.以下函数的功能是:把两个整数指针所指的存储单元中的内容进行交换。请填空。 swap(int *x,int *y) { int t; t=*y; *y=( ); *x=( ); } 3.若函数fun的类型为void,且有以下定义和调用语句: #define M 50 main() { int a[M]; … fun(a); … } 定义fun函数首部可以用三种不同的形式,请写出这三种形式: ( )、( )、( ) (注意:①形参的名字请用q,②使用同一种风格) 4.下面的程序段运行后,第一个printf()语句输出是( ), 第二printf( )语句输出是( )。 char *s=”free trade”, *p =s; while( *s)s++; printf(“%s\n”,p); printf(“%s\n”,p+7); 5.若有以下定义:double w[10]; 则w数组元素下标的上限是( ), 下限是( )。 六、编写程序题(共 30 分)
1、编程打印如下形式的图形(4分) 2、编写函数,通过指针交换两个变量的值(5分) 3、有两个3*4的矩阵,编程求两矩阵之和(6分) 4、有一封信共3行,每行20个字符。统计其中有多少个大写字母,多少小写字母, 多少数字字符。(7分) 5、编写函数fun,功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处 理。部分源程序已给出。(8分) 例如:若输入字符串为: turbo c and borland c+从键盘上输入字符n,则输出为: turbo c ad borland c++。如果输入字符不存在,字符串原样输出。 部分程序如下: #include int fun(char sll, int c) maino i char str[=turbo c and borland c++ char ch printf(%sb”,str) scanf(%c”,&ch); fun(str, ch) printf(%sn”,str)
1、 编程打印如下形式的图形 (4 分) * * * * * * * * * * 2、 编写函数,通过指针交换两个变量的值 (5 分) 3、 有两个 3*4 的矩阵,编程求两矩阵之和 (6 分) 4、 有一封信共 3 行,每行 20 个字符。统计其中有多少个大写字母,多少小写字母, 多少数字字符。(7 分) 5、编写函数 fun,功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处 理。部分源程序已给出。(8 分) 例如:若输入字符串为:turbo c and borland c++ 从键盘上输入字符 n,则输出为:turbo c ad borlad c++。如果输入字符不存在,字符串原样输出。 部分程序如下: #include #include int fun(char s[],int c) { } main() { char str[]=”turbo c and borland c++”; char ch; printf(“%s\b”,str); scanf(“%c”,&ch); fun(str,ch); printf(“%s\n”,str); }