c 语言答案.docx

上传人:b****3 文档编号:3842603 上传时间:2022-11-25 格式:DOCX 页数:40 大小:29.77KB
下载 相关 举报
c 语言答案.docx_第1页
第1页 / 共40页
c 语言答案.docx_第2页
第2页 / 共40页
c 语言答案.docx_第3页
第3页 / 共40页
c 语言答案.docx_第4页
第4页 / 共40页
c 语言答案.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

c 语言答案.docx

《c 语言答案.docx》由会员分享,可在线阅读,更多相关《c 语言答案.docx(40页珍藏版)》请在冰豆网上搜索。

c 语言答案.docx

c语言答案

习题1

1-1填空题

1. 函数

2. 主函数main(),主函数main()

3. 主函数main()

4. 函数首部,函数体

5. {,}

6. /*,*/

7. 顺序结构,选择结构,循环结构

8. .c,.obj,.exe

1-2思考题

1. 结构化程序设计是指:

为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。

其基本结构包括顺序结构、选择结构和循环结构三种。

2. 算法是对具体问题求解步骤的一种描述。

计算机算法的表达工具通常采用以下几种方法:

(1)用自然语言表示算

(2)用流程图表示算法(3)用伪代码表示算法(4)用程序设计语言表示算法

3. 语言简洁、紧凑,使用方便、灵活;支持结构化程序设计;运算符丰富;数据类型丰富;较强的编译预处理功能;C语言的可移植性好;C语言本身既有一般高级语言的优点,又有低级(汇编)语言的特点;语法限制不太严格,程序设计自由度大。

1-3编程题

1.试参照本章例题编写计算梯形面积的C语言程序,梯形的上底、下底和高分别用a,b,h表示,并用a=10,b=20,h=5测试所编写的程序。

#include"stdio.h"

main()

{floata,b,h,s;

a=10;b=20;

h=5;s=(a+b)*h/2;

printf("s=%f\n",s);

}

2.编写程序显示如图1.11所示信息。

图1.11显示信息

#include"stdio.h"

main()

{printf("******************************\n");

printf("*helloworld*\n");

printf("******************************\n");}

习题2

2-1单选题

1~5DBDCA6~10DCABA11~12CA

2-2思考题

1.2.000000

2.1,0.5

3.9,2

4.6

5.100,d

6.

(1)20

(2)0(3)60

7.

(1)10,6,4

(2)6,9,15(3)3,60,83

8.55

习题3

3-1选择题

1-5 BDABC6-10 ADCAC11-12 BB

3-2填空题

1. 3

2. 0261

3. 0x10

4.2,1 互换a,b的值

5. 6.6

6. –003

8. 7

7. 5.0,4,c=3

8. i=10,j=20

9. 

(1)65

(2)65,A

(3)56.123400,123.456001

(4)3.141600

(5)8765.432

(6)5.864000e+002

(7)3.141600e+000

(8)3.1416

(9)8765

(10)3.1416,8765.43

10. a=2b=5x=8.8y=76.34c1=65c2=97

3-3编程题

1.编写程序实现从键盘输入两个十进制整型数据10和8给变量x和y,并按下列格式�输出。

�xy

十进制数108

八进制数1210

十六进制数a8

#include"stdio.h"

main()

{intx,y;

scanf("%d%d",&x,&y);

printf("xy\n");

printf("%4d%4d\n",x,y);

printf("%4o%4o\n",x,y);

printf("%4x%4x\n",x,y);

}

2.编写一个程序,输入一个大写英文字符('B'~'Y'),输出它的前导字符、该字符本身及其后续字符。

#include"stdio.h"

main()

{charc;

scanf(“%c”,&c);

printf(“%c,%c,%c\n”,c-1,c,c+1);

}

3.编写一个程序,输入一个3位正整数,要求反向输出对应的整数,如输入123,则输出321。

编写程序并给出相应的程序流程图。

#include"stdio.h"

main()

{inta,a1,a2,a3;

scanf(“%d”,&a);

a1=a%10;a=a/10;

a2=a%10;a=a/10;

a3=a%10;

printf(“%d%d%d\n”,a1,a2,a3);

}

4.编写程序,读入3个double型数据,求它们的平均值,保留此平均值小数点后1位数,对小数点后第2位数进行四舍五入,最后输出结果。

#include"stdio.h"

main()

