发布时间 : 星期四 文章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
{ 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
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 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
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
{ 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
for(p=a;p for(p=a;p 3.输入一个字符串,按相反次序输出其中的所有字符。 #include { char str[81], *sptr; gets(str); sptr=str+srlen(str)-1;