c语言作业 下载本文

#define Z Y*X/2

则执行以下printf语句后,输出结果是( )。 Int a;a=Y;

Printf(“%d\\n”,Z); Printf(“%d\\n”,--a); A)7 B)12 C)12 D)7 6 6 5 5 作业十 指针 一、选择题

1以下程序有错,错误的原因是( )。 main()

{int *p,i;char *q,ch; p=&i;

q=&ch; *p=40;

*p=*q; }

A)p和q的类型不一致,不能执行*p=*q;语句

B)*p中存放的是地址值,因此不能执行*p=40;语句 C)q没有指向具体的存储单元,所以*q没有实际意义 D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句

2已有定义 int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。

A)k=*ptr1+*ptr2; B)ptr2=k; C)p1=*p2; D)*p1=p2;

3变量的指针,其含义是指该变量的( )。

A)值 B)地址 C)名 D)一个标志

4若已定义int a=5;下面对(1),(2)两个语句的正确解释是( )。 (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

5若有语句int *point,a=4;和point=&a; 下面均代表地址的一组选项是(D)。 A)a,point,*&a B)&*a,&a,* point

C)*&point,*point,&a D)&a,&*point,point

6以下程序输出的结果是( )

void main()

{ int a=5,*p1,**p2; p1=&a,p2=&p1; (*p1)++;

printf(“%d\\n”,**p2); }

A) 5 B) 4 C) 6 D) 不确定

7若有说明:int *p,m=5,n; 以下正确的程序段是( )。 A)p=&n; B)p=&n;

scanf(“%d”,&p); scanf(“%d”,*p);

C)scanf(“%d”,&n); D)p=&n;

*p=n; *p=m

8若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是( )。 A)p1=&m;p2=&p1;

B)p1=&m;p2=&n;*p1=*p2; C)p1=&m;p2=p1 D)p1=&m;*p2=*p1;

9已有变量定义和函数调用语句:int a=25; print_value(&a);下面函数的正确输出结果是( )。

void print_value(int *t) { print(“%d\\n”,++*x);}

A)23 B)24 C)25 D)26

10下面判断正确的是( )。

A)char * a=”china”;等价于 char *a;*a=”china”;

B)char str[10]={“china”};等价于char str[10];str[]={“china”}; C)char *s=”china”; 等价于 char *s; s=”china”;

D)char c[4]=”abc”,d[4]=”abc”; 等价于 char c[4]=d[4]=”abc”;

11设 char *s=”\\ta\\017bc”; 则指针变量s指向的字符串所占的字节数是( )。 A)9 B)5 C)6 D)7

12下面程序段中,for循环的执行次数是( )。 char *s=”\\ta\\018bc”;

for ( ;*s! =’\\0’;s++) printf(“*”); A)9 B)5 C)6 D)7

13下面能正确进行字符串赋值操作的是( )。

A) char s[5]={“ABCDE”}; B) char s[5]={‘A’,’B’,’C’,’D’,’E’}; C) char *s; s=”ABCDE”; D) char *s; scanf(“%s”,s);

14下面程序段的运行结果是( )。 char *s=”abcde”;

s+=2; printf(“%d”,s);

A)cde B)字符’c’ C)字符’c’的地址 D)无确定的输出结果

15设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是( )。

A)c=*p1+p2; B)p2=c C)p1=p2 D)c=*p1*(*p2);

作业十一 结构体与共用体

1已知学生记录描述为 struct student

{int no;

char name[20]; char set; struct

{int year; int month; int day; }birth; };

struct student s;

设变量s中的“生日”应是“1984年11月11日”,下列对生日的正确赋值方式是( ).

A)year=1984; B)birth.year=1984; month=11; birth.month=11; day=11; birth.day=11;

C)s.year=1984; D)s.birth.year=1984; s.month=11; s.birth.month=11; s.day=11; s.birth.day=11;

2当说明一个结构体变量时系统分配给它的内存是( ). A)各成员所需内存量的总和 B)结构中第一个成员所需内存量

C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量

3以下对结构体类型变量的定义中不正确的是( ). A)#define STUDENT struct student STUDENT {int num; float age; }std1;

B)struct student {int num; float age; }std1;

C)struct {int num; float age; }std1;

D)struct int num; float age; }student;

struct student std1;

4设有以下说明语句 struct stu {int a; float b; }stutype;

则下面的叙述不正确的是( ). A)struct是结构体类型的关键字

B)struct stu是用户定义的结构体类型 C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名

5C语言结构体类型变量在程序执行期间( ).. A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中

6在16位IBM-PC机上使用C语言,若有如下定义: struct data {int i; char ch; double f; }b;