北航c语言11所有作业题目及答案文档格式.docx

上传人:b****1 文档编号:812882 上传时间:2023-04-29 格式:DOCX 页数:30 大小:70.15KB
下载 相关 举报
北航c语言11所有作业题目及答案文档格式.docx_第1页
第1页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第2页
第2页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第3页
第3页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第4页
第4页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第5页
第5页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第6页
第6页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第7页
第7页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第8页
第8页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第9页
第9页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第10页
第10页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第11页
第11页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第12页
第12页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第13页
第13页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第14页
第14页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第15页
第15页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第16页
第16页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第17页
第17页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第18页
第18页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第19页
第19页 / 共30页
北航c语言11所有作业题目及答案文档格式.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

北航c语言11所有作业题目及答案文档格式.docx

《北航c语言11所有作业题目及答案文档格式.docx》由会员分享,可在线阅读,更多相关《北航c语言11所有作业题目及答案文档格式.docx(30页珍藏版)》请在冰点文库上搜索。

北航c语言11所有作业题目及答案文档格式.docx

5.Determinedatatypesappropriateforthefollowingdata:

a.theaverageoffourgradesfloat

b.thenumberofdaysinamonthunsignedshort/short

c.thelengthoftheGoldenGateBridge4,200feet(1,280.16metres)int

d.thenumbersinastatelotteryunsignedlong

e.thedistancefrombeijingtohainan.long/float

f.thesingle-characterprefixthatspecifiesacomponenttypechar

4.

1.Giventhedeclarationinta=10,b=20,c;

Determinewhethereachofthefollowingstatementsaretrueorfalse.

A)Thestatementa=+10;

isvalid.T

B)Theexpressiona+4/6*6/2evaluatesto12.Fa=10

C)Theexpressionb+3/2*2/3evaluatesto20.T

D)Thestatementa+=b;

giventhevalue30toa.T

E)Thestatementa=1/b;

assignsthevalue0.05toa.Fa=0

2.Assumingfloatx=2.5,y=5.8;

inta=7;

calculatetheexpressionx+a%3*(int)(x+y)%2/4

2.500000

3.Determinethevalueofthefollowinglogicalexpressionsifa=5,b=10andc=-6

(a)a>

b&

&

a<

c0

(b)a<

a>

c1

(c)a==c||b>

a1

(d)b>

15&

c<

0||a>

01

(e)a/2.0==0.0&

b/2.0!

=0.0||c<

0.01

4.Giventhevaluesofthevariablesx,yandz,writeaprogramtorotatetheirvaluessuchthatxhasthevalueofy,yhasthevalueofz,andzhasthevalueofx.

#include<

stdio.h>

{

intx,y,z,t;

scanf("

%d%d%d"

&

x,&

y,&

z);

t=x;

x=y;

y=z;

z=t;

printf("

x=%d,y=%d,z=%d\n"

x,y,z);

5.P462-3

inthtoi(chars[])

inti,n;

i=0;

n=0;

if(s[i]==’0’)/*跳过0x或0X*/

{

i++;

if(s[i]==’x’||s[i]==’X’)i++;

}

for(;

s[i]!

='

\0'

;

i++)

if(s[i]>

0'

s[i]<

9'

n=n*16+s[i]-'

a'

f'

+10;

A'

F'

return(n);

}

6.Showtheoutputproducedbythefollowingprogramfragment.

inti=10,j=5;

printf("

%d"

i++-++j);

%d%d"

i,j)

4116

5.

1.Thefollowingisasegmentofaprogram:

x=1;

y=1;

if(n>

0)

x=x+1;

y=y-1;

printf(“%d%d”,x,y);

whatwillbethevaluesofxandyifnassumesavalueof(a)1and(b)0.

(a)n=1,x=2,y=0

(b)n=0x=1y=0

2.Writeaprogramthataskstheuserfora24-hourtime,thendisplaysthetimein12-hourform:

Entera24-hourtime:

21:

11

Equivalent12-hourtime:

9:

11PM

Becarefulnottodisplay12:

00as0:

00

voidmain()

inthour,minute;

