文档介绍:C语言复习题_指针&结构体
一、选择
1、若有以下定义:char s[20]="programming",*ps=s; 则不能代表字符'o'的表达式是A。
A) ps+2 B) s[2] C) ps[2] D) ps+=2,*ps
2、若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是B。
A) *p B) a[10] C) *a D) a[p-a]
3、已知 int *p,a; p=&a; 这里的运算符& 的含义D。
A) 位与运算 B) 逻辑与运算 C) 取指针内容 D) 取变量地址
4、定义结构体如下:
struct student
{ int num;
char name[4];
int age;
};
则printf(“%d”,sizeof(struct student))的结果为: 12。
5、若有定义如下:int i=3,*p=&i; 显示i的值的正确语句是B。
A) printf(“%d”,p);
B) printf(“%d”,*p);
C) printf(“%p”,*p);
D) printf(“%p”,p);
6、在定义结构体时,下列叙述正确的是A。
A) 系统不会分配空间
B) 系统会按成员大小分配空间
C) 系统会按最大成员大小分配空间
D) 以上说法均不正确
7、指针是一种D。
A) 标识符 B) 变量 C) 运算符 D) 内存地址
8、定义struct s {int x; char y[6];} s1;,请问正确的赋值是C。
A) =”abc”;
B) s1->y=”abc”;
C) strcpy(,”abc”);
D) (y,”abc”);
9、已知定义“int x = 1, *p”,则合法的赋值表达式是A。
A) p = &x B) p = x C) *p = &x D) *p = *x
10、在C语句中,&后跟指针变量名,表示该指针变量的C。
A) 值 B) 别名 C) 地址 D) 类型
二、程序填空
1、下面程序的功能是实现数组元素中值的逆序。
#include <>
void invert(int *s, int num);
int main( )
{
int i, n=5, a[5]={1,2,3,4,5};
1 ; //调用函数逆序
for(i=0;i<5;i++)
2 ;//输出逆序后的数组元素
return 0;
}
void invert(int *s, int num)
{
int *t,k;
t=s+num;
while( 3 )
{
k=*s;
*s=*t;
*t=k;
4 ;
5 ;
}
}
答:(1) invert(a,n-1); (2) printf(“%4d”,a[i]) (3) s<t (4) s++ (5) t--
三、程序改错
1、以下程序的功能是:输入两实参a, b,调用函数fun后,输出a,b的值已进行交换。
仔细阅读程序,请先指出错误行号,并改正使它能得出正确的结果。
注意: