2024年1月14日发(作者:)

练习3.6

编程练习

1~3题

#include

int main()

{

float x,y;

x=(3+10)/2.0;

y=(4+12)/2.0;

printf("%fn",x);

printf("%fn",y);

return 0;

}

4题

#include

#define ER 2.0

int main()

{

int x1,y1,x2,y2;

float x3,y3;

printf("请输入数据:");

scanf("%d %d %d %d",&x1,&y1,&x2,&y2);

x3=(x1+x2)/ER; /*注意应先输入数据后在计算*/

y3=(y1+y2)/ER;

printf("(%5.2f,%5.2f)n",x3,y3);

return 0;

}

5题

#include

#include

int main()

{

int num1;

float num2;

printf(“请输入数据:”);

scanf(“%d”,&num1);

num2 = pow(num1,0.25);

printf(“输入数据的4次方根为:%fn”,num2);

return 0;

}

6题

#include

#include

int main()

{

int X,N,R;

float A;

printf(“输入初始存款金额:”);

scanf(“%d”,&X);

printf(“输入存期:”);

scanf(“%d”,&N);

printf(“输入年利率:”);

scanf(“%d”,&R);

A = X*pow((1.0+R/100.0),N);

printf(“获得的货币量:%fn”,A);

return 0;

}

7题

1、 分析问题

a 、确定期望的输出。

要求有下列4个输出:

1) 购买物品的总价袼。

2) 购买物品的折扣总数。

3) 购买物品的应付税额。

4) 购买物品的应付款额。

b、确定输入数据。

用户要输入的数据如下:

1) 购买某一件物品的单价。

2) 购买物品的数量。

3) 购买某一件物品的税率。

c、列出输入输出相关联的公式。

总值(总价格)=项数(数量)X每项价值(单价)

折扣后总值(折扣总数)=总值(总价格)-(折扣率X总值)

应付税额=总值X税率(因不同情况而定)

应付款额=总值+应付税额

注意:计算是从总值开始的,然后是依次计算它们的值,计算顺序不能乱。

d、执行手工计算。

随意给一组数据用上面的公式进行计算。

如:令单价为10元、数量为100个、折扣率为20%、税率为6%。

有:总值=10*100元=1000元

折扣后总值=10*100元-20%*10*100元=800元

应付税额=1000*6%元=60元

应付款额=1000元+60元=1060元

2、 选择一个全面的解决方案的算法

对于这个问题,算法为:

输入要输入的数据并显示

使用分析阶段提供的公式计算总值、折扣后总值、应付税额、应付款额并显示。

3、 编写程序

程序如下所示,其中所选变量名称反映了他们的用途。

#include

#define TAXRATE 0.06 /*假设税率为6%*/

int main()

{

float danJia,shuLiang,zheKou;

float zongZhi,zheZong;

float yingShui,yingKuan;

printf(“请输入单价:”);

scanf(“%f”,&danJia);

printf(“请输入数量:”);

scanf(“%f”,&shuLiang);

printf(“请输入折扣率:”);

scanf(“%f”,&zheKou);

zongZhi = shuLiang*danJia;

zheZong = zongZhi-(zheKou*zongZhi);

yingShui = zongZhi*TAXRATE;

yingKuan = zongZhi+yingShui;

printf(“总值:%fn折扣后总值:%fn应付税额:%fn应付款额%fn”,zongZhi,zheZong,yingShui,yingKuan);

return 0;

}

4、 测试并调试程序

开发过程的最后一步是验证程序的操作。这个程序的输入输出如下(调试的结果)。

请输入单价:10.0

请输入数量:100.0

请输入折扣率:0.2

总值:1000.000000

折扣后总值:800.000000

应付税额:60.000000

应付款额1060.000000

Press any key to continue

由于所显示的值与前面手工计算的值一致,所以我们可以信任这个程序,能够将它用于确定希望得到购买某一件物品的相关计算中。

8题

1、 分析问题

a、 确定期望的输出。

根据题目要求只有个输出:皮特驱车穿过田野到达萨利的农场的最短距离s。

b、 确定要输入的数据。

根据题目可知要输入的(已知的)数据有以下2项:

1) 向东行驶的距离x。

2) 向北行驶的距离y。

c、 列出输入与输出相关联的公式。

距离 = sqrt(x*x+y*y);

d、 执行手工计算。

假设向东行驶的距离是3英里,向西行驶的距离是4英里。

则可由输入与输出相关联的公式计算出:

距离=sqrt(3*3+4*4)英里=5英里

2、 选择一个全面解决方案的算法

对于这个实际问题的算法,如下:

输入并且显示要输入的数据

使用分析阶段的公式计算所要求解的距离。

3、 编写程序

程序如下所示,其中用到了数学函数库(math.h)和对于已知值数据的四舍五入方法((int)(s+0.5)或(int)(s*10+5.0)*0.1将s四舍五入到最接近的整数,如果要四舍五入到十分位则应是(int)(s *10+0.5)*0.1,百分位(int)(s*100+5.0)*0.01)。

#include

#include

int main()

{

float x,y,s;

int s1;

printf(“请输入向东行驶的距离:”);

scanf(“%f”,&x);

printf(“请输入向北行驶的距离:”);

scanf(“%f”,&y);

s = sqrt(x*x+y*y);

s1 = (int)(s*10+5.0)*0.1;

printf(“皮特驱车穿过田野到达萨利的农场的最短距离为:%dn”,s1);

return 0;

}

4、测试并调试程序

开发过程的最后一步是验证程序的操作。这个程序的输入输出如下(调试的结果)。

