c语言5版第10章答案,第10章 指 针 参考答案 c语言(1)
10.1 输入3个整数,按由小到大的顺序输出。
解:程序如下:(xt10-1.c)
#include
main()
{ intn1,n2,n3;
int *p1,*p2,*p3;
printf("Input three integers n1,n2,n3: ");
scanf("%d,%d,%d",&n1,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3;
if(n1>n2) swap(p1,p2);
if(n1>n3) swap(p1,p3);
if(n2>n3) swap(p2,p3);
printf("Now, the order is: %d,%d,%d\n",n1,n2,n3);
}
swap(int *p1,int *p2)
{ int p;
p=*p1;*p1=*p2;*p2=p;
}
运行结果如下:
Input three integers n1,n2,n3: 34,21,25↙
Now, the order is: 21,25,34
10.2输入3个字符串,按由小到大的顺序输出。
解:程序如下:(xt10-2.c)
#include
#include
main()
{ char*str1[20],*str2[20],*str3[20];
char swap();
printf("Input three line:\n");
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)>0) swap(str1,str2);
if(strcmp(str1,str3)>0) swap(str1,str3);
if(strcmp(str2,str3)>0) swap(str2,str3);
printf("Now, the order is:\n");
printf("%s\n%s\n%s\n",str1,str2,str3);
}
char swap (char *p1,char*p2)/*交换两个字符串*/
{ char*p[20];
strcpy(p,p1); strcpy(p1,p2); strcpy(p2,p);
}
运行结果如下:
Input three lines:
I study very hard.↙
C language is very interesting.↙
He is a professor.↙
Now, the order is:
C language is very interesting.
He is a professor.
I study very hard.
10.3 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。
解:输入输出函数的N-S图见图10.1。。
序如下:(xt10-3.c)
#include
main()
{ intnumber[10];
input(number);
max_min_value(number);
output(number);
}
input(int number[10])
{ inti;
printf("Input 10 numbers: ");
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
max_min_value(int array[10])
{ int*max,*min,*p,*array_end;
array_end=array+10;
max=min=array;
for(p=array+1;p
if(*p>*max) max=p;
else if(*p
*p=array[0]; array[0]=*min; *min=*p;
*p=array[9];array[9]=*max;*max=*p;
return;
}
output(int array[10])
{ int*p;
printf("Now, they are: ");
for(p=array;p<=array+9;p++)
printf("%d ",*p);
}
运行结果如下:
Input 10 numbers: 32 24 56 78 1 98 36 44 29 6↙
Now, they are: 1 24 56 78 32 6 36 44 29 98
10.4 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图10.3。写一函数实现以上功能,在主函数中输入n个整数,并输出调整后的n个数。
解:程序如下:(xt10-4.c)
#include
main()
{ intnumber[20],n,m,i;
void move(int array[20],int n,int m);
printf("How many numbers? ");/* 共有多少个数 */
scanf("%d",&n);
printf("Input %d numbers: \n",n);/* 输入n个数 */
for(i=0;i
scanf("%d",&number[i]);
printf("How many place you want to move? "); /* 后移多少个位置 */
scanf("%d",&m);
move(number,n,m);/* 调用move 函数 */
printf("Now, they are: \n");
for(i=0;i
printf("%d",number[i]);
}
void move(int array[20],int n,int m)/* 循环后移-次的函数 */
{ int*p,array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
*p=*(p-1);
*array=array_end;
m--;
if(m>0) move(array,n,m);/* 递归调用,当循环次数m减至0 */
/* 时,停止调用 */
}
运行结果:
How many numbers? 8↙
Input 8 numbers:
1243656782711↙
How many place you want to move? 4↙
Now, they are:
8271112436567
10.5 有n个人围成一圈,顺序排号。从第一个人开始报数(从l到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
解:
:(xt10-5.c)
#include
main()
{ int i,k,m,n,num[50],*p;
printf("Input number of person: n=");
scanf("%d",&n);
p=num;
for(i=0;i
*(p+i)=i+1;/*以l至n为序给每个人编号*/
i=0;/* i为每次循环时的计数变量*/
k=0;/* k为按1、2、3报数时的计数变量 */
m=0;/* m为退出人数 */
while(m/* 当退出人数比n-1少时(即未退出人数大于1时)执行循环体 */
{ if(*(p+i)!=0) k++;
if(k==3)/* 对退出的人的编号置为0 */
{ *(p+i)=0;
k=0;
m++;
}
i++;
if(i==n) i=0;/* 报数到尾后, i恢复为0 */
}
while(*p==0) p++;
printf("The last one is NO.%d\n",*p);
}
运行结果:
Input number of person: n=8↙
The last one is NO.7
''
10.6 写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。
解:程序如下:(xt10-6.c)
#include
main()
{ intlen;
char *str[20];
int length(char *p);
printf("Input string: ");
scanf("%s",str);
len=length(str);
printf("The length of string is %d.\n",len);
}
int length(char *p)/* 求字符中长度函数 */
{ intn;
n=0;
while(*p!='\0')
{ n++;
p++;
}
return(n);
}
运行结果:
Input string: China↙
The length of string is 5.
10.7 有一字符串,包含n个字符。写一个函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
解:程序如下:(xt10-7.c)
#include
#include
main()
{ intm;
char *str1[20],*str2[20];
void copystr(char *p1,char *p2,int m);
printf("Input string: ");
gets(str1);
printf("Which character that begin to copy? ");
scanf("%d",&m);
if(strlen(str1)
printf("Input error!");
else
{ copystr(str1,str2,m);
printf("resut: %s\n",str2);
}
}
void copystr(char *p1,char *p2,int m)/* 字符串部分复制函数 */
{ intn;
n=0;
while(n
{ n++;
p1++;
}
while(*p1!='\0')
{ *p2=*p1;
p1++;
p2++;
}
*p2='\0';
}
运行结果:
Input string: reading-room↙
Which character that begin to copy? 9↙
result: room
10.8 输入一行文字,找出其中大写字母、小写字母、空格、数字及其他字符各有多少。
解:程序如下:(xt10-8.c)
#include
main()
{ intupper=0,lower=0,digit=0,space=0,other=0,i=0;
char *p,s[80];
printf("Input string: ");
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(('0'<=*p)&&(*p<='9')) digit++;
elseother++;
p++;
}
printf("upperer case:%d\n",upper);
printf("lowerer case:%d\n",lower);
printf("digit:%d\n",digit);
printf("space:%d\n",space);
printf("other:%d\n",other);
}
运行结果:
Input string: Today is 2000/1/1↙
upperer case:1
lowerer case:6
digit:6
space:2
other:2
10.9 写一个函数,将一个3×3的矩阵转置。
解:程序如下:(xt10-9.c)
#include
main()
{ inta[3][3],*p,i;
void move(int *pointer);
printf("Input matrix: \n");
for(i=0;i<3;i++)
scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
p=&a[0][0];
move(p);
printf("Now,matrix: \n");
for(i=0;i<3;i++)
printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);
}
voidmove(int *pointer)
{ inti,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;
}
}
运行结果:
Input matrix:
l 2 3↙
4 5 6↙
7 8 9↙
Now,matrix:
1 4 7
2 5 8
3 6 9
l0.l0 将一个5×5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从
左到右、从上到下的顺序 ,依次从小到大存放),写一个函数实现之,并用main数调用。
解:程序如下:(xt10-10.c)
#include
main()
{ inta[5][5],*p,i,j;
void change(int *p);
printf("Input matrix:\n");
for(i=0;i<5;i++)/*输入矩阵*/
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
p=&a[0][0];/*使p指向0行0列元素*/
change(p);/*调用函数, 实现交换*/
printf("Now, matrix: \n");
for(i=0;i<5;i++)/*输出已交换的矩阵*/
{ for(j=0;j<5;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
void change(int *p)/*交换函数*/
{ inti,j,temp;
int *pmax,*pmin;
pmax=p;
pmin=p;
for(i=0;i<5;i++)/*找最大值和最小值的地址,并赋给pmax,pmin*/
for(j=0;j<5;j++)
{ if(*pmax
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;
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;
}
运行结果:
Input matrix:
35 34 33 32 31↙
3O 29 28 27 26↙
25 24 23 22 21↙
15 14 13 12 ll↙
Now, matrix:
11 34 33 32 12
30 29 28 27 26
25 24 35 22 21
20 l9 18 17 16
13 23 15 31 14
10.11在主函数中输入10个等长的字符串。用另一个函数对它们排序,然后在主函数输出这10个已排好的字符串。
解:程序如下:(xt10-11.c)
#include
#include
main()
{ voidsort(char s[10][6]);
int i;
char str[10][6];
printf("Input 10 strings:\n");
for(i=0;i<10;i++)
scanf("%s",str[i]);
sort(str);
printf("Now, the sequence is:\n");
for(i=0;i<10;i++)
printf("%s\n",str[i]);
}
voidsort(char s[10][6])
{ inti,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);
}
}
运行结果:
Input 10 strings:
China↙
Japan↙
Korea↙
Egypt↙
Nepal↙
Burma↙
Ghana↙
Sudan↙
Italy↙
Libya↙
Now, the sequence is:
Burma
China
Egypt
Ghana
Italy
Japan
Korea
Libya
Nepal
Sudan
c语言5版第10章答案,第10章 指 针 参考答案 c语言(1)相关推荐
- 简单线性回归截距假设检验_第10章 简单线性回归分析思考与练习参考答案
第10章 简单线性回归分析 思考与练习参考答案 一.最佳选择题 1.如果两样本的相关系数r1?r2,样本量n1?n2,那么( D ). A. 回归系数b1?b2 B.回归系数b1?b2 C. 回归系数 ...
- c语言程序设计教程韩立毛答案,c语言程序设计教程201X韩立毛徐秀芳书后练习题参考答案...
c语言程序设计教程201X韩立毛徐秀芳书后练习题参考答案 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我 ...
- 计算机病毒考试及答案,计算机病毒类考试题目以及参考答案.doc
计算机病毒类考试题目以及参考答案 计算机病毒类考试题目以及参考答案 计算机病毒类考试题目以及参考答案 计算机病毒类考试题目以及参考答案 ※ 木马的信息反馈机制收集的信息中最重要的是_________. ...
- 简单线性回归截距假设检验_第10章 简单线性回归分析思考与练习参考答案.doc...
简单线性回归分析 思考与练习参考答案 最佳选择题 1.如果两样本的相关系数,样本量,那么( D ). A. 回归系数 B.回归系数 C. 回归系数 D.统计量 E. 以上均错 2.如果相关系数=1,则 ...
- 计算机控制技术第二版答案于微波,微波技术基础课后参考答案(田加胜版)
<微波技术基础课后参考答案(田加胜版)>由会员分享,可在线阅读,更多相关<微波技术基础课后参考答案(田加胜版)(10页珍藏版)>请在装配图网上搜索. 1.微波技术基础课后习题答 ...
- 华理c语言设计网上作业,华东理工大学第一学年第二学期网上作业参考答案C语言设计1...
华东理工大学第一学年第二学期网上作业参考答案 考生答题情况 作业名称:2012年春季C语言设计(专)课程网上作业1 出 卷 人:SA 题号:1 题型:单选题(请在以下几个选项中选择唯一正确答案) 本题 ...
- 计算机科学基础第二版答案,浙江大学计算机科学基础课后习题参考答案new-PXY.doc...
浙江大学计算机科学基础课后习题参考答案new-PXY 第一章课后习题参考答案 一.填空题 处理.处理 黑盒.程序 输入设备.运算器.存储器.控制器.输出设备 运算器.控制器.中央处理器 存储器.数据 ...
- 计算机英语第三版答案 司爱侠,计算机专业英语教程(第3版)宋德福_司爱侠_练习参考答案...
计算机专业英语教程(第3版)练习参考答案 宋德福 司爱侠 Unit 1 [Ex 1] 1..F 2.T 3.T 4.F 5.T 6.T 7.T 8.T 9.T 10.F [Ex 2] 1.input, ...
- 昆明理工大学知道计算机答案,昆明理工大学 计算机基础教材参考答案(1-6章)
计算机基础教材参考答案 大学计算机基础教材参考答案 第1章 信息社会与计算技术 参考答案 1. 判断题 (1)错 (6)错 (11)对 2. 选择题 (1)C (6)A (11)A (2)错 (7)对 ...
最新文章
- ca开头的车是什么牌子_动车与高铁的区别是什么?很少人知道!让我来告诉你吧...
- JTree用法及JTree使用经验总结转
- Go 语言开发第一天,我的学习之路从这里开始
- Oracle存储过程及调用
- win7、offcie 2010是否激活查看方法
- 冒充中科大少年班校友被打脸!AI 公司创始人被扒清华硕士和斯坦福博士均造假...
- axis1 创建service服务端 , axis1 客户端
- Mac好用的图片压缩软件——JPG Compress 2 for Mac
- 提权学习:提权拿服务器方法总结-超细(补充节点0x02)
- 快压卸载后,右键打开压缩文件时还是有快压,方案:删除注册表相关项
- 毕业半年,帅地人生的第一个一百万
- fedora linux搜狗输入法,Linux_Fedora20 32位系统中安装搜狗拼音输入法图文教程,搜狗输入法在windows系统中是非 - phpStudy...
- 第15周-两个二阶二维矩阵相乘
- acwing每日一题-战舰
- 皮蛋拌豆腐引发的——沟通管理的思考(丁仿)
- 《Java语言程序设计与数据结构》编程练习答案(第七章)(一)
- java程序笑脸怎么打_Java程序运行后出现一张笑脸,鼠标点击一次则变成哭脸,再点击一次又变成笑脸,依次轮换。...
- 快手二面:a==1 a==2 a==3 是 true 还是 false?
- (转)HBase WAL简介
- CSP 2017-12
热门文章
- ElasticSearch可视化工具Dejavu安装使用
- 上机环境是什么意思_380元入手RX580满血显卡,跑分17万,还要什么自行车
- centos7 docker删除端口映射_centos7安装docker,结合docker安装mysql,学习简单使用
- SqlServer用SQL语句将查出的数据直接插入到另一个张的表中
- 计算机程序的构造和解释 python_SICP Python 描述 第三章 计算机程序的构造和解释 3.1 引言...
- php 循环大数组 卡死,PHP 大数组循环问题_PHP教程
- php for 脚本,php for循环脚本。
- java 跳转虚拟目录_java tomcat虚拟目录的深入了解
- python日期迭代_计算敏捷项目中迭代时间安排(Python3版)
- html5鼠标下拉浮窗固定,【前端技术】vue-floating-menu可拖拽吸附的浮窗菜单