C语言课后作业题参考答案

  • 格式:doc
  • 大小:388.50 KB
  • 文档页数:45

C语言课后作业及参考答案

1 C语言课后作业题参考答案

第二章

2.2 用赋值表达式表示下列计算

1) cbaxy

2) 2/5262)(lnedax

3) yXaXXsincos2

4)

RRRR1111123

5)232)4(7)2(5)2(31xxxxxy

参考答案:

1) y=pow(x,a+pow(b,c))

或者:

exp((a+exp(c*log(b)))*log(x))

2) x=pow(log(sqrt(a+d*d))-exp(26),5.0/2)

或者:

exp(5.0/2*log(log(sqrt(a+d*d))-exe(26)))

3) y=sin(x)/(a*x)+fabs(cos(3.1415926*x/2))

4) R=1.0/(1.0/R1+1.0/R2+1.0/R3)

5) y=x/(1+(x/(3+(pow(2*x,2)/5+(pow(2*x,3)/(7+pow(4*x,2)))))))

2.6 编写程序,输入两个整数,分别求它们的和、差、积、商、余数并输出。

参考答案:

#include

void main()

{

int m,n;

printf("请输入2个整数\n");

scanf("%d%d",&m,&n);

printf("%d+%d=%d\n",m,n,m+n); C语言课后作业及参考答案

2 printf("%d-%d=%d\n",m,n,m-n);

printf("%d*%d=%d\n",m,n,m*n);

printf("%d除以%d:%f\n",m,n,(float)m/n);

printf("%d除以%d的余数:%d\n",m,n,m%n);

}

2.9 已知摄氏温度C与华氏温度F的转换关系是)32(95FC,编写一个摄氏温度与华氏温度转换的程序,输入C,输出F.

参考答案:

#include

void main()

{

float f,c;

printf("请输入摄氏温度的值:\n");

scanf("%f",&c); //输入33

//f=9*c/5+32; //结果为91.4

f=9.0/5*c+32; //结果为91.4

//f=9/5*c+32; //结果为65

printf("转换为华氏温度是:%f\n",f);

}

第3章 分支程序设计

3.3 编写程序,输入一个字母,若其为小写字母,将其转换成相应的大写字母,然后输出。

参考答案:

#include

void main()

{

char c1;

printf("请输入一个小写字母:\n");

scanf("%c",&c1);

if(c1>=97&&c1<=122) // if(c1>='a'&&c1<='z')

{

c1=c1-32; // c2=c1-('a'-'A');

printf("该字母对应的大写字母是:%c\n",c1);

}

else

printf("该字符不是小写字母\n");

}

程序运行结果: C语言课后作业及参考答案

3

3.9编写程序,判断给定的3位数是否为Armstrong数,Armstrong数是指其值等于它本身每位数字立方和的数,如153就是一个Armstrong数。

333351153

参考答案:

#include

#include

void main()

{

int data; //变量声明,用来存储输入的三位整数

int bit0,bit1,bit2; //变量声明,分别用来存储每一位上的数字

int tmp0; //临时变量

printf("请输入一个三位整数:\n");

scanf("%d",&data);

if(data>999||data<100) //检验数据

{

printf("输入数据错误.\n");

return; //退出当前函数

}

bit0=data%10;

tmp0=data/10;

bit1=tmp0%10;

bit2=tmp0/10;

if(pow(bit2,3)+pow(bit1,3)+pow(bit0,3)==data)

printf("%d是Armstrong数.\n",data);

else

printf("%d不是Armstrong数.\n",data);

}

程序运行结果:(运行3次)

C语言课后作业及参考答案

4

程序改进:

#include

#include

void main()

{

int data; //变量声明,用来存储输入的三位整数

int bit0,bit1,bit2; //变量声明,分别用来存储每一位上的数字

int tmp0; //临时变量

int flag=1; //flag用来控制是否继续输入其他3位数

while(flag==1)

{

printf("\n请输入一个三位整数:\n");

scanf("%d",&data);

while(data>999||data<100) //检验数据

{

printf("输入数据错误,请重新输入:\n");

scanf("%d",&data);

}

bit0=data%10;

tmp0=data/10;

bit1=tmp0%10;

bit2=tmp0/10;

if(pow(bit2,3)+pow(bit1,3)+pow(bit0,3)==data)

printf("%d是Armstrong数.\n",data);

else

printf("%d不是Armstrong数.\n\n",data);

printf("\n是否继续输入?1:继续;其他数字:退出:\n");

scanf("%d",&flag);

}

}

程序运行结果:(运行一次) C语言课后作业及参考答案

5

参考程序2:

#include

#include

void main()

{

int bit0,bit1,bit2; //变量声明,分别用来存储每一位上的数字

printf("请输入3个一位整数,分别表示该三位数的百位、十位和个位上的数字(百位上数字不能为0):\n");

scanf("%d%d%d",&bit2,&bit1,&bit0);

while(bit2>9||bit2<=0||bit1>9||bit1<0||bit0>9||bit0<0) //检验数据

{ printf("输入数据错误,请重新输入3个一位正整数:\n");

scanf("%d%d%d",&bit2,&bit1,&bit0);

}

if(pow(bit2,3)+pow(bit1,3)+pow(bit0,3)==bit2*100+bit1*10+bit0)

printf("%d是Armstrong数.\n",bit2*100+bit1*10+bit0);

else

printf("%d不是Armstrong数.\n",bit2*100+bit1*10+bit0);

}

程序运行结果:

C语言课后作业及参考答案

6

3.10编写程序,读入一个点的X、Y,计算

在第四象限当在第三象限当在第二象限当在第一象限当YXYXYXYXYXYXYXZYX,),(tan,,ee,,sinsin,,lnln32

参考答案:

#include

#include

#define EPS 1e-6

void main()

{

float x,y,z;

printf("请输入x和y的值:\n");

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

if(fabs(x)

{

printf("输入错误,该点在坐标轴上.\n");

return;

}

if(x>0)

{

if(y>0)//第一象限

z=log(x)+log(y);

else//第四象限

z=tan(x+y);

}

else

{

if(y>0)//第二象限

z=sin(x)+cos(x);

else//第三象限

z=exp(2*x)+exp(3*y);

}

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

}

3.11 编程序,输入一个整数,判断它能否被3 、5 、7整除,并输出如下信息。

A. 能同时被3 、5 、7整除;

B. 能同时被两个数整除,并指明是哪两个数;

C. 能被一个数整除,并指明是哪个数;

D. 不能被所有数整除。