{doublea,b,c,ave;

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

ave=(a+b+c)/3;

printf(“%8.2f\n”,ave);

}

5.编写程序,读入3个整数给变量a、b、c,然后交换它们的值,把a原来的值给b,把b原来的值给c,把c原来的值给a。

#include"stdio.h"

main()

{inta,b,c,t;

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

t=a;a=c;c=b;b=t;

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

}

习题4

4-1单选题

1~5AADAD6~10ACBBB11~12BA

4-2填空题

1.1

2.

(1)a>0||b>0

(2)x>0&&x<=10

(3)a==1.5&&b==1.5&&c==1.5(4)p

3.

(1)0

(2)1(3)1(4)0(5)1

4.(max=a>b?

a:

b)>c?

max:

c

5.-4

6.1

7.5,0,3

8.

(1)(a==0)

(2)(b==0)(3)(disc<0)

4-3编程题

1.输入3个实型数值a、b、c,如果能用它们作为三角形的3条边形成一个三角形,则输出三角形的面积,并画出实现该算法的N-S流程图并编程实现。

#include"stdio.h"

#include“math.h”

main()

{floata,b,c,s,area;

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

if(a+b>c&&a+c>b&&b+c>a)

{s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“%f”,area);

}

}

2.输入整数x、y,若x2+y2>1000,则输出x2+y2百位以上的数字,否则输出两数之和。

#include"stdio.h"

main()

{intx,y;

scanf(“%d,%d”,&x,&y);

if(x*x+y*y>1000)

printf(“%d\n”,(x*x+y*y)/100);

else

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

}

3.输入一个整数,判断它能否同时被3、5、7整除,并输出“yes”或“no”字样。

#include"stdio.h"

main()

{intx,

scanf(“%d”,&x);

if(x%3==0&&x%5==0&&x%7==0)

printf(“yes\n”);

else

printf(“no\n”);

}

4.对任意输入的x,用下式计算并输出y的值。

#include"stdio.h"

#include“math.h”

main()

{floatx,y;

scanf(“%f”,&x);

if(x<-2)y=x*x-sin(x);

elseif(x<=2)y=pow(2,x)+1;

elsey=sqrt(x*x+x+1);

printf(“%f\n”,y);

}

5.编写程序输入一个5位整数,判断它是不是回文数。

回文数是指一个数从右到左和从左到右的对应数码相同,如12321是回文数,个位与万位相同,十位与千位相同。

#include"stdio.h"

main()

