C语言程序设计第四版第六章答案-谭浩强.docx

上传人:太** 文档编号:97989613 上传时间:2024-07-08 格式:DOCX 页数:13 大小:25.97KB
返回 下载 相关 举报
C语言程序设计第四版第六章答案-谭浩强.docx_第1页
第1页 / 共13页
C语言程序设计第四版第六章答案-谭浩强.docx_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《C语言程序设计第四版第六章答案-谭浩强.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第四版第六章答案-谭浩强.docx(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1、 用筛选法求100之内的素数。解:#include #include int main()int i,j,n,a101;for (i=l;i=100;i+)ai=i;al=0;for (i=2;isqrt(100);i+)for (j=i+l;j=100;j+)if(ai!=0 & aj!=O)if(aj%ai=0) aj=O;printf(n);for (i=2,n=0;i=100;i+) if(ai!=0)printf(%5d,ai);n+;)if(n=10)printf(n);n=0;)printf(n);return 0;2、 用选择法对10整数排序。解:#include int

2、main()int ij,min,temp,all;printf(n enter data:nn);for (i=l;i=10;i+)char space=;for (i=0;i5;i+) printf(n);printf( );for (j=l;j=i;j+)printf( c、space);for (k=0;k5;k+) printf(%c,ak);)printf(nnn);return 0;12、有一行电文,已按下面规律译成密码:a -z b y c -x母文解即第1个字母变成第26个字母,第i个字母变成第(26 i+1)个字 ,非字母字符不变。要求编程序将密码译回原文,并输出密码和原O

3、 #include int main() intj,n;char ch80,tran80;printf(ninput cipher code:);gets(ch);printf(nncipher code :%sn,ch);j=0;while (chj!=O) if(chj=A) & (chj=a) & (chj=z)tranj=219-chj;elsetranj=chj;j+;)n=j;printf(nnoriginal text:);for (j=O;jn;j+)putchar(tranj);printf(n);return 0;)1) )#include int main()intj,n

4、;char ch80;printf(ninput cipher code:nn);gets(ch);printf(nncipher code:%snfch);j=o;while (chj!=O) if (ch=A) & (chj=a) & (chj=fz!) chj=219-chj;elsechj=chj;j+;)n=j;printf(noriginal text:);for (j=O;jn;j+) putchar(chj);printf(n);return 0;13、编一程序,将两个字符串连接起来,不要用strcat函数。 解:#include int main() charsl80,s24

5、0;int i=O,j=O;printf(n input string l:n);scanf(%s,sl);printf(ninput string2:n);scanf(%s,s2);while (sli!=O)i+;while(s2j!=t01)sli+=s2j+;sli=O;printf(nnThe new string is:%snn,sl);return 0;14、 编一个程序,将两个字符串si和s2比较,若sls2,输出一 个正数;若sl=s2,输出0;若sls2,输出一个负数。不要用strcpy 函数。两个字符串用gets函数读入。输出的正数或负数的确定值应是 相比较的两个字符串相

6、应的ASCII码的差值。例如,“A”与“C”相 比,由于A”“C,应输出负数,同时由于 比和C的ASCII 码差值为2,因此应输出“-2”。同理:“And” “Aid”比较,依据第2 个字符比较结果,“n”比“广大5,因此应输出“5”。解:#include int main() int i,resu;charsl100,s2100;printf(Minput string 1 :);gets(sl);printf(nninput string2:n);gets(s2);i=0;while (sli=s2i) & (sli!=0)i+;if(sic & s2iL(y)resu=O;elseres

7、u=sli-s2i;printf(nnresult: %d.nn,resu);return 0;)15、 编写一个程序,将字符数组s2中的全部字符复制到字符数组sl中。不用strcpy函数。复制时,70,后面的字符不复制。解:#include#includemain()(int i;char strl100,str2100;printf(ninput string 2:n);scanf(%s,str2);for(i=0;i=strlen(str2);i+)strli=str2i;printf(n str 1: % snn, s tr 1);printf(a%d=,i);scanf(%d,&ai

8、);)printf(n);printf(The orginal numbers:n);for (i=l;i=10;i+)printf(%5d,ai);printf(n);for (i=l;i=9;i+)min=i;for (j=i+l;jaj) min=j;temp=ai;ai=amin;amin=temp;)printf(nThe sorted numbers:n);for (i=l;i=10;i+)printf(%5d,ai);printf(n);return 0;3、 求一个3义3的整型矩阵对角线元素之和。解:#include int main()(int a33,sum=0;int i

9、,j;printf(nenter data:nn);for (i=0;i3;i+)for (j=0;j3;j+)scanf(n%3dn,&aij);for (i=0;i3;i+)sum=sum+ai i;printf(n sum=%6dn ”, sum);return 0;4、 有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。解:#include int main() int all= 1,4,6,9,13,16,19,28,40,100);int temp 1,temp2,number,end,i J;printf(narray a:nn);for (i=0;iend

