C程序设计第四版谭浩强习题例题第8章.docx

上传人:b****7 文档编号:9413554 上传时间:2023-02-04 格式:DOCX 页数:64 大小:177.24KB
下载 相关 举报
C程序设计第四版谭浩强习题例题第8章.docx_第1页
第1页 / 共64页
C程序设计第四版谭浩强习题例题第8章.docx_第2页
第2页 / 共64页
C程序设计第四版谭浩强习题例题第8章.docx_第3页
第3页 / 共64页
C程序设计第四版谭浩强习题例题第8章.docx_第4页
第4页 / 共64页
C程序设计第四版谭浩强习题例题第8章.docx_第5页
第5页 / 共64页
点击查看更多>>
下载资源
资源描述

C程序设计第四版谭浩强习题例题第8章.docx

《C程序设计第四版谭浩强习题例题第8章.docx》由会员分享,可在线阅读,更多相关《C程序设计第四版谭浩强习题例题第8章.docx(64页珍藏版)》请在冰豆网上搜索。

C程序设计第四版谭浩强习题例题第8章.docx

C程序设计第四版谭浩强习题例题第8章

第8章

例8.1

#include

intmain()

{

inta=100,b=10;

int*pointer_1,*pointer_2;//可以直接写为int*pointer_1=&a,*pointer_2=&b;

pointer_1=&a;

pointer_2=&b;

printf("a=%d,n=%d\n",a,b);

printf("*pointer_1=%d,*pointer_2=%d\n",pointer_1,pointer_2);

return0;

}

例8.2

#include

intmain()

