C语言实验二全解.docx

上传人:b****7 文档编号:9266482 上传时间:2023-02-03 格式:DOCX 页数:13 大小:158.80KB
下载 相关 举报
C语言实验二全解.docx_第1页
第1页 / 共13页
C语言实验二全解.docx_第2页
第2页 / 共13页
C语言实验二全解.docx_第3页
第3页 / 共13页
C语言实验二全解.docx_第4页
第4页 / 共13页
C语言实验二全解.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C语言实验二全解.docx

《C语言实验二全解.docx》由会员分享,可在线阅读,更多相关《C语言实验二全解.docx(13页珍藏版)》请在冰豆网上搜索。

C语言实验二全解.docx

C语言实验二全解

实验二、选择结构

一、调试程序训练

注:

本训练中没有必须要完成的任务,但请大家务必掌握这种调试程序的方法,并在今后的程序调试中积极使用这种方法,因为它对于我们分析程序、尤其是那些貌似正确(无语法错误)、但执行结果错误的程序,非常有帮助!

Eg2-1:

调试训练——改正下列程序中的错误,输入参数a,b,c,求一元二次方程ax2+bx+c=0的根。

#include

#include

voidmain()

{

doublea,b,c,d;

printf("Entera,b,c:

");

scanf("%lf%lf%lf",&a,&b,&c);

d=b*b-4*a*c;//断点1

if(a==0)

{

if(b==0)

{

if(c==0)

printf("参数都为零,方程无意义!

\n");

else

printf("a和b为0,c不为0,方程不成立!

\n");

}

else

printf("x=%0.2f\n",-c/b);

}

else

if(d>=0)//断点2

{

printf("x1=%0.2f\n",(-b+sqrt(d))/(2*a));

printf("x2=%0.2f\n",(-b-sqrt(d))/(2*a));

}

else//断点3

{

printf("x1=%0.2f+%0.2fi\n",-b/(2*a),sqrt(d)/(2*a));

printf("x2=%0.2f-%0.2fi\n",-b/(2*a),sqrt(d)/(2*a));

}

}

说明:

断点的作用是使程序执行到断点处暂停,让用户可以观察当前变量或表达式的值。

设置断点时,先将光标定位到要设置断点的位置,然后单击编译微型工具的“

”按钮,断点即设置完毕。

如果要取消设置的断点,只需要将光标移到要取消的断点处,单击“

”按钮,该断点即取消。

(1)打开源程序,对程序进行编译和连接,没有出现错误信息。

(2)调试开始,设置三个断点,具体位置见源程序的注释。

(3)单击Go

按钮,输入a,b,c的值(2.09.03.0)后,程序执行到第一个断点处,在观察窗口输入变量名a,b,c,查看变量a,b,c的值。

此时,这些变量的值与输入的值一致。

(4)继续单击Go

按钮,程序运行到第二个断点处,观察到变量d的值为57,说明方程有实根。

(5)再次单击Go

按钮,程序运行到最后一个断点处,运行窗口显示x1=-0.36,x2=-4.14,符合题目要求。

(6)单击StopDebugging

按钮,程序调试结束

二、实验内容一(验证及程序分析)

Eg2-2:

从键盘输入两个0到127的整数,求两数的平方差并输出其值以及这两个整数的ASCII码对应的字符。

(1)算法分析:

标准ASCII码值范围是0到127,所以在此范围内的数可以以字符形式输出,实现方法是用格式输出函数并用格式符%c控制输出。

(2)源程序:

#include

voidmain()

{

intx,y,sub;

scanf("%d%d",x,y);/*变量前一定要加取地址符&,再次提醒!

*/

sub==x*x-y*y;/*注意读题意!

*/

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

}

(3)在VC++编辑环境下编辑源程序。

(4)编译并运行。

如有错误,则改正至无错。

(5)从键盘输入

10050↙,运行结果如何?

(请将运行结果抓图放入下面框内,并体会字符型数据的存储机制!

运行结果抓图至下方:

Eg2-3:

输入年份和月份,求该月有多少天。

(1)算法分析:

要考虑大月有31天,小月有30天,闰年的二月有29天以及非闰年的二月有28天这几种情况。

(2)源程序:

#include

voidmain()

{

intyear,month,days;

printf("请输入年月:

");

scanf("%d%d",&year,&month);

switch(month)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

/*处理"大"月*/

days=31;break;

case4:

case6:

case9:

case11:

/*处理"小"月*/

days=30;/*注意跳出处理!

!

*/

case2:

/*处理"平"月*/

if(year%4==0&&year%100!

=0||year%400==0)

days=29;/*如果是闰年,注意体会此判断表达式!

*/

elsedays=28;/*不是闰年*/

break;

default:

printf("Inputerror!

\n");/*月份输入错误*/

days=0;

}

if(days!

=0)printf("%d年%d月有%d天\n",year,month,days);

}

(3)在VC++编辑环境下编辑源程序。

并仔细阅读此程序,理解其编程思路!

(4)编译直到程序没有错误。

(5)从键盘输入

2008,9↙,运行结果如何?

为什么?

运行结果:

Inputerror!

 

原因:

原来的程序是年月,如果输入“,”会被看成字符

 

(6)再输入

20106↙,输出结果:

运行结果抓图至下方:

 

19002↙,输出结果:

运行结果抓图至下方:

 

20002↙,输出结果:

运行结果抓图至下方:

 

 

三、实验内容二(综合及设计类)

Eg2-4:

输入一个华氏温度,要求输出摄氏温度。

公式为c=5/9*(f-32)。

提示:

注意c=5/9*(f-32)与c=5.0/9.0*(f-32)的区别

请将程序及运行结果粘贴至下面:

程序:

#include

voidmain()

{

intc,f;

printf("请输入一个华氏温度:

");

scanf("%d",&f);

c=5.0/9.0*(f-32);

printf("%d\n",c);

}

 

运行结果:

 

Eg2-5:

用if语句编写一个C程序:

输入a,b,c三个值,输出其中最大者。

在下面写出源程序:

#include

voidmain()

{inta,b,c,max;

printf("请输入a,b,c=");

scanf("%d%d%d",&a,&b,&c);

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

max=a;

else

{if(c>=b)

max=c;

elsemax=b;

}

printf("%d\n",max);

}

 

 

Eg2-5:

编程:

编写程序,输入奖金数a,计算并输出税率、应缴税款和实得奖金数。

•奖金税率

•a<5000.00

•500≤a<10000.05

•1000≤a<20000.08

•2000≤a<50000.10

•5000≤a0.15

•提示:

a=奖金数rate=税率值tax=应缴税款profit=实得奖金数。

•计算公式:

tax=a*rate,profit=a–tax

•程序要求提示语句:

“请输入奖金数量:

•运行结果显示:

“请缴纳税金:

*****”

请用switch语句加以实现。

(1)请将源程序粘贴到下面。

#include

voidmain()

{unsignedinta,b;

floatrate,tax,profit;

printf("请输入奖金数量:

");

scanf("%d",&a);

b=a,b=b/500;

switch(b)

{

case0:

rate=0.00;

tax=a*rate,profit=a-a*rate;

printf("请缴纳税金:

");

printf("%0.1f\n",tax);

printf("rate=");

printf("%1.2f\n",rate);

printf("profit=");

printf("%0.1f\n",profit);

break;

case1:

rate=0.05;

tax=a*rate,profit=a-a*rate;

printf("请缴纳税金:

");

printf("%0.1f\n",tax);

printf("rate=");

printf("%1.2f\n",rate);

printf("profit=");

printf("%0.1f\n",profit);

break;

case2:

case3:

rate=0.08;

tax=a*rate,profit=a-a*rate;

printf("请缴纳税金:

");

printf("%0.1f\n",tax);

printf("rate=");

printf("%1.2f\n",rate);

printf("profit=");

printf("%0.1f\n",profit);

break;

case4:

case5:

case6:

case7:

case8:

case9:

rate=0.10;

tax=a*rate,profit=a-a*rate;

printf("请缴纳税金:

");

printf("%0.1f\n",tax);

printf("rate=");

printf("%0.2f\n",rate);

printf("profit=");

printf("%0.1f\n",profit);

break;

default:

rate=0.15;

tax=a*rate,profit=a-a*rate;

printf("请缴纳税金:

");

printf("%0.1f\n",tax);

printf("rate=");

printf("%0.2f\n",rate);

printf("profit=");

printf("%0.1f\n",profit);

}

}

(2)程序运行结果抓图至下方:

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

当前位置:首页 > 工作范文 > 其它

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

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