ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:61.32KB ,
资源ID:22356838      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22356838.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《C语言程序设计》清华大学出版社课后答案Word文档下载推荐.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《C语言程序设计》清华大学出版社课后答案Word文档下载推荐.docx

1、 p+;n+; q=p; while(*q!=j-1) q+; while(parray;p-)*p=*(p-1);*array=array_end;m-;if(m0) move(array,n,m);95 输入n个整数,将最小数与第一个数对换,把最大数与最后一个数对换程序源代码:int number10;input(number);max_min(number);output(number);input(number)int i;9;number9);max_min(array)int array10;int *max,*min,k,l;int *p,*arr_end;arr_end=arr

2、ay+10;max=min=array;for(p=array+1;p*max) max=p;else if(*p0) swap(str1,str2);if(strcmp(str1,str3)0) swap(str1,str3);if(strcmp(str2,str3)0) swap(str2,str3);after being sortedn%sn%sn%sn,str1,str2,str3);char swap(p1,p2)char *p1,*p2;char *p20;strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);9.7 写一函数,功能是交换两个实数变量的值

3、。void swap(float * x, float * y); main() float a, b, *p1, *p2; a=10; b=20; p1=&a; p2=&b; printf(a=%f, b=%fn, a, b); swap(p1, p2); /* 或printf(%d %d, *p1, *p2) */ void swap(float *pa, float *pb) float temp; temp=*pa; *pa=*pb; *pb=temp; 9. 10 写一个函数,求一个字符串的长度。int len;char *str20;please input a string:le

4、n=length(str);the string has %d characters.,len);length(p)char *p;int n;n=0;while(*p!)n+;p+;return n;9.11_ 约瑟夫环问题:n个人围成一圈,从第一个人开始报数,凡报到的人退出,问最后剩下的是第几号。#define nmax 50int i,k,m,n,numnmax,*p;please input the total of numbers:p=num;*(p+i)=i+1;i=0;k=0;m=0;while(mnum,p-score); /*输出学号和成绩*/p=p-next; /*指针前进

5、*/while(p!=NULL);struct student *insert(ah,bh) /*定义插入函数*/struct student *ah,*bh;struct student *pa1,*pa2,*pb1,*pb2; /*这四个指针皆为student结构体类型*/pa2=pa1=ah; /*两个指针指向第一链表的表头*/pb2=pb1=bh; /*两个指针指向第二链表的表头*/do while(pb1-numpa1-num)&(pa1-next!=NULL) /*注意是按学号链接.当第二个链表的学号大于第一个链表的学号而且未到第一个链表结尾时*/ pa2=pa1;pa1=pa1-

6、 /*用pa2记下第一个链表的当前位置,pa1前进到下一个结点.到此已经脱离循环*/if (pb1-numnext=pb1; /*否则,第二个链表pa2指针指向第二个链表的当前位置*/pb1=pb1-pb2-next=pa1; /*做完上面的事情,两指针同时前进到下一个结点*/pa2=pb2;pb2=pb1; /*pa2指向第二个链表的当前位置,pb2 指向第二个链表的当前位置*/while (pa1-=NULL)|(pa1=NULL&pb1!=NULL); /*当第一个链表未到末尾或者第一个链表结束而第二个链表未结束 时,便重复做上面的事情*/if(pb1-next=NULL) /*脱离循环

7、时如果是第一个链表结束而且第二个链表之序号大于第一个 链表之序号则把pa1之next 域指向第二个链表的当前位置*/return(ah); /*返回目标链表的头地址*/struct student *creat() /*定义建立链表函数*/ struct student *p1,*p2,*head; /*此三个指针皆为student结构体类型*/ /*计数器n赋初值为0*/p1=p2=(struct student *)malloc(LEN); /*为结构体分配地址,p1,p2都指向这个地址*/input sno score: input 0 end.%ld,%dp1-num,& /*输入学号

8、和成绩*/head=NULL; /*表头先置为空指针*/while (p1-num!=0) /*当输入的学号不为0时*/ n=n+1; /*计数器增值1*/if(n=1)head=p1; /*如果是第生个结点,head指向第一个结点*/else p2-next=p1; /*如果不是第一个结点,链结到p2中,p2是建立的链表*/p2=p1; /*指针p2前进*/p1=(struct student *)malloc(LEN); /*再分配地址*/ /*再输入学号及成绩*/p2-next=NULL; /*当脱离循环时,链表已经建立完毕.勿忘给表尾一个空指针*/return(head); /*返回表

9、头地址*/main() struct student *ahead,*bhead,*abh; /*三个变量皆为结构体student类型*/ahead=creat();print(ahead); /*调用建立链表函数建立链表llistA,把返回地址赋给指针ahead*/sum=n; /*n为链表结点数*/bhead=creat(); print(bhead); /*调用建立链表函数建立链表llistB,把返回地址赋给指针bhead*/sum=sum+n; /*sum为两个链表的结点总数*/abh=insert(ahead,bhead); /*调用插入函数连结两个链表,把表头地址赋给abh*/pr

10、int(abh); /*打印连接的结果*/9.1 写一个函数,将一个行列矩阵转置。main()/*将一个3行3列矩阵转置*/ int a33,*p,i;input 3*3 ju zhen:for (i=0;3;i+)/*一行一行的输入*/%d %d %dai0,&ai1,&ai2);p=&a00;/*p指向二维数组首地址*/move(p);/*调用转置函数进行转置*/zhuan zhi hou juzhen wei:i+)/*一行一行的输出*/%d %d %dn,ai0,ai1,ai2);move(pointer)/*自己定义矩阵转置函数*/int *pointer;int i,j,t;for

