完整C语言新答案.docx

上传人:b****6 文档编号:12972012 上传时间:2023-06-09 格式:DOCX 页数:42 大小:24.73KB
下载 相关 举报
完整C语言新答案.docx_第1页
第1页 / 共42页
完整C语言新答案.docx_第2页
第2页 / 共42页
完整C语言新答案.docx_第3页
第3页 / 共42页
完整C语言新答案.docx_第4页
第4页 / 共42页
完整C语言新答案.docx_第5页
第5页 / 共42页
完整C语言新答案.docx_第6页
第6页 / 共42页
完整C语言新答案.docx_第7页
第7页 / 共42页
完整C语言新答案.docx_第8页
第8页 / 共42页
完整C语言新答案.docx_第9页
第9页 / 共42页
完整C语言新答案.docx_第10页
第10页 / 共42页
完整C语言新答案.docx_第11页
第11页 / 共42页
完整C语言新答案.docx_第12页
第12页 / 共42页
完整C语言新答案.docx_第13页
第13页 / 共42页
完整C语言新答案.docx_第14页
第14页 / 共42页
完整C语言新答案.docx_第15页
第15页 / 共42页
完整C语言新答案.docx_第16页
第16页 / 共42页
完整C语言新答案.docx_第17页
第17页 / 共42页
完整C语言新答案.docx_第18页
第18页 / 共42页
完整C语言新答案.docx_第19页
第19页 / 共42页
完整C语言新答案.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

完整C语言新答案.docx

《完整C语言新答案.docx》由会员分享,可在线阅读,更多相关《完整C语言新答案.docx(42页珍藏版)》请在冰点文库上搜索。

完整C语言新答案.docx

完整C语言新答案

第三章习题编程:

(1)有一函数:

 

编写一程序,输入X,输出Y值。

#include

intmain()

doublex,y;

scanf("%lf",&x);

if(x〈1)

y=x;

elseif(x>=1.0&&x〈10)

y=2*x—11;

else

y=3*x—11;

printf("%lf\n",y);

return0;

(2).从键盘上输入3个整数,求最小的数。

#include〈stdio。

h>

intmain()

doublex,y,z,min;

scanf("%lf%lf%lf”,&x,&y,&z);

if(x〉y)

min=y;

else

min=x;

if(min>z)

min=z;

printf("min=%lf\n”,min);

return0;

}

(3).输入某人的出生日期,计算并显示其出生的当天是星期几。

#include〈stdio.h〉

intmain()

inty,m,d,flag,s=0,w,i;

scanf(”%d%d%d",&y,&m,&d);

flag=(y%4==0&&y%100!

=0||y%400==0);

w=((y—1)*365+(y—1)/4-(y—1)/100+(y—1)/400)%7;

for(i=1;i〈=m;i++)

switch(i)

case1:

s=d;break;

case2:

s=31+d;break;

case3:

s=59+d;break;

case4:

s=90+d;break;

case5:

s=120+d;break;

case6:

s=151+d;break;

case7:

s=181+d;break;

case8:

s=212+d;break;

case9:

s=243+d;break;

case10:

s=273+d;break;

case11:

s=304+d;break;

case12:

s=334+d;break;

}

}

if(flag==1&&m>2)

s=s+1;

s=(w+s)%7;

if(s==0)