请输入向东行驶的距离:3.0

请输入向北行驶的距离:4.0

皮特驱车穿过田野到达萨利的农场的最短距离为:5

Press any key to continue

在调试中遇到的问题:当输入数据时,输出为0。后经过检查得出导致错误的原因是s被四舍五入后变成了一个整数,然而程序中s被定义为浮点型,所以s在被四舍五入后要重新定义一个整型数据变量s1.

9题

1、 分析问题

a、 确定期望的输出。

根据题目的要求要输出的6个数据如下:

1) 第一次冲击的速度v1。

2) 第二次冲击的速度v2。

3) 第三次冲击的速度v3。

4) 第一次冲击弹跳的回弹高度h1。

5) 第二次冲击弹跳的回弹高度h2。

6) 第三次冲击弹跳的回弹高度h3。

b、 确定要输入的数据。

根据已知条件可以确定要输入的数据为:初始的高度height。

c、 列出输入与输出相关联的公式。

v1=sqrt(2*g*height) h1=height*(2/3)

v2=sqrt(2*g*h1) h2=h1*(2/3)

v3=sqrt(2*g*h2) h3=h2*(2/3)

d、 执行手工计算。

假设初始速度为2米,则有:

v1=sqrt(2*9.81*2)m/s=6.264m/s

v2=sqrt(2*9.81*2*(2/3))m/s=5.7769m/s

v3=sqrt(2*9.81*2*(4/9))m/s=4.422m/s

h1=2*(2/3)m=1.333333333333333m

h2=h1*(2/3)m=0.8888888888888889m

h3=h2*(2/3)m=0.5925925925925926m

2、 选择一个全面解决方案的算法

对于这个题目的算法,如下:

输入并且显示要输入的数据

使用分析阶段的公式计算出所要输出的数据的值并显示(注意整除)。

3、 编写程序