11、 (j=i;t=*(pointer+3*i+j);/*(pointer+3*i+j)乃aij*/*(pointer+3*i+j)=*(pointer+3*j+i);/*(pointer+3*j+i);乃aji*/*(pointer+3*j+i)=t;/*此三句实现aij与aji互换*/ 9.13 运行结果:9.14 将n个数按输入时的顺序逆序排列。程序代码如下:struct line int num;struct line *next;/*定义结构体类型line,此中next是line类型的指针. 处理链表必用此种结构*/ int len=1,i;struct line *p1,*head,*

12、new,*newhead; /*此行指针皆为line类型*/p1=head=(struct line *)malloc(sizeof(struct line);/*各指针都指向系统分配的内存地址*/num=-1; head-=0)/*当输入的不是0时*/ p1=(struct line *)malloc(sizeof(struct line);/*再分配地址*/p-num?:num);/*再输入结点值*/next=head;head-len+;/*结点数自增值*/p1=head-/*指针指向表头,准备输出*/ output link n do %4d,p1-/*输出结点值*/if(p1-=NU

13、LL)p1=p1-/*如果未到表尾指针前进到下一个结点*/while(p1! /*循环终止条件*/9.17 有一个班个学生,门课,求: 第一门课的平均分; 找出有两科以上不及格的学生; 找出平均成绩在分以上者或全部课程成绩在85分以上者。有个学生,每个学生包括学号、姓名和三门课的成绩,要求打印出三门课崐总平均成绩以及最高分的学生数据。/*输入10个学生数据,计算平均分*/ char num6;char name8;int score4;float avr;stu10;/*定义stu10为student型结构体数组*/ int i,j,max,maxi,sum;float average;/*输

14、入*/10;n请输入第%d个学生的成绩:,i+1);学号: ,stui.num);姓名:,stui.name);for(j=0;成绩 %d.,j+1);stui.scorej);/*输入数据*/*计算*/average=0;max=0;maxi=0; sum=0;sum+=stui.scorej;/*累加每个人的分数*/stui.avr=sum/3.0;/*总分被3除得平均分*/average+=stui.avr;/*累加总平均成绩*/if(summax)max=sum;maxi=i;/* 如果这个人的总成绩大于当前最高成绩则此成绩替换掉当前最高成绩*/average/=10;/*总平均分被1

15、0除得平均分*/*打印*/ 学号 姓名 成绩1 成绩2 成绩3 平均分n%8s%10s,stui.num,stui.name);/*先输出学号,姓名*/j+)/*再输出三科成绩*/%7d,stui.scorej); %6.2fn,stui.avr);/*输出每个人平均分*/平均成绩是%5.2fn,average);/*输出总平均成绩*/最好成绩是学生 %s,总分是 %d.,stumaxi.name,max);/*输出最高分及相应学生姓名*/9.19 实现两个字符串的比较。int compare(char *s1, char *s2)int c;while (*s1!|*s2!)if (*s1*

16、s2) c=1;return c; else s1+;s2+;if(*s1= if(*s2=) c=0; else c=-1;else if(*s2=) c=1;main()char *s1,*s2;ninput string s1,s2n,s1);,s2);c=compare(s1,s2);result is if (c0)printf(s1s2else if (c=0)printf(s1=s2 else printf(s1_9.20 输入一个月份号,输出该月的英文名。enum month jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec; enum month i,; int * j;input month ?,j);switch (j-1)case jan:%-10s,jan break;case feb:febcase mar:marcase apr:aprcase may:maycase jun:juncase jul:julcase aug:augcase sep:sepcase oct:octcase nov:novcase dec:decdefault :9.21 将空格分开的字符串称为单词。输入多行字符串,直到输入stop单词时才停止。最后输出单词的数量#include

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

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