else
{ flag=0; I=o;
Printf(“ input a hex number:”,htoi(t)); } } } }
htoi( char s[ ]) { int I, n; n=0;
for(I=0;s*I+!=’\\0’;I++)
n=n*2+s[I]-‘0’; return(n); }
3 #define NULL 0
#define LEN sizeof( struct student) struct student { char num[6]; char name[8]; char sex[2]; int age;
struct student * next; } stu[10]; main( )
{ struct stuent * p; *pt, * head; int I,length,iage,flag=1; int find=0; while(flag= =1)
, scanf(“%d”,&length); if (length<10) flag=0; }
for( I=0;I { p=(struct student *)malloc(LEN); if(I= =0) head=pt=p; else pt->next=p; pt=p; scanf(“%s”,p->num); scanf(“%s”,p->name); scanf(“%s”,p->sex); 21 scanf(“%d”,&p->age); } p->next=NULL; printf(“input age:”); scanf(“%d”,&iage); pt=head; p=pt; if( pt->age= =iage) { p=pt->next; head=pt=p; find=1; } else pt=pt->next; while (pt!=NULL) { if(pt->age= = iage) { p->next=pt->next; find=I; } else p=pt; pt=pt->next; } if(!find) printf(“not found\\n”); p=head; while(p!=NULL) , printf(“%4s%8s”,p->num,p->name); printf(“%6sm\\n,p->sex,p->age); p=p->next; } 江苏省C等级考试(四) 一、选择题(本题共20道小题,共40分。) 1. (14) 指针s所指字符串的长度为 char *s=\A) 19 B) 15 C) 18 D)说明不合法 2. 若有下面的程序片段: int a[12]={0}, *p[3], **pp, i; 22 for(i=0; i<3; i++) p[i]=&a[i*4]; pp=p; 则对数组元素的错误引用是 A) pp[0][1] 3. 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为 A) a<>0 B) !a C) a=0 4. 若已定义: int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i; 其中 0≤i≤9, 则对a数组元素不正确的引用上 A) a[p-a] B) *(&a[i]) C) p[i] D) a[10] 5. 以下程序的输出结果是 main( ) { int x=10,y=10,I; for(i=0;x>8;y=++i) printf(\,%d \,x--,y); } A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1 6. 下面程序的输出是 void prtv(int *x) printf(\main() { int a=25; prtv(&a);} A) 23 B) 24 C) 25 D) 26 7. 下面能正确进行字符串赋值操作的语句是 A)char s[5]={\ B)char s[5]={'A'、'B'、'C'、'D'、'E'}; C) char *s;s=\ D)char *s; scanf(\,s); 8. 设x,y,z,t均为int型变量,则执行以下语句后,t的值为 x=y=z=1;t=++x||++y&&++z; A)不定值 B)2 C)1 D)0 9. 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是 23 B) a[10] C) p[3][1] D) *(*(p+2)+2) D) a A)k=*p1+*p2; B)p2=k; C)p1=p2; D)k=*p1 *(*p2); 10. 请读程序: #include printf(\} 上面程序的输出结果是 A) 12 B) 15 C) 16 D) 20 11. sizeof(float)是: A) int B) float C) double D) 不确定 12. 若执行下面的程序时从键盘上输入3和4,则输出是 main() { int a,b,s; scanf(\s=a; if(a printf(\ A) 14 B) 16 C) 18 D) 20 13. 以下程序的输出结果是 # include { printf(\ } A) 不确定的(因变量无定义) B)0 C)-1 D)1 14. 请读程序: #include 24 } main() { printf(\上面程序的输出结果是 A) 3 B) 6 15. 下面各语句行中,能正确进行赋字符串操作的语句行是 A) char st[4][5]={\C) char *s; s=\ 16. 若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是 A) *p=&a; scanf(\,p); B) p=(long *)malloc(8); scanf(\,p); C) scanf(\,p=&a); D) scanf(\,&a); 17. 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是 A) p+1 B) a+1 C) a++ D) ++p 18. 下面程序的输出是 main() { enum team {my,your=4,his,her=his+10}; printf(\A) 0 1 2 3 B) 0 4 0 10 19. 以下程序输出结果是 main( ) { int m=5; if(m++>5)printf(\,m); else printf(\,m--); } A)7 B)6 C)5 D)4 20. 以下程序运行后,输出结果是 int d=1; fun(int p) { int d=5; d+=p++; printf(\,d); } main() 25 C) 8 D) 0 B) char s[5]={'A','B','C','D','E'}; D) char *s; scanf(\ C) 0 4 5 15 D) 1 4 5 15