第一范文网 - 专业文章范例文档资料分享平台

《c++程序设计》谭浩强课后习题答案及解析 

来源:用户分享 时间:2025/6/1 0:18:38 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

.

while ((s[i]=getchar())!='\\n') i++; p=&s[0];

while (*p!='\\n')

{if (('A'<=*p) && (*p<='Z')) ++upper;

else if (('a'<=*p) && (*p<='z')) ++lower; else if (*p==' ') ++space;

else if ((*p<='9') && (*p>='0')) ++digit; else

++other; p++; }

cout<<\

cout<<\return 0; }

6.9题

#include using namespace std; int main()

{void move(int *); int a[3][3],*p,i;

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

cin>>a[i][0]>>a[i][1]>>a[i][2]; p=&a[0][0]; move(p);

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

cout<

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

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

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

*(pointer+3*i+j)=*(pointer+3*j+i);

.

.

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

6.10题

#include using namespace std; int main()

{void change(int *p); int a[5][5],*p,i,j;

cout<<\

for (i=0;i<5;i++) //输入矩阵 for (j=0;j<5;j++) cin>>a[i][j];

p=&a[0][0]; //使p指向0行0列元素 change(p); //调用函数,实现交换 cout<<\

for (i=0;i<5;i++) //输出已交换的矩阵 {for (j=0;j<5;j++)

cout<

return 0; }

void change(int *p) //交换函数 {int i,j,temp;

int *pmax,*pmin; pmax=p; pmin=p;

for (i=0;i<5;i++) //找最大值和最小值的地址,并赋给 pmax,pmin for (j=i;j<5;j++)

{if (*pmax<*(p+5*i+j)) pmax=p+5*i+j; if (*pmin>*(p+5*i+j)) pmin=p+5*i+j; }

temp=*(p+12); //将最大值与中心元素互换 *(p+12)=*pmax; *pmax=temp;

temp=*p; //将最小值与左上角元素互换 *p=*pmin; *pmin=temp;

pmin=p+1;

.

.

//将a[0][1]的地址赋给pmin,从该位置开始找最小的元素 for (i=0;i<5;i++) //找第二最小值的地址赋给 pmin for (j=0;j<5;j++)

if (((p+5*i+j)!=p) && (*pmin > *(p+5*i+j))) pmin=p+5*i+j; temp=*pmin; //将第二最小值与右上角元素互换 *pmin=*(p+4); *(p+4)=temp;

pmin=p+1;

for (i=0;i<5;i++) //找第三最小值的地址赋给pmin for (j=0;j<5;j++)

if(((p+5*i+j)!=(p+4)) && ((p+5*i+j)!=p) &&(*pmin>*(p+5*i+j))) pmin=p +5*i+j;

temp=*pmin; // 将第三最小值与左下角元素互换 *pmin=*(p+20); *(p+20)=temp;

pmin=p+1;

for (i=0;i<5;i++) // 找第四最小值的地址赋给pmin */ for (j=0;j<5;j++)

if (((p+5*i+j)!=p) &&((p+5*i+j)!=(p+4)) && ((p+5*i+j)!=(p+20)) && (*pmin>*(p+5*i+j))) pmin=p+5*i+j;

temp=*pmin; //将第四最小值与右下角元素互换 *pmin=*(p+24); *(p+24)=temp; }

6.10题另一解

#include using namespace std; int main()

{void change(int *p); int a[5][5],*p,i,j;

cout<<\

for (i=0;i<5;i++) //输入矩阵 for (j=0;j<5;j++) cin>>a[i][j];

p=&a[0][0]; //使p指向0行0列元素 change(p); //调用函数,实现交换 cout<<\

for (i=0;i<5;i++) //输出已交换的矩阵 {for (j=0;j<5;j++)

cout<

.

.

cout<

return 0; }

void change(int *p) //交换函数 {int i,j,temp;

int *pmax,*pmin; pmax=p; pmin=p;

for (i=0;i<5;i++) //找最大值和最小值的地址,并赋给 pmax,pmin for (j=i;j<5;j++)

{if (*pmax<*(p+5*i+j)) pmax=p+5*i+j; if (*pmin>*(p+5*i+j)) pmin=p+5*i+j; }

temp=*(p+12); //将最大值与中心元素互换 *(p+12)=*pmax; *pmax=temp;

temp=*p; //将最小值与左上角元素互换 *p=*pmin; *pmin=temp;

pmin=p+1;

//将a[0][1]的地址赋给pmin,从该位置开始找最小的元素 for (i=0;i<5;i++) //找第二最小值的地址赋给 pmin for (j=0;j<5;j++) {if(i==0 && j==0) continue;

if (*pmin > *(p+5*i+j)) pmin=p+5*i+j; }

temp=*pmin; //将第二最小值与右上角元素互换 *pmin=*(p+4); *(p+4)=temp;

pmin=p+1;

for (i=0;i<5;i++) //找第三最小值的地址赋给pmin for (j=0;j<5;j++) {if((i==0 && j==0) ||(i==0 && j==4)) continue; if(*pmin>*(p+5*i+j)) pmin=p+5*i+j; }

temp=*pmin; // 将第三最小值与左下角元素互换 *pmin=*(p+20); *(p+20)=temp;

.

.

pmin=p+1;

for (i=0;i<5;i++) // 找第四最小值的地址赋给pmin for (j=0;j<5;j++) {if ((i==0 && j==0) ||(i==0 && j==4)||(i==4 && j==0)) continue; if (*pmin>*(p+5*i+j)) pmin=p+5*i+j; }

temp=*pmin; //将第四最小值与右下角元素互换 *pmin=*(p+24); *(p+24)=temp; } 6.11题

#include using namespace std; int main()

{void sort(char s[][6]); int i;

char str[10][6];

cout<<\ for (i=0;i<10;i++) cin>>str[i]; sort(str);

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

cout<

void sort(char s[][6]) {int i,j;

char *p,temp[10]; p=temp;

for (i=0;i<9;i++) for (j=0;j<9-i;j++)

if (strcmp(s[j],s[j+1])>0) {strcpy(p,s[j]);

strcpy(s[j],s[+j+1]); strcpy(s[j+1],p); } }

6.11题另一解

#include using namespace std; int main()

{void sort(char (*p)[6]);

.

《c++程序设计》谭浩强课后习题答案及解析 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4tr8n37guk79ew80o94h77xpo584e200qvv_10.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top