- 分析下列程序的运行结果,并上机验证
main
{
int i, j, *pi, *pj;
pi=&i; pj=&j;
i=5; j=7;
printf( "%d\t%d\t%d\t%d", i, j, pi, pj );
printf( "\n%d\t%d\t%d\t%d\n", &i, *&i, &j, *&j );
}
运行结果:5 7 1703724 1703720
1703724 5 1703720 7
② main()
{ int a[ ]={ 1, 2, 3 };
int *p, i;
p=a;
for ( i=0; i<3; i++ )
printf( "%d %d %d %d\n", a[i], p[i], *(p+i), *(a+i) );
}
运行结果:1 1 1 1
2 2 2 2
3 3 3 3
③ main()
{ int a[ ]={ 2, 5, 3, 6, 8 };
int *p, i=1, s=0;
for ( p=a; p<a+5; p++ )
{ i*=*p; s+=*p; }
printf( "%d %d\n", i, s);
}
运行结果:1440 24
④ int ff( char *x )
{ char *p=x, *q;
int i, k=1;
q = p+strlen(x)-1;
for ( i=1; i<=strlen(x)/2; i++)
if (*p==*q) { p++; q--; }
else { k=0; break; }
return k;
}
main()
{ char a[80];
gets(a);
if ( ff (a)==1 ) printf( "*****\n");
else printf("%%%\n");
}
若从键盘输入:asdfghgfdsa
则输出结果为:*****
若从键盘输入:aweftfew
则输出结果为:%
用户自定义函数的功能是:检测一个字符串左右是否对称,若对称输出“*****”,若不对称输出“%”。
- 以下是求三个数中的最大数的程序,试完整程序。
void cut( int *p, int *q)
{ int t;
t=*p; *p=*q ; *q=t; }
main()
{ int a, b, c;
scanf( "%d%d%d", &a, &b, &c );
if ( a<b ) cut(&a,&b);
if ( a<c ) cut(&a,&c);
printf( "%d\n", a );
}
3、以下是将字符串复制到另一个字符串中的源程序,其中函数cprstr的形参为两个字符指针变量,其中,pm指向原字符串,pn指向目标字符串,试完整源程序。
#include "stdio.h"
void cpystr( char *pm, char *pn)
{
while ( ( *pn=*pm )!='\0' )
{ pn++ ;
pm++ ;
}
}
main( )
{ char *pa="BEIJING CHINA", b[20], *pb;
pb=b;
cpystr ( pa,pb );
printf( "string_a=%s\nstring_b=%s\n", pa, pb );
}