程序如下所示,其中用到了数学库函数(math.h)以及符号常量(#define)的使用,特别的是对整除时的处理。

#include

#include

#define G 9.81

#define B 2.0/3.0

int main()

{

float v1,v2,v3,h1,h2,h3;

float height;

printf(“请输入初始高度:”);

scanf(“%f”,&height);

v1 = sqrt(2*G*height);

h1 = height*B;

v2 = sqrt(2*G*h1);

h2 = h1*B;

v3 = sqrt(2*G*h2);

h3 = h2*B;

printf(“v1 = %f v2 = %f v3 = %fn”,v1,v2,v3);

printf(“h1 = %f h2 = %f h3 = %fn”,h1,h2,h3);

return 0;

}

4、 测试并调试程序

开发过程的最后一步是验证程序的操作。这个程序的输入输出如下(调试的结果)。

请输入初始高度:2.0

v1 = 6.264184 v2 = 5.114685 v3 = 4.176123

h1 = 1.333333 h2= 0.888889 h3 = 0.592593

Press any key to continue

把输出的结果和手工计算的结果近对比,得出测试程序正确,所以我们能够信任这个程序,并把它应用到实际中去用以解决该问题。

练习4.2

编程练习

1题

#include

#define LL1 0.075

#define LL2 0.054

int main()

{

int numYrs;

printf(“请输入存入年数:”);

scanf(“%d”,&numYrs);

if(numYrs>5)

printf(“%5.3fn”,LL1);

else

printf(“%5.3fn”,LL2);

return 0;

}

运行结果1

请输入存入年数:3

0.054

Press any key to continue

运行结果2

请输入存入年数:6

0.075

Press any key to continue

2题

#include

int main()

{

float fenShu;

printf(“请输入分数:”);

scanf(“%f”,&fenShu);

if(fenShu>=70.0)

printf(“及格n”);

else

printf(“不及格n”);

return 0;

}

3题

#include

int main()

{

int gongShi,xinShui;

printf("请输入工时:");

scanf("%d",&gongShi);

if(gongShi>40)

xinShui = 320+(gongShi-40)*12;

else

xinShui = gongShi*8;

printf("薪水额:$%dn",xinShui);

return 0;

}

4题

#include

int main()

{

char status;

}

printf("请输入售货员的职位字符:");

scanf("%c",&status);

if(status=='s')

printf("高级售货员:$800n");

else

printf("初级售货员:$375n");

return 0;

5题

#include

int main()

{

float num1,num2;

printf("请输入两个数:");

scanf("%f %f",&num1,&num2);

if(num1>num2)

printf("The first number greater than the secondn");

else

printf("The first number is not greater than the secondn");

return 0;

}

练习4.3

编程练习

1题

#include

int main()

{

int fenShu;

printf("输入学生的数值分数:");

scanf("%d",&fenShu);

if(fenShu<60)

printf("评定等级:Fn");

else if((fenShu<70)&&(fenShu>=60))

printf("评定等级:Dn");

else if((fenShu<80)&&(fenShu>=70))

printf("评定等级:Cn");

else if((fenShu<90)&&(fenShu>=80))

printf("评定等级:Bn");

else if(fenShu>=90)

printf("评定等级:An");

return 0;

}

3题

#include

int main()

{

float num1,Celsius,Fahrenheit;

char num3;

}

printf("请输入:");

scanf("%f %c",&num1,&num3);

if(num3=='f')

{

Celsius = (5.0/9.0)*(num1-32.0);

printf("摄氏温度:%fn",Celsius);

}

else

if(num3=='c')

{

Fahrenheit = (9.0/5.0)*num1+32.0;

printf("华氏温度:%fn",Fahrenheit);

}

else

printf("输入错误n");

return 0;

结果一:

请输入:32 f

摄氏温度:0.000000

Press any key to continue

结果二:

请输入:0 c

华氏温度:32.000000

Press any key to continue

编程练习

1题

#include

int main()

{

int daiMa;

printf("请输入制造厂商代码:");

scanf("%d",&daiMa);

switch (daiMa)

{

case 1:

printf("3M公司n");

break;

case 2:

printf("万盛公司n");

break;

case 3:

printf("索尼公司n");

break;

case 4:

printf("威宝公司n");

break;

}

return 0;

}

2题

#include

int main()

{

char marcode;

练习4.4

printf("Enter a marcode code:");

scanf("%c",&marcode);

switch (marcode)

{

case 'M':

printf("nMn");

break;

case 'S':

printf("nSn");

break;

case 'D':

printf("nDn");

break;

case 'W':

printf("nWn");

break;

default:

printf("n……n");

}

return 0;

}

3题

答:因为switch语句是一种专用的选择语句,它能够用于要求准确的等于一个或者多个的整型常量的if„else链中,而程序4.5显然不符合条件(选择码为整型常量)。

4题

#include

int main()

{

float num1,Celsius,Fahrenheit;

char num3;

printf("请输入:");

scanf("%f %c",&num1,&num3);

switch (num3)

{

case 'f':

Celsius = (5.0/9.0)*(num1-32.0);

printf("摄氏温度:%fn",Celsius);

break;

case 'c':

Fahrenheit = (9.0/5.0)*num1+32.0;

printf("华氏温度:%fn",Fahrenheit);

break;

default:

printf("输入错误n");

}

return 0;

}

5题

改法:

int opselect; char opselect;

scanf(“%d”,&opselect); scanf(“%c”,&opselect);

case 1: case ‘a’:

case 2: case ‘b’:

case 3: case ‘c’:

练习4.5

编程练习

1题

A

#include

int main()

{

int month,day;

printf("Enter a month (use a 1 for Jan, etc.):");

scanf("%d",&month);

printf("Enter a day of the month:");

scanf("%d",&day);

if ((month < 1)||(month > 12))

}

printf("输入月份无效n");

if ((day < 1)||(day > 31))

printf("输入天数无效n");

return 0;

练习5.2

编程练习

1题

#include

int main()

{

int i;

}

i = 0;

while (i <= 8)

{

i+=2;

printf("%d ",i);

}

printf("n");

return 0;

2题

#include

#define ENDVALUE 60

int main()

{

int celsius;

float fahren;

printf("DEGREES DEGREESn");

printf("CELSIUS FAHRENHEITn");

printf("------- ----------n");

celsius = -10;

while (celsius <= ENDVALUE)

{

fahren = (9.0/5.0)*celsius + 32.0;

printf("%5d%11.2fn",celsius,fahren);

celsius = celsius + 10;

}

return 0;

}

3题

#include

#define ENDVALUE 20

int main()

{

int jiaLun;

float sheng;

printf("DEGREES DEGREESn");

printf("JIALUN SHENGZHUANHUANn");

printf("------ --------------n");

}

jiaLun = 10;

while (jiaLun <= ENDVALUE)

{

sheng = jiaLun*3.785;

printf("%4d%13.3fn",jiaLun,sheng);

jiaLun = jiaLun + 1;

}

return 0;

4题

#include

int main()

{

int yingChi;

float mi;

yingChi = 3;

printf("YINGCHI MIn");

printf("------- ------n");

while (yingChi <= 30)

{

mi = yingChi/3.28;

}

printf("%5d%8.2fn",yingChi,mi);/*总共5+8=13位,注意对齐*/

yingChi = yingChi + 3;

}

return 0;

5题

#include

#define DEPRECIATION 4000

int main()

{

int depreciation,yearValue;

int year = 1;

printf(" END-OF-YEAR ACCUMULATEDn");

printf("YEAR DEPRECIATION VALUE DEPRECIATIONn");

printf("---- ------------ ----------- ------------n");

while (year <= 7)

{

yearValue = 24000-4000*(year-1);

depreciation = year*4000;

printf("%d%11d%14d%12dn",year,DEPRECIATION,yearValue,depreciation);

year = year + 1;

}

return 0;

}

6题

#include

#define PINGJUN 55.0

int main()

{

float shiJian;

float juLi;

shiJian = 0.0;

printf("SHIJIAN JULIn");

printf("------- ------n");

while (shiJian <= 4)

{

juLi = shiJian*PINGJUN;

printf("%5.1f%8.1fn",shiJian,juLi);

shiJian = shiJian + 0.5;

}

return 0;

}

练习5.3

编程练习

1题

#include

#define MAXCOUNT 8

int main()

{

int count;

float num,total;

printf("nThis prigram will ask you to enter %d ",MAXCOUNT);

count = 1;

total = 0.0;

}

while (count <= MAXCOUNT)

{

printf("Enter a number: ");

scanf("%f",&num);

total = total + num;

printf("The total is now %fn",total);

count++;

}

printf("nnThe final total of the %d number is %fn",MAXCOUNT,total);

return 0;

2题

#include

int main()

{

int count,maxcount;

float num,total;

printf("Please type in the total number of data values to be added:");

scanf("%d",&maxcount); /*确定输入数据的个数*/

count = 1;

total = 0.0;

printf("nThis program will ask you to enter %d ",maxcount);

while (count <= maxcount)

{

printf("Enter a number: ");

scanf("%f",&num);

total += num;

printf("The total is now %fn",total);

count++;

}

return 0;

}

3题

#include

int main()

{

int ciShu;

float sheShi,huaShi,sheZeng;

printf("请输入起始摄氏温度:");

scanf("%f",&sheShi);

printf("请输入转换次数:");

scanf("%d",&ciShu);

printf("请输入增量:");

scanf("%f",&sheZeng);

printf("SHESHI HUASHIn");

printf("------ ------n");

while (ciShu >= 0)

{

huaShi = (9.0/5.0)*sheShi + 32.0;

printf("%6.1f%7.1fn",sheShi,huaShi);

sheShi += sheZeng;

ciShu--;

}

return 0;

}

测试结果:

请输入起始摄氏温度:0.0

请输入转换次数:10

请输入增量:1.0

SHESHI HUASHI

------ ------

0.0 32.0

1.0 33.8

2.0 35.6

3.0 37.4

4.0 39.2

5.0 41.0

6.0 42.8

7.0 44.6

8.0 46.4

9.0 48.2

10.0 50.0

Press any key to continue

4题

#include

int main()

{

int sheMo;

}

float sheShi,huaShi,sheZeng;

printf("请输入起始摄氏温度:");

scanf("%f",&sheShi);

printf("请输入结束摄氏温度:");

scanf("%d",&sheMo);

printf("请输入增量:");

scanf("%f",&sheZeng);

printf("SHESHI HUASHIn");

printf("------ ------n");

while (sheShi <= sheMo)

{

huaShi = (9.0/5.0)*sheShi + 32.0;

printf("%6.1f%7.1fn",sheShi,huaShi);

sheShi += sheZeng;

}

return 0;

5题

#include

#define MAXCOUNT 10

int main()

{

int count;

float num,total,average;

printf("nThis program will ask you to enter %d ",MAXCOUNT);

count = 1;

total = 0.0;

while (count <= MAXCOUNT)

{

printf("Enter a number: ");

scanf("%f",&num);

total += num;

count++;

}

average = total/MAXCOUNT;

printf("nThe average of the %d number is %8.4fn",MAXCOUNT,average);

return 0;

}

6题

#include

int main()

{

int count,MAXCOUNT;

float num,total,average;

printf("nPlease type in the total number of data values to be averaged: ");

scanf("%d",&MAXCOUNT);

printf("nThis program will ask you to enter %d ",MAXCOUNT);

count = 1;

total = 0.0;

while (count <= MAXCOUNT)

{

printf("Enter a number: ");

scanf("%f",&num);

total += num;

count++;

}

average = total/MAXCOUNT;

printf("nThe average of the %d number is %8.4fn",MAXCOUNT,average);

return 0;

}

7题

#include

int main()

{

#define CUTOFF -1

float pingJun;

int num = 0;

float grade = 0.0;

float total = 0.0;

printf("nTO stop entering grades, type in any negative ");

}

while (grade > CUTOFF)

{

printf("Enter a grade: ");

scanf("%f",&grade);

total = total + grade;

num++;

}

printf("nThe total of the grades is %fn",total-grade);

pingJun = (total-grade)/(num-1);

printf("输入 %d 个数的平均值为 %fn",num-1,pingJun);

return 0;

8题

#include

int main()

{

int biaoShi,shouDaoShu,shouChuShu;

float yueChu,xinYuE;

int num = 0;

while (num <= 3) /*这里是所接收书的本数,可以给定其他合适的值*/

{

printf("请输入图书标识号:");

scanf("%d",&biaoShi);

printf("请输入月初库存余额:");

scanf("%f",&yueChu);

printf("请输入本月收到的图书册数:");

scanf("%d",&shouDaoShu);

printf("请输入本月售出的图书册数:");

scanf("%d",&shouChuShu);

xinYuE = yueChu + shouDaoShu - shouChuShu;

printf("新的库存余额为:%fnnn",xinYuE);

num++;

}

return 0;

}

9题

#include

int main()

{

int biaoShi,shouDaoShu,shouChuShu;

float yueChu,xinYuE;

int num = 0;

while (num >= 0) /*输入的数据只要有一个的值为999,循环将停止。*/

{

printf("请输入图书标识号:");

scanf("%d",&biaoShi);

if (999 == biaoShi)

break;

printf("请输入月初库存余额:");

scanf("%f",&yueChu);

if(999 == yueChu)

break;

printf("请输入本月收到的图书册数:");

scanf("%d",&shouDaoShu);

if (999 == shouDaoShu)

break;

printf("请输入本月售出的图书册数:");

scanf("%d",&shouChuShu);

if (999 == shouChuShu)

break;

xinYuE = yueChu + shouDaoShu - shouChuShu;

printf("新的库存余额为:%fnnn",xinYuE);

num++;

}

printf("终止循环n");

return 0;

}

10题

练习5.4

编程练习

1题

#include

int main()

{

#define TABLESIZE 20

int num;

printf("NUMBER SQUARE CUBEn");

printf("------ ------ ----n");

for (num = 0;num <= TABLESIZE; num += 2)

printf("%3d %7d %6dn",num,num*num,num*num*num);

return 0;

}

2题

#include

int main()

{

int num;

printf("NUMBER SQUARE CUBEn");

printf("------ ------ ----n");

for (num = 10;num >= 1; num--)

printf("%3d %7d %6dn",num,num*num,num*num*num);

return 0;

}

3题

#include

int main()

{

int num = 20,Fahrenheit;

float Celsius;

printf("HUASHI SHESHIn");

printf("------ ------n");

for (Fahrenheit = 20;num >= 1; num--)

{

Celsius = (5.0/9.0)*(Fahrenheit-32.0);

printf("%4d %8.2fn",Fahrenheit,Celsius);

Fahrenheit += 4;

}

return 0;

}

4题

#include

int main()

{

int num;

float Fahrenheit,Celsius;

for (num = 1; num <= 6;num++)

{

printf("请输入华氏温度:");

scanf("%f",&Fahrenheit);

Celsius = (5.0/9.0)*(Fahrenheit-32.0);

printf("摄氏温度:%fnnn",Celsius);

}

return 0;

}

5题

#include

int main()

{

int num;

float jiaLun,sheng;

for (num = 1;num <= 10;num++)

{

printf("请输入加仑:");

scanf("%f",&jiaLun);

sheng = jiaLun*3.785;

printf("对应的升值为:%fnnn",sheng);

}

return 0;

}

6题

#include

#include

int main()

{

int num,chu;

float keYong;

}

printf("NIANFEN KEYONGn");

printf("------- ------------n");

for (num = 1,chu = 1000;num <= 10;num++)

{

keYong = chu*pow((1 + 0.08),num);

printf("%5d %11.2fn",num,keYong);

}

return 0;

7题

#include

#define DEPRECIATION 4000

int main()

{

int year;

int yearValue,accumulated;

printf(" DEPRECIATION SCHEDULEn");

printf(" ------------ --------nn");

printf(" END-OF-YEAR ACCUMULATEDn");

printf("YEAR DEPRECIATION VALUE DEPRECIATIONn");

printf("---- ------------ ----------- ------------n");

for (year = 1;year <= 7;year++)

{

printf("%d %10d %13d %10dn",year,DEPRECIATION,(7-year)*DEPRECIATION,year*DEPRECIATION);

}

return 0;

}

8题

解法一:

#include

#include

#define JINNIANXIAO 10000000.00

int main()

{

int year;

float xiaoShou,liRun;

float total = 0.0;

}

printf(" SALES AND PROFIT PROJECTIONn");

printf(" ---------------------------nn");

printf("YEAR EXPECTED SALES PROJECTED PROFITn");

printf("---- -------------- ----------------n");

for (year = 1;year <= 10;year++)

{

xiaoShou = JINNIANXIAO*pow((1-0.04),year-1);

liRun = xiaoShou*0.1;

}

printf("%3d %16.2f %17.2fn",year,xiaoShou,liRun);

total += xiaoShou;

printf(" -------------- ----------------n");

printf("Totals: $%11.2f $%11.2fn",total,total*0.10);

return 0;

解法二:

#include

int main()

{

int year;

float xiaoShou,liRun;

float total = 0.0;

printf(" SALES AND PROFIT PROJECTIONn");

printf(" ---------------------------nn");

printf("YEAR EXPECTED SALES PROJECTED PROFITn");

printf("---- -------------- ----------------n");

for (xiaoShou = 10000000.000,year = 1;year <= 10;year++)

{

liRun = xiaoShou*0.1;

printf("%3d %16.3f %17.2fn",year,xiaoShou,liRun);

total += xiaoShou;

xiaoShou *= 0.960;

}

printf(" -------------- ----------------n");

printf("Totals: $%11.2f $%11.2fn",total,total*0.10);

}

return 0;

练习5.5

编程练习

1题

#include

int main()

/*这个程序计算一组MAXUNMS个用户输*/

/*入的数字的正数的总和以及负数的总和*/

{

int i,MAXUNMS;

float number;

float postotal = 0.0f;

float negtotal = 0.0f;

}

printf("请输入要输入数据的个数:");

scanf("%d",&MAXUNMS);

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

{

printf("Enter a number (positive or negative) : ");

scanf("%f",&number);

if (number > 0)

postotal += number;

else

negtotal += number;

}

printf("nThe positive total is %f",postotal);

printf("nThe negative total is %fn",negtotal);

return 0;

2题

#include

int main()

/*这个程序计算一组MAXUNMS个用户输*/

/*入的数字的正数的总和以及负数的总和*/

{

int i,MAXUNMS;

int j = 0,k = 0;

float number;

float postotal = 0.0f;

float negtotal = 0.0f;

printf("请输入要输入数据的个数:");

scanf("%d",&MAXUNMS);

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

{

printf("Enter a number (positive or negative) : ");

scanf("%f",&number);

if (number > 0)

{

postotal += number;

j++;

}

else

{

negtotal += number;

if (number != 0)

k++;

}

}

printf("nThe positive total is %f",postotal);

printf("nThe negative total is %fn",negtotal);

printf("正数平均值:%fn",postotal/j);

printf("负数平均值:%fn",negtotal/k);

return 0;

}

3题

A

#include

int main()

{

int month;

printf("nEnter a month between 1 and 12: ");

scanf("%d",&month);

while (month < 1 || month > 12 )

{

printf("Error - the month you entered is not valid.n");

}

}

printf("nEnter a month between 1 and 12: ");

scanf("%d",&month);

printf("The month accepted is %dn",month);

return 0;

4题

#include

int main()

{

#define TRUE 1

int riQi;

while (TRUE) /*这总是为真*/

{

printf("nEnter a today between 1 and 31: ");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 31) /*测试在这里进行,只有当输入正确的日期时循环才会停止*/

break;

printf("Error - the today you entered is not valid.n");

}

printf("The today accepted is %dn",riQi);

return 0;

}

