若有以下定义及语句: struct s1 {char a[3]; int num; }t={‘a’,’b’,’c’,4},*p; p=&t; 则输出值为c的语句是( )
A: printf(“%c\n”,p->t.a[2]);
B: printf(“%c\n”,(*p).a[2]);
C: printf(“%c\n”,p->a[3]);
D: printf(“%c\n”,(*p).t.a[2]);
A: printf(“%c\n”,p->t.a[2]);
B: printf(“%c\n”,(*p).a[2]);
C: printf(“%c\n”,p->a[3]);
D: printf(“%c\n”,(*p).t.a[2]);
举一反三
- 以下程序的输出结果为()。#include "stdio.h"struct{int x;char *c;}st[2]={{1,"ab"},{2,"cd"}},*p=st;main(){printf("%c\t",*p->c);printf("%s\n",(++p)->c); }
- 已知: struct st { int n; struct st *next; }; static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]},*p; 如果下述语句的显示是 2,则对p的赋值是( ) printf("%d",++(p->next->n));
- 设已有定义:int a[10] = {15,12,7,31,47,20,16,28,13,19}, *p;下列语句中正确的是:( )。 A: for(p=a; a<(p+10); a++){ printf("%d\t",*p);} B: for(p=a; p<(a+10); p++){ printf("%d\t",*p);} C: for(p=a,a=a+10; p<a; p++){ printf("%d\t",*p);} D: for(p=a; a<p+10; ++a){ printf("%d\t",*p);}
- 以下程序输出结果是____。struct student{short int x ; short int *y;} *p ;short int dt[4]={ 10 , 20 , 30 , 40 };struct student a[4]={50,&dt[0],60,&dt[1],70 ,&dt[2],80,&dt[3]} ;...p=a;printf("%d ",++p->x); printf("%d ",(++p)->x); printf("%d\n",++(*p->y)); }
- 以下程序的运行结果是______。voidswap(int**r,int**s){int*t;t=*r;*r=*s;*s=t;}voidmain(){inta=1,b=2,*p,*q;p=&a;q=&b;swap(&p,&q);printf("%d,%d\n",*p,*q);}