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

    C语言程序设计(高潮版)编程题答案.docx

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

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

    C语言程序设计(高潮版)编程题答案.docx

    3-1#include <stdio.h>int main ( ) float x,y; printf("Enter x:"); scanf("%f",&x); if(x<5) y=(x>=0?x:-x); else if(x<20) y=3*x*x-2*x+1; else y=x/5; printf("x=%f, y=%fn",x,y); return 0;3-2#include <stdio.h>#include <math.h>int main() int a,b,c;double delta,p,q;printf("请输入一元二次方程的系数a,b,c:");scanf("%d%d%d",&a,&b,&c);delta=b*b-4*a*c;p=-(double)b/(2*a);q=sqrt(fabs(delta)/(2*a);if(delta>=0)printf("nx1=%fnx2=%fn",p+q,p-q);elseprintf("nx1=%f+i%f",p,q);printf("nx2=%f-i%fn",p,q);return 0;3-3#include <stdio.h>int main() int p,q; /q为转换点float s,tax;printf("Please enter s(工资额):");scanf("%f",&s);q=(int)s/1000;switch(q) case 0: p=0; break; case 1: p=5; break; case 2: case 3: case 4: p=8; break; case 5: case 6: case 7: p=15; break; default:p=20;tax=s*p/100;s=s-tax;printf("纳税款: %5.0fn",tax);printf("实得工资数: %5.0fn",s);return 0;3-4#include <stdio.h>int main() int i,j,k,sum=0;for(i=1;i<=99;i+=2)j=i+1,k=i+2,sum=sum+i*j*k;printf("1*2*3+3*4*5+99*100*101=%dn",sum);return 0;3-5#include <stdio.h>int main()double e=1.0;double u=1.0;int n=1;while(u>=1.0e-6)u=u/n;e=e+u;n=n+1;printf("e=%f (n=%d)n",e,n);return 0;3-6#include <stdio.h>int main( )int i,t,sign=1,m=2,n=1;/sign用于设置正负号,m代表分母,n代表分子double u,sum=0;for(i=1;i<=20;i+)u=sign*1.0*m/n;/or: u=sign*(double)m/n;sum=sum+u;sign=-sign;/每次循环改变一次正负号t=m,m=m+n,n=t;/当前的分子分母之和是后一项的分子,当前的分子是后一项的分母printf("sum=%fn",sum);return 0;3-7/方法一#include <stdio.h>int main( ) int g,s,b; /分别代表个位、十位、百位上的数码 for(b=1;b<=9;b+) /百位上的数码由1变到9 for(s=0;s<=9;s+) /十位上的数码由1变到9 for(g=0;g<=9;g+) /个位上的数码由1变到9 if(g*g*g+s*s*s+b*b*b=g+s*10+b*100) printf("%dn",g+s*10+b*100); return 0;/方法二#include <stdio.h>int main( ) int g,s,b; /分别代表个位、十位、百位上的数码 int x; /x代表一个3位整数 for(x=100;x<=999;x+) b=x/100; s=(x-b*100)/10; g=x%10; if(g*g*g+s*s*s+b*b*b=x) printf("%dn",x); return 0;*/方法三:移位求余得数码#include <stdio.h>int main( ) int g,s,b; /分别代表个位、十位、百位上的数码 int x,y; /x代表一个3位整数 for(x=100;x<=999;x+) y=x; g=y%10; s=(y=y/10)%10; b=(y=y/10)%10; if(g*g*g+s*s*s+b*b*b=x) printf("%dn",x); return 0;3-8/方法一#include <stdio.h>int main( ) int num=0,g,s,b;/g,s,b分别代表个位、十位、百位上的数码(1000肯定不符合要求) for(b=1;b<=9;b+) /百位上的数码由1变到9 for(s=0;s<=9;s+) /十位上的数码由1变到9 for(g=0;g<=9;g+) /个位上的数码由1变到9 if(g+s+b=11)printf("%d ",g+s*10+b*100);num+; printf("ntotal: %dn",num); return 0;/*/方法二:移位求余得数码#include <stdio.h>int main( ) int g,s,b;/分别代表个位、十位、百位上的数码 int num=0,x,y; /x代表一个3位整数 for(x=100;x<=999;x+) y=x; g=y%10; s=(y=y/10)%10; b=(y=y/10)%10; if(g+s+b=11) printf("%d ",x); num+; printf("ntotal: %dn",num); return 0;3-9/方法1三重循环#include <stdio.h>int main( ) int d10,d5,d1; /分别代表10元、5元和1元纸币的数量 int num=0; for(d10=1;d10<=9;d10+)for(d5=1;d5<=19;d5+) for(d1=1;d1<=48;d1+) if(d1+d5+d10=50)&&(10*d10+5*d5+d1=100) num+; printf(" 1元纸币数:%dn",d1); printf(" 5元纸币数:%dn",d5); printf("10元纸币数:%dn",d10); printf("n共有%d种兑换方案n",num); return 0;/*/方法2二重循环#include <stdio.h>int main( ) int d10,d5,d1; /分别代表10元、5元和1元纸币的数量 int num=0; for(d10=1;d10<=9;d10+)for(d5=1;d5<=19;d5+) d1=50-d10-d5; if(d1!=0 && (10*d10+5*d5+d1=100) num+;printf(" 1元纸币数:%dn",d1);printf(" 5元纸币数:%dn",d5);printf("10元纸币数:%dn",d10); printf("n共有%d种兑换方案n",num); return 0;*/3-10#include <stdio.h>int main()int m,s,i;for (m=2;m<1000;m+) s=0; /s用于存储因子之和for (i=1;i<m;i+)if (m%i)=0) s=s+i;if (s=m)printf("n%d is a 完数n",m);printf("it's factors are:");for (i=1;i<m;i+)if (m%i=0) printf("%d ",i);printf("n"); return 0;3-11#include <stdio.h>int main()int min,i;for(i=1;i>=0;i+); /空循环min=i;printf("min: %dn",min);printf("max: %dn",-(min+1);return 0;3-12/方法1#include <stdio.h>int main()/用n记录鞭炮声的次数,用t记时(秒),每秒监测鞭炮声/a1,b1,c1统计每人已放鞭炮数,a2,b2,c2记录当前放鞭炮的状态(值1表示放鞭炮状态)int t=1,n=1,num;int a1=1,b1=1,c1=1,a2,b2,c2;printf("请输入每人的鞭炮数:");scanf("%d",&num);while(c1<num)if(t%5=0&&a1<num) a2=1,a1+;else a2=0;if(t%6=0&&b1<num) b2=1,b1+;else b2=0;if(t%7=0&&c1<num) c2=1,c1+;else c2=0;if(a2=1|b2=1|c2=1) n+;t+;printf("一共能听到%d次鞭炮声n",n);return 0;/*/方法2分时间段统计#include <stdio.h>int main()/用n记录鞭炮声的次数,用t记时(秒),每秒监测鞭炮声int t,n=1,num;printf("请输入每人的鞭炮数:");scanf("%d",&num);for(t=1;t<=(num-1)*5;t+) if(t%5=0|t%6=0|t%7=0) n+;for(;t<=(num-1)*6;t+) if(t%6=0|t%7=0) n+;for(;t<=(num-1)*7;t+) if(t%7=0) n+;printf("一共能听到%d次鞭炮声n",n);return 0;*/4-1#include <stdio.h>int main()int hcf(int,int); /求最大公约数的函数int lcd(int,int,int); /求最小公倍数的函数int u,v,h,l;printf("请输入两个整数:");scanf("%d%d",&u,&v);h=hcf(u,v);l=lcd(u,v,h);printf("它们的最大公约数是%dn",h);printf("它们的最小公倍数是%dn",l);return 0;int hcf(int u,int v)int t,r;if (v>u) t=u,u=v,v=t;while(r=u%v)!=0) u=v,v=r;/辗转相除法return v;int lcd(int u,int v,int h) return(u*v/h); 4-2#include <stdio.h>const double PI=3.14159;double girth(double r) /计算圆周长return r*2*PI;double area(double r) /计算圆面积return r*r*PI;int main() double r; printf("请输入半径(r):"); scanf("%lf",&r); printf("圆周长:%fn",girth(r); printf("圆面积:%fn",area(r); return 0;4-3#include <stdio.h>int intcat(int x,int y)int n=10,z=y;while(y=y/10) n=n*10;z=x*n+z;return z;int main()int x,y;printf("Enter x,y: ");scanf("%d%d",&x,&y);printf("The new number is %dn",intcat(x,y);return 0;4-4#include <stdio.h>int main()double getPower(int x,int y); /函数声明int x,y;printf("Enter x,y: ");scanf("%d%d",&x,&y);printf("%d%d=%fn",x,y,getPower(x,y);return 0;double getPower(int x,int y)double f;if(y=1) f=x;else f=x*getPower(x,y-1);return f;4-5#include <stdio.h>int main()int reverse(int n); /函数声明int n;printf("Enter n: ");scanf("%d",&n);printf("The new number is %dn",reverse(n);return 0;int reverse(int n)int sign=1,k=0;if(n<0) n=-n,sign=-1;dok=k*10+n%10;n/=10;while(n);return sign*k;4-6#include <stdio.h>#include <math.h>int main()float TriangleArea(float a, float b, float c); /函数声明float a,b,c,area;printf("输入三角形三边a,b,c: ");scanf("%f%f%f",&a,&b,&c);area=TriangleArea(a,b,c);if(area=-1)printf("(%f,%f,%f)不能构成三角形!n",a,b,c);elseprintf("三角形(%f,%f,%f)面积为:%fn",a,b,c,area);return 0;float TriangleArea(float a, float b, float c)float s;if(a+b<=c)|(a+c<=b)|(b+c<=a) return -1;s=(a+b+c)/2;return sqrt(s*(s-a)*(s-b)*(s-c);4-7#include <stdio.h>#include <math.h>int main ()double fac(int); /函数声明double s=1.0, u=1.0;int x,n=1;printf("Enter x: ");scanf("%d",&x);while(u>=1.0e-6)u = pow(x,n)/fac(n); /调用系统函数和自定义函数s = s+u;n = n+1;printf("e%d=%fn",x,s);return 0; /求n!的函数(递推算法)double fac(int n)double f=1;if(n>0)for(;n>1;n-) f=f*n;/求n!else if(n=0) f=1;/0!的值为1else if(n<0) f=-1;/如果n为负数,则返回-1,表示错误return f;5-1#include <stdio.h>#define M 3#define N 4/*/方法一int main()int aMN=1,2,3,4,5,6,7,8,9,10,11,12;int sum=0,i,j;for(i=0;i<M;i+)for(j=0;j<N;j+)sum=sum+aij;printf("arr_sum=%dn",sum);return 0;*/方法二int main()int arr_sum(int arrMN);/函数声明int aMN=1,2,3,4,5,6,7,8,9,10,11,12;printf("arr_sum=%dn",arr_sum(a);return 0;int arr_sum(int arrMN)int sum=0,i,j;for(i=0;i<M;i+)for(j=0;j<N;j+)sum=sum+arrij;return sum;5-2#include <stdio.h>#define N 3int main()int arr_xsum(int arrNN); /函数声明int aNN=1,2,3,4,5,6,7,8,9;int i,j;/输出数组元素for(i=0;i<N;i+)for(j=0;j<N;j+) printf("%3d ",aij);printf("n");printf("narr_xsum=%dn",arr_xsum(a);return 0;int arr_xsum(int arrNN)int i,sum=0;for(i=0;i<N;i+)sum=sum+arrii+arriN-1-i;if(N%2)sum=sum-arr(N-1)/2(N-1)/2; /若为奇数项数组return sum;5-3#include <stdio.h>#define N 3int main()void convert_array(int arrNN); /函数声明int aNN=1,2,3,4,5,6,7,8,9;int i,j;printf("nThe original array:n");for(i=0;i<N;i+)for(j=0;j<N;j+) printf("%5d",aij);printf("n");convert_array(a);/函数调用printf("nThe converted array:n");for(i=0;i<N;i+)for(j=0;j<N;j+) printf("%5d",aij);printf("n");return 0;void convert_array(int arrNN)int i,j,t;for(i=0;i<N;i+)for(j=i+1;j<N;j+)t=arrij;arrij=arrji;arrji=t;5-4#include <stdio.h>int main()int binary(int v,int n,int x);/函数声明(折半查找函数)int i,v10,x,find=-1;printf("按由小到大的顺序输入10个整数: n");for(i=0;i<10;i+)scanf("%d",&vi);printf("Enter x to look for: ");scanf("%d",&x);find=binary(v,10,x);/折半查找if(find!=-1)printf("%d been found. Its position is %dn",x,find+1);elseprintf("无此数n");return 0;/用折半查找法,在数组v(长度为n)中查找xint binary(int v,int n,int x) int low,high,mid,find=-1; /find=-1表示未找到 low=0;high=n-1; while(low<=high) mid=(low+high)/2; if(x<vmid) high=mid-1; else if(x>vmid) low=mid+1;else find=mid; break; return find;5-5#include <stdio.h>#define N 80int main()char strN,x;void del_char(char str,char x);/函数声明printf("Enter a string: ");gets(str);printf("Enter the character deleted: ");scanf("%c",&x);del_char(str,x);/函数调用printf("The new string is: %sn",str);return 0;/在一行字符串中删去指定的字符(x)将删除所有指定的字符void del_char(char str,char x)int i,j;for(i=0,j=0;stri!='0'i+)if(stri!=x) strj+=stri;strj='0'5-6#include <stdio.h>#include <string.h>int main()char str80;void reverse(char str);printf("请输入字符串:");gets(str);reverse(str);printf("反转后的字符串为:");puts(str);return 0;/字符串反转void reverse(char str)char t;int i,j,len=strlen(str);for(i=0,j=len;i<len/2;i+,j-)t=stri;stri=strj-1;strj-1=t;5-7#include <stdio.h>#include <string.h>#define N 5int main() int i,j,n=N; char strN80,temp80; printf("please input strings:n"); for(i=0;i<n;i+) gets(stri); /起泡法排序 for(i=0;i<n-1;i+) for(j=0;j<n-i-1;j+) if(strcmp(strj,strj+1)>0) strcpy(temp,strj);strcpy(strj,strj+1);strcpy(strj+1,temp); printf("nsorted strings:n"); for(i=0;i<n;i+) puts(stri); return 0;5-8#include <stdio.h>int main()int i,j,upper,lower,digit,space,other;char text380;upper=lower=digit=space=other=0;for(i=0;i<3;i+)printf("please input line %dn",i+1);gets(texti);for(j=0;j<80 && textij!='0'j+)if(textij>='A'&& textij<='Z')upper+;else if (textij>='a' && textij<='z')lower+;else if (textij>='0' && textij<='9')digit+;else if (textij=' ')space+;elseother+;printf("upper case:%dn",upper);printf("lower case:%dn",lower);printf("digit :%dn",digit);printf("space :%dn",space);printf("other :%dn",other);return 0;6-1#include <stdio.h>#define N 3int main()void convert_array(int arr,int n); /函数声明int aNN=1,2,3,4,5,6,7,8,9;int i,j,n=N;printf("nThe original array:n");for(i=0;i<n;i+)for(j=0;j<n;j+) printf("%5d",aij);printf("n");convert_array(a0,n);printf("nThe converted array:n");for(i=0;i<n;i+)for(j=0;j<n;j+) printf("%5d",aij);printf("n");return 0;void convert_array(int arr,int n) /形参用指针(int *arr)或一维数组int i,j,t;for(i=0;i<n;i+)for(j=i+1;j<n;j+)t=arri*n+j;arri*n+j=arrj*n+i;arrj*n+i=t;6-2#include <stdio.h>int main()int arr_edge_sum(int *arr,int m,int n); /函数声明int a34=1,2,3,4,5,6,7,8,9;int i,j;printf("The array data:n");for(i=0;i<3;i+)for(j=0;j<4;j+) printf("%5d",aij);printf("n");printf("nsum=%dn",arr_edge_sum(a0,3,4);return 0;int arr_edge_sum(int *arr,int m,int n)/形参用指针或一维数组int i,j,sum=0;for(i=0,j=0;j<n;j+)sum=sum+arri*n+j;for(i=m-1,j=0;j<n;j+)sum=sum+arri*n+j;for(i=1,j=0;i<m-1;i+)sum=sum+arri*n+j;for(i=1,j=n-1;i<m-1;i+)sum=sum+arri*n+j;return(sum);6-3#include <stdio.h>int main() void bubble(int,int,int); /函数声明 int a34=1,2,-3,4,9,10,11,-12,5,6,7,-8; int i,j; printf("The original array:n"); for(i=0;i<3;i+) for(j=0;j<4;j+) printf("%5d",aij); printf("n"); bubble(a0,3,4); /数组排序 printf("The sorted array:n"); for(i=0;i<3;i+) for(j=0;j<4;j+) printf("%5d",aij);printf("n"); return 0;/起泡法排序void bubble(int array,int m,int n) int i,j,k,t; for(i=1;i<m*n;i+) k=0; for(j=0;j<m*n-i;j+) if(arrayj>arrayj+1) t=arrayj; arrayj=arrayj+1; arrayj+1=t;k+; if(k=0) break; /若本轮没有交换操作,提前退出 6-4#include <stdio.h>#include <string.h>int main()char str80;int strToInt(char *str); /函数声明printf("请输入数字串:");gets(str);printf("数字串转换成整数后再加1000的结果:%dn",strToInt(str)+1000);return 0;int strToInt(char *str)int i,n=*str-'0',len=strlen(str);for(i=1;i<len;i+)n=n*10+*(str+i)-'0'return n;6-5#include <stdio.h>#define N 80int main()char strN,x;void del_char(char *str,char x);/函数声明printf("Enter a string: ");gets(str);printf("Enter the character deleted: ");scanf("%c",&x);del_char(str,x);/函数调用printf("The new string is: %sn",str);return 0;/在一行字符串中删去指定的字符(x)将删除所有指定的字符void del_char(char *p,char x)char *q=p;for(;*p!='0'p+)if(*p!=x)*q+=*p;*q='0'/*/第二种方法只能删除字符串中找到的第一个,但更具有独立性和灵活性/先确定被删字符的位置(p指针),/然

    注意事项

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

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




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

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

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

    收起
    展开