E4B9A0E9A298E58F82E88083E7AD94E6A1882.docx

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

E4B9A0E9A298E58F82E88083E7AD94E6A1882.docx

《E4B9A0E9A298E58F82E88083E7AD94E6A1882.docx》由会员分享,可在线阅读,更多相关《E4B9A0E9A298E58F82E88083E7AD94E6A1882.docx(55页珍藏版)》请在冰点文库上搜索。

E4B9A0E9A298E58F82E88083E7AD94E6A1882.docx

E4B9A0E9A298E58F82E88083E7AD94E6A1882

习题参考答案

习题1

一、选择题

1、B2、C3、B4、D5、A6、B7、C

二、填空题

1、源程序文件c2、obj3、可执行文件exe

4、机器语言汇编语言高级语言

三、解答题

四、编程题

1、

main()

{

printf(“Hello!

WelcometoChina!

”);

}

2、

main()

{intx;

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

}

习题2

一、选择题

1、C 2、A 3、B 4、D 5、A

6、D 7、B 8、B9、B   10、D

11、D12、B13、A14、B15、C

二、填空题

1、整型、实型、字符型

2、用户标识符、关键字标识符

3、存储单元、符号地址、内存地址

4、十、十六、八

5、double(双精度型)

6、8

7、5.500000

8、a=-32768

9、+0017,021,0x11

三、写程序运行结果

3257

3257

7.88,-345.12,7.8765,-345.1230

7.87654e+00,-3.5e+02

a,97,141,61

1234,2322,4d2

CHINESE,CHI

四、scanf函数的使用

a=3b=7

8.571.82

Aa

五、用scanf函数输入数据

1020Aa1.5-3.75123.45,67.8

注意,其中123.45可以是任意实数,因为该值将被跳过,不用于赋值。

习题3

一、选择题

1.C2.B3.D4.D

二、填空题

基本概念题

1.2

2.2

3.1

阅读程序写出运行结果题

4.1.00

5.1,0,1

6.6,11,9,10

三、写出下面表达式运算后a的值,设原来a=12。

(1)24

(2)10(3)60(4)0(5)0(6)0

习题4

一、选择题

1、B2、D3、B4、D5、A6、C

二、填空题

1、1,0,12、1,2,3

3、ch1>=′A′&&ch1<=′Z′ch1=ch1-32;

三、编程题

1、从键盘输入三个数,然后按照由小到大的顺序输出。

要求,设三个数放在变量a、b、c中,最后仍然按照a、b、c的顺序输出。

#include

main()

{inta,b,c,t;

scanf(“%d,%d,%d”,&a,&b,&c);

if(a>b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(b>c){t=b;b=c;c=t;}

printf(“%d,%d,%d\n”,a,b,c);

}

2、编写程序根据以下的函数关系,对输入的x值输出相应的y值。

x

y

2

x(x+2)

-1

2x

X<=-1

x-1

#include

main()

{intx,y;

scanf(“%d”,&x);

if(x<=-1)

y=x-1;

elseif(x<=2)

y=2*x;

elseif(x<=10)

y=x*(x+2);

printf(“y=%d\n”,y);

}

3、求一元二次方程ax2+bx+c=0的解。

#include

main()

{floata,b,c,d,disc,x1,x2,realpart,imagpart;

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

if(fabs(a)<=1e-6)

Printf(isnotaquadratic);

else

{disc=b*b-4*a*c;

if(fabs(disc)<=1e-6)

printf(“hastwoequalroots:

%8.4\n”,-b/(2*a));

elseif(disc>1e-6)

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

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

printf(“hasdistinctrealroots:

%8.4fand%8.4f\n”,x1,x2);

}

else

{realpart=-b/(2*a);

imagpart=sqrt(-disc)/(2*a);

printf(“hascomplexroots:

\n”);

printf(“%8.4f+%8.4fi\n”,realpart,imagpart);

printf(“%8.4f-%8.4fi\n”,realpart,imagpart);

}

}

}