printf("星期日\n”);

else

printf("星期%d\n",s);

return0;

(4).企业发放的奖金根据利润提成:

利润低于或等于10万元时,奖金可提成10%;利润高于10万元低于20万元时,低于10万元的部分按10%提成,高于10万元的部分可提成7。

5%;20万到40万之间时,高于20万元的部分可提成5%;40万到60万之间时,高于40万元的部分可提成3%;60万到100万之间时,高于60万元的部分可提成1.5%;高于100万元时,超过100万元的部分按1%提成。

从键盘输入当月利润,求应发放奖金总数.

#include〈stdio。

h>

intmain()

floatp,r;

scanf("%f”,&p);

if(p<=10)

r=p*0.1;

elseif(p>10&&p<=20)

r=10*0.1+(p-10)*0。

075;

elseif(p〉20&&p〈=40)

r=10*0.1+10*0.075+(p—20)*0。

05;

elseif(p〉40&&p<=60)

r=10*0.1+10*0.075+20*0.05+(p—40)*0.03;

elseif(p〉60&&p<=100)

r=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0。

015;

elseif(p〉100)

r=10*0。

1+10*0。

075+20*0.05+20*0.03+40*0。

015+(p—100)*0.01;

printf("%f\n",r);

return0;

}

(5).输入字符,并以回车结束.将其中的小写字母转换成大写字母,而其他字符不变。

#include〈stdio.h>

intmain()

charc;

while((c=getchar())!

='\n’)

{

if(c>=’a’&&c〈=’z')

c=c—32;

putchar(c);

return0;

(6).输入一个正整数,求它的所有素数因子.

#include

h>

intmain()

intm,k=2;

printf("输入一个正整数:

\n");

scanf("%d",&m);

while(k〈m)

if(m%k==0)

{

printf(”%4d",k);

m=m/k;

}

else

k++;

printf(”%4d\n",m);

return0;

(7).从键盘输入正整数a,求s=a+aa+aaa+……+a……a

#include〈stdio。

h>

intmain()

{

inta,n,s=0,p=0,i;

scanf(”%d%d”,&n,&a);

for(i=1;i〈=n;i++)

{

p=p*10+a;

s=s+p;

}

printf("%d\n",s);

return0;

}

(8).输出用0~9这10个数字能组成的三位数

#include

intmain()

{

inti,j,k;

for(i=1;i〈=9;i++)

for(j=0;j<=9;j++)

for(k=0;k<=9;k++)

printf(”%5d",100*i+10*j+k);

return0;

(9).用二分法求方程在区间(-10,10)之间的根

}

 

#include〈stdio。

h>

#include

h〉

intmain()

floata=-10,b=10,x,f1,f2,f;

f1=(((2*a—4)*a+3)*a)-6;

f2=(((2*b-4)*b+3)*b)-6;

do

{

x=(a+b)/2;

f=(((2*x-4)*x+3)*x)-6;

if(f*f1〈0)

{

b=x;

f2=f;

}

else

{

a=x;

f1=f;

}

}while(fabs(f)〉=1e-6);

printf(”%6。

2f\n",x);

return0;

(10).编写一个程序,计算的近似值

#include〈stdio。

h>

#include

h〉

intmain()

{

intn=2;

doubleeps,t,s=0,x;

scanf(”%lf%lf”,&x,&eps);

t=x;

s=t;

while(fabs(t)>=eps)

t=—t*(2*n—3)*x*x/(2*n-2);

s=s+t/(2*n);

n++;

printf("%d,%lf\n",n,s);

 

return0;

}

(11).取出一个无符号的十进制整数中所有奇数数字,按原来的顺序组成一个新的数

#include〈stdio。

h〉

intmain()

{

unsignedlongs,t=0,p=1;

scanf(”%u",&s);

while(s!

=0)

{

if((s%10)%2!

=0)

{

t=t+(s%10)*p;

p=p*10;

}

s=s/10;

}

printf(”%u\n”,t);

return0;

}

第四章编程

输入一无符号整数,求所有数位上数字之和

#include〈stdio.h〉

unsignedintfun(unsignedint);

intmain()

unsignedints;

scanf(”%u”,&s);

printf(”%u\n”,fun(s));

return0;

unsignedintfun(unsignedints)

unsignedintp=0;

while(s!

=0)

{

p=p+s%10;

s=s/10;

returnp;

(2).求一元二次方程的根,用3个函数分别求判别式大于0,等于0和小于0时的根,并输出结果。

主函数中输入系数a、b、c

#include

#include〈stdlib.h〉

#include〈math。

h>

voidf1(float,float,float,float);

voidf2(float,float,float,float);

voidf3(float,float,float,float);

intmain()

{

floata,b,c,d;

scanf(”%f%f%f”,&a,&b,&c);

if(a==0)

printf(”不是一元二次方程\n”);

exit(0);

}

d=b*b-4*a*c;

if(d〉0)

f1(a,b,c,d);

elseif(d==0)

f2(a,b,c,d);

else

f3(a,b,c,d);

return0;

voidf1(floata,floatb,floatc,floatd)

{

floatx1,x2;

{

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

printf("%。

2f,%.2f\n",x1,x2);

}

voidf2(floata,floatb,floatc,floatd)

{

floatx1,x2;

x1=-b/(2*a);

x2=-b/(2*a);

printf("%。

2f,%.2f\n”,x1,x2);

voidf3(floata,floatb,floatc,floatd)

 

{

floatx1,x2;

{

x1=—b/(2*a);

x2=sqrt(—d)/(2*a);

printf(”%.2f+i*%。

2f\n”,x1,x2);

printf("%.2f—i*%。

2f\n",x1,x2);

}

(3).用递归方法求n解勒让德多项式的值,其递推公式为:

 

#include〈stdio。

h〉

doublep(int,double);

intmain()

{

intn;

doublex;

do

scanf("%d",&n);

}while(n<0);

scanf("%lf",&x);

printf(”%lf\n”,p(n,x));

return0;

doublep(intn,doublex)

{

doublepn;

if(n==0)

pn=1;

elseif(n==1)

pn=x;

else

pn=((2*n—1)*x*p(n-1,x)—(n—1)*p(n-2,x))/n;

returnpn;

(4).计算银行存款余额和利息:

假设银行存款季度利息是5.3%,根据输入的原始数据计算利息和账户余额,并以表格的形式输出每个季度的利息和账户余额。

要求写两个函数,一个用来计算利息和余额,一个用来输出

#include〈stdio。

h〉

#defineRATE0.053

doublefun(float);

voiddisplay(float,int);

intmain()

floatdep;

intseason;

scanf(”%f%d",&dep,&season);

display(dep,season);

return0;

}

doublefun(floatd)

returnd*RATE;

voiddisplay(floatd,ints)

inti;

printf(”季度利息余额\n");

printf(”-———-—-—————--—-—-———-—-—-———--\n");

for(i=1;i<=s;i++)

{

printf("%-4d%-.2f%—.2f\n”,i,fun(d),fun(d)*i+d);

printf("—--—--——-------—-———-——-—-———-—\n");

}

(5).利用函数求,直到,并把计算结果作为函数返回值。

}

 

#include〈stdio.h〉

doublefun(void);

intmain()

{

printf("%lf\n”,fun());

return0;

doublefun(void)

doubles=0;

intn=1;

while((double)(2*n—1)/((2*n)*(2*n))〉1e—4)

{

s=s+(double)(2*n—1)/((2*n)*(2*n));

n++;

returns;

(6).设w是一个大于10的无符号整数,若w是n(n〉=2)位的整数,函数求出w的低n-1位的数作为函数的返回值.如w=5923,则函数返回值位923

#include〈stdio.h〉

intfun(int);

intmain()

{

intw;

scanf("%d”,&w);

printf(”%d\n",fun(w));

return0;

}

intfun(intw)

intn=1,p=1,m;

m=w;

while(m〉10)

{

m=m/10;

p=p*10;

n++;

returnw%p;

}

第五章编程

(1)用循环将a[3][4]的第一行与第三行对调

 

#include〈stdio.h〉

intmain(){

inta[3][4]={0,2,9,7,

5,13,6,8,

27,11,1,3

};

inti,j,temp;

for(i=0,j=0;j〈4;j++){

temp=a[2—i][j];

a[2—i][j]=a[i][j];

a[i][j]=temp;

for(i=0;i<3;i++){

for(j=0;j<4;j++)

printf("%3d",a[i][j]);

printf("\n”);

}

return0;

(2)编程实现显示如下形式的数字:

 

#include

h〉

intmain(){

staticinta[6][6];

inti,j,t=1;

for(i=0;i〈6;i++){

t=i+1;

for(j=0;j

a[i][j]=t—-;}

for(i=0;i〈6;i++){

for(j=0;j〈6;j++)

printf("%3d",a[i][j]);

printf(“\n”);

return0;

(3)编程实现求两个矩阵相乘

#include〈stdio。

h>

#defineM3

#defineN4

#defineR5

intmain(){

staticinta[M][N],b[N][R],c[M][R];

inti,j,k;

printf("Matrixa:

\n”);

for(i=0;i〈M;i++)

for(j=0;j

scanf("%d”,&a[i][j]);

printf("Matrixb:

\n");

for(i=0;i〈N;i++)

for(j=0;j

scanf("%d”,&b[i][j]);

for(i=0;i〈M;i++)

for(j=0;j

for(k=0;k

c[i][k]+=a[i][j]*b[j][k];

for(i=0;i〈M;i++){

for(j=0;j

printf("%3d",c[i][j]);

printf("\n");

return0;

(4)输入5个整数,并存放在数组中,找出最大数与最小数所在的下标位置,并把两者对调,然后输出调整后的5个数

#include〈stdio.h〉

#defineM5

intmain(){

staticinta[M];

inti,max=—1,min=100,maxi,mini,temp;

for(i=0;i〈M;i++)

scanf("%d",&a[i]);//0~99间的值

for(i=0;i

if(max

max=a[i];

maxi=i;

if(min>a[i]){

min=a[i];

mini=i;

}

temp=a[maxi];

a[maxi]=a[mini];

a[mini]=temp;

for(i=0;i

printf("%3d",a[i]);

return0;

}

(5)编写一个函数计算具有NROWS行和NCOLS列的二维数组中指定列的平均值以及数组各行的和的最小值

#include〈stdio.h〉

#defineM3

#defineN4

intmain(){

staticinta[M][N];

intmax=—1,sumcol=0,sumrow=0;

inti,j,maxi,col;

for(i=0;i

sumrow=0;

for(j=0;j〈N;j++){

scanf("%d",&a[i][j]);

sumrow+=a[i][j];

if(max〈sumrow){

max=sumrow;

maxi=i;

}

}

printf(”whichcolsumwillbecaculated?

(〉0)”);

scanf("%d",&col);

for(i=0;i〈M;i++)

sumcol+=a[i][col-1];

printf(”The%dthrow’ssumismax,max=%d\n”,maxi+1,max);

printf(”The%dthcolumn’ssum=%d\n",col,sumcol);

return0;

}

(6)输入一段文字统计文字中指定字符的个数

#include

h〉

#defineM81

intmain(){

staticcharstr[M];

inti,count=0;

charch;

gets(str);

fflush(stdin);//清空输入缓冲区,以便读入字符数据

printf("Whichcharacterwillbefound?

");

ch=getchar();

for(i=0;i〈strlen(str);i++)

if(ch==str[i])

count++;

printf(”Thenumberofcharacter’%c’is%d\n”,ch,count);

(7)编写程序实现:

用二维数组表示10同学的5门课程成绩以均分作为排序依据,降序排列成绩表以柱状图输出指定课程的成绩分布

#include〈stdio.h>

#include〈stdlib。

h〉

#defineN10

#defineM5

voidenter_scores(void);

voidsort_scores(intscore[][M],intaverage[N][3]);

voiddisp_scores(intscore[][M]);

voidhistogram(intn,intscore[][M]);

voidprintchar(intn);

staticintscore[N][M];

staticintaver[N][3];//第1列为均值,第2列原始顺序,第3列为均值逆序

intmain()

{

intcourse;

enter_scores();

printf(”\n===========OringenalScoreStart=========\n”);

disp_scores(score);

printf("\n===========OringenalScoreEnd===========\n");

printf("\n===========SortedScoreStart============\n”);

sort_scores(score,aver);

printf("\n===========SortedScoreEnd==============\n”);

printf("\nWhichclasswillbestatisticed?

\n”);

scanf("%d”,&course);

histogram(course,score);

system("Pause”);

return0;

/*输入成绩*/

voidenter_scores()

inti,j;

for(i=0;i〈N;i++){

for(j=0;j〈M;j++){

scanf("%d”,&score[i][j]);

aver[i][0]+=score[i][j];

}

for(i=0;i〈N;i++)

for(j=1;j<3;j++)

aver[i][j]=i;

/*成绩排序。

*/

voi

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2