5题

#include

int main()

{

#define TRUE 1

int riQi,yueFen;

while (TRUE)

{

printf("请输入月份:");

scanf("%d",&yueFen);

if (yueFen >= 1 && yueFen <= 12) /*直到输入正确的月份才会显示*/

break;

printf("输入月份错误nn");

}

switch (yueFen)

{

case 2:

while (TRUE)

{

printf("请输入日期:");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 28) /*直到输入正确的日期才会显示*/

break;

printf("输入日期错误nn");

}

break;

case 4:

while (TRUE)

{

printf("请输入日期:");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 30)

break;

printf("输入日期错误nn");

}

break;

case 9:

while (TRUE)

{

printf("请输入日期:");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 30)

break;

printf("输入日期错误nn");

}

break;

case 6:

while (TRUE)

{

printf("请输入日期:");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 30)

break;

printf("输入日期错误nn");

}

break;

case 11:

while (TRUE)

{

printf("请输入日期:");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 30)

break;

printf("输入日期错误nn");

}

break;

case 1:

while (TRUE)

{

printf("请输入日期:");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 31)

break;

printf("输入日期错误nn");

}

break;

case 3:

while (TRUE)

{

printf("请输入日期:");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 31)

break;

printf("输入日期错误nn");

}

break;

case 5:

