while( *s1 )
{for(t0=s1,t1=str1;(*t1!=?\\0?&& *t0=*t1 );t0++,t1++); if(*t1!=?\\0?) *s2++ = *s1++ ; else
{for(t1=str2;*t1!=?\\0?;) *s2++ = *t1++ ; s1=t0 ; } }
*s2=?\\0?; }
main()
{static char s1[]=“abcef ababcd abab.”, s2[25]; replace (s1, s2, “abc”, “XYZ”); printf(“%s\\n”, s2); }
31.以下语句的输出结果是 hELLO! 。 char s[80],*sp=“HELLO!”; sp=strcpy (s, sp); s[0]=?h?; puts(s);
第十一章 结构体与共用体 一 单项选择题
1.以下程序的输出结果是( )。 struct student {char name[20]; char sex; int age;
}stu[3]={“Li Lin”, ?M?, 18, “Zhang Fun”, ?M?, 19, “Wang Min”, ?F?, 20}; main()
{struct student *p; p=stu;
printf(“%s, %c, %d\\n”, p->name, p->sex, p->age); }
A) Wang Min,F,20 B) Zhang Fun,M,19 C) Li Lin,F,19 D) Li Lin,M,18 2.设有以下语句:
struct st{int n; struct st *next;};
static struct st a[3]={5, &a[1], 7, &a[2], 9, ?\\0?},*p; p=&a[0];
则表达式( )的值是6。
A) p++ ->n B) p->n++ C) (*p).n++ 3.以下四个程序中,( )不能对两个整型变量的值进行交换。A) #include
{int a=10,b=20; swap(&a,&b);
printf(“%d %d\\n”,a,b); }
swap(int *p,int *q) {int *t;
t=(int *)malloc(sizeof(int)); *t=*p; *p=*q; *q=*t; }
B) main()
{int a=10,b=20; swap(&a,&b);
printf(“%d %d\\n”,a,b); }
swap(int *p,int *q) {int t;
t=*p; *p=*q; *q=t; }
C) main()
{int *a,*b;
D) ++p->n *a=10; *b=20; swap(a,b);
printf(“%d %d\\n”,*a,*b); }
swap(int *p,int *q) {int t;
t=*p; *p=*q; *q=t; }
D) main()
{int a=10,b=20; int *x=&a,*y=&b; swap(x,y);
printf(“%d %d\\n”,a,b); }
swap(int *p,int *q) {int t;
t=*p; *p=*q; *q=t; }
4.下面程序的输出结果是( )。 struct st {int x; int *y; }*p;
int dt[4]={10, 20, 30, 40};
struct st aa[4]={50, &dt[0], 60, &dt[1], 70, &dt[2], 80, &dt[3]}; main() {p=aa;
printf(“%d ”, ++p->x); printf(“%d ”, (++p)->x); printf(“%d\\n”, ++(*p->y)); }
A) 10 20 20 B) 50 60 21 C) 51 60 21 D) 60 70 31 5.若要用下面的程序片段使指针变量p指向一个存储整型数据的动态存储单元,则应填入( )。 int *p;
p= malloc(sizeof(int));
A) int B) int * C) (* int) D) (int *)
6.若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是( )。 data next
head E F NULL p G
A) s->next=NULL; p=p->next; p->next=s; B) p=p->next; s->next=p->next; p->next=s; C) p=p->next; s->next=p; p->next=s;
D) p=(*p).next; (*s).next=(*p).next; (*p).next=s; 7.以下程序的输出结果是( )。 #include
void fun(float *p1,float *p2, float *s) {s=(float *)calloc(1, sizeof(float)); *s=*p1+*(p2++); }
main()
{float a[2]={1.1, 2.2}, b[2]={10.0, 20.0}, *s=a; fun (a, b, s);
printf(“%f\\n”, *s); }
A) 11.100000 B) 12.100000 C) 21.100000 D) 1.100000
8.字符‘0’的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是( )。 #include
printf(“%c\\n”, s->c[0]); }
A) 39 B) 9 C) 38 D) 8
9.若有说明:long *p, a; 则不能通过scanf语句正确给输入项读入数据的程序段是( )。
A) *p=&a; scanf(“%ld”,p);
B) p=(long *)malloc(8); scanf(“%ld”,p); C) scanf(“%ld”,p=&a); D) scanf(“%ld”,&a);
10.以下选项中,能定义s为合法的结构体变量的是( )。