新版省二题库

更新时间:2023-11-10 16:11:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第五章 指针和结构体 程序填空

1.下面程序的功能是:利用两个指针变量将两个整型变量中的值按从大到小的顺序输出来。 请填空完善程序。 # include void main()

{ int a=5,b=10, * pl, * p2, (1) ; Pl=&a; p2=&b; if(a

{p=p1;p1=p2; (2) ;} Prinft(“%d,%d\\n”,*p1,*p2); }

2.下面程序的功能是:当a

# include

void swap(int * pl, (1) ); int p; p=*p1; *p1=*p2; *p2=p; }

void main()

{ int a,b, * pl, * p2; printf(\

scanf(“% d% d\p1=&a; (2) ; if(a

printf(\\n\; }

3.下面程序的功能是:通过指针变量输出一维数组中的所有元素值。请填空完善程序。 # include void main() {

int a[6]={1,2,3,4,5,6},*p;

for ( (1) ;p

4.下面程序的功能是:通过调用函数max_min_ value找出一维数组中的最大值和最小值。请填空完善程序。 # include int max, min;

void max_min_value(int array[ ] ,int n) { int * p;

max= min= * array;

for(p=array+1;p< (1) ;p++) if( * p>max) max=*p; else

min=* p; }

void main()

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

printf(\输入 10个数据 : \\n\ for(i=0;i<10;i++,p++) scanf(\; (2) ;

Max_ min_value(number,10); max_ min_value(p,10);

printf (\ }

5.下面程序的功能是:通过指向函数的指针变量来调用函数max,求得两个数中的较大者。 请填空完善程序。 # include int max(int x,int y) { int z; if(x>y) (1) ; else

z=y; return z; }

void main() { int a,b,c;

int ( * p) (int,int) ;

printf(\输入 a, b 的值 :\\n\ scanf(\ (2) ; c=(*p)(a,b);

printf(\\n”,a,b,c); } 6.下面程序的功能是:通过调用函数find找到一维数组中最大元素和最小元素所在的下标, 存放在max和min变量中。请填空完善程序。 # include

void find(int* a,int n,int*max,int*min)

{

int i;

* max=* min=0;

for(i=1;i

if(a[i]>a[*max]) *max=i;

else if(a[i]

(1) ;

}

void main() {

int a[ ]一(5,8,7,6,2,7,3); int max, min;

find(a,7, (2) ); printf(\ }

7.下面程序的功能是:通过调用inv函数把数组中的元素按逆序进行存放。请填空完善程序。

# include void inv(int*x,int n) { int (l) ;

for(i=x,j= x+n-l;i

void main()

int i,a[10]= {4,5,2,23,0,1,8,9,6,3} ; printf(\原数组 : \\n\for(i= 0 ;i

printf(\printf(\

(2 ) ;

printf(\逆序后的数组:\n\); for(i=0;i<10;i++) printf(%-4d\,a[i]); printf(\; }

8.下面程序的功能是:求三个学生各有四门课程的总平均分,并输出第2个学生的所有成绩。请填空完善程序。

# include

void average ( (1) ,int n) { int i;

float sum=0;

for(i=0;i

printf(\平均成绩:%.2f\n\,sum/n); void search(float ( * p)[4l,int n) { int i;

printf(\for(i=0;i<4;i++)

printf(\ (2) ; printf(\void main()

{ float score[3][4]= {65,67,70,60),{80,87,90,81),{90,99,100, 98}}; average(*score, 12); search(score,2); }

9.下面程序的功能是:调用函数move将一个3×3矩阵转置。请填空完善程序。 # include void main()

{ void move(int*);

int a[3][3]={1,2,3,4,5,6,7,8,9),*p,i; (1) ; move(p) ;

for(i=0;i<3;i++)

printf (\

}

void move(int * pointer) { int i,j,t;

for(i=0;i<3;i++) for(j=i;j<3;i++)

{ t= * (pointer+3 * i+j) ; (2) ; * (pointer+3 * j+i) =t; }

}

10.下面程序的功能是:不用字符串复制函数strcpy,把a数组中的字符串复制到b数组中。 请填空完善程序。 # include void main( )

{ char a[ ]= \ char* pl=a,*p2=b;

while ( (1) !=`o`’) { * p2-= * pl; Pl++;

(2 ) ; } * p2=`\\0`;

printf(\

}

11.下面程序的功能是:定义一个字符串比较函数,比较从键盘输入的两个字符串。请填空完善程序。

# include

int mystrcrmp(char * sl, char * s2) {

int c;

while((c= *sl- *s2) = =0 -&& (i) ) {s1++; (2) ;} returrn(c); }

void main() {

char a[80l,b[80l; int k: gets(a); gets(b);

k= mvstrcmp(a,b);

if(k>o) printf(\ large!\n\

else if(k<0)printf(\\n\ else printf(\ \\ii\ }

1 2.下面程序的功能是:通过调用函数pt将字符串“Hello”反向显示出来。请填空完善程序。

# include \void pt(char * string) { int i,len=0;

char * str= string; while( (1) ) {len++;str++;}

for(i=len-l; (2) ;i--) putchar(string[i]) ; printf(\}

void main(') { pt(\;)

13.下面程序的功能是:输出指针数组各元素指向的字符串。请填空完善程序。 # include void main()

{ char*aL[ ]={\ language\char (1) ; p= a ;

for(j=0;j<4,j++)

printf(\, (2) ; }

14.下面程序的功能是:输出指针数组各元素所指向的整数值。 # include void main() { int i;

int a[5]= {1,3,5,7,9}; int* num[5]; int * * p;

for(i=0;i<5;i++) num[ i]一&a[ i] ; (1) ;

for(i=0; (2) ;i++) { printf(\,* * p); p++; } }

15.下面程序的功能是:将一整型数组各元素的地址存放在指针数组中,并按元素值由小到大的顺序对指针数组中的地址排序,即第一个元素存放最小整型元素的地址,第二个元素存放第二小整型元素的地址,依此类推。请填空完善程序。

# include # include void main() {

int a[5]={1,5,3,9,7}; int* p[5],*temp; int k,i,j;

for(i=0;i<5;i++) {

p[i]= (l) ; }

for(i=0;i<4;i++) /*选择法排序*/ {

k=i;

for(j=i+1;j<5;j++) if( (2) )k=j; if(k!=i)

{temp—p[i];p[i]一p[k];p[k]=temp;} }

for(i=0;i<5;i++)

printf(\

}

16.下面程序的功能是:把“FORTRAN”,“BASIC”,“C++”,“VB”,“C”五个字串的首地址存放到一个指针数组,并按字符串由小到大的顺序对数组中的元素排序,即第一个元素存放 最小字符串的地址,第二个元素存放第二小的字符串的地址,依此类推。请填空完善程序。

# include # include void main()

{char* c[ ]={ \ int i,j,k;

char (1) ; for(i=0;i<4;i++) { k=i;

for(j=i+1;j<5;j++) if( (2) >0)k=j; if(k!=i)

{temp—c[i];c[i]一c[k];c[k]一temp;} }

for(i=0;i<5;i++) printf(\; }

17.下面程序的功能是:为结构体变量pw赋值,然后输出结构体变量pw中的内容。请填空完善程序。

# include # include struct p { int i;

char arr[20]; };

void main() pw. i=1001;

strcpy( pw. arr , \张三\

printf(\ (2) ”,pw.i,pw. arr); }

18.下面程序的功能是:定义学生成绩结构体,包含姓名和成绩。在主函数中定义结构体数组并赋初值,在结构体数组中查找并输出分数最高和最低的同学姓名和成绩。请填空完善程序。

# include struct student {

char name[10]; float score; }; void main() {

int max,min,i;

struct student stud[5]一{\张东\,98,\赵峰\,66,\孙虎\,89,\朱旭\,75.\尹君\,85};

max= min=0;

for(i=0;i<5;i++) {

if(stud[il. score>stud[maxl. score) max-=i; else

if(stud[il. score

(1) ; }

print~(\ score) ; printf(\ (2) ;

19.下面程序的功能是:调用函数fun统计结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并作为函数值返回。请填空完善程序。

# include # define N3 typedef struct {int num;

char nam[10] ; char sex; } SS;

int fun ( (1) person[ ] ) {int I,n=0;

For(i=0;i

Void main( )

{SSW[N]={{1, \?F?},{1, \?M?},{1, \?M?}, int n;

n=fun(W);

printf(\}

20.下面程序的功能是:将数组s中字符串的所有空格字符删去。请填空完善程序。 #include Void main ( )

{char s[ ] \Char*p1,*p2;

For(p1=p2=s;*p1!=?\\0?;p1++) If( (1) )

*p2++=*p1; (2) ;

printf(\,s); }

21.下面程序的功能是:将一个字符串中下标为m的字符开始的全部字符复制成为另一

个字符串。请填空完善程序。

# include

void strcopy( char * strl , char*str2,int m) {

(1) (2) p2=str2; while(*p1) (3) *p2=?\\0?;}

void main ( ) { int m; char strl [80],str2[80]; gets(strl); scanf(\(4)

Puts(strl);puts(str2); } 5.3 程序改错

注意:不可以增加或删除程序行,也不可以更改程序的结构。

l'下面程序的功能是:用指针变量存放两个整变量的地址,并通过指针变量把整型变量中的

值输出来:请改正程序中的错误,使它能运行出正确的结果。 # include void main( ) {

int a,b;

/********* *FOUN D**********/ int pl,*p2; a=10;

b=20

/********* *FOUN D**********/ Pl=&a;p2=b;

Printf(\}

2.下面程序的功能是:随意输入两个整数,用间接访问的方式,将两个数按由小到大的顺序输出。请改正程序中的错误,使它能运行出正确的结果。

# include void main() {

int a,b;

int* pl,*p2,*p;

scanf(\

/**********FOUND**********/ Pl=&a;p2=b); if(a>b) j { p=pl; pl=p2; p2=p; }

/********** FOUND-x*********/ printf(\\n\}

3.下面程序的功能是:通过调用函数swap,把数组元素a[0]和a[l]的值互换。请改正程序中的错误,使它能运行出正确的结果。

# include

/********** FOUND*********/ void swap(int* pl,*p2) {

int t: t=*p1; *p1=*p2; *p2=p; }

void main( {

int a[6]={1,2,3,4,5,6};

/**********FOUNDx*********/ swap(a[0],a[1]);

printf(\\n\ }

4.下面程序的功能是:找出二维数组所有元素中的最大值输出。请改正程序中的错误,使它 能运行出正确的结果。

# include void main( ) {

int a[3l[4]= {1,2,3,4,5,6,7,8,9,10,11,12} ; /* * * * * * * * * FOUND* ************/ int p; int max; max=a[0][0];

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

/* * * * * * * * * FOUND* ************/

本文来源:https://www.bwwdw.com/article/hy0v.html

Top