函数部分
1. 以下正确的说法是(A).
如果在一个函数中的复合语句中定义了一个变量,则该变量 A)只在该复合语句中有效 B)在该函数中有效
C)在本程序范围内均有效 D)非法变量
2. 以下不正确的说法为( D ).
A)在不同的函数中可以使用相同名字的变量 B)形式参数是局部变量
C)在函数内定义的变量只在本函数范围内有效
D)在函数内的复合语句中定义的变量在本函数范围内有效
3. 下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是
【 void add (float a, float b) 】;改正后为【float add (float a, float b)】。 Void add(float a,float b) { float c; c=a+b; return c; }
4. 若输入一个整数10,以下程序的运行结果是【 1010 】。 main()
{ int a,e[10],c,i=0;
printf(“输入一整数\\n”); scanf(“%d”,&a); while(a!=0) {c=sub(a); a=a/2; e[i]=c; i++ }
for(;i>0;i--) printf(“%d”,e[i-1]); }
sub(int a) { int c; c=a%2; return c; }
预编译
1. 请读程序:
#define ADD(x) x+x main() {
int m=1,n=2,k=3; int sum=ADD(m+n)*k; printf(“sum=%d”,sum); }
上面程序的运行结果是(B)。
A)sum=9 B)sum=10 C)sum=12 D)sum=18 指针
1. 变量的指针,其含义是指该变量的( B )。
A)值 B)地址 C)名 D)一个标志
2. 若已定义int a=5;下面对(1),(2)两个语句的正确解释是( D )。 (1)int *p=&a; (2) *p=a;
A)语句(1)和(2)中的 *p含义相同,都表示给指针变量p赋值
B)(1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p C)(1)在对p进行说明的同时进行初始化,使p指向a (2)将变量a的值赋给指针变量p
D)(1)在对p进行说明的同时进行初始化,使p指向a (2)将变量a的值赋于*p
3. 若有语句int *point,a=4;和point=&a; 下面均代表地址的一组选项是( D )。 A)a,point,*&a B)&*a,&a,* point C)*&point,*point,&a D)&a,&*point,point
4. 设 char *s=”\\ta\\017bc”; 则指针变量s指向的字符串所占的字节数是( C )。 A)9 B)5 C)6 D)7
5. 下面程序段中,for循环的执行次数是(C)。 char *s=”\\ta\\018bc”;
for ( ;*s! =’\\0’;s++) printf(“*”); A)9 B)5 C)6 D)7 6. 下面程序段的运行结果是( C )。 char *s=”abcde”;
s+=2; printf(“%d”,s);
A)cde B)字符’c’ C)字符’c’的地址 D)无确定的输出结
7. 下面程序的运行结果是(C)。 #include
{char *p1,*p2,str[50]=”abc”;
p1=”abc”; p2=”abc”; strcpy(str+1,strcat(p1,p2)); printf(“%s\\n”,str);}
A) abcabcabc B)bcabcabc C) aabcabc D)cabcabc
8. 若有以下定义,则对a数组元素的正确引用是( D )。 int a[5],*p=a;
A) *&a[5] B) a+2 C) *(p+5) D)*(a+2)
9. 若有以下定义,则对a数组元素地址的正确引用是( D )。 int a[5],*p=a;
A) p=5 B)*a+1 C)&a+1 D)&a[0]
10. 若有定义:int a[2][3];则对数组a的第i行第j列(假设i,j已正确说明并赋值)
元数地址的正确引用为( D )。
A)*(a[i]+j) B)(a+i) C)*(a+j) D)a[i]+j
11. 若有定义:int a[5];则a数组中首元素的地址可以表示为( C )。 A)&a B)a+1 C)a D)&a[1]