4、假设工资税率如下,其中s代表工资,r代表税率:

s<500r=0%

500<=s<1000r=5%

1000<=s<2000r=8%

2000<=s<3000r=10%

3000<=sr=15%

编一程序实现从键盘输入一个工资数,输出实发工资数。

要求使用switch语句。

main()

{intsalarly,r,g;

scanf(“%d”,&salarly);

if(salary>=3000)r=0.15;

g=salary/500;

switch(g)

{1:

r=0.05;

2:

3:

r=0.08;

4:

5:

r=0.10;

}

salary=salary*(1-r);

printf(“%d\n”,salary);

}

习题5

一、选择题

1、A2、C3、C4、D5、A6、A

7、A8、B9、C10、B11、B12、D

二、填空题

1、break

2、[1]n<=999或n<1000[2]n%10

3、[1]x>=0或x>=0.0[2]x

4、[1]i<10[2]j%3!

=0

5、[1]t=1[2]n<=i

6、[1]n[2]flag=1[3]n—

7、[1]j

8、[1]sum

三、编程题

1、

#include

main()

{intm,n,p,r,temp;

printf(“Pleaseinputm,n:

”);

do

{scanf(“%d%d”,&m,&n);

}while(m<=0||n<=0);

if(n

{temp=n;n=m;m=temp;}/*确保大数放到n中*/

p=n*m;/*保留n和m的乘积到p中,以便求最小公倍数*/

while(m!

=0)/*求n和m的最大公约数*/

{r=n%m;n=m;m=r;}

printf(“最大公约数为:

%d\n”,n);

printf(“最小公倍数为:

%d\n”,p/n);

}

2、

#include

main()

{charc;

intletter=0,space=0,digit=0,other=0;

printf(“Pleaseinputalinecharacter:

”);

while((c=getchar())!

=’\n’)

{if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’)letter++;

elseif(c==‘’)space++;

elseif(c>=’0’&&c<=’9’)digit++;

elseother++;

}

printf(“Letteris%d,Spaceis%d,Digitis%d,Otheris%d,”,letter,space,digit,other);

}

3、

main()

