已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课后作业及参考答案C语言课后作业题参考答案第二章22 用赋值表达式表示下列计算 1) 2) 3) 4) 5)参考答案: 1) y=pow(x,a+pow(b,c)或者:exp(a+exp(c*log(b)*log(x)2) x=pow(log(sqrt(a+d*d)-exp(26),5.0/2)或者:exp(5.0/2*log(log(sqrt(a+d*d)-exe(26)3) y=sin(x)/(a*x)+fabs(cos(3.1415926*x/2) 4) R=1.0/(1.0/R1+1.0/R2+1.0/R3) 5) y=x/(1+(x/(3+(pow(2*x,2)/5+(pow(2*x,3)/(7+pow(4*x,2)26 编写程序,输入两个整数,分别求它们的和、差、积、商、余数并输出。参考答案: #includevoid main()int m,n;printf(请输入2个整数n);scanf(%d%d,&m,&n);printf(%d+%d=%dn,m,n,m+n);printf(%d-%d=%dn,m,n,m-n);printf(%d*%d=%dn,m,n,m*n);printf(%d除以%d:%fn,m,n,(float)m/n);printf(%d除以%d的余数:%dn,m,n,m%n);29 已知摄氏温度C与华氏温度F的转换关系是,编写一个摄氏温度与华氏温度转换的程序,输入C,输出F.参考答案:#includevoid main()float f,c;printf(请输入摄氏温度的值:n);scanf(%f,&c); /输入33/f=9*c/5+32; /结果为91.4f=9.0/5*c+32; /结果为91.4/f=9/5*c+32; /结果为65printf(转换为华氏温度是:%fn,f);第3章 分支程序设计33 编写程序,输入一个字母,若其为小写字母,将其转换成相应的大写字母,然后输出。参考答案:#includevoid main()char c1; printf(请输入一个小写字母:n);scanf(%c,&c1);if(c1=97&c1=a&c1=z)c1=c1-32; / c2=c1-(a-A);printf(该字母对应的大写字母是:%cn,c1);elseprintf(该字符不是小写字母n);程序运行结果:39编写程序,判断给定的3位数是否为Armstrong数,Armstrong数是指其值等于它本身每位数字立方和的数,如153就是一个Armstrong数。 参考答案:#include#includevoid main()int data; /变量声明,用来存储输入的三位整数int bit0,bit1,bit2; /变量声明,分别用来存储每一位上的数字int tmp0; /临时变量printf(请输入一个三位整数:n);scanf(%d,&data); if(data999|data100) /检验数据printf(输入数据错误.n);return; /退出当前函数bit0=data%10;tmp0=data/10;bit1=tmp0%10;bit2=tmp0/10;if(pow(bit2,3)+pow(bit1,3)+pow(bit0,3)=data)printf(%d是Armstrong数.n,data);elseprintf(%d不是Armstrong数.n,data);程序运行结果:(运行3次)程序改进:#include#includevoid main()int data; /变量声明,用来存储输入的三位整数int bit0,bit1,bit2; /变量声明,分别用来存储每一位上的数字int tmp0; /临时变量int flag=1; /flag用来控制是否继续输入其他3位数while(flag=1)printf(n请输入一个三位整数:n);scanf(%d,&data); while(data999|data100) /检验数据printf(输入数据错误,请重新输入:n);scanf(%d,&data); bit0=data%10;tmp0=data/10;bit1=tmp0%10;bit2=tmp0/10;if(pow(bit2,3)+pow(bit1,3)+pow(bit0,3)=data)printf(%d是Armstrong数.n,data);elseprintf(%d不是Armstrong数.nn,data);printf(n是否继续输入?1:继续;其他数字:退出:n);scanf(%d,&flag);程序运行结果:(运行一次)参考程序2:#include#includevoid main()int bit0,bit1,bit2; /变量声明,分别用来存储每一位上的数字printf(请输入3个一位整数,分别表示该三位数的百位、十位和个位上的数字(百位上数字不能为0):n);scanf(%d%d%d,&bit2,&bit1,&bit0); while(bit29|bit29|bit19|bit00) /检验数据printf(输入数据错误,请重新输入3个一位正整数:n);scanf(%d%d%d,&bit2,&bit1,&bit0); if(pow(bit2,3)+pow(bit1,3)+pow(bit0,3)=bit2*100+bit1*10+bit0)printf(%d是Armstrong数.n,bit2*100+bit1*10+bit0);elseprintf(%d不是Armstrong数.n,bit2*100+bit1*10+bit0);程序运行结果:310编写程序,读入一个点的X、Y,计算参考答案:#include#include#define EPS 1e-6 void main()float x,y,z;printf(请输入x和y的值:n);scanf(%f%f,&x,&y);if(fabs(x)EPS|fabs(y)0)if(y0)/第一象限z=log(x)+log(y);else/第四象限z=tan(x+y);elseif(y0)/第二象限z=sin(x)+cos(x);else/第三象限z=exp(2*x)+exp(3*y);printf(z=%fn,z);311 编程序,输入一个整数,判断它能否被3 、5 、7整除,并输出如下信息。A. 能同时被3 、5 、7整除;B. 能同时被两个数整除,并指明是哪两个数;C. 能被一个数整除,并指明是哪个数;D. 不能被所有数整除。参考答案1:#include stdio.hvoid main () int n; int a,b,c; printf(please input n:); scanf(%d,&n); a=b=c=0; /important! if (n%3=0) a=1; if (n%5=0) b=1; if (n%7=0) c=1; switch (a+b+c)case 3:printf(3,5,7);break;case 2:if (a=0) printf(5,7);if (b=0) printf(3,7);if (c=0) printf(3,5); break;case 1:if (a=1) printf(only 3);if (b=1) printf(only 5);if (c=1) printf(only 7); break;default:printf(never can be!); 参考答案二:#includevoid main()int n;printf(Please input an integer:n);scanf(%d,&n);if(n%3=0)if(n%5=0)if(n%7=0)printf(3,5,7n);elseprintf(3,5n);elseif(n%7=0)printf(3,7n);elseprintf(3n);elseif(n%5=0)if(n%7=0)printf(5,7n);elseprintf(5n);elseif(n%7=0)printf(7n);elseprintf(All not.n);参考答案3:#includevoid main()int data,i,count=0;char ch3;printf(请输入一个整数:);scanf(%d,&data);if(data%3=0) chcount=3;count+;if(data%5=0) chcount=5;count+;if(data%7=0) chcount=7;count+;printf(能被其中的%d个数整除,分别是:,count);for(i=0;icount;i+)printf( %c,chi);printf(n);3 20编程序,当输入数值月份时,显示相应英文月份名称。例如当输入1时输出January ,当输入5时输出May ,等等。参考答案1:#include stdio.hvoid main()int x;printf(Please input the number:);scanf(%d,&x);switch(x)case 1: printf(Januaryn); break;case 2: printf(Februaryn); break;case 3:printf(Marchn); break;case 4:printf(Apriln); break;case 5:printf(Mayn); break;case 6:printf(Junen); break;case 7:printf(Julyn); break;case 8:printf(Augustn); break;case 9:printf(Septembern); break;case 10:printf(Octobern); break;case 11:printf(Novembern); break;case 12:printf(Decembern); break;default: printf(Wrong number!n);参考答案2:(枚举类型)#include stdio.hvoid main()enum TMonthJanuary,February,March,April,May,June,July,August,September,October,November,December,Wrong month;/声明枚举类型的变量int x;printf(Please input the number:);scanf(%d,&x);switch(x)case 1:month=January;break;case 2: month=February;break;case 3:month=March;break;case 4:month=April;break;case 5:month=May;break;case 6:month=June;break;case 7:month=July;break;case 8:month=August;break;case 9:month=September;break;case 10:month=October;break;case 11:month=November;break;case 12:month=December;break;default: month=Wrong;printf(%dn,month);/输出的是month的数值,而不是英文单词参考答案3:(字符数组)#include stdio.h#include string.hvoid main()char month20;int x;printf(Please input the number:);scanf(%d,&x);switch(x)case 1:strcpy(month,January);break;case 2: strcpy(month,February);break;case 3:strcpy(month,March);break;case 4:strcpy(month,April);break;case 5:strcpy(month,May);break;case 6:strcpy(month,June);break;case 7:strcpy(month,July);break;case 8:strcpy(month,August);break;case 9:strcpy(month,Septemberv);break;case 10:strcpy(month,Octoberv);break;case 11:strcpy(month,Novemberv);break;case 12:strcpy(month,December);break;default: strcpy(month,Wrong);printf(%sn,month);/输出的是英文单词第四章 循环程序设计4.1 利用展开式计算,分别:到第100项;到余项小于(考虑当0x1;x1时应该如何计算)。46参考答案:(1)到100项:#includevoid main()int i=0;float x,result=1.0,item=1.0;printf(请输入x的值:n);scanf(%f,&x);while(i=99)i+; item=item*x/i;result+=item;printf(the result is %gn,result);(2)到余项小于:()#include#include#define eps 1e-8#define E 3 /e=2.71828182845904.void main()int i=0;double x,result=1.0,item=1.0;double Rn; /余项printf(请输入x的值:n);scanf(%lf,&x);if(x0&x1Rn=pow(E,x)*item*x/i;while(fabs(Rn)eps) i+; item=item*x/i;result+=item;if(x0&x=1)Rn=E*item*x/i;else Rn=pow(E,x)*item*x/i;printf(the result is %.20gn,result);C语言课后作业及参考答案410编写程序,打印所有小于100的可以被11整除的自然数。参考答案:#includevoid main()int i;for(i=0;i100;i+)if(i%11=0)printf(%dn,i);参考答案2:#includevoid main()int i;for(i=1;i=9;i+)printf(%dn,i*11);414编写程序,打印所有3位的Armstrong数,Armstrong数是指其值等于它本身每位数字立方和的数,如153就是一个Armstrong数。 参考答案1:#include void main()int i,bit0,bit1,bit2,tmp0;for(i=100;i999;i+)bit0=i%10;tmp0=i/10;bit1=tmp0%10;bit2=tmp0/10;if(bit0*bit0*bit0+bit1*bit1*bit1+bit2*bit2*bit2=i)printf(%dn,i);参考答案2:#include void main()int bit0,bit1,bit2,tmp0;for(bit2=1;bit29;bit2+)for(bit1=0;bit19;bit1+)for(bit0=0;bit09;bit0+)if(bit0*bit0*bit0+bit1*bit1*bit1+bit2*bit2*bit2=bit0+bit1*10+bit2*100)printf(%dn,bit0+bit1*10+bit2*100);418 编程序,打印下图形式的数字金字塔。11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 1 1 2 3 4 5 6 7 8 9 0 9 8 7 6 5 4 3 2 1参考答案:#include stdio.hvoid main() int i,j,k,l; for (i=1;i=10;i+) /控制行数 for (j=1;j=10-i;j+) /打印左边黑色部分 printf( ); for (k=1;k0;l-) /打印右边蓝色部分 printf(%2d,l);printf(n); 420 斐波纳契序列问题。l 有一对小兔子, 出生一个月后变成大兔子开始怀孕;l 两个月后, 生出一对小兔子,这时共有两对兔子(一对大兔子, 一对小兔子), 同时大兔子又再次怀孕; l 三个月后, 以前出生的小兔子变成大兔子,以前怀孕的大兔子又生出一对小兔子, 这时共有三对兔子(两对大兔子, 一对小兔子), 所有大兔子又全部怀孕;l 四个月后, 以前出生的小兔子变成大兔子,以前怀孕的大兔子又各生出一对小兔子, 这时共有五对兔子(三对大兔子, 两对小兔子), 所有大兔子又全部怀孕;l 五个月后, 以前出生的小兔子变成大兔子,以前怀孕的大兔子又各生出一对小兔子, 这时共有八对兔子(五对大兔子, 三对小兔子), 所有大兔子又全部怀孕;n l 假设在兔子的生养过程中没有死亡。编程序,输入 n , 计算 n 个月后,有多少对兔子, 并输出。分析:0个月后1个月后2个月后3个月后4个月后。11235。斐波纳契数列:1,1,2,3,5,8,13,21,34 .算法描述:fibn-1=fibn-2=1 (n=3)参考答案:#include stdio.hvoid main() int xn; /变量声明,第n个月后兔子数量 int n; printf(please input n : ); scanf(%d,&n); if(n=0|n=1) /如果是第0或者第1个月 xn=1; else /从第2个月开始 int x1=1,x2=1; /变量声明,x1,x2分别用来存储前2个月的兔子数量 for (int i=2;i=n;i+) xn=x1+x2; x1=x2; x2=xn; printf(the totle number is %dn,xn);4.25 求解非线型方程 f(x)=0的牛顿迭代法的迭代公式是编写程序,用此方法求方程 在附近的根。参考答案:#include#include#define esp 1e-6void main()float x0,x1; /迭代法三要素:1.初值x0=0.0; x1=-1.0; do/2.迭代公式x0=x1; x1=x0-(x0*x0*x0*(pow(x0,38)+1)+1)/(x0*x0*(41*pow(x0,38)+3); while(fabs(x1-x0)esp);/3.精度printf(x=%fn,x1);432 古印度有一位十分有趣的国王要奖励为他发明国际象棋的宰相达依尔,问他要什么。达依尔回答:“陛下,只要在国际象棋的第一个格子中放1粒麦子,第二个格子中放2粒麦子,第三个格子中放4粒麦子,第四个格子中放8粒麦子依此类推,以后每个格子中都放其前一个格子中麦子数的两倍,这样放满棋盘的64个格子为止即可。”国王觉得这件事很容易,于是开始奖赏,没想到一袋麦子很快就用完了。下一袋麦子也很快就用完了。最后一算,全印度的麦子全部用上也不够。编写程序,计算所需麦子的体积(1m3麦子约1.4108粒)。参考答案:#include /#includevoid main()double sum=0;double add=1;for(int i=1;i=64;i+)sum+=add;add*=2; /add=pow(2,i); /不好printf(the total volume is %fn,sum/1.4e8);第5章 模块化程序设计函数51编写程序计算其中:参考答案:#include#include/函数定义float f(float v,float w) return (w+v)/(7*v);float p(float u)return (f(u*0.3,u)+u/2)/(2*u);float y(float x)return (p(x)*p(x)+5*x)*p(x+2)/(p(x+5)-sqrt(x);void main()float x,result;printf(Please enter x:n);scanf(%f,&x);result=y(x); /函数调用printf(The result is:%fn,result); 52编写程序,输入实数a,b,c的值,计算并输出以下算式的值。参考答案:#include#include#define N 4.25float f(float);/函数的声明void main()float a,b,c,tmp,result;printf(Please enter the value of a,b,c:n);scanf(%f%f%f,&a,&b,&c);tmp=a+b;result=(N*tmp+f(tmp)/(N+f(c);/函数的调用printf(The result is:%fn,result);float f(float m)/函数的定义 return log(m+sqrt(m)+1/m); 53分别编写函数,计算复数的加法、减法、乘法、除法,复数z表示成z=a+ib。参考答案:#include#includefloat a,b; /变量声明/函数原型声明void add(float a1,float b1,float a2,float b2);/加法void sub(float a1,float b1,float a2,float b2);/减法void mul(float a1,float b1,float a2,float b2);/乘法void div(float a1,float b1,float a2,float b2);/除法void print(int i);/输出/主函数void main()float a1,b1,a2,b2;printf(Please enter a1,b1:n);scanf(%f%f,&a1,&b1);printf(Please enter a2,b2:n);scanf(%f%f,&a2,&b2);add(a1,b1,a2,b2);/函数调用print(1);sub(a1,b1,a2,b2);print(2);mul(a1,b1,a2,b2);print(3);div(a1,b1,a2,b2);print(4);/函数定义void add(float a1,float b1,float a2,float b2)/加法a=a1+a2;b=b1+b2;void sub(float a1,float b1,float a2,float b2)/减法a=a1-a2;b=b1-b2;void mul(float a1,float b1,float a2,float b2)/乘法a=a1*a2-b1*b2;b=a1*b2+a2*b1;void div(float a1,float b1,float a2,float b2)/除法a=(a1*a2+b1*b2)/(a2*a2+b2*b2);b=(a2*b1-a1*b2)/(a2*a2+b2*b2);void print(int i)char str4;char sign;/符号,避免输出形如34i的表达式switch(i)case 1: strcpy(str,add);break;case 2: strcpy(str,sub);break;case 3: strcpy(str,mul);break;case 4: strcpy(str,div);sign=(b0?+: );printf(%s:%10f%c%10fin,str,a,sign,b);56分别编写函数,检测一个字符是否为空格、数字、元音字母。参考答案:#include/函数定义bool isSpace(char c)if(c= )return true;return false;bool isDigital(char c)if(c0&c9)return true;return false;bool isVowel(char c)if(c=a|c=e|c=i|c=o|c=u|c=A|c=E|c=I|c=O|c=U)return true;return false;void main()char var;printf(Please enter a letter:n);scanf(%c,&var);if(isSpace(var)/函数调用printf(%c is a space.n,var);else if(isDigital(var)printf(%c is a digital.n,var);else if(isVowel(var)printf(%c is a vowel.n,var);elseprintf(nonen);57编写函数f(n),求任意4位正整数n的逆序数。例如,当n=2345时,函数值为5432。参考答案1:#includeint f(int);/函数原型声明void main()int data,result; /data用来存储输入的4位正整数,result用来存储逆序数printf(请输入一个4位正整数:n);scanf(%d,&data);if(data9999|data1000)printf(输入数据错误!n);return;result=f(data);printf(该数的逆序数是:%dn,result);int f(int data)int bit3,bit2,bit1,bit0,result;bit3=data/1000;bit2=data/100%10;bit1=data/10%10;bit0=data%10;result=bit0*1000+bit1*100+bit2*10+bit3;return result;参考答案2:#includeint f(int data) int bit,result=0; /bit存储位值while(data!=0)bit=data%10;data=data/10;result=result*10+bit;return result;void main()int data,result; /data用来存储输入的4位正整数,result用来存储逆序数printf(请输入一个4位正整数:n);scanf(%d,&data);if(data9999|data1000)printf(输入数据错误!n);return;result=f(data);printf(该数的逆序数是:%dn,result);58编写程序,输入m,n的值,计算并输出。参考答案:#include long fun(long int); /函数原型声明void main()long int m,n;printf(Input m and n:);scanf(%d%d,&m,&n);printf(the result is:%fn,fun(m)/(fun(m-n)*fun(n);long fun(long int n) /计算阶乘long sum=1;for(long i=n;i1;i-)sum*=i;return sum;第6章 批量数据组织数组P145: 6.2,6.9,6.17,6.296.2 编写函数,判断给定整数矩阵是否关于主对角线对称。参考程序:#includebool JudegSymmetryMatrix(int matrix44)int i,j;for(i=0; i=3;i+)for(j=0; j=3;j+)if(ij)if(matrixij!=matrixji)return false;return true;void main( )int arr44=1,10,0,0,0,1,0,0,0,0,1,0,0,0,0,1;if(JudegSymmetryMatrix(arr)printf(对称n);elseprintf(不对称n);69编写函数,把给定的整数数组中的0元素全部移到后面,且所有的非0元素的顺序不变。参考答案1:#includevoid Move(int arr,int n)int a100;/未对数组初始化时,数组的SIZE必须写明int i,j=0;for(i=0;in;i+)if(arri!=0)aj+=arri;for(i=j;in;i+)ai=0; for(i=0;in;i+) arri=ai; printf(%d ,arri);printf(n);void main( ) int a=2,3,0,0,0,5,0;Move(a,7);参考答案2:#includevoid Move(int arr,int n)int i,j=0;for(i=0;in;i+)if(arri=0)j=i;while(jn-1 & arrj=0) j+; /j指向arri之后的第一个非0元素arri=arrj; arrj=0;void main( ) int a7=2,3,0,0,0,5,0;Move(a,7);for(int i=0;i7;i+) printf(%d ,ai);printf(n);参考答案3: #includevoid Move(int arr,int n)int i,r;bool flag;doflag=false;for(i=0;in-1;i+)if(arri=0&arri+1!=0)r=arri;arri=arri+1;arri+1=r;flag=true;while(flag);void out(int arr,int n)for(int i=0;in;i+)printf(%d ,arri);printf(n);void main()int a6=0,2,0,0,0,0;int n=6;out(a,n);Move(a,n);out(a,n);617数组 A 未排序; 今有一个索引数组 B 保存 A 的下标。编程序,不改变数组 A , 只改变数组 B 完成对 A 的排序。如下图所示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课程设计计算结果栏
- 2024年军事训练用爆破器材租赁合同
- 2024年商铺租赁合同样本:商业店铺租赁与广告发布协议
- 小学语文教学改革的背景与意义
- 兽用生物制品的市场准入与竞争分析
- (2024版)2024年新建住宅小区物业服务管理合同
- 能源行业物资采购质量方案
- 2024年国际石油勘探与开采许可合同
- 2024建筑机械租赁合同范文
- 2024年健身器材买卖合同:标的为高端健身房设备
- 2024年代持法人报酬协议书模板范本
- 2024年人教版六年级数学上册《第5单元第7课时 扇形的认识》单元整体教学课件
- 2023湖南文艺出版社五年级音乐下册全册教案
- 2024-2025学年苏教版小学四年级上学期期中英语试题及解答参考
- 国开2024秋《形势与政策》专题测验1-5参考答案
- DLT 5707-2014 电力工程电缆防火封堵施工工艺导则
- 广东省佛山市南海区2024年七年级上学期期中数学试题【附参考答案】
- 小红书2024年家装行业月报(9月)
- 【PPP项目风险评估与控制探究的国内外文献综述3900字】
- 安徽省芜湖市2024年部编版初中九年级期中考试语文试卷
- 《新课标引领、新教材启航》初中化学讲座 课件
评论
0/150
提交评论