《C语言程序设计》实验报告(实验1-12)

2018-10-23 10:14

《C语言程序设计》

实验报告

2013~2014学年第二学期

班 级 姓 名 学 号 指导教师

实验一

实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的:

1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容:

教材《C语言程序设计教程》第1章。 三、实验内容:

1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include int main( ) {

printf("This is a C program.\\n"); return 0; }

2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序

无语法错误,然后运行程序,并观察分析运行结果。 #include int main( ) {

int a,b,sum a=3; b=4; sun=a+b;

print(“%d+%d=%d\\n”,a,b,sum); return 0; }

四、实验结果:

1. 运行结果(或截图):

This is a C program.

Press any key to continue

- 1 -

2. (1) 改正后的源程序:

#include int main( ) {

int a,b,sum; a=3; b=4; sum=a+b;

printf(\ return 0; }

(2) 运行结果(或截图): 3+4=7

五、思考题:

1. 一个C程序上机的步骤有哪些?

答:上级输入与编辑源程序 — 对原程序进行编译 – 与库函数链接 – 运行可执行的目标程序。

2. 组成C程序的基本单位是函数,一个函数包括哪几个部分?

答:一个函数包括两部分:分别为函数头或函数首部 和 函数体。

成绩 指导教师签名

实验二

实验项目名称:数据类型、运算符和表达式 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的:

1.掌握整型、实型与字符型这三种基本类型的概念; 2.掌握常量及变量的使用方法;

3. 掌握基本算术运算符及其表达式的使用方法;

4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。 二、预习内容:

- 2 -

教材《C语言程序设计教程》第2章。 三、实验内容:

1. 在Visual C++ 6.0环境下输入下面的程序,编译、连接、调试该程序。

main( ) {

char m,n; m=280; n=320;

printf(“%d\\t%d\\n”,m,n); printf(“%c\\t%c\\n”,m,n); }

2. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析运行结果。 #include int main( ) {

int a=3,b=4,c=8; float d,e; d=a+b/c;

e=a+(float)b/c; //请将此处d改为b printf("d=%f,e=%f\\n",d,e); }

3. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析运行结果。 #include main( ) {

int a,b,c,d,i,j,m,n; a=b=c=d=3; i=a++; j=++b; m=c--; n=--d;

printf(\} 4. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析运行结果。 #include main( ) {

int a=4; a+=a-=a*a+a;

printf(\ }

- 3 -

四、实验结果:

1. 运行结果(或截图):

24 64 @

2. 运行结果(或截图):

d=3.000000,e=3.500000

d=3.000000,e=3.375000

3. 运行结果(或截图):

a=4,b=4,c=2,d=2,i=3,j=4,m=3,n=2

4. 运行结果(或截图):

a=-32

五、思考题:

1. 给变量命名应该注意哪些问题?

答:每个变量必须进行数据类型说明;

2. 程序2的运行结果中,d和e的值为什么不同?

答:d的赋值语句中,除法是两个整型数字的运算,其结果没有小数位;而e中对b进行了强

制转换为实型,所以其除法运算结果有小数位。

- 4 -

3. 程序3的运行结果中,i和j的值为什么不同?m和n的值为什么不同?//改为程序3

答:i(m)是通过后自增(后自减)实现的,而后自增(后自减)是先参与其他运算,后对变

量递增(递减);

而j(n)是通过前自增(前自减)实现的,其是先对变量递增(递减),后再参与其他运算。

4. 请分析表达式a+=a-=a*a+a的运算过程(写出运算步骤)。

答:先将a -(a*a+a)赋值给a,再将a+a 赋值给a 。

成绩 指导教师签名

- 5 -

实验三

实验项目名称:简单的输入输出及顺序程序设计 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的:

1. 掌握整型、实型与字符型数据的正确输入方法(scanf函数的使用); 2. 掌握整型、实型与字符型数据的正确输出方法(printf函数的使用); 3. 掌握编写顺序程序的方法。 二、预习内容:

教材《C语言程序设计教程》第3章。 三、实验内容:

1. 编写C程序,按下列公式计算并输出S的值,其中a和b的值有键盘输入。

s?main() { int a,b; float s;

scanf(“%d,%d”,&a,&b); s=2.0*a*b/(a+b) /(a+b); printf(“s=%f\\n”,s); }

2ab 2(a?b)①输入并调试。

②将scanf函数改为scanf(“%d%d”,&a,&b);再编译,运行。 ③观察结果。

2. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析程序运行过程及结果。 #include int main( ) {

int a,b,sum;

