C程序设计逻辑结构程序设计实验报告.docx
《C程序设计逻辑结构程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《C程序设计逻辑结构程序设计实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
![C程序设计逻辑结构程序设计实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/31/7375818b-3c75-4cb0-bb16-f8dd5dee558e/7375818b-3c75-4cb0-bb16-f8dd5dee558e1.gif)
C程序设计逻辑结构程序设计实验报告
贵州大学
《C程序设计实验》
实验报告
实验名称:
逻辑结构程序设计
专业
电子信息科学与技术
班级
姓名
学号
教师
2010年
一、实验目的:
(1)了解C语言表示逻辑量的方法(以O代表“假”,以非O代表“真”)。
(2)学会正确使用逻辑运算符和逻辑表达式。
(3)熟练掌握if语句和switch语句。
(4)结合程序掌握一些简单的算法。
(5)学习调试程序。
二、实验环境:
Windows7、MicrosoftVisualStudio2008
三、实验内容:
有一函数:
用scanf函数输入x的值,求y值。
运行程序,输入x的值(分别为x<1、1~10、x≥10这3种情况),检查输出的y值是否正确。
程序如下:
#include
voidmain()
{
intx,y;
printf("请输入x的值:
");
scanf("%d",&x);
if(x<1)
y=x;
elseif(x>=1&&x<10)
y=2*x-1;
else
y=3*x-11;
printf("x=%d,y=%d\n",x,y);
}
输入
输出
输入
输出
分析:
声明变量intx,y;
用scanf函数从屏幕输入x的值
scanf("%d",&x);
当x<1时,执行
y=x;
党1<=x<10时,执行
y=2*x-1;
党x是其他值时执行
y=3*x-11;
用语句printf("x=%d,y=%d\n",x,y);输出计算后的x,y值。
2、给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
①事先编好程序,要求分别用if语句和switch语句来实现。
运行程序,并检查结果是否正确。
程序为
#include
voidmain()
{
intscore,temp,logic;
chargrade;
printf("请输入成绩:
");
scanf("%d",&score);
//logic=1;
//while(logic)
//{
//printf("请输入成绩:
");
//scanf("%d",&score);
//if(score>=0&&score<=100)
//logic=0;
//printf("\n");
//}
if(score==100)
temp=9;
else
temp=(score-score%10)/10;
switch(temp)
{
case9:
grade='A';break;
case8:
grade='B';break;
case7:
grade='C';break;
case6:
grade='D';break;
case5:
case4:
case3:
case2:
case1:
case0:
grade='E';
}
printf("score=%d,grade=%c\n",score,grade);
}
输入:
输出:
输入
输出
②再运行一次程序,输入分数为负值(如一70),这显然是输入时出错,不应给出等级,修改程序,使之能正确处理任何数据,当输入数据大于100和小于0时,通知用户“输人数据错”,程序结束。
为了解决以上问题,程序改为
#include
voidmain()
{
intscore,temp,logic;
chargrade;
//printf("请输入成绩:
");
//scanf("%d",&score);
logic=1;
while(logic)
{
printf("请输入成绩:
");
scanf("%d",&score);
if(score>=0&&score<=100)
logic=0;
printf("\n");
}
if(score==100)
temp=9;
else
temp=(score-score%10)/10;
switch(temp)
{
case9:
grade='A';break;
case8:
grade='B';break;
case7:
grade='C';break;
case6:
grade='D';break;
case5:
case4:
case3:
case2:
case1:
case0:
grade='E';
}
printf("score=%d,grade=%c\n",score,grade);
}
运行情况
当输入负数时
分析:
这几条语句
logic=1;
while(logic)
{
printf("请输入成绩:
");
scanf("%d",&score);
if(score>=0&&score<=100),
logic=0;
printf("\n");
}
是先把logic的值赋1,用while循环内的语句来判断输入的值,并控制程序执行,只有当输入的数是0到100之间时,才跳出while循环,接着执行下面的语句。
语句temp=(score-score%10)/10;是将分数减去其余数,得到10的倍数,再除以10,得0-9的整数。
3、给一个不多于5位的正整数,要求:
①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,例如原数为321,应输出123。
应准备以下测试数据:
·要处理的数为1位正整数;
·要处理的数为2位正整数;
·要处理的数为3位正整数;
·要处理的数为4位正整数;
·要处理的数为5位正整数。
除此之外,程序还应当对不合法的输入做必要的处理,例如:
·输入负数;
·输人的数超过5位(如123456)。
根据题目要求,程序为
#include
voidmain()
{
longintnum;
intindiv,ten,hundred,thousand,ten_thousand,place;
scanf("%ld",&num);
if(num>99999)
printf("输入的整数超过位\n");
else
{
if(num>9999)
place=5;
elseif(num>999)
place=4;
elseif(num>99)
place=3;
elseif(num>9)
place=2;
else
place=1;
printf("place=%d\n",place);
ten_thousand=num/10000;
thousand=(num-ten_thousand*10000)/1000;
hundred=(num-ten_thousand*10000-thousand*1000)/100;
ten=(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=num-ten_thousand*10000-thousand*1000-hundred*100-ten*10;
switch(place)
{
case5:
printf("%d,%d,%d,%d,%d\n",ten_thousand,thousand,hundred,ten,indiv);
printf("%d,%d,%d,%d,%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case4:
printf("%d,%d,%d,%d\n",thousand,hundred,ten,indiv);
printf("%d,%d,%d,%d\n",indiv,ten,hundred,thousand);
break;
case3:
printf("%d,%d,%d\n",hundred,ten,indiv);
printf("%d,%d,%d\n",indiv,ten,hundred);
break;
case2:
printf("%d,%d\n",ten,indiv);
printf("%d,%d\n",indiv,ten);
break;
case1:
printf("%d\n",indiv);
printf("%d\n",indiv);
}
}
}
运行情况:
处理的数为1位正整数
处理的数为2位正整数
处理的数为3位正整数
处理的数为4位正整数
处理的数为5位正整数
处理的数超过5位正整数
4、输入4个整数,要求按由小到大顺序输出。
在得到正确结果后。
由题意,得
#include
voidmain()
{
intt,a,b,c,d;
printf("请输入四个数。
\n");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a>b)
{
t=a;a=b;b=t;
}
if(a>c)
{
t=a;a=c;c=t;
}
if(a>d)
{
t=a;a=d;d=t;
}
if(b>c)
{
t=b;b=c;c=t;
}
if(b>d)
{
t=b;b=d;d=t;
}
if(c>d)
{
t=c;c=d;d=t;
}
printf("计算后的结果为:
%d%d%d%d\n",a,b,c,d);
运行情况:
输入
输出:
修改程序使之按由大到小顺序输出。
#include
voidmain()
{
intt,a,b,c,d;
printf("请输入四个数。
\n");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a
{
t=a;a=b;b=t;
}
if(a{
t=a;a=c;c=t;
}
if(a{
t=a;a=d;d=t;
}
if(b{
t=b;b=c;c=t;
}
if(b{
t=b;b=d;d=t;
}
if(c{
t=c;c=d;d=t;
}
printf("计算后的结果为:
%d%d%d%d\n",a,b,c,d);
}
运行情况:
分析:
程序的开始先从屏幕输入四个数:
scanf("%d,%d,%d,%d",&a,&b,&c,&d);输入时数与数之间用逗号隔开。
接下来用用依次比较的方法排出其大小顺序。
if(a{
t=a;a=c;c=t;
}
以上语句是将a、c进行比较,并根据条件判断是否交换两数而实现排序。
四、实验总结。
1、逻辑运算--逻辑运算用来判断一件事情是“对”的还是“错”的,或者说...其中“1”表示该逻辑运算的结果是“成立”的,如果一个逻辑运算式的结果为“0”,那么这个逻辑运算式表达的内容“不成立“。
...当该逻辑量的逻辑值为1时,if表达式为真,这时可以执行if后的的程序语句。
...C语言中进行逻辑运算时要注意的问题。
2、三种逻辑运算符
!
(逻辑非)运算规则:
!
1=0,!
0=1。
优先级:
高。
&&(逻辑与)运算规则:
1&&1=1,1&&0=0,0&&1=0,0&&0=0。
优先级:
中
||(逻辑或)运算规则:
0||1=1,1||0=1,0||0=0,1||1=1。
优先级:
低
其中,'“!
”双目运算符,其余的都是单目运算符。
3、用逻辑运算符将若干不同类型的表达式连接而成的式子称为逻辑表达式。
与关系表达式类似,逻辑表达式的值也以0和1表示的。
表达式成立结果为1,不成立结果为0。
2010年月日