while (TRUE)

{

printf("请输入日期:");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 31)

break;

printf("输入日期错误nn");

}

break;

case 7:

while (TRUE)

{

printf("请输入日期:");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 31)

break;

printf("输入日期错误nn");

}

break;

case 8:

while (TRUE)

{

printf("请输入日期:");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 31)

break;

printf("输入日期错误nn");

}

break;

case 10:

while (TRUE)

{

printf("请输入日期:");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 31)

break;

printf("输入日期错误nn");

}

break;

case 12:

while (TRUE)

{

printf("请输入日期:");

scanf("%d",&riQi);

if (riQi >= 1 && riQi <= 31)

break;

printf("输入日期错误nn");

}

}

printf("今天是 %d 月 %d 日。n",yueFen,riQi);

return 0;

}

6题

A

#include

int main()

{

float tmp,num;

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

{

printf("请输入数据: ");

scanf("%f",&tmp); /*输入数据不能全部小于-107374176.0也就是变量num的初始值(计算机默认的)。*/

if(!num || tmp>num)

num=tmp;

}

printf("最大值为: %fn",num);

return 0;

}

B

/*

文件名:

描述:显示随机输入的五个数的最大值和最大值出现的位置

程序员:王宾

日期:2013/04/28

*/

#include

int main()