printf(\请输入第一个整数:\ scanf(\

printf(\请输入第二个整数:\ scanf(\ sum=a+b;

printf(\ }

3. 设圆半径r=1.5,编写程序求圆周长、圆面积和圆球的体积。要求用scanf语句输入半径,输出时取小数点后两位。

- 6 -

四、实验结果: 1. 输入数据 4,5 输入修改后的数据 运行结果 4 5 s=0.493827 字符控制串中没有除说明符以外的其他字符,所以输入时可以通过空格分隔 4↙5↙ s=0.493827 字符控制串中没有除说明符以外的其他字符,所以输入时可以通过回车分隔 运行结果 s=0.493827 原因 字符控制串中有“,”,所以输入时必须有原因 “,”

2. 运行结果(或截图):

请输入第一个整数:1 请输入第二个整数:2 1+2=3

3. (1) 程序中用到的变量(类型)

单精度浮点数

(2) 算法(用伪代码描述或自然语言)

c = 2 * pi * r; s = pi * r * r; v = 4 * (pi * r * r * r)/3;

(3) 源程序清单

#include int main( ) # define pi 3.14 { float r, c, s, v;

- 7 -

}

printf(\请输入圆的半径:\scanf(\c = 2 * pi * r; s = pi * r * r;

v = 4 * (pi * r * r * r)/3.0;

printf(\

(4) 运行结果(或截图)

请输入圆的半径:1.5

c = 9.42,s = 7.07,v = 14.13

五、思考题:

scanf(“%d,%d”,&a,&b)与scanf(“%d%d”,&a,&b)输入数据的方式有什么不同?从两种输入方式的对比中你得到什么启发?

答:第一种输入方式用户必须以“,”分隔,而第二者可用空格、回车分隔,用户在不知情的情况

下,很难知道用“,”分隔输入的数据。所以编程人员可以在scanf()语句前用printf()语句进行注释,让用户知道用什么来分隔输入的数据。

成绩 指导教师签名

- 8 -

实验四

实验项目名称:选择结构程序设计 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的:

1. 正确使用关系运算符和关系表达式; 2. 正确使用逻辑运算符和逻辑表达式; 3. 熟练使用if语句实现选择结构程序;

2. 熟练使用switch语句实现多分支选择结构程序。 二、预习内容:

教材《C语言程序设计教程》第4章。 三、实验内容:

1. 下面程序的功能是:输入学生成绩,若成绩在90分以上,输出“Excellent!”;若成绩在60—89分之间,输出“Pass!”;若成绩在60分以下,输出“Fail!”。请将程序补充完整,并上机运行程序。 #include int main( ) {

int score;

printf("请输入分数(0--100):"); scanf("%d", &score);

if(score>100 || score<0) printf("Input Error!\\n");

else if( score>=90 ) printf("Excellent!\\n"); else if( score>=60 ) printf("Pass!\\n"); else printf("Fail!\\n"); }

运行该程序4次,分别输入4个不同的数据,对应4种不同的情况,记录运行结果: 111 输入数据 20 61 99

Input 运行结果 Fail! Pass! Excellent! Error!

2. 有如下分段函数:

x?1?x?y??2x?11?x?10

?3x?11x?10?请输入x的值,求解对应的y值。

3. 给出一个百分制成绩,要求输出成绩等级’A’、 ’B’、 ’C’、 ’D’、 ’E’。90-100

- 9 -

为’A’,80-89为’B’,70-79为’C’,60-69为’D’,60分以下为’E’。用switch语句写。

四、程序中所用的变量及其类型:

2.

变量:x、y;

数据类型:都为单精度浮点数

3.

变量:score 数据类型:整型

五、算法(用伪代码或自然语言描述):

2. if ( x>=10 )

printf(\

else if ( x>=1 )

printf(\

else

printf(\

3.

switch (score/10) { case 10: printf(\ break; case 9: printf(\ break; case 8: printf(\ break;

case 7:

- 10 -

printf(\ break; case 6: printf(\ break; default:

printf(\

}

六、源程序清单: 2.

# include int main (void) { float x, y;

printf(\请输入一个x:\ scanf(\ if ( x>=10 )

printf(\

else if ( x>=1 )

printf(\

else

printf(\

return 0;

} 3.

# include int main (void) {

int score;

- 11 -

printf(\请输入一个成绩:\ scanf(\

switch (score/10) { case 10: printf(\ break; case 9: printf(\ break; case 8: printf(\ break; case 7: printf(\ break; case 6: printf(\ break; default: printf(\

}

return 0;

}

- 12 -

七、实验结果:

2. 运行结果(执行程序3次,分别输入不同的3个数,对应3种不同的情况):

输入数据 2 11 -5 运行结果

3.000000 22.000000 -5.000000 3. 运行结果(执行程序5次,分别输入5组不同的数据,对应5种不同的情况):

输入数据 运行结果 99 A 80 B

成绩 指导教师签名

70 C 62 D 59 E

- 13 -

实验五

实验项目名称:简单循环程序设计 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的:

1. 掌握循环程序的基本结构;

2. 熟练掌握while、do—while及for语句,并会用来编写循环结构程序。 二、预习内容:

教材《C语言程序设计教程》第4章。 三、实验内容:

1.编写一个程序,计算并输出数列:1,3,5,?,2n-1,?的前几项之和,其中n由键盘输入。要求分别用3种循环语句实现。 方法1:用for语句实现。 main()

{ long s,n,k,i;

scanf(“ %ld “,&n); k=2*n-1; s=0 ;

for(i=1;i<=k; i+=2 ) s+=i; printf(“1+3+?+%ld=%ld\\n”,k,s); }

方法2:用while语句实现。 main()

{long s=0 ,n,i=1; scanf(“%ld”,&n);

while( i<=(2*n-1) ) {s+=i;

i+=2 ;}

printf(“1+3+?+%ld=%ld\\n”,2*n-1,s); }

方法3:用do-while语句实现。 main()

{long s=0,n,i=1; scanf(“%ld”,&n); do

{s+=i; i=i+2;}

while( i<=(2*n)-1 );

printf(“1+3+?+%ld=%ld\\n”,2*n-1,s); }

填上所缺的空,运行程序,写出结果。

2.输入两个正整数,求其中最大公约数和最小公倍数。 四、程序中所用的变量(类型及其初值):

- 14 -

2.

变量i, k, j, m, least, greatest均为整型变量,没有对其赋予初值。

五、算法(用伪代码描述):

2.

for (j=i; j<=i||j>=1; j--)//此处for循环为求最大公约数 {

if( i%j == 0) greatest = j; else ;

if( k % greatest == 0) {

printf(\和%d的最大公约数为%d!\\n\ break; } else ; }

least = i * k / greatest;

printf(\和%d最小公倍数为%d!\\n\

六、源程序清单:

2.

# include int main (void) {

int i, k, j, m, least, greatest;// i, k存储的是两个正整数, least为最小公倍数,greatest

为最大公约数

printf(\请输入两个正整数(中间以空格分隔):\ scanf(\

for (j=i; j<=i||j>=1; j--)//此处for循环为求最大公约数 {

if( i%j == 0) greatest = j; else ;

- 15 -

if( k % greatest == 0) {

printf(\和%d的最大公约数为%d!\\n\ break; } else ; }

least = i * k / greatest;

printf(\和%d最小公倍数为%d!\\n\

return 0; }

七、实验结果:

1. 在下表中写出输入的数据及其运行结果:

输入数据 运行结果 方法1 12 1+3+?+23=144 方法2 12 1+3+?+23=144 方法3 12 1+3+?+23=144

2. 运行结果(或截图):

请输入两个正整数(中间以空格分隔):36 12

36和12的最大公约数为12! 36和12最小公倍数为36!

成绩 指导教师签名

- 16 -

实验六

实验项目名称:多层循环程序设计及break、continue语句在循环程序中的应用 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的:

1. 掌握多层循环程序的执行过程及设计方法;

2. 掌握break及continue语句在循环程序中的使用方法。 二、预习内容:

教材《C语言程序设计教程》第4章。

三、实验内容:

1. 百马百担问题。有100匹马,驮100担。大马驮3担,中马驮2担,两个小马驮1担。问大、中、小马各多少?(考虑适当减少循环次数)

2. 编程输出100以内的所有素数。

3. 编程输出所有水仙花数(所谓“水仙花数”,是指一个3位数,其各位数字的立方和等于该数本

333

身,例如,153=1+5+3,所以153是一个水仙花数)。

四、程序中所用的变量(类型及其初值):

1. 变量x, y, z均为整型变量,均未赋予初值

2. 整型变量x,y,均未赋予初值

3.整型变量i,m,n,

n初值为0,m、n未赋予初值

五、算法(用伪代码或自然语言描述): 1. for ( x=0; x<=20; x++)

{ }

for ( y=0; y<=33; y++) {

z = 100 - x - y;

if( z%2==0 && 3*x + 2*y + z/2 ==100) }

printf(\大马有%d匹,中马有%d匹,小马有%d匹!\\n\

2.

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

- 17 -

{ for ( j = 2; j <= i; ++j) {

if ( i%j == 0 ) { if ( i == j)

printf (\

else

break;

} }

}

3.

for(i=100;i<=999;++i) {

int m, n = 0;

m = i % 10; n += m * m * m;

m = (i/10) % 10; n += m * m * m;

m = (i/100) % 10; n += m * m * m;

if ( n == i)

printf(\ else ; }

六、源程序清单: 1.

# include int main (void)

- 18 -

{ } 2.

# include int main (void) {

int i, j;

for ( i = 1; i <= 100; i += 1) {

for ( j = 2; j <= i; ++j) {

if ( i%j == 0 ) { } }

- 19 -

int x, y, z;

for ( x=0; x<=20; x++) { } return 0;

for ( y=0; y<=33; y++) {

z = 100 - x - y;

if( z%2==0 && 3*x + 2*y + z/2 ==100) }

printf(\大马有%d匹,中马有%d匹,小马有%d匹!\\n\

if ( i == j)

printf (\

else

break;


《C语言程序设计》实验报告(实验1-12).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:spring配置两个数据源

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: