当前位置:文档之家› c语言 实验报告 范例

c语言 实验报告 范例

实验报告实验题目:选择结构程序设计实验目的:(1)了解C语言表示逻辑量的方法(以0代表“假”以非0代表“真”)。

(2)学会正确使用逻辑运算算符和逻辑表达式。

(3)熟练掌握if语句的使用(包括if语句的嵌套)。

(4)熟练掌握多分支选择语句——switch语句。

(5)结合程序掌握一些简单的算法。

(6)进一步学习调试程序的方法。

实验内容:本实验要求事先编好解决下面问题的程序,然后上级输入程序并调试运行程序。

(1)有一函数:⎪⎩⎪⎨⎧≥-<≤-<=10113)101(12)1(x x x x x x y 输入x 的值,输出y 相应的值。

用scanf 函数输入x 的值,求y值(第四章第六题) 运行程序,输入x 的值(分别为x<1、101<≤x 、10≥x 这三种情况),检查输出y 值是否正确。

答:1)调试通过的程序清单如下:#include<stdio.h>void main() {int x,y;printf("请输入X:");scanf("%d",&x);if(x<1)y=x;else if(x<10)y=2*x-1;else y=3*x-11;printf("y=%d\n",y);}3)调试过程出现的问题说明及处理方法:编译提示信息如下:Compiling...c4_4.cF:\20113009711_选择结构程序设计\第四次实验\c4_4.c(10) : error C2059: syntax error : 'bad suffix on number'F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(10) : error C2146: syntax error : missing ';' before identifier 'x'F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(10) : warning C4552: '-' : operator has no effect; expected operator with side-effectF:\20113009711_选择结构程序设计\第四次实验\c4_4.c(11) : error C2181: illegal else without matching ifF:\20113009711_选择结构程序设计\第四次实验\c4_4.c(11) : error C2059: syntax error : 'bad suffix on number'F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(11) : error C2146: syntax error : missing ';' before identifier 'x'F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(11) :warning C4552: '-' : operator has no effect; expected operator with side-effect执行cl.exe 时出错.c4_4.obj - 1 error(s), 0 warning(s)原因分析:由于习惯在数学上习惯于用2x表示2*x,导致在这里忽略了“*”,以致程序出现严重错误。

(2)从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。

要求在输入数据后先对其进行检查是否小于1000的正数。

若不是,则要求重新输入。

1)调试通过的程序清单如下:#include<stdio.h>#include<math.h>#define M 1000int main(){int i,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);return 0;}2)调试通过的运行结果:3)调试过程出现的问题说明及处理方法:Compiling...c4_4.cF:\20113009711_选择结构程序设计\第四次实验\c4_4.c(10) :error C2018: unknown character '0xa3'F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(10) : error C2018: unknown character '0xbb'F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(11) : error C2146: syntax error : missing ';' before identifier 'scanf'F:\20113009711_选择结构程序设计\第四次实验\c4_4.c(13) : warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data执行cl.exe 时出错.c4_4.exe - 1 error(s), 0 warning(s)答:因为把第十行的“;”在中文模式输入,变成了“;”导致编译错误。

(3)给出一个百分制成绩,要求输出成绩等级A,B,C,D,E.90分以上为A,81~89分为B,70~79分为C,60分~69分为D,60分以下为E。

①事先编好程序,要求分别用if语句和switch语句来实现。

运行程序,并检查结果是否正确。

1)调试通过的程序清单如下:#include<stdio.h>void main(){int g,s;char ch;printf("\n输入学生的分数:");scanf("%d",&g);s=g/10;if(s<0||s>10)printf("\n输入数据错误!\n\n");else{switch(s){case 10:case 9:ch='A';break;case 8:ch='B';break;case 7:ch='C';break;case 6:ch='D';break;default:ch='E';}printf("\n学生的成绩等级是:%c\n\n",ch);}}2)调试通过的运行结果:3)调试过程出现的问题说明及处理方法:(1)编译提示信息如下:Compiling...c4_4.cc4_4.obj - 0 error(s), 0 warning(s)(2)连接提示信息如下:Linking...c4_4.exe - 0 error(s), 0 warning(s)原因分析:由于忽略了在程序中加入换行符,导致输出成绩等级和“Press any ey to contine”连在一起。

②再运行一次程序,输入分数为负值,这显然是输入时出错,不应给出等级,修改程序,使之能正确处理任何数据,当输入数据大于100和小于0时,通知用户“输入数据错误”。

程序结束。

答:在编写程序的时候已经考虑到了该情况,第一次编写时已经进行了优化,能够自动处理该情况的出现。

以下是运行结果:(4)输入4个整数,要求按由小到大顺序输出,在得到正确结果后,修改程序使之按由大到小的顺序输出。

1)调试通过的程序清单如下:#include<stdio.h>int main(){int a,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);return 0;}2)程序运行的结果:从大到小排列的程序是:1)通过排列的程序清单如下:#include<stdio.h>int main(){int a,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);return 0;}3)运行的结果:实验心得:通过此次实验本人更加熟练的掌握了程序C 语言逻辑运算符和逻辑表达式的应用,也深深了解到了,C语言的强大,同时是我对这门语言的兴趣更加深厚。

做完本次实验,我纠正了以往的一个观点,学习一门语言不要以为看书看明白了就以为对这方面的知识掌握了,学习语言更为重要的是要会使用,不能仅仅是以为明白就可以了事,合上书本,能够应用这方面的知识写出一个程序来,才能算对它的初步掌握。

相关主题