{

int j = 0;

float tmp,num;

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

{

printf("请输入数据: ");

scanf("%f",&tmp); /*输入数据不能全部小于-107374176.0也就是变量num的初始值(计算机默认的)。*/

if(!num || tmp>num)

{

num=tmp;

j = i + 1; /*出现最大值的位置时必将是最后一次执行此语句时(最后一次tmp>num),

1+i的值就是最大值所在的位置值(每输入一个数据i都会自加1)。*/

}

}

printf("最大值为: %fn",num);

}

printf("最大值出现的位置: %dn",j);

return 0;

7题

/*

文件名:

描述:选择并显示能被3整除的前20个整数

程序员:王宾

日期:2013/04/28

*/

#include

int main()

{

int num = 0;

int j = 0;

printf("XUHAO SHUJUn");

printf("----- -----n");

while (j != 20)

{

if (num%3 == 0)

{

j++;

printf("%3d %6dn",j,num);

}

num++;

}

return 0;

}

8题

/*

文件名:

描述:确定女孩最后的年龄和得到美元的总额

程序员:王宾

日期:2013/04/28

*/

#include

int main()

{

int nianLing,jinE,zongE;

nianLing = 12;

jinE = 10;

zongE = 0;

while (jinE <= 1000)

{

zongE = zongE + jinE;

jinE = jinE*2;

nianLing++;

}

printf("此时她的年龄为 %d 岁n",nianLing);

printf("一共得到了 $%d n",zongE + jinE*2);

return 0;

}

9题

A

/*

文件名:

描述:产生方程式y=3x^5-2x^3+x的y值表

程序员:王宾

日期:2013/04/28

*/

#include

#include

int main()

{

float x, y;

printf("x value y valuen");

printf("------- --------n");

for (x = 5.0; x <= 10.0; x += 0.2)

{

y = 3.0*pow(x,5) - 2.0*pow(x,3) + x;

printf("%5.1f %12.2fn",x,y);

}

return 0;

}

B

/*

文件名:

描述:产生方程式y=1+x+x^2/2+x^3/6+x^4/24(1<=x且x<=3)的y值表

程序员:王宾

日期:2013/04/28

*/

#include

#include

int main()

{

float x, y;

printf("x value y valuen");

printf("------- --------n");

for (x = 1.0; x <= 3.0; x += 0.1)

{

y =1.0 + x + pow(x,2)/2.0 + pow(x,3)/6.0 + pow(x,4)/24.0;

printf("%5.1f %10.2fn",x,y);

}

return 0;

}

C

/*

文件名:

描述:产生方程式y=2e^8t(t>=4且t<=10)的y值表

程序员:王宾

日期:2013/04/28

*/

#include

#include

int main()

{

float t, y;

printf("t value y valuen");

printf("------- -----------------------------n");

for (t = 4.0; t <= 10.0; t += 0.2)

{

y =2.0*exp(8.0*t);

printf("%5.1f %41.2fn",t,y);

}

return 0;

}

10题

练习5.6

简答题

1题

/*

文件名:

描述:使用嵌套循环计算并显示每一个实验测试结果的平均值

程序员:王宾

日期:2013/04/28

*/

#include

#define SHIYAN 4

#define JIEGUO 6

int main()

