任务35:指针数组、数组指针、指向指针的指针 《编程语言-C语言》45分钟专题训练
|
2份
|
26页
|
90人阅读
|
1人下载
内容正文:
湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《编程语言—C语言》
项目七: 指针
第35卷: 指针数组、数组指针、指向指针的指针
时间:45分钟 总分:100分
班级___________ 姓名__________ 学号__________ 成绩________
一、选择题(共23小题,每小题2分,共46分)
1.若有说明语句:int *ptr[10];则以下叙述中,正确的一项是( )
A.ptr是一个具有10个指针元素的一维数组,每个元素都只能指向整型变量
B.ptr是指向整型变量的指针
C.ptr是一个指向具有10个整型元素的一维数组的指针
D.ptr是一个指向10个整型变量的函数指针
2.执行以下程序段的输出结果是( )
main()
{int **pp,*p,a=10,b=20;
pp=&p;
p=&a;
p=&b;
printf("%d,%d
",*p,**pp);getch();}
A.10,20 B.10,10 C.20,20 D.20,10
3.设有定义:int t[3][2],*pt[3],k;,则执行语句for(k=0;k<3;k++) pt[k]=t[k];后,下列选项中能正确表示t数组元素地址的表达式是( )
A.&t[3][2] B.*pt[2] C.*(pt+1) D.&pt[2]
4.以下程序段的输出结果是( )
main()
{int a[ ]={0,2,4,6,8,10,12,14,16,18,20,22,24,26},*q[4],k;
for(k=0;k<4;k++)q[k]=&a[k*3];
printf("%d
",q[3][0]);getch();}
A.16 B.18 C.20 D.22
5.设有定义:int w[3][4]={{0,1},{2,4},{5,8}};int (*p)[4]=w;则以下选项中,数值为4的表达式是( )
A.*w[1]+1 B.p++,*(p+1) C.w[2][2] D.p[1][1]
6.设有定义:int s[4][6],t[6][4],(*p)[6];要求0<=i<=6,则下列选项中,正确的赋值语句是( )
A.p=t; B.p=s; C.p=s[i]; D.p=t[i];
7.设有定义和语句:int *p[3],a[6],n;for(m=0;m<3;m++) p[m]=&a[2*m];则*(p[1]+1)引用的是a数组元素( )
A.a[0] B.a[1] C.a[2] D.a[3]
8.设有定义和语句:int a[2][3]={0},(*p)[3];p=a;则p+1表示( )
A.a[1]的起始地址 B.a[0]的起始地址
C.a[0][1]的元素地址 D.a[1][2]的元素地址
9.设有定义:char *name[ ]={ "JAME","XML","C++"};,则语句:printf("%s
",name[2]);的输出结果是( )
A.JAME B.XML C.C++ D.不定值
10.设有定义:int *p[5],则下列选项中,与其等价的是( )
A.int p[5]; B.int *p; C.int *(p[5]) D.int (*p)[5]
11.设有定义:int (*p)[4];,则下列说法中,正确的一项是( )
A.定义语句非法
B.p是一个指针数组,每个元素是一个指向整型变量的指针变量
C.p是一个行指针变量,可以将每行具有4个整型元素的二位数组名赋给它
D.p是一个指向整型变量的指针变量
12.设有定义和语句:int a[2][3],(*pa)[3],x;pa=a;,则下列选项中,对数组元素的引用中,不正确的一项是( )
A.x=*(a[0]+2); B.x=*pa[2];
C.x=pa[0][0]; D.x=*(pa[1]+2);
13.以下程序段的输出结果是( )
main( )
{ char *str[ ]={"Pascal","C language","Dbase","Cobol"};
char **p;int k;
p=str;
printf("%s
",*(p++));getch();}
A.C language B.Dbase C.Cobol D.Pascal
14.执行以下程序段的输出结果是( )
main( )
{char * a[ ]={"Pascal","C language","dBase","Coble"};
char **p;int j;p=a+3;
printf("%s
",*(p--));getch();}
A.C language B.Dbase C.Cobol D.Pascal
15.下列选项中,有语法错误的是( )
A.char *str[ ]={ "girl!"};
B.char str[ ][10]={ "girl!"};
C.char *str[3];str[1]= "girl!";
D.char str[3][10];str[1]= "girl!";
16.设有定义:char *ps[ ]={ "aa","bb","cc","dd"};,则下列选项中的叙述正确的一项是( )
A.ps[0]是字符串"aa" B.*ps[0]是字符串"aa"的首地址
C.ps[0]是字符串"aa"的首地址 D.*ps[0]是字符串"aa"
17.设有定义和语句:char str[4][12]={ "aa","bbb","cccc","dd"},*strp[4];
int i;for(i=0;i<4;i++) strp[i]=str[i];,则下列选项中不能正确引用字符串的是( )
A.*strp B.str[0] C.strp[3] D.strp
18.设有定义和语句:int x[3][4],(*p)[4];p=a;,则与表达式*(*p+2)等价的选项是( )
A.a[0][2] B.*(a+2)[0] C.(*a+2)[0] D.a[2][0]
19.执行以下程序段的输出结果是( )
main( )
{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},(*p)[4]=a,i,j,k=0;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
k=k+=*(*(p+i)+j);
printf("%d",k);getch();}
A.60 B.68 C.100 D.108
20.执行以下程序段的输出结果是( )
main( )
{int x[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[4]=x,k=1,m,n=0;
for(m=0;m<2;m++)
n+=*(*(p+m)+k);
printf("%d",n);getch();}
A.8 B.12 C.7 D.10
21.执行以下程序段的输出结果是( )
main( )
{int s[3][2]={1,2,3,4,5,6},*ps[3],k;
for(k=0;k<3;k++)
{ps[k]=s[k];
printf("%d",*(ps[k]+1));}getch();}
A.123 B.135 C.246 D.456
22.执行以下程序段的输出结果是( )
main( )
{char *mm[4]={"abcd","1234","ghxy","4567"};
char **pm=mm;
int i;
for(i=0;i<4;i++)
printf("%s",pm[i]+i);getch();}
A.abcd1234ghxy4567 B.a1g4 C.a2x7 D.abcd234xy7
23.执行以下程序段的输出结果是( )
main( )
{char *a[ ]={"abcd","ef","ghi","jklmn"};
int i;
for(i=0;i<4;i++)
printf("%c",*a[i]);getch();}
A.aegi B.dfhk C.abcd D.abcdefghijklmn
二、程序运行结果题(本题共7小题,每题3分,共21分)
24.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main( )
{char *str[ ]={"ENGLISH","MATH","MUSIC","PHYSICS","CHEMISTRY"};
char **q;
int num;
q=str;
for(num=1;num<5;num+=2)
printf("%s
",*(q++));
getch();}
25.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
void fut(int **s,int p[2][3])
{**s=*(*(p+1)+1);}
main( )
{int a[2][3]={1,3,5,7,9,11},*p,x;
p=&x;
fut(&p,a);
printf("%d
",*p);
getch();}
26.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
#define N 6
void YH(int (*x)[N])
{int i,j;
(*x)[0]=1;
for(i=1;i<N;i++)
{(*(x+i))[0]=(*(x+i))[i]=1;
for(j=1;j<i;j++)
(*(x+i))[j]=(*(x+i-1))[j-1]+(*(x+i-1))[j];}}
main( )
{ int x[N][N],i,j;
YH(x);
for(i=0;i<N;i++)
{ for(j=0;j<=i;j++)
printf("%4d",x[i][j]);
printf("
");}getch();}
27.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main( )
{int b[3][2]={2,4,6,8,10,12};
int *a[2][3],**q,k,i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
a[i][j]=*(b+j)+i;
q=a[0];
for(k=0;k<6;k++)
{ printf("%d ",**q);
q++;}getch();}
28.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main( )
{int b[6]={1,3,5,7,9,11},*a[6];
int **q,k;
for(k=0;k<6;k++)
a[k]=&b[k];
q=&a[0];
for(k=0;k<6;k++)
{ printf("%4d",**q);q++;}getch();}
29.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main( )
{char *b[ ]={"English","Physics","Maths","Pascal","Chemistry","End","Error"};
int num=2;
if (num>=0&&num<=9)
if(num>=1&&num<=5)
printf ("The chosen class is:%s.
",b[num-1]);
else printf ("No class is chosen.%s!!
",b[5]);
else printf("Your input is:%s !!
",b[6]);getch();}
30.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
void amov(int *p,int (*a)[3],int n)
{ int i,j,s=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ *p=(*(a+i))[j];s=s+*p;p++;}
printf("s=%d",s);}
main( )
{ int*p,a[3][3]={{1,3,5},{2,4,6}};
p=&a[0][0];
amov(p,a,3);getch();}
三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分)
31.下列程序的功能是:在主函数中输入10个不等长的字符串,用另一函数对它们进行排序,然后在主函数中输出这10个已经排好序的字符串。程序中有三处错误,请改正。
#include <stdio.h>
#include<conio.h>
L1 main()
L2 {void sort(char *[ ]);
L3 int i;
L4 char p[10],str[10][20];
L5 for(i=0;i<10;i++)
L6 p[i]=str[i];
L7 printf("input 10 strings:
");
L8 for(i=0;i<10;i++)
L9 scanf("%s",p[i]);
L10 sort(p);
L11 printf("Now,the sequence is:
");
L12 for(i=0;i<10;i++)
L13 printf("%s
",p[i]);
L14 getch();}
L15 void sort(char *s[ ])
L16 {int i,j;
L17 char temp;
L18 for(i=0;i<9;i++)
L19 for(j=0;j<9-i;j++)
L20 if(strcmp(*(s+j),(s+j+1))>0)
L21 {temp=*(s+j);
L22 *(s+j)=*(s+j+1);
L23 *(s+j+1)=temp;}}
四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
32.下列程序的功能是:对5个字符串排序并输出。请填空。
#include <stdio.h>
#include<conio.h>
#include<string.h>
#define MAX 20
main()
{void sort(char **p);
int i;
char **p,*pstr[5],str[5][MAX];
for(i=0;i<5;i++)
【1】;
printf("input 5 strings:
");
for(i=0;i<5;i++)
scanf("%s",pstr[i]);
p=【2】;
sort(p);
printf("
strings sorted:
");
for(i=0;i<5;i++)
printf("%s
",pstr[i]);
getch();}
void sort(char **p)
{int i,j;
char *temp;
for(i=0;i<5;i++)
{for(j=i+1;j<5;j++)
{if(strcmp(*(p+i),【3】)>0)
{【4】;
*(p+i)=*(p+j);
*(p+j)=temp;}}}}
33.下列程序的功能是:对n个整数排序并输出。请填空。
#include <stdio.h>
#include<conio.h>
main()
{void sort(int **p,int n);
int i,n,data[20],**p,*pstr[20];
printf("input n:
");
scanf("%d",&n);
for(i=0;i<n;i++)
pstr[i]=【1】;
printf("input %d integer number:
",n);
for(i=0;i<n;i++)
scanf("%d",pstr[i]);
p=pstr;
sort(p,n);
printf("Now,the sequence is:
");
for(i=0;i<n;i++)
printf("%d ",【2】);
printf("
");
getch();}
void sort(int **p,int n)
{int i,j,*temp;
for(i=0;i<【3】;i++)
{for(j=i+1;j<n;j++)
{if(【4】)
{temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;}}}}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《编程语言—C语言》
项目七: 指针
第35卷: 指针数组、数组指针、指向指针的指针
时间:45分钟 总分:100分
班级___________ 姓名__________ 学号__________ 成绩________
一、选择题(共23小题,每小题2分,共46分)
1.若有说明语句:int *ptr[10];则以下叙述中,正确的一项是( )
A.ptr是一个具有10个指针元素的一维数组,每个元素都只能指向整型变量
B.ptr是指向整型变量的指针
C.ptr是一个指向具有10个整型元素的一维数组的指针
D.ptr是一个指向10个整型变量的函数指针
【答案】A
2.执行以下程序段的输出结果是( )
main()
{int **pp,*p,a=10,b=20;
pp=&p;
p=&a;
p=&b;
printf("%d,%d
",*p,**pp);getch();}
A.10,20 B.10,10 C.20,20 D.20,10
【答案】C
3.设有定义:int t[3][2],*pt[3],k;,则执行语句for(k=0;k<3;k++) pt[k]=t[k];后,下列选项中能正确表示t数组元素地址的表达式是( )
A.&t[3][2] B.*pt[2] C.*(pt+1) D.&pt[2]
【答案】C
4.以下程序段的输出结果是( )
main()
{int a[ ]={0,2,4,6,8,10,12,14,16,18,20,22,24,26},*q[4],k;
for(k=0;k<4;k++)q[k]=&a[k*3];
printf("%d
",q[3][0]);getch();}
A.16 B.18 C.20 D.22
【答案】B
5.设有定义:int w[3][4]={{0,1},{2,4},{5,8}};int (*p)[4]=w;则以下选项中,数值为4的表达式是( )
A.*w[1]+1 B.p++,*(p+1) C.w[2][2] D.p[1][1]
【答案】D
6.设有定义:int s[4][6],t[6][4],(*p)[6];要求0<=i<=6,则下列选项中,正确的赋值语句是( )
A.p=t; B.p=s; C.p=s[i]; D.p=t[i];
【答案】B
7.设有定义和语句:int *p[3],a[6],n;for(m=0;m<3;m++) p[m]=&a[2*m];则*(p[1]+1)引用的是a数组元素( )
A.a[0] B.a[1] C.a[2] D.a[3]
【答案】D
8.设有定义和语句:int a[2][3]={0},(*p)[3];p=a;则p+1表示( )
A.a[1]的起始地址 B.a[0]的起始地址
C.a[0][1]的元素地址 D.a[1][2]的元素地址
【答案】A
9.设有定义:char *name[ ]={ "JAME","XML","C++"};,则语句:printf("%s
",name[2]);的输出结果是( )
A.JAME B.XML C.C++ D.不定值
【答案】C
10.设有定义:int *p[5],则下列选项中,与其等价的是( )
A.int p[5]; B.int *p; C.int *(p[5]) D.int (*p)[5]
【答案】C
11.设有定义:int (*p)[4];,则下列说法中,正确的一项是( )
A.定义语句非法
B.p是一个指针数组,每个元素是一个指向整型变量的指针变量
C.p是一个行指针变量,可以将每行具有4个整型元素的二位数组名赋给它
D.p是一个指向整型变量的指针变量
【答案】C
12.设有定义和语句:int a[2][3],(*pa)[3],x;pa=a;,则下列选项中,对数组元素的引用中,不正确的一项是( )
A.x=*(a[0]+2); B.x=*pa[2];
C.x=pa[0][0]; D.x=*(pa[1]+2);
【答案】B
13.以下程序段的输出结果是( )
main( )
{ char *str[ ]={"Pascal","C language","Dbase","Cobol"};
char **p;int k;
p=str;
printf("%s
",*(p++));getch();}
A.C language B.Dbase C.Cobol D.Pascal
【答案】D
14.执行以下程序段的输出结果是( )
main( )
{char * a[ ]={"Pascal","C language","dBase","Coble"};
char **p;int j;p=a+3;
printf("%s
",*(p--));getch();}
A.C language B.Dbase C.Cobol D.Pascal
【答案】C
15.下列选项中,有语法错误的是( )
A.char *str[ ]={ "girl!"};
B.char str[ ][10]={ "girl!"};
C.char *str[3];str[1]= "girl!";
D.char str[3][10];str[1]= "girl!";
【答案】D。不能对地址常量赋值。
16.设有定义:char *ps[ ]={ "aa","bb","cc","dd"};,则下列选项中的叙述正确的一项是( )
A.ps[0]是字符串"aa" B.*ps[0]是字符串"aa"的首地址
C.ps[0]是字符串"aa"的首地址 D.*ps[0]是字符串"aa"
【答案】C
17.设有定义和语句:char str[4][12]={ "aa","bbb","cccc","dd"},*strp[4];
int i;for(i=0;i<4;i++) strp[i]=str[i];,则下列选项中不能正确引用字符串的是( )
A.*strp B.str[0] C.strp[3] D.strp
【答案】D
18.设有定义和语句:int x[3][4],(*p)[4];p=a;,则与表达式*(*p+2)等价的选项是( )
A.a[0][2] B.*(a+2)[0] C.(*a+2)[0] D.a[2][0]
【答案】A
19.执行以下程序段的输出结果是( )
main( )
{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},(*p)[4]=a,i,j,k=0;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
k=k+=*(*(p+i)+j);
printf("%d",k);getch();}
A.60 B.68 C.100 D.108
【答案】A
20.执行以下程序段的输出结果是( )
main( )
{int x[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[4]=x,k=1,m,n=0;
for(m=0;m<2;m++)
n+=*(*(p+m)+k);
printf("%d",n);getch();}
A.8 B.12 C.7 D.10
【答案】A
21.执行以下程序段的输出结果是( )
main( )
{int s[3][2]={1,2,3,4,5,6},*ps[3],k;
for(k=0;k<3;k++)
{ps[k]=s[k];
printf("%d",*(ps[k]+1));}getch();}
A.123 B.135 C.246 D.456
【答案】C
22.执行以下程序段的输出结果是( )
main( )
{char *mm[4]={"abcd","1234","ghxy","4567"};
char **pm=mm;
int i;
for(i=0;i<4;i++)
printf("%s",pm[i]+i);getch();}
A.abcd1234ghxy4567 B.a1g4 C.a2x7 D.abcd234xy7
【答案】D
23.执行以下程序段的输出结果是( )
main( )
{char *a[ ]={"abcd","ef","ghi","jklmn"};
int i;
for(i=0;i<4;i++)
printf("%c",*a[i]);getch();}
A.aegi B.dfhk C.abcd D.abcdefghijklmn
【答案】A
二、程序运行结果题(本题共7小题,每题3分,共21分)
24.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main( )
{char *str[ ]={"ENGLISH","MATH","MUSIC","PHYSICS","CHEMISTRY"};
char **q;
int num;
q=str;
for(num=1;num<5;num+=2)
printf("%s
",*(q++));
getch();}
【答案】
ENGLISH
MATH
25.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
void fut(int **s,int p[2][3])
{**s=*(*(p+1)+1);}
main( )
{int a[2][3]={1,3,5,7,9,11},*p,x;
p=&x;
fut(&p,a);
printf("%d
",*p);
getch();}
【答案】9
26.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
#define N 6
void YH(int (*x)[N])
{int i,j;
(*x)[0]=1;
for(i=1;i<N;i++)
{(*(x+i))[0]=(*(x+i))[i]=1;
for(j=1;j<i;j++)
(*(x+i))[j]=(*(x+i-1))[j-1]+(*(x+i-1))[j];}}
main( )
{ int x[N][N],i,j;
YH(x);
for(i=0;i<N;i++)
{ for(j=0;j<=i;j++)
printf("%4d",x[i][j]);
printf("
");}getch();}
【答案】
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
27.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main( )
{int b[3][2]={2,4,6,8,10,12};
int *a[2][3],**q,k,i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
a[i][j]=*(b+j)+i;
q=a[0];
for(k=0;k<6;k++)
{ printf("%d ",**q);
q++;}getch();}
【答案】2 6 10 4 8 12
28.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main( )
{int b[6]={1,3,5,7,9,11},*a[6];
int **q,k;
for(k=0;k<6;k++)
a[k]=&b[k];
q=&a[0];
for(k=0;k<6;k++)
{ printf("%4d",**q);q++;}getch();}
【答案】 1 3 5 7 9 11
29.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main( )
{char *b[ ]={"English","Physics","Maths","Pascal","Chemistry","End","Error"};
int num=2;
if (num>=0&&num<=9)
if(num>=1&&num<=5)
printf ("The chosen class is:%s.
",b[num-1]);
else printf ("No class is chosen.%s!!
",b[5]);
else printf("Your input is:%s !!
",b[6]);getch();}
【答案】The chosen class is:Physics.
30.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
void amov(int *p,int (*a)[3],int n)
{ int i,j,s=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ *p=(*(a+i))[j];s=s+*p;p++;}
printf("s=%d",s);}
main( )
{ int*p,a[3][3]={{1,3,5},{2,4,6}};
p=&a[0][0];
amov(p,a,3);getch();}
【答案】s=21
三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分)
31.下列程序的功能是:在主函数中输入10个不等长的字符串,用另一函数对它们进行排序,然后在主函数中输出这10个已经排好序的字符串。程序中有三处错误,请改正。
#include <stdio.h>
#include<conio.h>
L1 main()
L2 {void sort(char *[ ]);
L3 int i;
L4 char p[10],str[10][20];
L5 for(i=0;i<10;i++)
L6 p[i]=str[i];
L7 printf("input 10 strings:
");
L8 for(i=0;i<10;i++)
L9 scanf("%s",p[i]);
L10 sort(p);
L11 printf("Now,the sequence is:
");
L12 for(i=0;i<10;i++)
L13 printf("%s
",p[i]);
L14 getch();}
L15 void sort(char *s[ ])
L16 {int i,j;
L17 char temp;
L18 for(i=0;i<9;i++)
L19 for(j=0;j<9-i;j++)
L20 if(strcmp(*(s+j),(s+j+1))>0)
L21 {temp=*(s+j);
L22 *(s+j)=*(s+j+1);
L23 *(s+j+1)=temp;}}
答案:
L4 char *p[10],str[10][20];
L17 char *temp;
L20 if(strcmp(*(s+j),*(s+j+1))>0)
四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
32.下列程序的功能是:对5个字符串排序并输出。请填空。
#include <stdio.h>
#include<conio.h>
#include<string.h>
#define MAX 20
main()
{void sort(char **p);
int i;
char **p,*pstr[5],str[5][MAX];
for(i=0;i<5;i++)
【1】;
printf("input 5 strings:
");
for(i=0;i<5;i++)
scanf("%s",pstr[i]);
p=【2】;
sort(p);
printf("
strings sorted:
");
for(i=0;i<5;i++)
printf("%s
",pstr[i]);
getch();}
void sort(char **p)
{int i,j;
char *temp;
for(i=0;i<5;i++)
{for(j=i+1;j<5;j++)
{if(strcmp(*(p+i),【3】)>0)
{【4】;
*(p+i)=*(p+j);
*(p+j)=temp;}}}}
答案:①pstr[i]=str[i] ②pstr ③*(p+j) ④temp=*(p+i)
33.下列程序的功能是:对n个整数排序并输出。请填空。
#include <stdio.h>
#include<conio.h>
main()
{void sort(int **p,int n);
int i,n,data[20],**p,*pstr[20];
printf("input n:
");
scanf("%d",&n);
for(i=0;i<n;i++)
pstr[i]=【1】;
printf("input %d integer number:
",n);
for(i=0;i<n;i++)
scanf("%d",pstr[i]);
p=pstr;
sort(p,n);
printf("Now,the sequence is:
");
for(i=0;i<n;i++)
printf("%d ",【2】);
printf("
");
getch();}
void sort(int **p,int n)
{int i,j,*temp;
for(i=0;i<【3】;i++)
{for(j=i+1;j<n;j++)
{if(【4】)
{temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;}}}}
答案:①&data[i] ②*pstr[i] ③n-1 ④**(p+i)>**(p+j)
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$