{intm,s,i;

for(m=2;m<1000;m++)

{s=0;

for(i=1;i

if((m%i)==0)s=s+i;

if(s==m)

{printf(“%ditsfactorsare”,m);

for(i=1;i

if(m%i==0)printf(“%d,”,i);

printf(“\n”);

}

}

}

4、

main()

{inti,a,min,max;

scanf(“%d”,&a);

min=a;max=a;

for(i=2;i<=100;i++)

{scanf(“%d”,&a);

if(a

if(a>max)max=a;

}

printf(“Max=%d,Min=%d\n”,max,min);

}

5、

#include

#defineN20

main()

{inti,t;

floata=2,b=1,s=0;

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

{s=s+a/b;

t=a;

a=a+b;/*将前一项的分子与分母之和作为下一项的分子*/

b=t;/*将前一项的分子作为下一项的分母*/

}

printf(“Sum=%f\n”,s);

}

6、问题分析:

设王先生的岁数是x,他夫人的岁数是y,可得到如下方程组:

这是一个非线性方程组的求解,无法手算求解,可以用穷举法求解。

考虑到实际可能,x、y可以在20—100范围内取值,逐一穷兴出x、y所有可能的取值判断是否满足上述方程组,若满足,这一组解就是要求的解。

程序如下:

main()

{intx,y;

for(x=20;x<=100;x++)

for(y=20;y<=100;y++)

if(x*x+y==1053&&x+y*y==873)

printf(“x=%dy=%d\n”,x,y);

}

7、

main()

{

longintk,g,s=0;

printf("Pleaseinputaninteger:

");

scanf("%ld",&k);

do

{g=k%10;

printf("%2d",g);

k=k/10;

}while(k!

=0);

}

8、

(1)

main()

{inti,j;

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

{for(j=i;j<=9;j++)

printf("%d*%d=%2d",i,j,i*j);

printf("\n");

}

}

(2)

main()

{inti,j,k;

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

{

for(k=1;k

printf("");

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

printf("%d*%d=%2d",i,j,i*j);

printf("\n");

}

}

9、

#include

main()

{inti=0;

longs,n,j,x;

for(j=100;j<=999;j++)

{s=0;x=j;

while(x>0)/*求原数j的反序数*/

{s=s*10+x%10;

x=x/10;

}

if(s==j)/*判断反序数s与原数j是否相等*/

{i++;printf("%4ld",j);

if(i%10==0)printf("\n");/*每行输出10个回文数*/

}

}

}

10、

#include

main()

{intx,y,z;

for(x=1;x<20;x++)

for(y=1;y<33;y++)

for(z=3;z<100;z+=3)

{if((x*5+y*3+z/3)==100&&x+y+z==100)

printf(“公鸡有%d只,母鸡有%d只,小鸡有%d只\n”,x,y,z);

}

}

11、

#include

#include

main()

{intn=1;doublex,sum=0,term=1.0;

scanf(“%lf”,&x);

while(fabs(term)>=1e-6)

{sum+=term;

term*=-x*x/(n*(n+1));

n=n+2;

}

printf(“cos(%lf)=%lf,%lf\n”,x,sum,cos(x));

}

12、

问题分析:

用迭代法求平方根的算法如下:

(1)设定一个x的初值x0;

(2)用上述公式求出x的下一个值x1;

(3)再将x1代入上述公式,求出x的下一个值x2;

(4)如此继续下去,直到前后两次求出的x值(xn+1和xn)满足

为便于程序处理,令x的初值x0=a/2(也可以是其他值),求出x1。

程序实现如下:

#include

main()

{floata,x0,x1;

printf(“Pleaseinputapositivenumber:

”);

scanf(“%f”,&a);/*输入a的值*/

x0=a/2;

x1=(x0+a/x0)/2;

do

{x0=x1;

x1=(x0+a/x0)/2;

}while(fabs(x1-x0)>=1e-5);

printf(“Thesquarerootof%fis%f,thetruerootis%f\n”,a,x1,sqrt(a));

}

13、

程序如下:

#include

main()

{floatx,x0,f,f1;

x=1.5;

do

{x0=x;

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

f1=(6*x0-8)*x0+3;

x=x0-f/f1;/*进行牛顿迭代*/

}

while(fabs(x-x0)>=1e-5);

printf(“Therootis%f\n”,x);

}

14、

#include

#include

#defineepsilon0.00001/*定义要求的精度*/

floatf(floatx)/*求函数值*/

{return(2*x*x*x-4*x*x+3*x-6);

} 

main()

{floata,b,x;

scanf("%f%f",&a,&b);/*输入求根区间*/

if(f(a)*f(b)>=0)/*判断是否符合二分法使用的条件*/

{printf("不满足二分法使用条件,退出!

");exit(0);}

do

{x=(a+b)/2;

if(f(x)*f(b)<0)/*如果成立,则根在区间的右半部分*/

a=x;

else/*否则根在左半部分*/

b=x;}

while(fabs(b-a)>=epsilon);/*判断是否达到精度要求,如果没达到,继续循环*/

x=(b+a)/2;/*取最后的小区间中点作为根的近似值*/

printf("x=%f\n",x);/*输出函数的近似根*/

}

习题6

一、选择题

1.D2.D3.D4.D5.A6.C

二、填空题

阅读程序写出运行结果题

1.第一行:

143

第二行:

258

2.第一行:

124

第二行:

357

第三行:

689

三、编程题

1.#include

main()

{

charstr1[20],str2[10];

inti=0,j=0;

gets(str1);

gets(str2)’

while(str1[i]!

=’\0’)i++;

while(str2[j]!

=’\0’)str1[i++]=str2[j++];

str1[i]=’\0’;

puts(str1);

}

2.#defineM4

#defineN5

#include

main()

{

inti,j,m;

inta[M][N],pp[N];

for(j=0;j

{

m=a[0][j];/*将m值设为每一列的第一行元素的值*/

for(i=0;i

if(a[i][j]

pp[j]=m;/*将每一列的最小值m存入pp数组*/

}

for(j=0;j

printf(“%d”,pp[j]);

}

3.#include

voidfind(inta[5][5])

{inti,j,row,col,sum1,sum2;

for(i=0;i<5;i++)

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

{sum1=sum2=0;

for(col=0;col<5;col++)

sum1+=a[i][col];

for(row=0;row<5;row++)

sum2+=a[row][j];

if(sum1==sum2)

printf(“a[%d][%d]:

%d\n”,i,j,a[i][j]);

}

}

main()

{inti,j,a[5][5]={{2,8,1,9,4},{5,7,1,3,0},{7,1,7,5,2},{3,2,2,1,5},{0,2,1,6,8}};

for(i=0;i<5;i++)

{for(j=0;j<5;j++)

printf(“%4d”,a[i][j]);

printf(“\n”);

find(a);

}

5.#include

#defineN10

voidcrl(inta[])

{inti,j,max=0,min=0,temp;

for(i=1;i

if(a[min]>a[i])min=i;

temp=a[min];

j=min;

while(j>0)

{a[j]=a[j-1];

j--;

}

a[0]=temp;

for(i=1;i

if(a[max]

temp=a[max];

j=max;

while(j

{a[j]=a[j+1];

j++;

}

a[N-1]=temp;

}

main()

{inta[N]={8,5,6,9,4,1,-1,7,3,2};

inti;

crl(a);

for(i=0;i

printf(“\n”);

}

6.#include

#include

intReplace_string(charline[],charstr1[],charstr2[])

{inti=0,j,loc;

chartemp[80];

while(i<=strlen(line)-strlen(str2))

{j=0;loc=i;

while(str1[j]==line[loc]&&str1[j]!

=’\0’)

{loc++;j++;}

if(str1[j]==’\0’)

{strcpy(temp,&line[loc]);

strcpy(&line[i],str2);

i+=strlen(str2);

strcpy(&line[i],temp);

return1;

}

elsei++;

}

return0;

}

习题7

一、选择题

1.A 2.A 3.D 4.C 5.A

6.C 7.B 8.C 9.B   10.D

二、填空题

1.a=0,b=7

2.110

3.20

4.abc,ABC,bc,BC,c,C,

5.14

6.len++p++

三、编程题

1、编写一个程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该字符串,请用指针完成。

main()

{charch[20]="computer",*p=ch;

inti;

for(i=0;i

printf("%c",*(p+i));

}

2、输入3个字符串,按由小到大的顺序输出。

main()

{charstr1[20],str2[20],str3[20];

char*p[1],*p1,*p2;

printf("Inputthreelindes:

\n");

gets(str1);gets(str2);gets(str3);

p1=str1;p2=str2;

if(strcmp(str1,str2)>0)

{strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}

p1=str1;p2=str3;

if(strcmp(str1,str3)>0)

{strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}

p1=str2;p2=str3;

if(strcmp(str2,str3)>0)

{strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}

printf("Now,theorderis:

\n");

printf("%s\n%s\n%s\n",str1,str2,str3);

}

注意:

因为指针变量p在使用前必须赋初值,否则编译时会产生Warning错误“Possibleuseof‘p’beforedefinitioninfunctionmain”,所以本程序把p定义为指针数组*p[20]的形式,无须赋初值便可使用。

还要注意,此时的p数组元素是需要两个字节的指针类型,而不是占用一个字节的字符类型,所以在进行字符串复制时,一个p数组元素将存放两个字符。

另外,数组名为常量,不能用于strcpy函数中。

3、求一个3×3矩阵主对角线元素之和。

main()

{inta[3][3],*p,i,s=0;

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

scanf("%d%d%d"

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

当前位置:首页 > 初中教育 > 科学

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

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