{

int i, j;

float data, total, average;

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

{

total = 0;

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

{

printf("请输入实验结果: ");

scanf("%f",&data);

total = total + data;

}

average = total/JIEGUO;

printf("n第%d个实验结果的平均值是 %fnn",i,average);

}

return 0;

}

2题

/*

文件名:

描述:使用嵌套循环计算并显示每一个实验测试结果的平均值

程序员:王宾

日期:2013/04/29

*/

#include

int main()

{

int SHIYAN,JIEGUO;

int i, j;

float data, total, average;

printf("实验的个数: ");

scanf("%d",&SHIYAN);

printf("实验结果个数: ");

scanf("%d",&JIEGUO);

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

{

total = 0;

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

{

printf("请输入实验结果: ");

scanf("%f",&data);

total = total + data;

}

average = total/JIEGUO;

printf("n第%d个实验结果的平均值是 %fnn",i,average);

}

return 0;

}

3题

练习5.7

编程练习

1题

A

/*

文件名:

描述:接收有效的成绩分数并显示

程序员:王宾

日期:2013/05/03

*/

#include

int main()

{

}

B

/*

float fenShu;

do

{

printf("n请输入分数:");

scanf("%f",&fenShu);

}

while (fenShu < 0 || fenShu > 100);

return 0;

文件名:

描述:接收有效的成绩分数并显示且无效时提醒

程序员:王宾

日期:2013/05/03

*/

#include

int main()

{

float fenShu;

do

{

printf("n请输入分数:");

scanf("%f",&fenShu);

if (fenShu >= 0 && fenShu <= 100)

break;

else

{

printf("n输入的分数无效");

printf("n有效的分数应该是0到100之间的值,包括0和100nn");

}

}

while (1);

return 0;

}

C

/*

文件名:

描述:接收有效的成绩分数并显示且当输入999时程序退出

程序员:王宾

日期:2013/05/04

*/

#include

int main()

{

float fenShu;

do

{

printf("请输入分数:");

scanf("%f",&fenShu);

if (fenShu == 999)

break;

}

while (fenShu < 0 || fenShu > 100);

return 0;

}

D

/*

文件名:

描述:接收有效的成绩分数并显示且无效时提醒

程序员:王宾

日期:2013/05/03

*/

#include

int main()

{

int i = 0, k = 0;

float fenShu;

do

{

k++;

printf("%d ",k);

printf("请输入分数:");

scanf("%f",&fenShu);

if (fenShu >= 0 && fenShu <= 100)

{

i++;

if (i == 5)

break;

}

else

{

printf("n输入的分数无效");

printf("n有效的分数应该是0到100之间的值,包括0和100nn");

}

}

while (1);

return 0;

}

2题

/*

文件名:

描述:接收有效的成绩分数并显示且无效时提醒将有效的分数求和并当输入999时退出循环,最后计算并显示输入有效分数的平均值。

程序员:王宾

日期:2013/05/03

*/

#include

int main()

{

int i = 1;

float grade,average,sum = 0;

do

{

printf("请输入分数:");

scanf("%f",&grade);

if (grade == 999)

break;

if (grade < 0 || grade > 100)

{

printf("n输入的分数无效");

printf("n有效的分数应该是0到100之间的值,包括0和100nn");

}

else

{

sum = sum + grade;

i++;

}

}

while (1);

}

printf("平均值为:%fn",sum/(i - 1.0));

return 0;

3题

/*

文件名:

描述:将一个正整数的位数颠倒

程序员:王宾

日期:2013/05/05

*/

#include

#include

int main()

{

int num,num1;

int i = 0, num2 = 0;

printf("请输入一个正整数:");

scanf("%d",&num);

num1 = num;

do

{

if ((num % 10) == 0)

break;

{

num = num / 10;

i++;

}

}while (1); /*第一个循环用于确定输入数的位数*/

do

{

num2 = num2 + (num1 % 10) * pow(10 , i-1);

num1 = num1 / 10;

i--;

if (i == 0)

break;

}while (1); /*第二个循环用于数位颠倒(从最低位依次颠倒)*/

printf("孰谓颠倒后:%dn",num2);

return 0;

}

练习6.1

编程练习

1题

/*

文件名:

描述:编写一个名称为check()的函数,它有三个实参,将显示调用它时传递的数据值

程序员:王宾

日期:2013/05/08

*/

#include

int main()

{

void check(int, float, double); /*函数原型*/

int a;

float b;

double c;

printf("请输入数据:");

scanf("%d",&a);

printf("请输入数据:");

scanf("%f",&b);

printf("请输入数据:");

scanf("%lf",&c);

check(a, b, c); /*函数调用*/

return 0;

}

void check(int num1, float num2, double num3) /*函数首部行*/

{

printf("%d %f %fn",num1,num2,num3);

}

2题

/*

文件名:

描述:编写一个名称为findAbs()的函数,接收一个双精度数,计算并显示它的绝对值

程序员:王宾

日期:2013/05/09

*/

#include

int main()

{

}

void findAbs(double);/*函数原型*/

double num;

printf("请输入数据:");

scanf("%lf",&num);

findAbs(num); /*函数调用*/

return 0;

void findAbs(double x) /*函数首部行*/

{

}

printf("输入数据为:%fn",x);

3题

/*

文件名:

描述:编写一个名称为mult()的函数,接收两个浮点数作为实参,将它们相乘并显示结果

程序员:王宾

日期:2013/05/09

*/

#include

int main()

{

void mult(float, float);/*函数原型*/

float num1,num2;

printf("请输入数据:");

scanf("%f",&num1);

printf("请输入数据:");

scanf("%f",&num2);

mult(num1, num2); /*函数调用*/

return 0;

}

