资源描述:
《c语言复习题指针结构体》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言复习题_指针&结构体一、选择1、若有以下定义:chars[20]="programming"/*ps=s;则不能代表字符'o'的表达式是A。A)ps+2B)s[2]C)ps[2]D)ps+=2,*ps2、若有以下定义和语句:inta[10]={l,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是旦。A)*pB)a[10]C)*aD)a[p-a]3、己知int*p,a;p=&a;这里的运算符&的含义A)位与运算B)逻辑与运算C)取指针内容D)取变量地址4、定义结构体如下:structstudent{intnum;charname[4];int
2、age;};则printf(“%d”,sizeof(structstudent})的结果为:5、若有定义如下:inti=3,*p=&i;显示i的值的正确语句是旦。A)printf("%d",p};B)printf("%d",*p);C)printf("%p"、*p);D)printf("%p",p);6、在定义结构体时,下列叙述正确的是垒。A)系统不会分配空间B)系统会按成员大小分配空间C)系统会按最大成员大小分配空间D)以上说法均不正确7、指针是一种D。A)标识符B)变量C)运算符D)A存地址8、定义structs{intx;chary[6];}si;,请问正确的赋值是A)s
3、l.y=”abc”;B)sl-〉y=”abc”;C)strcpy(sl.y,”abc”D)sl.strcpy(y,”abc”);9、已知定义“intx=则合法的赋值表达式是厶。A)p=&xB)p=xC)*p=&xD)*p=*x10、在C语句中,&后跟指针变量名,表示该指针变量的A)值B)别名C)地址D)类型二、程序填空1、下面程序的功能是实现数组元素中值的逆序。includevoidinvertfint*s,intnum);intmain(){inti,n=5,a[5]={l,2,3,4,5};1://调用函数逆序for(i=0;i<5;i++)2://输出逆
4、序后的数组元素return0;}voidinvert(int*s,intnum){int*t,k;t=s+num;while(3){k=*s;*s=*t;*t=k;4•,5;}}答:(1)invert(a,n-l);(2)printf("%4d",a[i]>⑶sintmain()②voidfun(in
5、t*x,*y){inta,b;③{intt;⑦printf("Entera,b:");④t=x;⑧scanf("%d%d"za,b);⑤x=y;⑨printf("a=%db=%d"/a,b);⑥y=t;⑱fun(a?b);}printf("a=%db=%d",a,b);return0;}1、第2行改为intfun(int*x,int*y)2、第4行改为t=*x;3、第5行改为*x=*y;4、第6行改为*y=t;4、第8行改为scanf("%d%d",&a/&b);5、第10行改为fun(&a,&b);四、写出程序运行结果1、仔细阅读下面的程序,假设时间a是07:
6、59:59,时间b是08:10:02,请写出程序的输入和输山结果。#includestructTIME{inthour,minute,second;};voidInputTime(structTIME*p){scanf("%d:%d:%d",&p-〉hour,&p->minute,&p->second);}voidOutputTime(structTIMEp){printf("%02d:%02d:%02d,',p.hour,p.minute,p.second);}intSub(structTIMEx,structTIMEy){inttl=x.hour*3600
7、+x.minute*60+x.second;intt2=y.hour*3600+y.minute*60+y.second;returntl-12;}intmain(){structTIMEa,b;intr;printf("a=?");InputTime(&a);printff’b=?•’);InputTime(&b);r=Sub(b,a);printf("a==’•);OutputTime(a);putchar(’’);printf(nb==");OutputTime(b);putcha