E4B9A0E9A298E58F82E88083E7AD94E6A1882.docx
- 文档编号:12213314
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:55
- 大小:36.18KB
E4B9A0E9A298E58F82E88083E7AD94E6A1882.docx
《E4B9A0E9A298E58F82E88083E7AD94E6A1882.docx》由会员分享,可在线阅读,更多相关《E4B9A0E9A298E58F82E88083E7AD94E6A1882.docx(55页珍藏版)》请在冰豆网上搜索。
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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- E4B9A0E9A298E58F82E88083E7AD94E6A1882
![提示](https://static.bdocx.com/images/bang_tan.gif)