{

int*p1,*p2,*p,a,b;

printf("pleaseentertwointegernumbers:

\n");

scanf("%d,%d",&a,&b);

p1=&a;

p2=&b;

if(a

{

p=p1;

p1=p2;

p2=p;

}//if{}可换为{p1=&b;p2=&a},p也不用定义了.

printf("a=%d,b=%d\n",a,b);

printf("max=%d,min=%d\n",*p1,*p2);

return0;

}

例8.3

#include

intmain()

{

voidswap(int*p1,int*p2);

inta,b;

int*pointer_1,*pointer_2;

printf("pleaseenteraandb:

\n");

scanf("%d,%d",&a,&b);

pointer_1=&a;

pointer_2=&b;

if(a

printf("max=%d,min=%d\n",*pointer_1,*pointer_2);

return0;

}

voidswap(int*p1,int*p2)//必须是定义地址的函数.

{

inttemp;

temp=*p1;

*p1=*p2;

*p2=temp;//这里不能直接调换p1,p2的地址值.

}

例8.4

#include

intmain()

{

voidswap(int*p1,int*p2);

inta,b;

int*pointer_1,*pointer_2;

printf("pleaseentertwointegernumbers:

\n");

scanf("%d,%d",&a,&b);

pointer_1=&a;

pointer_2=&b;

if(a

printf("%d,%d\n",a,b);

printf("max=%d,min=%d\n",*pointer_1,*pointer_2);

return0;

}

voidswap(int*p1,int*p2)

{

int*p;

p=p1;

p1=p2;

p2=p;

}

例8.5

#include

intmain()

{

voidexchange(int*q1,int*q2,int*q3);

inta,b,c,*p1,*p2,*p3;

printf("pleaseenterthreeintegernumbers:

\n");

scanf("%d,%d,%d",&a,&b,&c);

p1=&a;

p2=&b;

p3=&c;

exchange(p1,p2,p3);

printf("Theorderis:

%d,%d,%d\n",a,b,c);

return0;

}

voidexchange(int*q1,int*q2,int*q3)

{

voidswap(int*pt1,int*pt2);

if(*q1<*q2)swap(q1,q2);

if(*q1<*q3)swap(q1,q3);

if(*q2<*q3)swap(q2,q3);

}

voidswap(int*pt1,int*pt2)

{

inttemp;

temp=*pt1;

*pt1=*pt2;

*pt2=temp;

}

例8.6

数组下标法:

#include

intmain()

{

inta[10];

inti;

printf("pleaseenter10integernumbers:

\n");

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

scanf("%d",&a[i]);

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

printf("%d",a[i]);

printf("\n");

return0;

}

数组名指向法

#include

intmain()

{

inta[10];

inti;

printf("pleaseenter10integernumbers:

\n");

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

scanf("%d",&a[i]);

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

printf("%d",*(a+i));

printf("\n");

return0;

}

指针变量法:

#include

intmain()

{

inta[10];

int*p,i;

printf("pleaseenter10integernumbers:

\n");

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

scanf("%d",&a[i]);

for(p=a;p

printf("%d",*p);

printf("\n");

return0;

}

进一步改进:

#include

intmain()

{

inta[10];

int*p;

printf("pleaseenter10integernumbers:

\n");

for(p=a;p

scanf("%d",p);

for(p=a;p

printf("%d",*p);

printf("\n");

return0;

}

例8.7

#include

intmain()

{

inta[10],*p,i;

p=a;

printf("pleaseenter10integernumbers:

\n");

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

scanf("%d",p++);

for(i=0;i<10;i++,p++)

printf("%d",*p);

printf("\n");

return0;

}

#include

intmain()

{

inta[10],*p,i;

p=a;

printf("pleaseenter10integernumbers:

\n");

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

scanf("%d",p++);

for(i=0,p=a;i<10;i++,p++)

printf("%d",*p);//这里可改为for(i=0,p=a;i<10;i++)printf("%d",*p++);

printf("\n");

return0;

}

例8.8

#include

intmain()

{

voidinv(intx[],intn);

inti,a[10]={3,7,9,11,0,6,7,5,4,2};

printf("Theoriginalarray:

\n");

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

printf("%d",a[i]);

printf("\n");

inv(a,10);

printf("Thearrayhasbeeninverted:

\n");

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

printf("%d",a[i]);

printf("\n");

return0;

}

voidinv(intx[],intn)

{

inttemp,i,j,m=(n-1)/2;

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

{

j=n-1-i;

temp=x[i];

x[i]=x[j];

x[j]=temp;

}

return;

}

#include

intmain()

{

voidinv(int*x,intn);

inti,a[10]={3,7,9,11,0,6,7,5,4,2};

printf("Theoriginalarray:

\n");

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

printf("%d",a[i]);

printf("\n");

inv(a,10);

printf("Thearrayhasbeeninverted:

\n");

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

printf("%d",a[i]);

printf("\n");

return0;

}

voidinv(int*x,intn)

{

int*p,temp,*i,*j,m=(n-1)/2;

i=x;j=x+n-1;p=x+m;

for(;i<=p;i++,j--)

{

temp=*i;

*i=*j;

*j=temp;

}

return;

}

例8.9

#include

intmain()

{

voidinv(int*x,intn);

inti,arr[10],*p=arr;

printf("Theoriginalarray:

\n");

for(i=0;i<10;i++,p++)

scanf("%d",p);

printf("\n");

p=arr;

inv(p,10);

printf("Thearrayhasbeeninverted:

\n");

for(p=arr;p

printf("%d",*p);

printf("\n");

return0;

}

voidinv(int*x,intn)

{

int*p,m,temp,*i,*j;

m=(n-1)/2;

i=x;j=x+n-1;p=x+m;

for(;i<=p;i++,j--)

{

temp=*i;

*i=*j;

*j=temp;

}

return;

}

例8.10

#include

intmain()

{

voidsort(intx[],intn);

inti,*p,a[10];

p=a;

printf("pleaseenter10integernumbers:

\n");

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

scanf("%d",p++);

p=a;

sort(p,10);

for(p=a,i=0;i<10;i++)

printf("%d",*p++);//书中为{printf("%d",*p);p++;}

printf("\n");

return0;

}

voidsort(intx[],intn)

{

inti,j,k,t;

for(i=0;i

{

k=i;

for(j=i+1;j

if(x[j]>x[k])k=j;

if(k!

=i)

{

t=x[i];

x[i]=x[k];

x[k]=t;

}

}

}

#include

intmain()

{

voidsort(int*x,intn);

inti,*p,a[10];

p=a;

printf("pleaseenter10integernumbers:

\n");

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

scanf("%d",p++);

p=a;

sort(p,10);

for(p=a,i=0;i<10;i++)

printf("%d",*p++);

printf("\n");

return0;

}

voidsort(int*x,intn)

{

inti,j,k,t;

for(i=0;i

{

k=i;

for(j=i+1;j

if(*(x+j)>*(x+k))k=j;

if(k!

=i)

{

t=*(x+i);

*(x+i)=*(x+k);

*(x+k)=t;

}

}

}

例8.11

#include

intmain()

{

inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

printf("%d,%d\n",a,*a);

printf("%d,%d\n",a[0],*(a+0));

printf("%d,%d\n",&a[0],&a[0][0]);

printf("%d,%d\n",a[1],a+1);

printf("%d,%d\n",&a[1][0],*(a+1)+0);

printf("%d,%d\n",a[2],*(a+2));

printf("%d,%d\n",&a[2],a+2);

printf("%d,%d\n",a[1][0],*(*(a+1)+0));

printf("%d,%d\n",*a[2],*(*(a+2)+0));

return0;

}

例8.12

#include

intmain()

{

inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int*p;

for(p=a[0];p

{

if((p-a[0])%4==0)printf("\n");

printf("%4d",*p);

}

printf("\n");

return0;

}

例8.13

#include

intmain()

{

inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int(*p)[4],i,j;

p=a;

printf("pleaseenterrowandcolum:

");

scanf("%d,%d",&i,&j);

printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));

return0;

}

#include

intmain()

{

inta[4]={1,3,5,7};

int(*p)[4];

p=&a;

printf("%d\n",(*p)[3]);

return0;

}

例8.14

#include

intmain()

{

voidaverage(float*p,intn);

voidsearch(float(*p)[4],intn);

floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};

average(*score,12);

search(score,2);

return0;

}

voidaverage(float*p,intn)

{

float*p_end;

floatsum=0,aver;

p_end=p+n-1;

for(;p<=p_end;p++)

sum=sum+(*p);

aver=sum/n;

printf("average=%5.2f\n",aver);

}

voidsearch(float(*p)[4],intn)

{

inti;

printf("ThescoreofNo.%dare:

\n",n);

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

printf("%5.2f",*(*(p+n)+i));

printf("\n");

}

例8.15

#include

intmain()

{

voidsearch(float(*p)[4],intn);

floatscore[3][4]={{65,57,70,60},{58,87,90,81},{90,99,100,98}};

search(score,3);

return0;

}

voidsearch(float(*p)[4],intn)

{

inti,j,flag;

for(j=0;j

{

flag=0;

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

if(*(*(p+j)+i)<60)flag=1;

if(flag==1)

{

printf("No.%dfails,hisscoresare:

\n",j+1);

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

printf("%5.2f",*(*(p+j)+i));

printf("\n");

}

}

}

例8.16

#include

intmain()

{

charstring[]="IloveChina";

printf("%s\n",string);

printf("%c\n",string[7]);

return0;

}

例8.17

#include

intmain()

{

char*string="IloveChina";

printf("%s\n",string);

return0;

}

例8.18字符数组

#include

intmain()

{

chara[]="Ianastudent.",b[20];

inti;

for(i=0;*(a+i)!

='\0';i++)

*(b+i)=*(a+i);

*(b+i)='\0';

printf("stringais:

%s\n",a);

printf("stringbis:

");

for(i=0;*(b+i)!

='\0';i++)

printf("%c",b[i]);//这三句可替换为printf("stringbis:

%s\n",b);

printf("\n");

return0;

}

例8.19指针变量指向字符数组

#include

intmain()

{

chara[]="Ianastudent.",b[20],*p1,*p2;

p1=a;

p2=b;

for(;*p1!

='\0';p1++,p2++)

*p2=*p1;

*p2='\0';

printf("stringais:

%s\n",a);

printf("stringbis:

%s\n",b);

return0;

}

例8.20

字符数组名做函数参数

#include

intmain()

{

voidcopy_string(charfrom[],charto[]);

chara[]="Ianateacher.";

charb[]="Youareastudent.";

printf("stringa=%s\nstringb=%s\n",a,b);

printf("copystringatostringb:

\n");

copy_string(a,b);

printf("\nstringa=%s\nstringb=%s\n",a,b);

return0;

}

voidcopy_string(charfrom[],charto[])

{

inti=0;

while(from[i]!

='\0')

{to[i]=from[i];i++;}

to[i]='\0';

}

字符型指针变量做参数

#include

intmain()

{

voidcopy_string(charfrom[],charto[]);

chara[]="Ianateacher.";

charb[]="Youareastudent.";

char*from=a,*to=b;

printf("stringa=%s\nstringb=%s\n",a,b);

printf("copystringatostringb:

\n");

copy_string(from,to);

printf("\nstringa=%s\nstringb=%s\n",a,b);

return0;

}

voidcopy_string(charfrom[],charto[])

{

inti=0;

while(from[i]!

='\0')

{to[i]=from[i];i++;}

to[i]='\0';

}

字符型指针变量做形参和实参

#include

intmain()

{

voidcopy_string(char*from,char*to);

char*a="Ianateacher.";

charb[]="Youareastudent.";

char*p=b;

printf("stringa=%s\nstringb=%s\n",a,b);

printf("copystringatostringb:

\n");

copy_string(a,p);

printf("\nstringa=%s\nstringb=%s\n",a,b);

return0;

}

voidcopy_string(c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1