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)%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 main() {static char b[]=“Goodbye”; char *chp=&b[7]; while(--chp>=&b[0]) putchar(*chp); putchar(‘\n’); } 26.若输入:this test terminal,以下程序的输出结果为:terminal test this。填空补充以下程序。 #include #define MAXLINE 20 main() {int i; 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; 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); 编辑推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |