char b[]=“ABCD”; main()
{char *chp;
for(chp=b; *chp; chp+=2) printf(“%s”, chp); printf(“\\n”); }
17.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。 #include
{char str[81],*sptr; int i;
for(i=0;i<80;i++) {str[i]=getchar();
if(str[i]==?\\n?) break; }
str[i]= '\\0' ; sptr=str;
while(*sptr) putchar( *sptr++ ); }
18.fun1函数的调用语句为:fun1(&a,&b,&c);它将三个整数按由大到小的顺序调整后依次放入a、b、c三个变量中,a中放最大数。请填空。 void fun2(int *x, int *y) {int t;
t=*x; *x=*y; *y=t; }
void fun1(int *pa,int *pb,int *pc)
{if(*pc>*pb) fun2( pc,pb ); if(*pa<*pc) fun2( pa,pb ); if(*pa<*pb) fun2( pa,pc ); } 19.以下函数用来在w数组中插入数x,w数组中的数已按由小到大的顺序存放,n所指存储单元中存放数组中数据的个数,x插入后数组中的数仍有序。请填空。 void fun(char *w,char x,int *n) {int i,p; p=0;
w[*n]=x;
while(x>w[p]) p++ ;
for(i=*n;i>p;i--) w[i]= w[i-1] ; w[p]=x; ++*n; }
20.阅读程序: main()
{char str1[]=“how do you do”, str2[10]; char *p1=str1, *p2=str2; scanf(“%s”, p2); printf(“%s ”, p2); printf(“%s\\n”, p1); }
运行上面的程序,输入字符串HOW DO YOU DO,则程序的输出结果是 HOW how do you do 。
21.下面程序的输出结果是 SO 。 main()
{char *p[]={“BOOL”, “OPK”, “H”, “SP”}; int i;
for(i=3;i>=0;i--,i--) printf(“%c”,*p[i]); printf(“\\n”); }
22.下面程序的输出结果是 17 。 funa(int a,int b) {return a+b;}
funb(int a,int b) {return a-b;}
sub(int(*t)(),int x,int y) {return((*t)(x,y));} main()
{int x,(*p)(); p=funa;
x=sub(p,9,3); x+=sub(funb,8,3); printf(“%d\\n”, x); }
23.下面程序的输出结果是 XYZA 。 #include
void fun(char *a1,char *a2,int n) {int k;
for(k=0;k a2[k]=(a1[k]-?A?-3+26)&+?A?; a2[n]=?\\0?; } main() {char s1[5]=“ABCD”, s2[5]; fun (s1, s2, 4); puts(s2); } 24.下面程序的输出结果是 7 1 。 void as(int x,int y,int *cp,int *dp) {*cp=x+y; *dp=x-y; } main() {int a=4,b=3,c,d; as(a,b,&c,&d); printf(“%d %d\\n”,c,d); } 25.下面程序的输出结果是 eybdooG 。 #include {static char b[]=“Goodbye”; char *chp=&b[7]; while(--chp>=&b[0]) putchar(*chp); putchar(?\\n?); } 26.若输入:this test terminal,以下程序的输出结果为:terminal test this。填空补充以下程序。 #include char *pstr[3],str[3][MAXLINE]; for(i=0;i<3;i++) pstr[i]=str[i]; for(i=0;i<3;i++) scanf(“%s”,pstr[i]); sort(pstr); for(i=0;i<3;i++) printf(“%s\\n”,pstr[i]); } sort( char *pstr [3] ) {int i,j; char *p; for(i=0;i<3;i++) {for(j=i+1;j<3;j++) {if(strcmp(*(pstr+i),*(pstr+j))>0) {p=*(pstr+i); *(pstr+i)= *(patr+j) ; *(pstr+j)=p; } } } } 27.以下程序利用指针法将两个数按从小到大的顺序输出来。 main() {int a,b, *p1,*p2 , p ; printf(“input a, b:”); scanf(“%d%d”, &a,&b); p1=&a ; p2=&b; if(a {p=p1; p1=p2; p2=p;} printf(“a=%d b=%d\\n”,a,b); printf(“max=%d min=%d\\n”, *p1,*p2 ); } 28.以下程序的输出结果是 8 。 fun(int n,int *s) {int f1,f2; if(n==1||n==2) *s=1; else {fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2; } } main() {int x; fun(6,&x); printf(“%d\\n”,x); } 29.下面的程序通过函数average计算数组中各元素的平均值,请填空。 float average(int *pa,int n) {int i; float avg=0.0; for(i=0;i avg=avg+ *(pa+i) ; avg= avg/n ; return avg; } main() {int i,a[5]={2,4,6,8,10}; float mean; mean=average(a,5); printf(“mean=%f\\n”,mean); } 30.以下程序将字符串s1中的所有与字符串str1相同的子串替换成字符串str2,并将替换后的新串存于字符数组s2中。 #include void replace(char *s1,char *s2,char *str1,char *str2) {char *t0,*t1,*t2;