|
(28)有以下程序 void fun(char *a,char *b) { a=b; (*a)++; } main() { char c1='A',c2='a,*p1,*p2; clrscr0; pl=&cl; p2=&c2; fun(p1,p2); printf("%c%c\n",cl,c2); } 程序运行后的输出结果是__________。 A)Ab B)aa C)Aa D)Bb 答案:A 评析:在函数调用中,可以分值传递和地址传递。若参数传递的是简单数据类型的数值,称为值传递方式。若参数传递的是变量的地址,称为地址传递方式。 (29)若有定义:static int fun(int a,int b),则以下叙述中错误的是_________。 A)定义了一个返回值为整型的静态函数 B)该函数只能被同一文件内的函数调用 C)该函数可以在任何文件中被调用 D)该函数属于内部函数 答案:C 评析:根据函数能否被其他源文件调用,将函数区分为内部和外部函数。如果将函数定义为外部函数,则在函数首部最左端冠以关键字eXtem。如果将函数定义为内部函数,则在函数首部最左端冠以关键字static。内部函数只能被本文件中的其它函数调用。而外部函数则可以被其他任何c程序文件调用。 (30)以下能正确定义一维数组的选项是_________。 A)int num[]; B)int num[0..100]; C)#define N 100; D)int N=100; int num[N]; int num[N]; 答案:C 评析:有二种方法指定数组长度。其一是直接在数组名后面的方括号内输入数组的长度。其二是,在定义数组的同时对其赋值,由实际赋值的元素个数自动确定数组的长度。 (31)有以下程序 fun(int a[],intm,int n) { int I,J; for(i=m;i<n;i++) a[i+ll=a[I]+3; } main() { int i,a[6l={2,4,6,8,10,12}; clrscr0; fun(a,2,5); for(i=O;i<6;i++) printf("%"a[I]); } 程序运行后输出的结果是__________。 A)24691315 B)24691215 C)249121518 D)249121415 答案:B 评析:在调用函数时,既可以用单个的变量作为参数,也可以用数组名作为参数。还可将数组的下标值作为实参使用。在本题中,是将数组名和数组的下标值作为实参。 (32)以下不正确的叙述是__________. A)在C程序中,逗号运算符的优先级最低。 B)在C程序中,T和t是两个不同的变量 C)若a和b类型相同,在执行了赋值表达式a=b后,b中的值将放入a中,而b中的值不变。 D)当从键盘输入数据时,对于整型变量只能输入整型数据。对于实型变量只能输入实型数据。 答案:D 评析:在c语言中,为方便表达式的运算,对所有的运算符都设定了一定的优先级,其中逗号运算符的优先级最低。c语言中的数据有常量和变量之分,其中变量是区分大小写的,也就是说T和t是两个不同的变量名。将某个变量的值赋给其它的变量之后,并不影响其本身的值。当定义一个整型变量后,可以从键盘上对其输入整型值,也可以是字符型的数据。如果将字符型的值赋给整型变量,则它接受的是字符常量的ASCII码值。实型变量也可以接收整型值。 (33)有以下程序 pf(char *p,int n) { int i; for(i=0;i<n;i++1 p[i]=p[I]+32; } main() { char a[]="ABCD"; int i: clrscr(); pf(a,4); for(i=0;i<4;i++) printf("%c",a[I]); } 程序运行后的输出结果是________。 A)ABCD B)ABCD\0 C)abcd D)abed\0 答案:C 评析:通过指向数组的指针可以引用数组中的任何元素,并且对其进行各种运算。本题中就是通过指向数组的指针将一字符数组中的所有大写字母转换成相应的小写字母。 (34)有以下程序 main() { int a[3][3],*p,i; clrscr(); p=&a[0][0]; for(i=0;i<9;i++) p[i]:i+2; printf("%d\n",a[2][11); } 程序运行后的输出结果是_________。 A)3 B)6 C)9 D)2 答案:C 评析:当某个指针变量指向多维数组时,可以用其每次加l来顺序操作数组中的元素。在此题中,a[3][3]={{2,3,4},{5,6,7},{8,9,10}}。而最后输出的a[2][1]就是第3行的第2列的元素,即9。 (35)有以下程序 #include<stdio.h> #define F(X,Y)(X)*(Y) main() { int a=3,b=4; clrscr(); printf("%d\n",F(a--,++b)); } 程序运行后的输出结果是_________。 A)8 B)10 C)12 D)15 答案:D 评析。在带参数的宏定义中,不是简单的字符替换。其方法是:在程序中如果有带实参的宏, (如F(x,Y)),则按#define命令行中指定的字符串进行置换。如果串中包含宏中的形参(女NX,Y),、则将程序语句中相应的实参代替形参。本题中的宏定义展开后为:(a.--)*(++b)=(3)*(5)=15。 (36)有以下程序 main() { int x=3,y=2,z=l; printf("%d\n",x/y&&z); } 程序运行后的输出结果是_________。 A)0 B)l C)2 D)3 答案:B 评析:在c程序的标准输出函数prim冲,要注意表达式的优先级。如本题的表达式x/y&&z,先运算的是算术运算x/v,结果是1,然后才运算l&&z,结果是1。 (37)下列关于c程序编译的描述中,错误的是_________。 A)在程序的编译过程中可以发现所有的语法错误 B)在程序的编译过程中可以发现部分的语法错误 C)在程序的编译过程中不能发现逻辑错误 D)程序编译是调试程序的必经过程 答案:B 评析:编译过程实际上就是调试程序,找出程序中所有可能存在的语法错误。但是,对于程序逻辑上的一些错误,编译过程无能为力,只有程序编写人员自己通过一些良好的编程技巧和方法来排除。 (38)若有以下说明和定义 union、s { int i; char ch float e }a; 下列对共用体的操作正确的是________。 A)a='A'; B)re=a; C)a.i=3; D)printf("%dha",a); 答案:C 评析:共用体实际上用同一内存段来存放几种不同类型的成员,但在每一瞬时只能存放其中一种,而不是现时存放几种。因此,不能对共用体名赋值,不能引用共用体名以得到某一个值,也不能把共用体变量作为函数参数。 (39)下列选项中正确的语句组是_________。 A)char s[8];s={"Beijing"}; B)char *s;s={"Beijing"}; C)char s[8];s="Beijing"; D)char *s;s="Beijing"; 答案:D 评析:字符串通常是指用一对双引号括起来的一组字符常量序列。在c语言中,可以直接定义一个指向字符串的指针变量,然后对其赋值为字符串常量后,指向字符串的指针就指向了字符串的首地址。 (40)如果一个C程序由多个文件组成,在将多个文件编译连接成一个统一的可执行文件时,可采用的方法有多种,以下叙述中错误的是__________。 A)可以利用Turbo c集成环境 B)在MS C上进行编译连接 C)用#include命令 D)用文字处理软件Word 答案:D 评析:运算多个文件的程序有3种方法,第1种是利用Turbo c集成环境,先将每个文件输入并存储在磁盘上,然后在编译在状态下建立一个"项目文件",最后再编译连接。第2种方法是在MS c上先分别对多个文件进行编译得到.obj文件,然后用link命令把四个文件连接起来。第3种方法是用#include命令将多个文件包含进某个文件中。 (41)有以下程序 main() { int n,s=0; clrscr0; for(n=10;n<30;n++) { if(n%3==O) { s+=n; continue; } if(s>100)break; } printf("%d",s); } 程序运行后的输出结果是___________。 A)117 B)147 C)127 D)137 答案:A 评析:continue语句的功能是结束本次循环,即跳过循环体中下面尚未执行的语句,接着执行下一次是否执行循环的判定。而break语句是从循环体内跳出,即提前结束循环。 (42)有以下程序 main() { char s[]={'T','E','A','C','H','E','R'},*p; clrscr0; p=s+3; printf("%c",*p++); printf("%c",*p++); } 程序运行后的输出结果是________。 A)AC B)CH C)HE D)TEA 答案:B 评析:如果有指向字符数组的指针,那么字符数组中的元素可以用指针变量表示,执行第一个输出语句printf("%c",*p++);后,输出字符'C',执行第二个输出语句printr("%c",*p++);后,输出字符'H'。 (43)已定义以下函数 fun(char *pl,char*p2) { while(('pl='p2)『-'\0'』 { pl++; p2++; } } 函数的功能是__________。 A)将p2所指字符串复制到pl所指内存空间 B)将p2所指字符串的地址赋给指针p1 C)对pl和p2两个指针所指字符串进行比较 D)检查pl和p2两个指针所指字符串中是否有'\O' 答案:A 评析:指针的白加或自减运算,表示指针向前或向后移动一个存储单 | |
| 文章评论 | |||