10、)a10=number;elsefor (i=0;inumber)templ=ai;ai=number;for (j=i+l;jll;j+)temp2=aj;aj=templ;templ=temp2;) break;)printf(nNow array a:nn); for (i=0;ill;i+4-)printf(%5d,ai);printf(nnH);return 0;5、 将一个数组中的值按逆序重新存放。例如,原来依次为8、6、5、4、lo要求改为 1、4、5、6、8o 解:#include stdio.h#define N 5 void main() int aN,i,temp;pri

11、ntf(enter arry a:n);for(i=0;iN;i+) scanf(%d,&ai);printf(arry a:n);for(i=0;iN;i+)printf(%4d,ai);for(i=0;iN/2;i+) temp=ai;ai=aN-i-l;aN-i-l=temp;)printf(nNow,arry a:n);for(i=0;iN;i+)printf(%4d,ai);printf(n);)6、 输出以下的杨辉三角形(要求输出10行)。11112113311464115101051解:#include stdio.hvoid main() int i,j,n=0,a3131=0

12、;while(n30)/*最多可输出 30 行*/printf(”请输入杨辉三角形的行数:); scanf(%d,&n);)for(i=0;in;i+)ai0=l;/* 第一列全置为一*/for(i=l;in;i+)for(j=l;j=i;j+)aij=ai-lj-l+ai-lj; /* 每个数是上面两数之和*/for(i=0;in;i+)/* 输出杨辉三角*/ for(j=0;j=i;j+)printf(%5d,aij);printf(n);)7、 输出“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、 每一列和对角线之和均相等。例如,三阶魔方阵为816357492解:#include in

13、t main() int a1515,i,j,k,p,n;P=l;while(p=l)printf( enter n(n=l-15):);scanf(%d,&n);if(n!=0) & (n=15) & (n%2!=0)p=0;for (i=l;i=n;i+)for (j=l ;j=n;j+)aij=0;j=n/2+l;alU=l;for (k=2;k=n*n;k+)j=j+l;if(in)i=i+2;j=jelseif (in)j=l;)if(aij=O)aij=k;elsei= i+2;闫-1;aij=k;)for (i=l;i=n;i+)for (j=l;j=n;j+)printf(%5

14、d,aij);printf(n);)return 0;)8、 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。解:#include #define N 4#define M 5/*数组为4行5列*/int main()int i j,k,aNM,max,maxj,flag;printf(Mplease input matrix:nn);for (i=0;iN;i+)for (j=O;jM;j+)scanf(H%dn,&aij);for (i=0;iN;i+)max=ai0;maxj=0;for (j=O;jmax)max=aij;maxj=j;)flag=

15、l;for (k=0;kakmaxj)flag=0;continue;if(flag)/*输入数组*/*起先时假设ai最大*/*将列号0赋给maxj保存*/*找出第i行中的最大数*/*将本行的最大数存放在max中*/*将最大数所在的列号存放在maxj中*/*先假设是鞍点,以flag为1代表*/*将最大数和其同列元素相比*/*假如max不是同列最小,表示不是鞍点令flagl为0 */*假如flagl为1表示是鞍点*/printf(na%d%d=%dnn,i,maxj,max);/* 输出鞍点的值和所在行列号 */break;/*假如flag为0表示鞍点不存在*/)ifdflag)printf(n

16、It is not exist!nn);return 0;)9、有15个数按由大到小依次存放在一个数组中,输入一个数, 要求用折半查找法找出该数是数组中第几个元素的值。假如该数不在 数组中,则输出“无此数”。解:#include #define N 15int main() int i,number,top,bott,mid,loca,aN,flag= 1 ,sign;char c;printf(nenter data:nH);scanf(n%dn,&a0);i=l;while(i=ai-l)i+;elseprintf(nenter this data again:nn);)printf(nn

17、n);for (i=0;iN;i+)printf(5d”,ai);printf(n);while(flag)printf(Hinput number to look for:);scanf(%dn,&number);sign=0;top=0;/top是查找区间的起始位置bott=N-l;/bott是查找区间的最末位置if (numberaN-l) 要查的数不在查找区间内loca=-1;/表示找不到while (!sign) & (top=bott)mid=(bott+top)/2;if (number=amid)loca=mid;printf(HHas found %d, its positi

18、on is %dnn,number,loca+1); signal;)else if (numberamid)bott=mid-1;elsetop=mid+1;)if(!sign|loca=-l)printf(Hcannot find %d.nn,number);pMntf(continu or not(Y/N)?n);scanf(n %cn,&c);if (c=-N|c=,n,)flag=0;)return 0;)10、 有一篇文章,共有3行文字,每行有80个字符。要求分别统 计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。解:#include stdio.hvoid main

19、()int i,j,uppjow,dig,spa,oth;char text380;upp=low=dig=spa=oth=0;for(i=0;i3;i+) printf(please input line %d:n,i+l);gets(texti);for(j=0;j=*A&textij=Z) upp+;else if=,0,&textij=9,) dig+;else if (textij, spa+;else oth+;)printf(nnupper case:%dnn,upp);printf(nlower case:%dnn,low);printf(H digit printf(n space printf(n other:%dndig);:%dn,spa);:%drT,oth);11、输出以下图案: rr*rr*解:#include int main() char a5=*,int ij,k;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