《高级语言程序设计试题三》 单项选择题(每题1分,共20分) 1、在一个被调用函数中,关于 return语句使用的描述,错误的是() A、被调用函数中可以不用 return语句 B、被调用函数中可以使用多个 return语句 C、被调用函数中,如果有返回值,就一定要有 return语句 D、被调用函数中,一个 return语句可返回多个值给调用函数 2、运算符>代表() A、大于 B、小于 C、右移D、左移 3、已知:inty;执行语句y=52;则变量y的结果是() A、2 C、2.5 D、2.0 4.能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是 A、a>=10ora=l0&&a=10‖a<=0 5.若有以下程序段: ntcl=1,c2=2,c3; c3=1.0/c2*c1 则执行后,c3中的值是 A、0 0.5 6.下列不属于字符型常量的是 B B 7.在C程序中,可以把整型数以二进制形式存放到文件中的函数是 A、 fprintf函数B、 fread函数C、 fwrite函数D、 fputc函数 8.下列二维数组的说明中,不正确的是 A、 float a[3*8]7-3] B、 float a[3}={0,1,8}; C、# define l3 D、nta[6][7 float a[L3 9、若对函数类型未加显示说明,则函数的隐含类型是() A、void B、 double C、int D、char 0、在传值调用中,要求( 、形参和实参类型任意,个数相等 B、实参和形参类型都完全一致,个数相等 C、实参和形参对应的类型一致,个数相等 D、实参和形参对应的类型一致,个数任意 11、在C语言的函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA, 则() A、称为函数的直接递归 B、称为函数的间接递归 C、称为函数的递归定义 D、C语言中不允许这样的递归形式 12、已知inta=3,*p=&a;则*p的值是() A、变量a的地址值B、无意义C、变量p的地址值 13、下列存储类标识符中,()的可见性与存在性不一致 A、外部类 B、自动类 C、静态类 D、寄存器类 14.以下程序运行后,输出结果是 func(int a, int b) i static int m=0, F2 H+=m+1 m=ita+b; return(m);)
《高级语言程序设计试题三》 一、单项选择题(每题 1 分,共 20 分) 1、在一个被调用函数中,关于 return 语句使用的描述,错误的是( ) A、被调用函数中可以不用 return 语句 B、被调用函数中可以使用多个 return 语句 C、被调用函数中,如果有返回值,就一定要有 return 语句 D、被调用函数中,一个 return 语句可返回多个值给调用函数 2、运算符>>代表( ) A、大于 B、小于 C、右移 D、左移 3、已知:int y;执行语句y=5/2;则变量y的结果是( ) A、2 B、-2 C、2.5 D、2.0 4.能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是 A、a>=10 or a=0 | a=10&&a=10 || a<=0 5.若有以下程序段: int c1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3中的值是 A、0 B、0.5 C、1 D、2 6.下列不属于字符型常量的是 A、’A’ B、 “B” C、 ‘\117’ D、’\x93’ 7.在C程序中,可以把整型数以二进制形式存放到文件中的函数是 A、fprintf函数 B、fread函数 C、fwrite函数 D、fputc函数 8.下列二维数组的说明中,不正确的是 A、float a[3*8][7-3] B、float a[][3]={0,1,8}; C、#define L 3 D、int a[6],[7] float a[L][3] 9、若对函数类型未加显示说明,则函数的隐含类型是( ) A、void B、double C、int D、char 10、在传值调用中,要求( ) A、形参和实参类型任意,个数相等 B、实参和形参类型都完全一致,个数相等 C、实参和形参对应的类型一致,个数相等 D、实参和形参对应的类型一致,个数任意 11、在C语言的函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA, 则( ) A、称为函数的直接递归 B、称为函数的间接递归 C、称为函数的递归定义 D、C语言中不允许这样的递归形式 12、已知int a=3,*p=&a; 则*p的值是( ) A、变量a的地址值 B、无意义 C、变量p的地址值 D、3 13、下列存储类标识符中,( )的可见性与存在性不一致 A、外部类 B、自动类 C、静态类 D、寄存器类 14.以下程序运行后,输出结果是 func (int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return (m); }
maino i int k=4, m=l, p p=func(km); printf(“%d,”p); p=func(km) printf(“%dn”p) D、8,8 15.不能把字符串: Hello!赋给数组b的语句是 A、 char b[10J{‘H }; B、 char b[l0];b=”Helo! C、 char b[l0 strcpy(b,”hell!”) D、 char b[lOJ” hello!” 16.若有以下定义和语句,0≤i<10,则对数组元素地址的正确表示是 nta={1,2,3,4.5,6,78,90 B &p[ 17、已知:intx;则下面的说明指针变量pb的语句()是正确的 A、 int pb=&x,B、int*pb=x;C、int*pb=&x,D、*pb=*x; 18、说明语句“int*(*p)O;”的含义是() A、p是一个指向int型数组的指针 B、p是指针变量,它构成了指针数组 C、p是一个函数指针,该函数的返回值是一个整型 D、p是一个函数指针,该函数的返回值是一个指向整型的指针 19、已知学生记录描述为 struct student t int no char name 20 char sex struct f int year; int month int day: 设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是() A, year=1984; month=ll; day=ll B birth year=1984, birth month=ll; birth day=ll C. syear=1984; s month=ll; sday=ll D,s birth year=1984; s birth month=ll; s birth day=ll 20、已知: char s[4}=“12“;char*ptr;则执行以下语句后的输出为() ptr-sl; printf(“%cn”,*(ptr+1) A、字符‘2’B、字符‘1’C、字符“2’的地址D、不确定 、多项选择题(下列各题中,有一个或多个正确答案,多选或少选均不得分。每题2分,共10分) 以下变量名合法的是() D、123 E 2、已知: int a b:用语句 scanf(%d%d”,&a&b);输入ab的值时,能作为输入数据分隔符的是() A B、空格 C、回车 D、[TAB] 3、设有说明int(*pt)M,其中的标识符pt是() A、M个指向整型变量的指针 B、数组指针 C、具有M个指针元素的一维指针数组,每个元素都只能指向整型变量
main() { int k=4,m=1,p; p=func(k,m); printf(“%d,”,p); p=func(k,m);printf(“%d\n”,p); } A、 8,15 B、8,16 C、8,17 D、8,8 15.不能把字符串:Hello!赋给数组b的语句是 A、 char b[10]={‘H’,’e’,’l’,’l’,’o’,’!’,’\0’}; B、 char b[10]; b=”Hello!”; C、 char b[10]; strcpy(b,”hello!”); D、 char b[10]=”hello!”; 16.若有以下定义和语句,0≤i<10,则对数组元素地址的正确表示是 int a[]={1,2,3,4,5,6,7,8,9,0}; int *p,i; p=a; A、&(a+1) B、 a++ C、 &p D、 &p[i] 17、已知:int x; 则下面的说明指针变量 pb 的语句( )是正确的 A、int pb=&x; B、int *pb=x; C、int *pb=&x; D、*pb=*x; 18、说明语句“int *(*p)();”的含义是( ) A、p 是一个指向 int 型数组的指针 B、p 是指针变量,它构成了指针数组 C、p 是一个函数指针,该函数的返回值是一个整型 D、p 是一个函数指针,该函数的返回值是一个指向整型的指针 19、已知学生记录描述为: struct student { int no; char name[20]; char sex; struct { int year; int month; int day; }birth; }s; 设变量 s 中的“生日”应是“1984 年 11 月 11 日”,下列对“生日”的正确赋值方式是( ) A、year=1984; month=11; day=11; B、birth .year=1984; birth .month=11; birth .day=11; C、s.year=1984; s.month=11; s.day=11; D、s.birth .year=1984; s.birth .month=11; s.birth .day=11; 20、已知:char s1[4]=“12“;char *ptr;则执行以下语句后的输出为( ) ptr=s1; printf(“%c\n”, *(ptr+1)); A、字符‘2’ B、字符‘1’ C、字符‘2’的地址 D、不确定 二、多项选择题(下列各题中,有一个或多个正确答案,多选或少选均不得分。每题 2 分,共 10 分) 1、 以下变量名合法的是( ) A、static B、_auto C、 2_and D、_123 E、int 2、已知: int a,b;用语句 scanf(“%d%d”,&a,&b);输入 a,b 的值时,能作为输入数据分隔符的是( ) A、 , B、空格 C、回车 D、[TAB] E、 ; 3、设有说明 int (*ptr)[M]; 其中的标识符 ptr 是( ) A、 M 个指向整型变量的指针 B、数组指针 C、具有 M 个指针元素的一维指针数组,每个元素都只能指向整型变量
D、一个指向具有M个整型元素的一维数组的指针 E、ptr是指向函数的指针 4、已知:inta,*p=&a;则为了得到变量a的值,下列正确的表达式是() A、* B D、*&a 5、设有以下说明,则正确的叙述是() union char c foat f. A、a所占的内存长度等于成员f的长度 B、a所占的内存长度等于所有成员的长度和 C、a的地址和它的各成员地址都是同一地址 D、可以在定义a时对它初始化 E、a是共用体类型的别名 、判断对错题(每题1分,共5分) 1、能直接让计算机识别的语言是c语言 2、为避免嵌套的证语句的二义性,C语言规定else与其之前最近的ⅱ配对。 3、一般情况下,当两个指针指向同一个数组时,可在关系表达式中对两个指 针进行比较。 4、 malloc函数用来在内存中分配一个指定长度的存储空间。 5、在函数外部定义的变量是全局变量。 四、阅读下面的程序,写出程序的运行结果(每题3分,共15分) l、man i int x=l,y=2, 43 printf("%d", (x<y?x++ y++)) 、 maino {inta[10={1,2,3,-4,56,7,-8,9,10},s=0, for(int F0; K <10; i++) if(a[]<0) break s+=a[ printf("%d"s); 3、intf(intb[jntn) for(i=0;i<=n;计+=2) s+=b[; return s maino { int x a[}={2,3,4,5,6,7,8,9} x=f(a,5) print(“%d”,ⅹ) 4、 void prtv(nt*x) { printf(“%dn”,++*x);} mainO ii
D、 一个指向具有 M 个整型元素的一维数组的指针 E、ptr 是指向函数的指针 4、 已知:int a, *p=&a;则为了得到变量 a 的值,下列正确的表达式是( ) A、*&p B、*p C、p D、*&a E、&p 5、设有以下说明,则正确的叙述是( ) union data { int i; char c; float f; } a; A、a 所占的内存长度等于成员 f 的长度 B、a 所占的内存长度等于所有成员的长度和 C、a 的地址和它的各成员地址都是同一地址 D、可以在定义 a 时对它初始化 E、a 是共用体类型的别名 三、判断对错题(每题 1 分,共 5 分) 1、能直接让计算机识别的语言是c语言。 2、为避免嵌套的if语句的二义性,C语言规定else与其之前最近的if配对。 3、一般情况下,当两个指针指向同一个数组时,可在关系表达式中对两个指 针进行比较。 4、malloc函数用来在内存中分配一个指定长度的存储空间。 5、在函数外部定义的变量是全局变量。 四、阅读下面的程序,写出程序的运行结果(每题 3 分,共 15 分) 1、main() { int x=1,y=2,z=3; x+=y+=z; printf("%d",(x<y?x++:y++)); } 2、main() { int a[10]={1,2,3,-4,5,6,7,-8,9,10},s=0; for(int i=0;i<10;i++) { if (a[i]<0) break; s+=a[i]; } printf("%d",s); } 3、int f(int b[ ],int n) { int i, s=0; for(i=0; i<=n; i+=2) s+=b[i]; return s; } main() { int x,a[ ]={2, 3, 4, 5, 6, 7, 8, 9}; x=f (a, 5); printf(“%d”,x ); } 4、void prtv (int *x) { printf(“%d\n”, ++*x);} main() { int a=25;
prtv(&a); 5.inta33}={{2},{4},{6}; int i, "p=&aa[OJ[OT for(i=0; int num[ 26], 1; char c: for(=0;1<26计++)num[=0; while( )l=#)/*统计从终端输入的大写字母个数*/ if(isupper(c) num[c-65+=1 for(i=0i<26,++)/输出大写字母和该字母的个数*/ if(numi)printf( %c: %d,i( ).nu m[])
prtv(&a); } 5.int aa[3][3]={{2},{4},{6}}; main() { int i,*p=&aa[0][0]; for(i=0;i #include main() { int num[26],i; char c; for(i=0;i<26;i++) num[i]=0; while( ( ) !=’#’) /*统计从终端输入的大写字母个数 */ if(isupper(c)) num[c-65]+=1; for(i=0;i<26;i++) /*输出大写字母和该字母的个数 */ if(num[i]) printf(“%c:%d”, i( ),num[i]);
5.funl函数的调用语句为:funl(&a&b,&c)它将三个整数按由大到小的顺序调整后依次 放入a、b、c三个变量中,a中放最大数。请填空 void fun2 (int *x, int *y) i int t void funl(int*pa, int *pb, int *pc) f if("pc >*pb)fun2 if(pa #define m 100 void fun(int m, int* a, int *n) i int aa M), n, k; fun (50, aa, &n)
} 5.fun1函数的调用语句为:fun1(&a,&b,&c);它将三个整数按由大到小的顺序调整后依次 放入a、b、c三个变量中,a中放最大数。请填空。 void fun2(int *x,int *y) { int t; t= *x; *x= *y; *y= t; } void fun1(int *pa, int *pb, int *pc) { if(*pc > *pb) fun2( ); if(*pa #include #define M 100 void fun(int m,int *a,int *n) { } main() { int aa[M],n,k; fun(50,aa,&n);
for(k=0; k<n; k++) if((k+ 1)%20==0) printf(n); else print(%4d”ak]) printf("n”)
for(k=0;k<n;k++) if((k+1)%20==0) printf(“\n”); else printf(“%4d”,aa[k]); printf(“\n”); }