do

printf("

pleaseentera24-hourtime(hr:

min):

"

);

scanf("

%d:

%d"

hour,&

minute);

}while(hour>

24||hour<

0||minute>

=60||minute<

0);

if(hour==24)

printf("

Equivent12-hourtime:

%2d:

%02dAM\n"

hour-24,minute);

elseif(hour>

=13)

%02dPM\n"

hour-12,minute);

elseif(hour==12)

hour,minute);

else

3.Writeaforstatementtoprinteachofthefollowingsequencesofintegers:

(a)1,2,4,8,16,32for(i=1;

i<

=32;

i*=2)printf(“%d,“,i);

(b)1,3,9,27,81,243for(i=1;

=243;

i*=3)printf(“%d,“,i);

(c)-4,-2,0,2,4for(i=-4;

=4;

i+=2)printf(“%d,“,i);

4.Changethefollowingforloopstowhileloops:

(a)for(m=1;

m<

10;

m=m+1)

printf(“%d,”,m);

m=1;

while(m<

10)

m=m+1;

(b)for(;

scanf(“%d”,&

m)!

=1;

while(scanf(“%d”,&

=1)

printf(“%d,”,m);

5.求1!

+2!

+3!

+4!

+…+20!

算法一:

用累加算法,累加项为term=term*i;

;

i=1,2,…10。

term初值为1,使用单重循环完成。

floatterm=1,sum=0;

inti;

for(i=1;

i<

=20;

i++)

term=term*i;

sum=sum+term;

1!

+2!

+...+20!

=%e\n"

sum);

算法二:

用内层循环求阶乘,外层循环控制累加的项数。

floatterm,sum=0;

inti,j;

term=1;

for(j=1;

j<

=i;

j++)

{

term=term*j;

+…+10!

=%e\n"

=2.56133e+18

6.

1.Writeafunctionthattakesthreeintegersasparametersandreturnstheminimumofthethree.

intmin(inta,intb,intc)

intmin;

min=a;

if(b<

min)min=b;

if(c<

min)min=c;

returnmin

OR

min=a<

b?

a:

b;

min=min<

c?

min:

c;

returnmin

2.求一元二次方程ax2+bx+c=0的根,用3个函数分别求当b2-4ac大于0、等于0和小于0时的根并输出结果。

从主函数输入a、b、c的值。

#include"

stdio.h"

math.h"

voidgreater_than_zero(floata,floatb,floatdelta)

floatx1,x2;

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

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

X1=%.2f\n\X2=%.2f\n"

x1,x2);

voidequal_to_zero(floata,floatb)

floatx;

x=-b/(2*a);

X1=X2=%.2f\n"

x);

voidsmaller_than_zero(floata,floatb,floatdelta)

floatp,q;

p=-b/(2*a);

q=sqrt(-delta)/(2*a);

X1=%.2f+%.2fi\n\X2=%.2f-%.2fi\n"

p,q,p,q);

floata,b,c,delta;

%f%f%f"

a,&

b,&

c);

theequationis:

%.2f*x*x+%.2f*x+%.2f=0\n"

a,b,c);

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

therootsare:

\n"