void mult(float x, float y) /*函数首部行*/

{

float jieGuo;

}

4题

jieGuo = x * y;

printf("两数相乘的结果为:%fn",jieGuo);

练习6.2

编程练习

1题

/*

文件名:

描述:编写一个名称为totamt()的函数,接收四个实参,确定并返回与传递给它实参的这些实参值对应的美元值

程序员:王宾

日期:2013/05/10

*/

#include

int main()

{

float totamt(int, int, int, int); /*函数原型*/

int num1,num2,num3,num4;

printf("输入二角五分的个数:");

scanf("%d",&num1);

printf("输入一角的个数:");

scanf("%d",&num2);

printf("输入五分的个数:");

scanf("%d",&num3);

printf("输入一分的个数:");

scanf("%d",&num4);

printf("对应的美元值为:%fn",totamt(num1, num2, num3, num4)); /*函数直接调用显示*/

return 0;

}

float totamt(int quarter,int dimes,int nickels, int pennies) /*函数首部行*/

{

return (quarter*0.25+dimes*0.1+nickels*0.05+pennies*0.01);

}

2题

/*

文件名:

描述:计算两坐标点之间的距离

程序员:王宾

日期:2013/05/11

*/

#include

#include

int main()

{

float distance(float, float, float, float);

float num1,num2,num3,num4;

printf("请输入第一个点的坐标:");

scanf("%f %f",&num1,&num2);

printf("请输入第二个点的坐标:");

scanf("%f %f",&num3,&num4);

printf("两点间的距离为:%fn",distance(num1, num2, num3, num4));

return 0;

}

float distance(float x1, float y1, float x2, float y2)

{

return (pow(pow(x2-x1,2)+pow(y2-y1,2),.5));

}

3题

/*

文件名:

描述:实现华氏温度与摄氏温度之间的互化

程序员:王宾

日期:2013/05/11

*/

#include

#define MAXCOUNT 4

int main()

{

float tempConvert(float, char); /*函数原型*/

int count;

char num;

float wenDu;

for (count = 1; count <= MAXCOUNT; count++)

{

printf("n输入温度值: ");

scanf("%f %c",&wenDu,&num);

wenDu = tempConvert(wenDu, num); /*函数调用*/

printf("对应的温度为:%5.2fn",wenDu); /*注意wenDu前不要加&!!!*/

}

return 0;

}

float tempConvert(float num1, char num2) /*函数首部行*/

{

switch (num2)

{

case 'f':

num1 = (5.0/9.0) * (num1 - 32);

break;

case 'c':

num1 = num1*(9.0/5.0) + 32;

break;

default:

}

}

printf("输入字符错误!!n");

return (num1);

4题

/*

文件名:

描述:把加仑转化为升

程序员:王宾

日期:2013/05/11

*/

#include

int main()

{

float gallonsToLiters(float); /*函数原型*/

float jiaLun;

printf("请输入加仑数:");

scanf("%f",&jiaLun);

}

printf("对应的升数为:%fn",gallonsToLiters(jiaLun));

return 0;

float gallonsToLiters(float num) /*函数首部行*/

{

return (num*3.7854);

}

5题

/*

文件名:

描述:把英里转化为千米

程序员:王宾

日期:2013/05/11

*/

#include

int main()

{

float milesToKm(int);

int yingLi =0;

int i;

for (i = 0; i < 10; i++, yingLi += 1)

{

printf("请输入英里数:");

scanf("%d",&yingLi);

printf("对应的千米值为:%fn",milesToKm(yingLi));

}

return 0;

}

float milesToKm(int num)

{

return (num*1.6093);

}

/*

文件名:

描述:把英里转化为千米

程序员:王宾

日期:2013/05/11

*/

#include

float milesToKm(float); /*注意此函数原型不能写在main(),里面*/

void conversions(float, int, float);

int main()

{

float yingLi,zengLiang;

int ciShu;

}

printf("请输入英里初始值:");

scanf("%f",&yingLi);

printf("请输入转换的次数:");

scanf("%d",&ciShu);

printf("请输入增量:");

scanf("%f",&zengLiang);

conversions(yingLi, ciShu, zengLiang); /*函数调用*/

return 0;

void conversions(float num1, int num2, float num3) /*函数首部行*/

{

int j = 0;

printf("YINGLI QIANMIn");

printf("------ ------n");

for (num1; j < num2; num1 += num3, j++) /*注意不要忘记j++*/

{

printf("%5.2f %7.2fn",num1,milesToKm(num1)); /*显示函数的返回值!*/

}

}

float milesToKm(float num) /*函数首部行*/

{

return (num*1.6093);

}

6题

/*

文件名:

描述:接收n和m的值并返回可能发生的数目(n个对象能够从一组m个对象中被选出的方法有多少)

程序员:王宾

日期:2013/05/13

*/

#include

int main()

{

float zuHe(float, float);

float n,m,b;

while (1)

{

}

printf("请输入n值:");

scanf("%f",&n);

printf("请输入m值:");

scanf("%f",&m);

if (m >= n)

break;

printf("n输入错误!!nn");

printf("可能发生的数目为:%dn",(int)zuHe(n, m));

return 0;

}

float zuHe(float x, float y)

{

float shuMu;

int num1 = 1;

int num2 = 1;

int num3 = 1;

int num4 = y - x ;

while (y > 0)

{

num1 = num1 * y; /*注意算法!!*/

y--;

}

while (x > 0)

{

num2 = num2 * x;

x--;

}

while (num4 > 0)

{

num3 = num3 * num4;

num4--;