欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言编程答案(127页).doc

    • 资源ID:34802899       资源大小:289.50KB        全文页数:134页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言编程答案(127页).doc

    -1 温度转换(06秋)背景: 经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:有些使用华氏温度标准(F),有些使用摄氏温度(C)。现在,请你根据温度转换公式设计一个温度转换程序,可以进行温度转换。如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。温度转换的公式为:F(C×95)32 ;C(F32)×59 ;式中F-华氏温度,C-摄氏温度。输入:第一个数据(1 或 2 )确定转换的类型:华氏转摄氏(1);摄氏转华氏(2);     第二个数据是相应需要转换的温度值。 输出:相应的转换后的温度值(保留小数点后 2 位)。程序实例1:#include<stdio.h> void main() int a; float x,y; scanf("%d%f",&a,&x); if ( a=1 ) y=(x-32)*5.0/9.0; printf("The Centigrade is %.2fn",y); else if(a=2) y=(x*9.0/5.0)+32; printf("The Fahrenheit is %.2fn",y); 结果:输入:1 100输出:The Centigrade is 37.78输入:2  -6.67输出:The Fahrenheit is 19.99程序实例2:#include <stdio.h> void main() float C;int a; scanf("%d %f",&a,&C); switch (a) case 1: printf("The Centigrade is %.2fn",(C-32)*5/9);break; case 2: printf("The Fahrenheit is %.2fn",(C*9/5)+32);break; default: printf("errorn"); 结果:输入:1 0输出:The Centigrade is -17.78输入:2 88输出:The Fahrenheit is 190.409 分数的四则运算在小学时我们就学习了分数的四则运算,即对两个分数进行加、减、乘、除等运算,现在我们尝试下用C语言来实现。输入:分数1 操作符 分数2输出:计算结果要求:计算结果使用分数表示,并且为最简化。例如结果为2/6,则被简化为1/3程序实例1:#include<stdio.h> int main() int a,b,c,d,e,f,x,y,z; char g; scanf("%d/%d %c %d/%d",&a,&b,&g,&c,&d); if(g='+') e=a*d+b*c;f=b*d; if(g='-') e=a*d-b*c;f=b*d; if(g='*') e=a*c;f=b*d; if(g='/') e=a*d;f=b*c; x=e; y=f; z=x%y; if(z!=0) while(z!=0) x=y;y=z;z=x%y; e=e/y; f=f/y; if(f>0) printf("%d/%d %c %d/%d = %d/%d",a,b,g,c,d,e,f); if(f<0) printf("%d/%d %c %d/%d = %d/%d",a,b,g,c,d,-e,-f); else printf("%d/%d %c %d/%d = %d",a,b,g,c,d,e/f); printf("n"); return 0; 结果:输入:1/3 + 1/2输出:1/3 + 1/2 = 5/6程序实例2:#include"math.h" #include<stdio.h> void main() int a,b,c,d,m,n,x,y,v;char z; scanf("%d/%d %c %d/%d",&a,&b,&z,&c,&d); switch (z) case('+'):m=a*d+b*c;n=b*d;break; case('-'):m=a*d-b*c;n=b*d;break; case('*'):m=a*c;n=b*d;break; case('/'):m=a*d;n=b*c;break; x=fabs(m);y=fabs(n);v=x%y; while(v!=0) x=y;y=v;v=x%y; if(m/y=0) printf("%d/%d %c %d/%d = 0n",a,b,z,c,d); else if(n/y=1) printf("%d/%d %c %d/%d = %dn",a,b,z,c,d,m/y); else printf("%d/%d %c %d/%d = %d/%dn",a,b,z,c,d,m/y,n/y); 结果: 输入:1/2+2/6输出:1/2+2/6=5/611 百马百担有100匹马,驮100担货,其中大马驮3担,中马驮2担,两匹小马驮1担输入:无输出:大、中、小马的个数,用逗号分隔。例如:2,30,68说明:大、中、小马都必须有,结果中要列出所有的组合可能每个结果占一行    因为有多个结果,结果的排序按照大马的个数从少到多程序实例1:#include <stdio.h> void main() int bigHorse,middleHorse,smallHorse; bigHorse=0; while(bigHorse<=33) middleHorse=1; while(middleHorse<50) smallHorse=100-bigHorse-middleHorse; if(3*bigHorse+2*middleHorse+smallHorse/2=100&&smallHorse%2=0) printf("%d,%d,%dn",bigHorse,middleHorse,smallHorse); middleHorse+; bigHorse+; 结果: 输入:无输出:2,30,685,25,708,20,7211,15,7414,10,7617,5,78程序实例2#include<stdio.h>void main() int a,b,c; for(a=0;a<=33;a+) for(b=1;b<50;b+) c=100-a-b; if(3*a+2*b+c/2=100&&c%2=0) printf("%d,%d,%dn",a,b,c); 结果:输入:无输出:2,30,685,25,708,20,7211,15,7414,10,7617,5,7816 邮票组合(选作)背景:我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或几张的组合,可以满足不同邮件的不同的邮资。现在,邮局有4种不同面值的邮票。在每个信封上最多能贴5张邮票,面值可相同,可不同。输入:四种邮票的面值。输出:用这四种面值组成的邮资最大的从1开始的一个连续的区间。说明:如结果为10,则表明使用4张邮票可组合出1、2、3、4、5、6、7、8、9、10这些邮资。名词解释: 邮资:就是你寄东西需要花多少钱。 邮票面额:是由国家发行的具有固定价格的花纸片,被称为邮票。如果你寄东西,邮局称了重量,告诉你要240分。这样你就要贴邮票了。如果现在邮局的邮票有面值为80分、50分、20分和10分的四种,你就可以采用不同的组合得到240的邮资,例如:采用3张80分的可以凑出240分;或者24张10分的凑起来240分也可以。显然不同邮票的组合都可以得到同样一种邮资。程序实例1:/*This program is to find the max set*/ #include<stdio.h> main() int a,b,c,d,i,j,k,l; static int s1000; scanf("%d%d%d%d",&a,&b,&c,&d); for (i=0;i<=5;i+) for (j=0;i+j<=5;j+) for (k=0;k+i+j<=5;k+) for (l=0;k+i+j+l<=5;l+) if (a*i+b*j+c*k+d*l) sa*i+b*j+c*k+d*l+; for (i=1;i<=1000;i+) if(!si) break; printf("The max is %d.n",-i); return 0; 结果:输入:1 4 12 21输出:The max is 71.程序实例2:#include "stdio.h" int total,max; int value5,num1000 = 0 ; void findmax(int n,int p) int i; if (p < 5 ) for (i = n;i <= 4;i +) total += valuei; if (max < total) max = total; numtotal = 1; findmax(i,p + 1); total -= valuei; int main() int i; for (i = 1;i <= 4;i +) scanf("%d",&valuei); total = 0;max = 0; findmax(1,0); for (i = 1;i <= max;i +) if (!numi) break; printf("The max is %d.n",i - 1); return 0; 结果: 输入:1 3 7 12输出:The max is 46.18 等值数列段(06秋)如果一个数列中的某一段(至少有两个元素)的各元素值均相同,则称之为等值数列段。等值数列段中元素的个数叫做等值数列段的长度。输入:由N个元素组成的整数数列A(其中N<=50)输出:A中长度最大的所有等值数列段的始末位置,如果没有等值数列段,则输出No equal number list. 说明: 始末位置是指数组下标,即0表示第一个元素。 如果有多个同等长度的等值数列,只输出第一个等值数列的起始位置。 当在一个LIST中出现两个等长的连续串的时候,我们的答案应该是第一个等长串。NN开始,输入j+记数器加1i+ 记数器加1保存长度和位置没遍历完 i<n ?如果相临字符相等是否也与下一字符相等输出,结束是否为最长YNYNYY程序实例1:#include"stdio.h"main()int i=0,j=0,k,n,max=0,maxnum=0,a50;scanf("%d",&n);for(i=0;i<n;i+)scanf("%d",&ai);/*输入*/for(i=j;i<n;i+)/*循环遍历*/j=i+1;if(ai=aj)/*如果相临的相等,i不变,继续看相等字符有多长*/while(ai=a+j);/*循环直到不相等为止*/if(maxnum<j-i)/*判断是否为最长*/maxnum=j-i;/*保存长度*/max=i;/*保存起始位置*/if(maxnum>0)/*输出*/printf("The longest equal number list is from %d to %d.n",max,maxnum+max-1);elseprintf("No equal number list.n");结果:输入:51 2 3 4 5输出:No equal number list.程序实例2:#include"stdio.h" void main() int a,x50,i,j,m=0,n=0; scanf("%d",&a); for(i=0;i<a;i+) scanf("%d",&xi); for(i=0;i<a-1;i=j) j=i+1; while(xj=xi&&j<a) j+; if(j-i-1>n-m) m=i;n=j-1; if(n-m)=0) printf("No equal number list.n"); else printf("The longest equal number list is from %d to %d.n",m,n); 输入:结果:61 0 1 1 1 0输出:The longest equal number list is from 2 to 4.19 大家一起做游戏(06秋)幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。规则如下:所有的小朋友绕成一圈,顺序排号,从第一个小朋友开始报数,凡是报到固定数字(例如5)的,都退出该游戏,直到只剩下一位小朋友游戏才中止。 每个小朋友都希望自己能有更多的练习数数的机会,所以都希望成为最终被留下的那位。 现在,请大家帮小朋友们计算一下,在第一次排号的时候排到第几位才能成为最终被留下的小朋友。输入:小朋友的个数(<=50) 要被练习的数字输出:最终被留下的小朋友的序号说明:如“要被练习的数字”是5,则每次数到5的同学要退出该游戏N数组计数器加1输出,结束更改数组 置零计数器更改从头遍历开始,输入,初始化小朋友是否已退出遍历数组结束只剩下一位小朋友YNY这次是否退出NYYY报数记数器加1程序实例1:#include"stdio.h"main() int m,n,d,i,temp,a100;scanf("%d%d",&n,&m);for(i=0;i<n;i+)ai=i+1;temp=0;d=0;while(d<n-1)/*标志次数,n-1次后结束,这是将只剩一个小孩*/for(i=0;i<n;i+)if(ai!=0)/*小朋友还没退出游戏*/ temp+; /*小朋友报数的数字*/if(temp=m) /*小朋友这次该退出游戏*/ ai=0; /*在数组中表示出来*/temp=0; /*报数从新开始*/d+; /*退出人数加1*/ for(i=0;i<n;i+)/*输出,寻找最后一个退出的小朋友*/if(ai!=0)printf("The left child is NO %d.n",ai);结果:输入10 3:输出:The left child is NO 4.程序实例2:#include<stdio.h> void main() int a51,i,j,x,n; scanf("%d %d",&n,&j); for ( i=0;i<=n-2;i+) ai=i+1;an-1=0;x=n-1; while( ax!=x ) for( i=1;i<=j-1;i+) x=ax; ax = aax; printf( "The left child is NO %d.",x+1 ); 结果: 输入:50 15输出:The left child is NO 22.23 删除重复字符(06秋)背景:输入一个长度不超过 100 的字符串,删除串中的重复字符。输入:输入要检查的字符串,长度不超过100个字符。例如:abacaeedabcdcd。输出:删除重复字符后的字符串。例如:abced。开 始输入字符串求串长len,I=1输出第一个字符J=0YI<len?NNJ<i结束Ynumi=numj?NYJ+输出第i个字符I+程序实例1:#include<stdio.h>#include<string.h>main()char num99;int i,j,len,m=0;gets(num);/*输入字符串*/len=strlen(num);/*求字符串长度*/printf("%c",num0);for(i=1;i<len;i+,m=0)/*从第二个开始*/for(j=0;j<i;j+)/*判断是否与前边的相等*/if(numi=numj)/*如果有相等的*/m=1;break;if(m=0)/*如果没有相等的*/printf("%c",numi); 结果:输入:abacaeedabcdcd输出: abced程序实例2:#include"stdio.h" #include"string.h" void main() char ch101; int i,j,k,s; gets(ch); s=strlen(ch); for(i=1;i<s;i+) for(j=0;j<i;j+) if(chi=chj) for(k=i;k<s;k+) chk=chk+1; i-;s-;break; puts(ch); 输入:111122233344455577yuyuyu输出:123457yu24 单词排序(06秋)输入 5 个单词,将它们按从大到小的顺序排列后输出。输入:5个单词输出:排序后的顺序开 始输入5个字符串i=0i<4?J=iYJ<5?NN输出Y结束Nwi<wj?Ywi交换wji+j+程序实例1:#include<stdio.h>#include<string.h>main()char w520,a20;int i,j;for(i=0;i<5;i+)gets(wi); /*用一维数组读串的方式生成二维数组*/for(i=0;i<4;i+)for(j=i;j<5;j+)if(strcmp(wi,wj)<0) /*用字符串比较函数判断*/ /*冒泡法排序:直接交换*/strcpy(a,wj);strcpy(wj,wi);strcpy(wi,a);for(i=0;i<5;i+)puts(wi); /*用一维数组写串的方式输出二维数组*/ 输入:BASICC+PascalCFortran输出:PascalFortranC+CBASIC程序实例2:#include"stdio.h" #include"string.h" void main() char ch526,c26; int i,j,k; for(i=0;i<5;i+) gets(chi); for(i=0;i<4;i+) k=i; for(j=i+1;j<5;j+) if(strcmp(chk,chj)<0) k=j; if(k!=i) strcpy(c,chi); strcpy(chi,chk); strcpy(chk,c); for(i=0;i<5;i+) puts(chi); 输入:BASICC+CFortranPascal输出:PascalFortranC+CBASIC25 大数分解(06秋) 我们在“计算机科学导论”的期末考试中有一道试题。下面请你看看那题目应该如何编写。从键盘输入的一个大于 1 的整数,通过算法将该整数分解为若干因子的乘积。输入:一个正整数。输出:分解后的各个因子。开 始输入正整数ai=2Y结束a=1?NNi+a/i=0?Ya=a/i输出i程序实例1:#include <stdio.h> void main() int n,i; scanf("%d",&n); for(i=2;n>1;) if(n%i=0) printf("%dn",i);n/=i; else i+; 输入:24输出:2223程序实例2:#include"stdio.h" void main() int n,i; scanf("%d",&n); for(i=2;i<=n;) if(n%i=0) printf("%dn",i); n/=i; continue; else i+; 输入:15输出:3526 铺地板(选作)背景:    你是一名室内装潢工程队的配料员。你的伙伴们喜欢采用“之”字型的方式铺大理石地砖,图案如下:1 2 6 7 15 3 5 8 14 16 4 9 13 17 22 10 12 18 21 23 11 19 20 24 25 学了 C 语言以后,你决定编写一个程序,帮助你的同伴生成这样的图形。输入:    方阵N的大小。输出    方阵。程序实例1:#include"stdio.h" int main() int a,i,j,k,x100100; scanf("%d",&a); x00=1; for(k=2,i=0,j=0;k<=a*a;k+) if(i+1)%2=0&&(j+1)%2=0)|(i+1)%2!=0&&(j+1)%2!=0) if(i-1<0&&j+1<a) j+; else if(j+1>a-1) i+; else i-;j+; xij=k; else if(j-1<0&&i+1<a) i+; else if(i+1>a-1) j+; else i+;j-; xij=k; if(a*a=1) printf("1n"); else for(i=0;i<a;i+) for(j=0;j<a;j+) if(a*a<100) j=a-1?printf("%2dn",xij):printf("%2d ",xij); else j=a-1?printf("%3dn",xij):printf("%3d ",xij); return 0; 输入:5输出: 1  2  6  7 15 3  5  8 14 16 4  9 13 17 2210 12 18 21 2311 19 20 24 25程序实例2:#include <stdio.h> main() int i, j, n, a1010; scanf ("%d",&n); a00=1; for ( i=0,j=1;j<n;j+ ) aij=aij-1+(j=j/2*2)?2*j:1); for (i=1; i<n; i+) for (j=0; j<n-1;j+) aij=(i+j)=(i+j)/2*2)?ai-1j+1-1:ai-1j+1+1); aij=ai-1j+(n-i)=(n-i)/2*2?1:(n-i)*2); if (n=1) printf("%d",a00); else for ( i=0;i<n;i+ ) printf("%2d",ai0); for ( j=1;j<n;j+ ) printf("%3d",aij); printf("n"); return 0; 输入:1输出:127 编码问题(选作)(06秋)设有一个整形数组 A0.N-1;存放的元素为 0N-1 (1<N<=10)之间的整数,且 AiAj(ij)。例如,当N=6时,有:A=(4,3,0,5,1,2)。此时,数组A的编码定义如下: A0编码为0; Ai编码为:在A0,A1,Ai-1中比Ai的值小的个数 (i=1,2,N-1) 例如上面数组 A的编码为:B=(0,0,0,3,1,2)若给出数组A,则可求出其编码。同理,若给出数组A的编码,可求出A中的原数据。输入: 推导方向(取值为1或2,如为1,则表示根据数组求数组编码;如为2,则表示根据编码反求数组) 数组个数 数组或数组编码元素 输出:数组编码、或数组本身(元素之间以空格分隔)开 始输入正向?N初始化数组Cblen=alen, I=lenYi=2Ni>0?Ni<len?Y结束bi=caiYj=1 k=0保存Ki+更改数组CNj<i?i-Yaj<ai?YK+Nj+程序实例1:#include "stdio.h" void main( ) int i,j,t,n; int arr11,ans11= 0 ,num10; scanf("%d%d",&t,&n); for (i = 1;i <= n;i +) scanf("%d",&arri); arr0 = 20; if (t = 1) for (i = 1;i <= n;i +) for (j = 1;j < i;j +) if (arri > arrj) ansi +; else for (i = 0;i < n;i +) numi = i; for (i = n;i >= 1;i -) ansi = numarri; for (j = arri;j <= i - 1;j +) numj = numj + 1; for (i = 1;i < n;i +) printf("%d ",ansi); printf("%dn",ansn); 输入:164 3 0 5 1 2输出: 0 0 0 3 1 2程序实例2:#include "stdlib.h" #include<stdio.h> int cmp(const void *a, const void *b) return *( int* ) a - *( int* ) b; void main() int mode,i,j,n,a13,b13,m13; scanf("%d%d",&mode,&n); for(i=0;i<n;i+) scanf("%d",&ai); if(mode=1) b0=0; for(i=1;i<n;i+) for(j=0,bi=0;j<i;j+) if(aj<ai) bi+; else for(i=0;i<n;i+) mi=i; for(i=n-1;i>=0;i-) bi=mai; mai=n; qsort(m,n,sizeof(int),cmp); for(i=0;i<n;i+) printf("%d%s",bi,i!=n-1?" ":"");

    注意事项

    本文(C语言编程答案(127页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开