if(delta>

greater_than_zero(a,b,delta);

elseif(fabs(delta)<

1e-4)//实数计算有误差,不能写成delta==0

equal_to_zero(a,b);

else

smaller_than_zero(a,b,delta);

以下错误:

//x1,x2局部变量,仅在定义它的函数(即函数greater_than_zero)范围内有效

printf("

//x1,x2未定义

7.

1.Writethefollowingfunction’sprototype:

functionname

returntype

inputdatatype

prototype:

cubic

double

Twoinputofdoublevalues

doublecubic(double,double)

delete_blanks

none

voiddelete_blanks()

random

integer

intrandom()

2.设计一个函数,用来判断一个整数是否为素数。

设计一个函数,用来判断一个整数是否为素数。

方法分析:

按照素数的定义,可以用2到number-1的所有整数去除number,只要有能整除的,便说明不是素数。

不过对任意值的number,比其平方根大的整数都不可能被整除,所以程序如下

math.h>

/*

函数功能:

判断参数是否是素数

函数入口参数:

整型数,要求为正整数

函数返回值:

非0值表示是素数,否则不是素数

*/

intIsPrimeNumber(intnumber)

if(number<

=1)/*负数、0和1都不是素数*/

return0;

for(i=2;

i<

=sqrt(number);

if((number%i)==0)/*被整除,不是素数*/

return0;

return1;

P714-1/*strindex:

returnrightmostindexoftins,-1ifnone*/

intstrindex(chars[],chart[])

inti,j,k,pos;

pos=-1;

for(i=0;

for(j=i,k=0;

t[k]!

s[j]==t[k];

j++,k++)

;

if(k>

0&

t[k]=='

pos=i;

returnpos;

#include<

string.h>

inti,j,k;

for(i=strlen(s)-strlen(t);

i>

=0;

i--)

returni;

return-1;

8.

1.P734-2

ctype.h>

/*atof:

convertstringstodouble*/

doubleatof(chars[])

doubleval,power;

intexp,i,sign;

for(i=0;

isspace(s[i]);

i++)/*skipwhitespace*/

sign=(s[i]=='

-'

)?

-1:

1;

if(s[i]=='

+'

||s[i]=='

i++;

for(val=0.0;

isdigit(s[i]);

val=10.0*val+(s[i]-'

.'

for(power=1.0;

i++){

power*=10;

val=sign*val/power;

if(s[i]==’e’||s[i]==’E’

sign=(s[++i]==’-‘)?

-1:

1;

if(s[i]==’+’||s[i]==’-‘)

i++;

for(exp=0;

isdigit(s[i]);

exp=10*exp+(s[i]-‘0’);

if(sign==1)

while(exp--)0)/*positiveexponent*/

val*=10;

while(exp--)0)/*negativeexponent*/

val/=10;

returnval;

2.牛顿迭代法求方程的根,方程为ax3+bx2+cx+d=0,系数a,b,c,d的值依次为1,2,3,4,由主函数输入。

求x在1附近的一个实根。

求出根后由主函数输出。

牛顿迭代法又称牛顿切线法,是比二分法有更高的收敛速度的近似计算方法。

它的基本思想如图所示。

•图中设xk是方程f(x)=0的精确解x*附近的一个猜测解,过点Pk(xk,f(xk))作f(x)的切线。

该切线方程为:

y=f(xk)+f′(xk)(x-xk)

它与x轴的交点是方程

f(xk)+f′(xk)(x-xk)=0

的解,为

xk+1=xk-f(xk)/f′(xk)

•这就是牛顿迭代法的迭代公式。

可以证明,若猜测解xk取在单根x*附近,则它恒收敛。

这样,经过有限次迭代后,便可以求得符合误差要求的近似根。

•#include<

•floatnewton(floata,floatb,floatc,floatd)

•{

•floatx=1,x0,f,f1;

•do

•{

•x0=x;

•f=a*x0*x0*x0+b*x0*x0+c*x0+d;

/*f=((a*x0+b)*x0+c)*x0+d;

•f1=3*a*x0*x0+2*b*x0+c*;

•x=x0-f/f1;

•}while(fabs(x-x0)>

=1e-6);

•returnx;

•}

3.某人摘桃子,卖掉一半,又吃一只;

第二天卖掉剩下的一半,又吃一只;

第三天、第四天、第五天都如此办理,第六天一看,发现就剩下一只桃子了。

编写一递归程序,求此人共摘了多少只桃子。

N(n)=N(n-1)-(N(n-1)/2+1)

N(n-1)=(N(n)+1)*2

intfunc(intn)

{intf;

if(n<

=0)printf("

dataerror\n"

elseif(n==1)f=1;

elsef=(func(n-1)+1)*2;

returnf;

intn,num;

n);

num=func(n);

totalnumber=%d\n"

num);

6

totalnumber=94

if(n==6)f=1;

elsef=(func(n+1)+1)*2;

num=func

(1);

stdio

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

当前位置:首页 > 经管营销 > 金融投资

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

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