6指针 联系客服

发布时间 : 星期四 文章6指针更新完毕开始阅读58782b4bb14e852459fb574c

}

三、程序分析题

1. 写出下列程序段的输出结果。

static char s[ ]=”student”; printf(“%s\\n”, s+2); 输出结果: udent

2. 写出下列程序段的输出结果。

char *st[ ]={ “one”, “two”, “three”, “four” }; printf(“%s\\n”, *(st+3)+1);

输出结果: our

3. 假设下列程序保存在test .c中,编译后运行test hello world,写出程序的输出结果。

void main( int argc , char *argv[ ]) { printf(“%d %s”, argc , argv[1]+1); }

输出结果: 3 ello 4. 设有下列程序: #include

void main (int argc, char *argv[ ]))

{ while (--argc>0) printf (“%s”, argv [argc]); printf (“\\n”) ; }

假定上述程序编译连接成目标程序名为p.exe,如果输入如下的命令: p 123 AAA BBB ↙ (其中的↙表示回车)

命令行中有4个字符串(包括p),: argc=4, argv[0]→p, argv[1]→123, argv[2]→AAA,

argv[3]→BBB。因此, 输出结果是 BBB AAA 123 5. 阅读下列程序,写出程序的输出结果。 void main( )

{ char *a[6] ={“AB”,“CD”, “ED”, “GH” “IJ” “KL”}; int i;

for(i=0;i<4;i++) printf(“%s”,a[i]); printf(“\\n”); }

程序输出:ABCDEFGH

6. 阅读程序,写出程序的主要功能。 void main( )

{ int i, a[10], *p=a;

for(i=0;i<10;i++) scanf(“%d”, p++); for(--p; p>=a; ) printf(“%d\\n”, *p--); }

程序的主要功能:把输入的10个整数反序一行一个的输出。

7. 阅读下列程序,写出程序运行的输出结果。 char s[ ]=”ABCD” ; void main( ) { char *p;

for(p=s;p

程序运行的输出结果:A ABCD B BCD C CD D D

8. 阅读下列程序,写出程序运行的输出结果。 #include void main( )

{ char *alpha[4] ={″ABCD″,″EFGH″,″IJKL″,″MNOP″}; char *p; int i; p=alpha[0];

for(i=0;i<4;p=alpha[++i]) printf(″%c″,*(p)); printf(″\\n″); }

四个字符指针指向四个字符串,程序每次循环p指向一个字符串,*p输出第一个字符, 运行的输出结果:AEIM

9. 阅读下列程序,写出程序运行的输出结果。 #include void main() { int s[4][4],i,j; for(i=0;i<4;i++)

for(j=0;j<4;j++) *(*(s+i)+j) =i-j; for(j=0;j<4;j++)

{ for(i=0;i<4;i++) printf(″M″,*(*(s+i)+j)); printf(″\\n″); } }

程序运行输出结果:0 1 2 3 -1 0 1 2 -2 –1 0 1 -3 –2 –1 0

10.阅读下列程序,写出程序运行的输出结果。 #include

void main( ) { static int a[4][4]; int *p[4],i,j;

for(i=0; i<4; i++) p[i] =&a[i][0]; for(i=0; i<4; i++)

{ *(p[i]+i)=1; *(p[i]+4-(i+1))=1; } for(i=0;i<4;i++)

{ for(j=0;j<4;j++); printf(″-″,p[i][j]); printf(″\\n″); }

}

程序运行输出结果:1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1

11. 阅读下列程序,写出程序运行的输出结果 #include void main( ) { int x=3,y=5;

void p(int *a,int *b); p(&x,y);

printf(“x=%d,y=%d\\n”, x , y); p(&y, x) ;

printf(“x=%d,y=%d\\n”, x , y); }

void p(int *a, int b) { *a=10; b=20; }

程序运行输出结果: x=10 , y=5 x=10 , y=10 12. 写出下列程序的运行结果

#include int z;

void p(int *x,int y)

{ ++*x; y--; z=*x+y; printf(“%d,%d,%d\\n”, *x, y, z) ; }

void main( )

{ int x=2 , y=3 , z=4 ; p(&x , y) ;

printf(“%d,%d,%d\\n”, *x, y, z) ; }

程序运行输出结果:3 , 2 , 5 3 , 3 , 4

四、程序设计题(全部题目均要求用指针方法实现)

1.输入3个整数,按从大到小的次序输出。 #include void main( )

{ int a,b,c, *pa=&a, *pb=&b, *px=&c; scanf(“%d,%d,%d’,pa,pb,pc); if(*pa>=*pb)

if(*pb>*pc) printf(“%d,%d,%d\\n“,*pa,*pc,*pb); else if(*pa>*pc) printf(“%d,%d,%d\\n“,*pa,*pc,*pb); else printf(“%d,%d,%d\\n“,*pc,*pa,*pb); else if(*pc>*pb) printf(“%d,%d,%d\\n“,*pc,*pb,*pa); else if(*pa>*pc) printf(“%d,%d,%d\\n“,*pb,*pa,*pc); else printf(“%d,%d,%d\\n“,*pb,*pc,*pa); }

2.编一个程序,输入15个整数存入一维数组,再按逆序重新存放后再输出。 #include #define N 15 void main( ) { int a[N],b,*p,*q;

for(p=a;p

for(p=a;p

3.输入一个字符串,按相反次序输出其中的所有字符。 #include #include void main( )

{ char str[81], *sptr; gets(str);

sptr=str+srlen(str)-1;