{longge,shi,qian,wan,x;

scanf("%ld",&x);

wan=x/10000;

qian=x%10000/1000;

shi=x%100/10;

ge=x%10;

if(ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/

printf("thisnumberisahuiwen\n");

else

printf("thisnumberisnotahuiwen\n");

}

6.编写程序用于计算某运输公司的运费。

设每公里每吨货物的基本运费为p,货物重量为w,路程为s(单位为km),折扣为d,总费用计算公式为:

f=p*w*s*(1-d)

运费计算标准见表4.5。

表4.5某运输公司运费计算标准

s<250不打折

250<=s<500折扣2%

500<=s<1000折扣5%

1000<=s<2000折扣8%

2000<=s<3000折扣10%

s>3000折扣15%

#include"stdio.h"

main()

{floatp,w,s,d,f;

scanf(“%f,%,%f”,p,s,w);

if(s>3000)d=0.15

elseif(s>=2000)d=0.1;

elseif(s>=1000)d=0.08;

elseif(s>=500)d=0.05;

elseif(s>=250)d=0.02;

elsed=0

f=p*w*s*(1-d);

printf(“%f”,f);

}

习题5

5-1单选题

1~5CDABA6~10ABDDB11~14DBCB

5-2填空题

1.20

2.333

3.

(1)i<10

(2)j%3!

=0

4.

(1)flag*(float)k/(k+1)

(2)flag=-flag

5.

(1)max=x

(2)x!

=-1(3)scanf("%d",&x)

5-3编程题

1.用3种循环语句编写程序实现下列算式:

(1)1+2′2+3′3+…+100′100

(2)e=,当最后一项的值小于10-6时为止。

(1)

#include"stdio.h"

main()

{inti;lonts=0;

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

s+=i*i;

printf(“%ld”,s);

}

(2)

#include"stdio.h"

main()

{inti=1;lontp=1;floats=0;

do{

s+=1.0/p;

p*=++i;

}while(1.0/p>1e-6)

printf(“%f”,s);

}

2.编写程序求两个正整数的最大公约数。

#include"stdio.h"

main()

{intm,n,t,a,b;

scanf(“%d,%d”?

&m,&n)?

;

if(m

;m=n?

;n=t?

;}

a=m;b=n;

t=m%n?

;

while(t)

{m=n?

;n=t?

;t=m%n;}

printf(”%d,%d”,n,a*b/n);

}

3.编写程序求一个整数的任意次方的最后3位数,即求xy的最后3位数。

#include"stdio.h"

main()

{intx,y,s=1;

scanf(”%d,%d?

”,&x,&y)?

;

for(?

;y>0?

;y--)s*=x?

;

printf(”%d,%d,%d\n?

”,s%10,s/10%10,s/100%10);

}

4.百鸡问题。

用100元钱买100只鸡,其中,公鸡每只5元,母鸡每只3元,小鸡每3只1元。

编写程序输出各种买法。

#include"stdio.h"

main()

{intx,y,z;

for(x=1?

;x<20?

;x++)

for(y=1?

;y<33?

;y++)

{z=100-x-y?

;

if(z>=0&&(5*x+3*y+z/3)-100<1e-5)

printf(”x=%d,y=%d,z=%d\n”,x,y,z)?

;

}

}

5.编写程序分别打印如下图形:

*

***

*****

********

(a)(b)

(a)#include"stdio.h"

main()

{intj,k;

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

{for(k=1;k<=4-j;k++)printf("");

printf("****");

printf("\n");

}

}

(b)#include"stdio.h"

main()

{intj,k;

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

{for(k=1;k<=4-j;k++)printf("");

for(k=1;k<=2*j-1;k++)

printf("*");

printf("\n");

}

}

6.请编写程序求100~999之间所有的水仙花数。

水仙花数的含义是指这样的一个3位数,其各位数字的立方和等于该数本身。

例如,371=33+73+13,所以371是一个水仙花数。

程序分析:

利用for循环控制100-999个数,每个数分解出个位,十位,百位。

#include"stdio.h"

main()

{

inti,j,k,n;

printf("'waterflower'numberis:

");

 for(n=100;n<1000;n++)

 {

  i=n/100;/*分解出百位*/

  j=n/10%10;/*分解出十位*/

  k=n%10;/*分解出个位*/

  if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

   {

   printf("%-5d",n);

   }

 }

printf("\n");

}

习题6

6-1单选题

1-5 CBBAD6-10 DBCCD11-15 DCABC

6-2填空题

1. 120

2. x

3. 3,2,2,3

4.fac/i

5. 8,17

6. 9

7. 1.0/(i*i)

8. fun-in:

30,20,10

fun-end:

1015,35,1050

10,20,30

9. 012345

10.93636

6-3编程题

1.编写一函数把字符串中的小写字母转换成大写字母,其他字符不变。

voidzhuan()

{charch;

while((ch=getchar())!

=’\n’)

{if(ch>=’a’&&ch<=’z’)ch=ch-32;

putchar(ch);

}

}

2.编写一函数求e=

floatexpp(intn)

{intk,fac=1;

floatsum=0;

for(k=1;k<=n;k++)

{fac*=k;

sum+=1.0/fac;

}

return(sum);

}

3.编写一函数求一个整数的任意次方的最后3位数,即求xy的最后3位数。

intxy3(intx,inty)

{intk,num=1;

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

num*=x;

num=num%1000;

returnnum;

}

4.有5个人坐在一起,第5个人说他比第4个人大2岁,第4个人说他比第3个人大2岁,第3个人说他比第2个人大2岁,第2个人说他比第1个人大2岁,第1个人说他10岁,请问第5个人多大?

intage(intn)

{intc;

if(n==1)c=10;

elsec=age(n-1)+2;

returnc;

}

习题7

7-1单选题

1-5 DBCCB6-8BDC

7-2填空题

1. c

2. 60

3. 1000 10

4. 16

7-3编程题

1.编写程序计算下列公式中的f值,使用带参数的宏来实现。

#include“math.h”

#defineF(a)a*a+sqrt(3*a*a+2*a+1)

main()

{floatx,f;

scanf(“%f”,&x);

f=4.5/F(exp(x))+F(cos(x))+F(sqrt(x))/F(x*x);

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

}

习题8

8-1单选题

1~15CADAC6~10CCDAB11~15CBBCD

8-2填空题

1

(1)2345

(2)10010(3)QuickC(4)

2.

(1)j+=2

(2)a[i]>a[j]

3.

(1)r+b[k]

(2)*x

8-3编程题

1.设数组a中的元素都为正整数,编程求其中偶数的个数和偶数的平均值。

#include"stdio.h"

#defineN10

main()

{inta[N]={1,2,3,4,5,6,7,8,9,0},osum=0,ocount=0,j;

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

if(!

(j%2)){ocount++;osum+=a[j];}

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

}

2.有一个已排好序的数组,输入一个数,要求按原来排序的规律将它插入数组中,插入后数组仍然有序,请编程实现。

#include"stdio.h"

#defineN10

main()

{inta[N]={10,20,30,40,50,60,70,80,90},j,k,x;

scanf(“%d”,&x);

for(j=0;j

if(x

for(k=N-1;k>j;k--)a[k]=a[k-1];

a[j]=x;

for(j=0;j

}

3.编程求一个矩阵对角元素之和,其中矩阵元素值由数组初始化时给定。

#include"stdio.h"

#defineM3

main()

{inta[M][M]={{1,2,3},{4,5,6},{7,8,9}},j,sum1=0,sum2=0;

for(j=0;j

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

sum2+=a[j][M-(j+1)];}

printf(“%d,%d\n”,sum1,sum2);

}

4.编一个程序检查二维数组是否对称(即对所有的i和j,都有a[i][j]=a[j][i])。

#include"stdio.h"

#defineM3

main()

{inta[M][M]={{1,2,3},{2,4,5},{3,5,6}},j,k,flag=1;;

for(j=0;j

for(k=0;k

if(a[j][k]!

=a[k][j]){flag=0;break;}

if(flag)printf(“ok”);

elseprintf(”NO”);

}

5.编程比较两个字符串的大小(不用strcmp()函数)。

#include"stdio.h"

#include“string.h”

main()

{charc1[10],c2[10],j;

gets(c1);gets(c2);

for(j=0;(c1[j]==c2[j])&&c1[j]&&c2[j];j++);

printf(“%d\n”,c1[j]-c2[j]);

}

6.有一篇文章,共有3行文字,每行有80个字符。

要求分别统计出其中英文大写字母、小写字母、数字、空格及其他字符的个数。

#include"stdio.h"

#include”string.h”

#defineM3

#defineN80

main()

{chara[M][N],j,k,n[5]={0};

for(j=0;j

for(j=0;j

for(k=0;a[j][k];k++)

if(a[j][k]>=’A’&&a[j][k]<=’Z’)n[1]++;

elseif(a[j][k]>=’a’&&a[j][k]<=’z’)n[2]++;

elseif(a[j][k]>=’0’&&a[j][k]<=’9’)n[3]++;

elseif(a[j][k]=’’)n[4]++;

elsen[5]++;

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

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

}

习题9

9-1单选题

1~5DDACB6~10ACBAD11~15CDBCC

9-2填空题

1.

(1)2,1

(2)10#30#(3)FOUR,O(4)60

2.

(1)49

(2)2(3)2(4)75319(5)15

(6)

 

(7)

 

3.

(1)*x

(2)t

4.

(1)'\0'或0

(2)n++或n+=1或n=n+1

5.024

9-3编程题

1.按以下要求编写一个程序。

定义三个变量用于存放输入的三个整数;另定义三个指向整型变量的指针变量,并利用它们实现将输入的三个整数按由小到大的顺序输出。

#include"stdio.h"

main()

{

intn1,n2,n3;

int*pointer1,*pointer2,*pointer3;

printf("pleaseinput3number:

n1,n2,n3:

");

scanf("%d,%d,%d",&n1,&n2,&n3);

pointer1=&n1;

pointer2=&n2;

pointer3=&n3;

if(n1>n2)swap(pointer1,pointer2);

if(n1>n3)swap(pointer1,pointer3);

if(n2>n3)swap(pointer2,pointer3);

printf("thesortednumbersare:

%d,%d,%d\n",n1,n2,n3);

}

swap(p1,p2)

int*p1,*p2;

{intp;

p=*p1;*p1=*p2;*p2=p;

}

2.编写函数,得到两个整数相除的商和余数。

要求通过指针在函数间传递商和余数这两个数据

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

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1