c语言选择结构程序设计实验报告4范文.docx
《c语言选择结构程序设计实验报告4范文.docx》由会员分享,可在线阅读,更多相关《c语言选择结构程序设计实验报告4范文.docx(11页珍藏版)》请在冰豆网上搜索。
c语言选择结构程序设计实验报告4范文
实验报告
实验题目:
选择结构程序设计
实验目的:
(1)了解C语言表示逻辑量的方法(以0代表“假”以非0代表“真”)。
(2)学会正确使用逻辑运算算符和逻辑表达式。
(3)熟练掌握if语句的使用(包括if语句的嵌套)。
(4)熟练掌握多分支选择语句——switch语句。
(5)结合程序掌握一些简单的算法。
(6)进一步学习调试程序的方法。
实验内容:
本实验要求事先编好解决下面问题的程序,然后上级输入程序并调试运行程序。
(1)有一函数:
输入
的值,输出
相应的值。
用scanf函数输入
的值,求
值(第四章第六题)
运行程序,输入
的值(分别为x<1、
、
这三种情况),检查输出y值是否正确。
答:
1)调试通过的程序清单如下:
#include
voidmain()
{
intx,y;
printf("请输入X:
");
scanf("%d",&x);
if(x<1)
y=x;
elseif(x<10)
y=2*x-1;
elsey=3*x-11;
printf("y=%d\n",y);
}
3)调试过程出现的问题说明及处理方法:
编译提示信息如下:
Compiling...
c4_4.c
F:
\_选择结构程序设计\第四次实验\c4_4.c(10):
errorC2059:
syntaxerror:
'badsuffixonnumber'
F:
\_选择结构程序设计\第四次实验\c4_4.c(10):
errorC2146:
syntaxerror:
missing';'beforeidentifier'x'
F:
\_选择结构程序设计\第四次实验\c4_4.c(10):
warningC4552:
'-':
operatorhasnoeffect;expectedoperatorwithside-effect
F:
\_选择结构程序设计\第四次实验\c4_4.c(11):
errorC2181:
illegalelsewithoutmatchingif
F:
\_选择结构程序设计\第四次实验\c4_4.c(11):
errorC2059:
syntaxerror:
'badsuffixonnumber'
F:
\_选择结构程序设计\第四次实验\c4_4.c(11):
errorC2146:
syntaxerror:
missing';'beforeidentifier'x'
F:
\_选择结构程序设计\第四次实验\c4_4.c(11):
warningC4552:
'-':
operatorhasnoeffect;expectedoperatorwithside-effect
执行cl.exe时出错.
c4_4.obj-1error(s),0warning(s)
原因分析:
由于习惯在数学上习惯于用2x表示2*x,导致在这里忽略了“*”,以致程序出现严重错误。
(2)从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。
要求在输入数据后先对其进行检查是否小于1000的正数。
若不是,则要求重新输入。
1)调试通过的程序清单如下:
#include
#include
#defineM1000
intmain()
{
inti,k;
printf("请输入一个小于%d的整数i:
",M);
scanf("%d",&i);
if(i>1000)
{printf("输入的数据有误,请重新输入:
",M);
scanf("%d",&i);
}
k=sqrt(i);
printf("%d的平方根的整数部分是%d\n",i,k);
return0;
}
2)调试通过的运行结果:
3)调试过程出现的问题说明及处理方法:
Compiling...
c4_4.c
F:
\_选择结构程序设计\第四次实验\c4_4.c(10):
errorC2018:
unknowncharacter'0xa3'
F:
\_选择结构程序设计\第四次实验\c4_4.c(10):
errorC2018:
unknowncharacter'0xbb'
F:
\_选择结构程序设计\第四次实验\c4_4.c(11):
errorC2146:
syntaxerror:
missing';'beforeidentifier'scanf'
F:
\_选择结构程序设计\第四次实验\c4_4.c(13):
warningC4244:
'=':
conversionfrom'double'to'int',possiblelossofdata
执行cl.exe时出错.
c4_4.exe-1error(s),0warning(s)
答:
因为把第十行的“;”在中文模式输入,变成了“;”导致编译错误。
(3)给出一个百分制成绩,要求输出成绩等级A,B,C,D,E.90分以上为A,81~89分为B,70~79分为C,60分~69分为D,60分以下为E。
1事先编好程序,要求分别用if语句和switch语句来实现。
运行程序,并检查结果是否正确。
1)调试通过的程序清单如下:
#include
voidmain()
{
intg,s;
charch;
printf("\n输入学生的分数:
");
scanf("%d",&g);
s=g/10;
if(s<0||s>10)
printf("\n输入数据错误!
\n\n");
else
{
switch(s)
{
case10:
case9:
ch='A';break;
case8:
ch='B';break;
case7:
ch='C';break;
case6:
ch='D';break;
default:
ch='E';
}
printf("\n学生的成绩等级是:
%c\n\n",ch);
}
}
2)调试通过的运行结果:
3)调试过程出现的问题说明及处理方法:
(1)编译提示信息如下:
Compiling...
c4_4.c
c4_4.obj-0error(s),0warning(s)
(2)连接提示信息如下:
Linking...
c4_4.exe-0error(s),0warning(s)
原因分析:
由于忽略了在程序中加入换行符,导致输出成绩等级和“Pressanyeytocontine”连在一起。
2再运行一次程序,输入分数为负值,这显然是输入时出错,不应给出等级,修改程序,使之能正确处理任何数据,当输入数据大于100和小于0时,通知用户“输入数据错误”。
程序结束。
答:
在编写程序的时候已经考虑到了该情况,第一次编写时已经进行了优化,能够自动处理该情况的出现。
以下是运行结果:
(4)输入4个整数,要求按由小到大顺序输出,在得到正确结果后,修改程序使之按由大到小的顺序输出。
1)调试通过的程序清单如下:
#include
intmain()
{
inta,b,c,d,t;
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("四个整数经从小到大的顺序排列后的结果如下\n");
printf("%d,%d,%d,%d\n",a,b,c,d);
return0;
}
2)程序运行的结果:
从大到小排列的程序是:
1)通过排列的程序清单如下:
#include
intmain()
{
inta,b,c,d,t;
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("四个整数经从大到小的顺序排列后的结果如下\n");
printf("%d,%d,%d,%d\n",a,b,c,d);
return0;
}
3)运行的结果:
实验心得:
通过此次实验本人更加熟练的掌握了程序C语言逻辑运算符和逻辑表达式的应用,也深深了解到了,C语言的强大,同时是我对这门语言的兴趣更加深厚。
做完本次实验,我纠正了以往的一个观点,学习一门语言不要以为看书看明白了就以为对这方面的知识掌握了,学习语言更为重要的是要会使用,不能仅仅是以为明白就可以了事,合上书本,能够应用这方面的知识写出一个程序来,才能算对它的初步掌握。