文档库 最新最全的文档下载
当前位置:文档库 › C语言实验五

C语言实验五

C语言实验五
C语言实验五

实验5 模块化程序设计

一、实验目的和要求

1.掌握C语言函数定义及调用的规则。

2.理解参数传递的过程。

3.理解函数的递归调用。

4.掌握库函数的调用方法。

5.理解变量的作用域和生存期。

6.了解编译预处理命令的使用。

二、实验内容和步骤

1.阅读并分析下面的程序,并按要求改写程序。

#include

main()

{

int max,a,b;

printf("Please enter 2 numbers:(a,b)");

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

if(a>b)

max=a;

else

max=b;

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

}

(1)该程序的主要功能是什么?

(2)自定义函数fun1()实现该程序的功能,要求在主函数内实现数据的输入和输出,部分代码已经给出,请补充完整。

#include

main()

{

int max,a,b;

/*函数的声明语句*/

printf("Please enter 2 numbers:(a,b)");

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

/*函数的调用语句*/

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

}

int fun1( )/*函数头*/

{

int max;

if(x>y)

max=x;

else

max=y;

/*函数的返回语句*/

}

(3)调试运行该程序,并记录输出结果。

2.上机调试下面的程序。

#include

main()

{

float x,y;

scanf("%d,%d",&x,&y);

f(x,y);

}

void fun2(float a,float b)

{

float c;

if(b>0)

c=a+b;

else

c=a-b;

printf("%f",c);

}

(1)记录系统给出的出错信息,并指出出错原因。

(2)如果将该函数定义为float fun2(float a,float b),该程序应该如何改变?

(3)调试运行该程序,并记录输出结果。

3.上机调试下面程序,改正其不合理之处。

main()

{

int x,n,s;

s=power(x,n);

}

power(y)

{

int i,p=1;

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

p=p*y;

}

4.编写一个函数,计算x y,用主函数进行调用。

(1)在主函数里,实现数据的输入和输出;

(2)函数的头部的定义,注意函数的形参个数和类型,函数的返回类型;

(3)函数体的定义,注意返回语句的用法。

5.编写程序,用递归的方法求1+2+3+…+n,可设递归函数为fun5()。

(1)递归结束条件为n=0;

(2)递推公式为n+fun5(n-1)。

6.编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。

(1)注意递归结束条件和递推公式;

(2)动态的显示递归函数被调用的轨迹,即每次要打印出变量的变化情况。

7.分析下面的程序,并记录输出结果。

#include

main()

{

int x=2,y=3;

void fun7();

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

fun7();

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

fun7();

}

void fun7()

{

static int x=1;

int y=10;

x=x+2;

y=y+x;

printf("x0=%d,y0=%d\n",x,y);

}

(1)分析自动变量的作用域和生存期。

(2)分析静态变量的作用域和生存期。

8.分析下面的程序,并记录其执行结果。

#include

main()

{

void fun8x(),fun8y();

extern int x,y;

printf("1:x=%d\ty=%d\n",x,y);

y=100;

fun8x();

fun8y();

}

void fun8x()

{

extern int x,y;

x=110;

printf("2:x=%d\ty=%d\n",x,y);

}

int x,y;

void fun8y()

{

printf("3:x=%d\ty=%d\n",x,y);

}

(1)分析外部变量的作用域和生存期。

(2)注意extern关键字的用法。

9.写出下面程序的输出结果。

#include

#define PI 3.1415

#define FU(K) K+PI

#define PRINT(s) printf("%d\t",(int)(s))

void main()

{

int x=3;

PRINT(x*FU(1));

}

(1)分析#include命令的用法。

(2)分析#define命令的用法。

10.调用库函数,随机生成100~200之间的整数。

11.编写一个函数fun11(),输入3个顶点坐标,求ΔABC的面积。

对应答案:实验5 模块化程序设计

1.参考答案

(1)该程序的主要功能是:从键盘上输入两个整数,并求出其中的最大值。

(2)自定义函数fun1()实现该程序的功能,要求在主函数内实现数据的输入和输出,部分代码已经给出,请补充完整。

#include

main()

{

int max,a,b;

int fun1(int,int); /*函数的声明语句*/

printf("Please enter 2 numbers:(a,b)");

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

max=funl(a,b); /*函数的调用语句*/

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

}

int fun1(int x,int y) /*函数头*/

{

int max;

if(x>y)

max=x;

else

max=y;

return max; /*函数的返回语句*/

}

(3)运行结果

Please enter 2 numbers:(a,b)

4,5

max=5

2.参考答案

(1)出错信息:Linker error:Undefined symbol '_f' in model。

错误原因是:函数调用错误,调用函数fun2()却调用了没有定义的函数f()。(2)程序应该改为

#include

main()

{

float x,y;

float fun2(float a,float b);

scanf("%f,%f",&x,&y);

printf("x+|y|=%f",fun2(x,y));

}

float fun2(float a,float b)

{

float c;

if(b>0)

c=a+b;

else

c=a-b;

return c;

}

(3)运行结果

3,-4

x+|y|=7

3.改正后的程序如下。

main()

{

int x,n,s;

int power(int x,int n);

printf("Please enter x,n");

scanf("%d,%d",&x,&n);

s=power(x,n);

printf("value=%d",s);

}

int power(int x,int n)

{

int i,p=1;

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

p=p*x;

return p;

}

4.参考程序

long fun(int x,int y)

{

int i,p=1;

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

p=p*x;

return p;

}

5.参考程序

main()

{

int fun5(int);

printf("1+2+3+…+10=%d",fun5(10));

}

int fun5(int n)

{

if(n==0)

return 0;

else

return n+fun5(n-1);

}

6.参考程序

main()

{

long fun6(int);

clrscr();

printf("5!=%ld",fun6(5));

}

long fun6(int n)

{

long data=1;

if(n==0)

{

data=1;

printf("%d!=%ld\n",n,data);

}

else

{

printf("%d-->",n);

data=n*fun6(n-1);

printf("%d!=%ld\n",n,data);

}

return data;

}

7.运行结果

x=2,y=3

x0=3,y0=13

x=2,y=3

x0=5,y0=15

(1)分析自动变量的作用域和生存期。

在主函数里定义的自动变量x、y,其作用域仅限于所在的函数(main)内。故两次的输出语句均为x=2,y=3。其生存期与所在函数共存,即从函数调用开始到调用结束为止。

在子函数fun7里定义的y也为自动变量,其作用域仅限于所在的函数(fun7)内,生存期与所在函数共存。即函数调用开始到调用结束为止,故每次调用的初值均为10。

(2)分析静态变量的作用域和生存期。

在子函数fun7里定义的x为静态局部变量,其作用域仅限于所在的函数(fun7)内, 其生存期与所在程序共存,即程序开始运行时到程序运行结束为止,所以每次调用fun7(),其值有继承性,第1次调用初值为1,第2次调用初值为3。

8.参考答案

运行结果

1:x=0 y=0

2:x=110 y=100

3:x=110 y=100

(1)分析外部变量的作用域和生存期。

外部变量的作用域为从所定义的位置开始到整个文件的结束,其生存期与程序共存。本程序中x、y为外部变量,其作用域初始定义应该在fun8y()。

(2)注意extern关键字的用法。

extern可扩充定义外部变量的作用域,把x、y扩充到函数main和函数fun8x。

9.参考答案

输出结果:6

(1)分析#include命令的用法。

文件包含命令是以“#include”开始的预处理命令,其主要功能是将指定的文件内容嵌入到文件包含命令所在的地方,取代该命令,从而把指定的文件和当前的源程序文件连成一个源文件。

(2)分析#define命令的用法。

宏定义命令。C语言源程序中允许用一个标识符来表示一个字符串,称为“宏”,被定义为“宏”的标识符称为“宏名”。若一个宏简单地表示一个常量,则该宏称为符号常数。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,称为“宏代换”或“宏展开”。

宏定义由源程序中的宏定义命令完成。宏展开由编译预处理程序自动完成。在C语言中,“宏”分为有参数宏和无参数宏两种。

10.参考程序

#include

#include

void main()

{

int i,seed;

printf("Please enter the seed:");

scanf("%d",&seed);

srand(seed); /*设置随机函数rand的种子数,其中的参数变是种子*/

i=101+rand()%100; /*调用随机函数rand;其中和100区域保证随机数不大于99*/

printf("data=%d\n",i);

}

11.参考程序

注意:三角形面积的公式。

#include

#include

double area()

{

int x1,y1,x2,y2,x3,y3;

double a,b,c;

double p,value;

printf("Please enter 1 point:");

scanf("%d,%d",&x1,&y1);

printf("please enter 2nd point(x,y):");

scanf("%d,%d",&x2,&y2);

printf("please enter 3nd point(x,y):");

scanf("%d,%d",&x3,&y3);

a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); b=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)); c=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)); p=(a+b+c)/2;

value=sqrt(p*(p-a)*(p-b)*(p-c));

return value;

}

C语言实验报告参考答案(原)

C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include<> main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.编写程序: (1) a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 (2)a=160,b=46,c=18,d=170, 编写求(a+b)/(b-c)*(c-d)的程序。 答案: (1) #include<> main() { int a,b,c,x,y;

a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } (2) #include<> main() { int a,b,c,d; float x; a=160; b=46; c=18; d=170; x=(a+b)/(b-c)*(c-d);

printf("(a+b)/(b-c)*(c-d)=%f\n",x); } 3. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将0赋给c。(提示:用条件运算符) 答案: #include<> main() { int a,b,c; a=0; b=-10; c= (a>b) b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 2、(1) 编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 a/c的商=3

C语言实验

C语言上机指导指导教师:李辉李晓丽 东北电力大学 电气工程学院 2006年3月

实验2数据类型、运算符和表达式 1.实验目的 掌握C语言数据类型,熟悉如何定义一个整形、字符型和实型的变量,以及对他们赋值的方法。 掌握不同的类型数据之间赋值的规律。 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 进一步熟悉C程序的编辑、编译、连接和运行的过程。 2.实验内容和步骤 (2).在此基础上增加一个语句: printf(“%d%d\n”,c1,c2); 再运行,并分析结果。 (3).再将第2行改为: int c1,c2; 再使之运行,并观察结果。 (4).再将第3、4行改为: c1 = a; /* 不用单撇号*/ c2 = b; 再使之运行,分析其运行结果。

(5).再将第3、4行改为: c1 = ”a”; /* 用双撇号*/ c2 = ”b”; 再使之运行,分析其运行结果。 (6).再将第3、4行改为: c1 = 300; /* 用大于255的整数*/ c2 = 400; 再使之运行,分析其运行结果。 输入并运行教材第3章习题3.6给出的程序 (1).将一个负整数赋给一个无符号的变量,会得到什麽结果。画出它们在内存中的表示形式。 (2).将一个大于32765的长整数赋给整形变量,会得到什麽结果。画出它们在内存中的表示形式。 (3).将一个长整数赋给无符号的变量,会得到什麽结果(分别考虑该长整数的值大于或等于65535 以及小于65535 的情况)。画出它们在内存中的表示形式。 同学们可以改变程序中各变量的值,以便比较。例如:a = 65580, b = -40000, e = 65535, f = 65580。 输入习题3.10

c语言实验报告 ()

丽水学院计算机实验报告

丽水学院计算机实验报告 一、实验目的 1.熟悉Visual C++和C-Free等集成环境,掌握运行一个C程序的基本步骤,包括编辑、编译、连接和运行。 2.掌握算术表达式和赋值表达式的使用。 3.掌握基本输入、输出函数的使用。 4.能够编程实现简单的数据处理。 二、实验环境 硬件:Pentium以上的计算机。 软件:Windows XP操作系统、Visual C++和C-Free等集成环境。 三、实验内容和结果 1.编程题1 在屏幕上显示一个短句“What is a computer?” 思考: (1)如何在屏幕上显示你自己的学号,姓名和班级? (2)如何在屏幕上显示数字、英文字母和汉字等信息?例如:“你在机房吗?” 编程题1源程序: #include<> void main() { printf("What is a computer?\n");

} 程序运行结果: What is a computer? 思考题(1): #include<> void main() { printf(",小王,班级\n"); } 思考题(2): #include<> void main() { printf("英文字母abcdefgABCDEFG\n"); printf("汉字:哇哈哈啊哈和\n"); } 2.编程题2 在屏幕上显示下列图形。 * * * * * * * * * *

思考:如何在屏幕上显示下列图形? A A A A 编程题2源程序: #include<> void main() { int i,j; for(j=1;j<5;j++) { for(i=5;i>j;i--) printf("*"); printf("\n"); } } 程序运行结果: * * * * * * * * * * 思考题:

最新实验五-参考答案--计算机C语言

实验四参考答案(参考答案) (1) 设计程序sy5-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。 算法分析: 对角线上的元素,1维和2维下标相同,反对角线元素,如果行下标为i,列下标就为2-i; 参考答案: #include int main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int i,j,sum=0; for(i=0;i<3;i++) sum=sum+a[i][i]+a[i][2-i]; //a[i][i]当前行的主对角线元素 //a[i][2-i]当前行的反对角线元素printf("矩阵的正、反对角线元素之和为:%d\n",sum); return 0; } 运行结果: (2) 设计程序sy5-2.c,找出一个3×4的矩阵中的最小值及其位置。 算法分析: 首先把二维数组中的第一个数即a[0][0]看成最小值,然后逐行逐列的去遍历每个元素,逐一判断每一个元素是否比最小值还好小,如果是,就改写最小值,并记录他的下标。 参考答案: #include #include int main() { int a[3][4]={{10,21,41,5},{12,15,46,35},{40,21,26,30}}; int i,j,row,colum,min; printf("数组a:\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%5d",a[i][j]);

printf("\n"); } min=a[0][0];row=0;colum=0; //首先把第一个数a[0][0]看成最小数 for(i=0;i<3;i++) //双重循环逐一遍历每个元素a[i][j] for(j=0;j<4;j++) if(min>a[i][j]) //如果当前值a[i][j]比最小值还要小 {min=a[i][j];row=i;colum=j;} //用a[i][j]改写最小值,并记下他们的下标printf("矩阵中最小元素是:%d,行下标是:%d,列下标是%d\n",min,row,colum); return 0; } 运行结果: (3) 设计程序sy5-3.c,定义一个3×3的二维数组,通过随机函数自动赋值。然后输入一个整数n,使数组左下三角(含对角线元素)元素中的值乘以n 。例如:若n的值为3,a 数组中的值为 | 1 9 7 |则程序运行后a数组中的值应为| 3 9 7 | | 2 3 8 | | 6 9 8 | | 4 5 6 | | 12 15 18 | 算法分析: 主要理解到对角线即以下元素包含哪些元素,即他们的下标变化。对每一行i来说,对角线以下的元素,他们的列下标是0,1,2,---,i;所以用外循环i遍历行,内循环j(从0到i),逐一遍历每一个a[i][j],并给a[i][j]赋值为他的n倍。最后输出矩阵。 参考答案: #include #include int main() { int a[3][3]; int i,j,n; printf("原来a的值:"); for(i=0;i<3;i++) //生成数组元素,并按矩阵形式输出 { for(j=0;j<3;j++) {a[i][j]=rand()%20; //rand()参看教材385页 //rand()%20 产生一个20以内的整数

C语言实验5(结构体)

实验五结构体 一、实验目的 1.掌握结构体类型变量的定义和使用。 2.掌握结构体类型数组的概念和使用。 二、实验内容 编写一个程序实现下面的功能: A.建立一个数组用于存储学生的学号、姓名和三门课程的成绩和平均成绩 B.输入学号后输出该学生的学号、姓名和三门课程的成绩 C.输入学号后删除该学生的数据 D.插入学生的数据 E.输出平均成绩在80分及以上的记录 F.退出 要求用循环语句实现B--E的多次操作 三、实验具体实验程序代码(要有注释)、测试结果(最好截图)和实验总结 1、实验代码 建立一个数组用于存储学生的学号、姓名和三门课程的成绩和平均成绩 输入学号后输出该学生的学号、姓名和三门课程的成绩 um,&stud[i].name,&stud[i].yingyu,&stud[i].shuxue,&stud[i].cc); stud[i].avg=(stud[i].yingyu+stud[i].shuxue+stud[i].cc)/3; } for(i=0;i

C语言实验报告3

实验报告 实验名称:最简单的C程序设计——顺序程序设计成绩: 实验日期: 2011 年 10 月 24 日实验报告日期: 2011 年 10 月24 日 实验者:桂婷 一、实验目的 1、掌握C语言中使用最多的一种语句——赋值语句的使用方法。 2、掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 3、进一步掌握编写程序和调试程序的方法。 二、实验内容 1、输入程序并运行结果。 2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。编程序,用scanf输入数据,输出计算结果/。 3、计算存款利息。 有1000元,想存5年,可探子以下5种办法存: (1)一次存5年期; (2)先存2年期,到期后将本息再存3年期; (3)先存3年期,到期后将本息再存2年期; (4)存1年期,到期后将本息存再存1年期,连续存5次; (5)存活期存款。活期利息每一季度结算一次。 三、实验步骤: 1、

总结:1、变量在定义时就赋了初值。 2、两次的printf语句输出都指定了要输出数据的长度和小数点。2、 总结:1、程序在定义时只对部分变量赋了初值,这是允许的。 2、在计算时,乘号是用*表示,不能省略。 3、同样,在输出时指定了输出格式,长度,小数点位数。 3、

总结:1、用scanf语句输入数据,要与指定的格式一样。 2、程序用到了数学公式,调用“include ” 4、实验出现的问题、实验结果分析 1、程序在运行时是自上而下同,自左向右的。运到调用函数则会跳 转,但调用完了仍然回到主函数中。 2、printf语句中的常量是按原样输出的。 3、注意赋值语句的使用。 五、实验小结和思考 1、如果在程序2中不指定输出的长度和小数位数,看运行结果。 2、在程序3中不包含“include ”会怎样? 3、程序3若不给变量赋初值会出现什么情况。

C语言实验报告1

《程序设计基础》实验报告

{ float a, b; printf_s("please input cost price of TV:"); scanf_s("%f", &a); b = a*K; printf_s("the current price of TV:"); printf_s("%f", b); return 0; 2、 #include"stdafx、h" int main() { int a, b, c, d, e, f; printf_s("please input three figures:"); scanf_s("%d", &a); b = a / 100; c = a % 100; d = c / 10; e = c % 10; f = e * 100 + d * 10 + b; printf_s("the new three figures:"); printf_s("%d", f); return 0; } 3、 #include"stdafx、h" int main() { float a, b, c, d, e; printf_s("please input scores:\n");

scanf_s("%f%f%f", &a, &b, &c); d = a + b + c; e = (a + b + c) / 3; printf_s("the total scores:"); printf_s("%5、1f\n", d); printf_s("the average scores:"); printf_s("%4、1f\n", e); return 0; } 4、 #include"stdafx、h" int main() { float a, b; printf("please input a number:"); scanf_s("%f", &a); printf_s("the integer part is:"); printf_s("%d\n", (int)a); b = a - (int)a; printf_s("the decimal part is:"); printf_s("%2、1f", b); return 0; } 5、 #include"stdafx、h"

C语言程序设计II实验报告

C语言程序设计II实验报告题目:实验五函数应用 院系名称:计算机学院 专业名称:计算机科学与技术 班级: 学号: 学生姓名: 指导教师: 实验日期:2017年4月1日 报告提交截止日期:2017年4月11日

一、实验目的 1、掌握C语言函数的定义方法、函数的声明及函数的调用方法及 调用过程; 2、掌握主调函数和被调函数之间的参数传递方式; 二、实验内容与要求: 1、求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数,用 另一个函数根据求出的最大公约数求最小公倍数。(提示:设两个整数是 a,b,最大公约数是p,最小公倍数是q,那么ab=pq) 2、用牛顿迭代法求方程f(x)=ax3+bx2+cx+d=0的根。系数a、b、c、d由主 函数输入。求根过程写成函数。(提示:牛顿迭代法是先给定方程f(x)=0 的一个较好的初始近似根x0,然后重复使用迭代公式: 求x的近似解,直至相邻两次的近似解相差很小为止,如差值的绝对值 小于1e-07。x0可以从键盘输入或直接设定。) 3、定义一个函数,功能是计算n个学生的成绩中高于平均成绩的人数,并 作为函数返回值。用主函数来调用它。统计30个学生成绩中高于平均成 绩的有多少人。 4、 ∑= + + + = = n i n p p p i p n s 1 ) ( )2( )1( )( ) (Λ Λ,! )(i i p= 5、编写和调用函数,给定圆筒的内径、外径和高,计算该圆筒的体积;给

定圆锥的高、底面半径,计算该圆锥的体积和表面积。 6、编写和调用函数,求出10000以内的所有素数、绝对素数、水仙花数、 完全数(或称完数)、互满数。 提示:一个素数经过任意次调换位,仍然为素数,则称其为绝对素数, 例如13和31就是一个绝对素数。水仙花数是指一个三位整数,其各位 数字立方之和等于该数。例如,153就是一个水仙花数:153=1*1*1+ 5*5*5+3*3*3。完全数是指一个数正好是它的所有约数(本身除外)之和。 例如,6就是一个完全数,因为6的因子有1、2、3,并且6=1+2+3。 如果有两个数,每一个数的所有约数(除它本身以外)之和正好等于对 方,则称这两个数为互满数。 三、实验结果

C语言实验指导书

C语言程序设计实验指导书 沈岚岚吕元长编写 桂林电子科技大学信息科技学院 2012.03

前言上机实验的目的和要求 一上机实验的目的 上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。学习程序语言,上机实验的目的如下: 1 加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。 2 了解和熟悉C语言程序开发环境。熟悉一两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。 3 学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运行。要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。 4 在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。多动脑筋思考,将会对你有很大帮助。 二上机实验前的准备工作 1 了解所用的计算机系统的性能和使用方法; 2 复习和掌握与本实验有关的教学内容; 3 准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序; 4 准备好调试和运行时所需的数据。 三上机实验的步骤 1 调出C语言编译系统,进入C语言工作环境; 2 输入自己编制好的程序; 3 检查输入是否有错,及时更正; 4 进行编译和连接; 5 运行程序,分析结果。 四、实验结束,整理实验报告 实验报告应包括以下内容: 1 上机题目; 2 程序清单; 3 运行结果; 4 对结果的分析和本次获得的经验和体会。

C语言实验报告

《C语言程序设计实训1》报告 设计题目:基于数组的学生信息管理系统学院名称:信息科学技术学院

专业:计算机科学与技术 班级: 姓名:学号 指导教师: 提交日期: 2014年12月22日 一、实验内容 编写并调试程序,实现学校各专业班级学生信息的管理。10个学生的信息存储在文件中。在头文件中定义学生信息的结构体类型,包括: 学号、姓名、专业、班级、3门成绩;和符号常量N(学生数)。(同一班 级的学生可以属于不同的专业,同一专业的学生可以属于不同的班级)

二、实验要求 (1)main函数:以菜单形式将各项功能提供给用户,根据用户的选择, 调用相应的函数。 STU student[N]; 函数 #include "" void main() { int i,n,id,num,m,sub,corse;将从文件中读取10个人的信\n"); printf("\n2.您将从文件中随机读取第n(0<=n<=9)个学生的信息\n") printf("\n3.您将根据某一班级某一专业总分超过多少进行查找\n"); printf("\n4.您将求某一课程分数最高的学生序号的下标\n"); printf("\n5.您将对平均成绩由低到高进行简单选择排序法\n ");

printf("\n6.您将对某一个班的平均成绩由低到高进行起泡排序法\n"); printf("\n7.您将对某门专业的学生的某门课程成绩由低到高进行直接插入排序法\n"); printf("\n8.您将把学生信息存入文件\n"); scanf("%d",&id); getchar(); switch(id){ case 1: { printf("\n从文件中读取信息\n"); Input(students,sizeof(students)/sizeof(STU));Sort_select 函数 #include "" void Sort_select(STU * p) { int i,j,k; float sum,ave[N],t; STU tem; for(i=0;i

C语言程序设计实验报告(函数)

C语言程序设计实验报告(实验名称:函数) 1实验目的 (1)掌握函数的定义方法、调用方法、参数说明以及返回值; (2)掌握实参与形参的对应关系,以及参数之间的“值传递”的方式; (3)掌握函数的嵌套调用及递归调用的用的设计方法; (4)在编程过程中加深理解函数调用的程序设计思想。 2实验内容 (1)编写一个函数primeNum(int x),功能是判别一个数是否为素数。 要求: ①在主函数中输入一个整数x(直接赋值或从键盘输入); ②函数类型为空值(void),调用primeNum( )函数后,在函数中输出x是 否为素数的信息,输出格式为“x is a prime number”或”x is not a prime number”; ③分别输入一下数据:0,1,2,5,9,13,59,121,并运行程序,检查 结果是否正确。 (2)编写函数 mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。 要求: ①在主函数中从键盘输入一对整型数据a和b; ②调用函数后,根据返回值对a和b的关系进行说明。例如,在主函数中输 入:10,5,则输出“10 is a multiple of 5”; ③分别输入下面几组数据进行函数的正确性测试:1与5,5与5,6与2,6 与4,20与4,37与9。

3算法描述流程图 (1)primeNum(int x)(判别一个数是否是素数)函数流程图 ①主函数流程图:

②判断素数函数流程图:

(2)mulNum(int a,int b)(确定a和b是否是整数倍的关系)函数流程图 ①主函数流程图:

C语言程序设计实验5教案

课题:实验五、指针的应用——2学时 主要教学内容:地址即指针的概念;指向变量的指针变量的定义和使用方法; 使用各种调试手段调试程序。 教学目标:1. 进一步掌握地址即指针的概念; 2. 掌握指向变量的指针变量的定义和使用方法; 3. 进一步掌握调试程序的各种方法。 重点:完成3个题目的设计。 难点:第3题。 教学过程(组织与方法):首先,进行考勤并检查学生对实验的准备情况,做好记录,之后指导学生完成实验指导书中规定的实验内容,最后,逐 个验收,并记录验收结果。 作业:实验报告:将实验内容的第2题写入实验报告,要求画出传统流程图和N-S流程图。

实验五、指针的应用——设计型 1. 用指向变量的指针变量将a 、b 中的任意2个整数交换,要求输出交换前后a 、b 的值。要求键盘输入和屏幕输出都要有英文文字提示。 解:(1)算法传统流程图如图1所示,N-S 流程图如图2所示。 图1 传统流程图 图2 N-S 流程图 (2)程序和运行结果如下: #include void main( ) { int a , b , t , *p1 , *p2 ; p1 = &a ; p2 = &b ; printf ( "a,b=" ) ; scanf ( "%d,%d" , p1 , p2 ) ; printf ( "Exchange ago:%d,%d\n" , a , b ) ; t = *p1 ; *p1 = *p2 ; *p2 = t ; printf ( "After the exchange:%d,%d\n" , a , b ) ; } 输入 a , b t = *p1 输出 a , b p1 = &a p2 = &b 输出 a , b *p1 = *p2 *p2 = t

:C语言实验报告册-2016.3资料

学生实验报告册 (理工类) 课程名称:C语言程序设计实验专业班级: 16数字媒体技术学生学号: 1613031008 学生姓名:李翔 所属院部:计算机工程学院指导教师:吕艳林 20 16 ——20 17 学年第一学期 金陵科技学院教务处制

实验报告书写要求 实验报告上交电子稿,标题采用四号黑体,正文采用小四号宋体,单倍行距。 实验报告书写说明 实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。

实验项目名称:初级程序设计实验学时: 6 实验地点: A107 实验日期: 2016年10月13,20,27 实验成绩: 批改教师:批改时间:

实验1 初级程序设计 一、实验目的和要求 (1)熟悉Visual C++集成环境,进行编辑、保存、编译、连接及运行,并能进行简单程序调试; (2)掌握C语言中各种运算符的使用; (3)掌握C语言中各种数据类型的区别与应用; (4)熟练掌握C语言中变量的定义、赋值和使用,表达式语句、输入/输出语句的使用; (5)掌握C语言中输入/输出函数的使用; (6)掌握C语言中控制语句的使用,含if-else、for、while、do-while语句的使用。 二、实验仪器和设备 奔腾以上计算机,装有windows XP以上版本操作系统和Visual C++ 6.0软件。 三、实验内容与过程 1、程序调试 (1)#include main() { int s,t,p,sum; scanf(“%d%d%d”,&s,&t,&p); sum=s+t+p; printf(“sum=%d\n”,sum); } (2)#include main() { int k=3; if(k=3) printf(“***”); else printf(“###”); } (3)#include main() {int k=0; do { printf(“k=%d\n”,k); }while(k++>0); } 2、程序改错

C语言实验

实验一C上机环境初识与简单程序设计 一、实验目的 1.了解C编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 4.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法。 二、实验内容 1.编写一个C程序,输出以下信息: **************************** very good! **************************** 2. 编写一个程序,从键盘输入圆的半径r,圆柱的高h,分别计算出圆的周 长c1,圆的面积cs,圆柱的体积cv,输出结果是要求保留小数点后3位。 3.编写一个程序,输入一个4位数,分别输出这个数的个位,十位,百位和 千位, 例如:输入1234,则输出为: 1234的个位是:4,十位是:3,百位是:2,千位是:1 三、实验程序清单及结果(程序清单不要截图,拷贝到文档中,结果需要截图,再拷贝到相应的清单后面) #include int main() { printf("*************************\n"); printf("very good! \n"); printf("*************************\n"); return 0; }

2. #include int main() { float r,h; double cl,cs,cv; printf("输入半径r: "); scanf("%f",&r); printf("\n输入高度h: "); scanf("%f",&h); cl=3.14*2*r; cs=3.14*r*r; cv=cs*h; printf("圆的周长cl=%0.3lf",cl); printf("\n圆的面积cs=%0.3lf",cs); printf("\n圆柱的体积cvz=%0.3lf",cv); return 0; }

C语言实验5(附参考答案)

实验5:运算符与表达式(4)实验目的: 1、熟悉条件运算符、复合赋值运算符的基本运用和规则。 2、进一步熟悉C语言程序的编辑、编译、连接和运行的方法。 实验内容: 1、写出下面逻辑表达式的值。设a=3,b=4,c=5。 ①a + b > c && b == c =0 ②a || b + c && b – c =1 ③!( a > b ) && ! c || 1 =1 ④(0||0)||5 =1 ⑤(10<12)&&! (1>-1) =0 2、将下面的数学表达式写成C语言逻辑表达式: x大于0,并且X小于等于10 x>=0&&x<=10 a或b中有一个大于零__a>0||b>0________ 3、求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 =0 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y =0 设a=2,b=3,x=3.5,y=2.5 先自己分析,再试着用程序求解,看得到的结果是否一致。 4、写出下面表达式运算后a的值,设原来a=10。设a和n已定义成整型变量。

(1)a+=a =20 (2)a-=2 =8 (3)a*=2+3 =50 (4)a/=a+a =0 (5)a%=(n%=2),n的值等于5 =0 (6)a+=a-=a*=a =0 先自己分析,再试着用程序求解,看得到的结果是否一致。 5、闰年是能够被4整除,但是不能够被100整除,或者能够被400整除,假设年份用变量名year表示,请用表达式写出以上条件。year%4==0&&year%100!=0||year%400==0 6、程序填空(已知一个摄氏温度c,要求输出华氏温度f。公式为f=5/9*c+32.5) main( ) { float c,f; c=37.5; f= 5.0/9*c+32.5; printf("%5.2f\n",f); } 7、先思考下面程序的输入,然后放到编译器里面去验证,看看是否和自己思考的结果一样,并把正确结果写在程序下文。 main() { int x,y,max; x=3; y=6; max=x>y?x:y; printf(“%d\n”,max); } 输出结果:6

C语言实验4

C语言实验报告 课程名称:高级语言程序设计系(院):信息工程学院 专业:电子信息工程 班级: 学生姓名 学号: 指导教师: 开课时间:学年第学期

关于实验报告的说明 (一)对教师和学生的基本要求 1、加实验的学生需提交实验报告, 一次实验写一个实验报告。实验报告要求字迹工整,文字简练,数据齐全,图表规范,计算正确,分析充分、具体、定量。 2、教师应根据学生在实验中和在实验报告书写中反映出来的认真程度、实验效果、理解深度、独立工作能力、科学态度等给予出恰当的评语,并指出实验报告中的不妥之处,然后依照评分细则,采用100分制评出成绩并签名和评定日期。如学生抄袭或缺交实验报告达该课程全学期实验报告总次数三分之一以上,不得同意其参加本课程的考核。 3、学期结束后任课教师要及时收交学生实验报告,并按要求给出学生实验报告成绩册和学生实验报告上交到系办公室。 (二)内容填写要求 1、实验项目名称:要用最简练的语言反映实验的内容。 2、实验目的和要求:目的和要求要明确,在理论上验证定理、公式、算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的技能技巧和程序的调试方法。 3、实验内容及步骤:这是实验报告极其重要的内容。要抓住重点,可以从理论和实践两个方面考虑。只写主要操作步骤,不要照抄实习指导,要简明扼要。还应该画出实验流程图,再配以相应的文字说明,这样既可以节省许多文字说明,又能使实验报告简明扼要,清楚明白。 4、实验结果:根据实验目的将原始资料系统化、条理化,用准确的专业术语客观地描述实验现象和结果,要有时间顺序以及各项指标在时间上的关系。 5、实验总结:根据相关的理论知识对所得到的实验结果进行解释和分析和总结。也可以写一些本次实验的心得以及提出一些问题或建议。

C语言实验五、数组程序设计解答

C语言实验五、数组程序设计解答 实验五数组应用,二, 一、实验目的 1(掌握二维数组的定义和初始化。 2(掌握二维数组元素的引用及其应用。 3(掌握字符数组的定义和初始化。 4(掌握字符数组元素的引用及其应用。二、实验内容 1([目的]掌握二维数组的输出方法。 [题目内容]已知有二维数组a的定义:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};编程序~以三行四列的形式输 出a数组。 [输入]无 [输出] 1 2 3 4 5 6 7 8 9 10 11 12 [提示] 利用二重for循环结构与printf()。 #include void main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int i,j; printf("二维数组:\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++)

printf("%6d",a[i][j]); printf("\n"); } } 2([目的]掌握二维数组的输入、输出方法。 [题目内容]已知有一个3行2列的二维数组: 89 76 67 98 54 78 编程序~从键盘输入数据存储在二维数组中~并以3行2列的形式输出。 [输入]89~76~67~98~54~78 [输出] 89 76 67 98 54 78 [提示] 利用二重for循环结构与scanf()、printf()及%4d格式输出。 #include void main() { int a[3][2]; int i,j; printf("请输入3行2列二维数组:\n"); for(i=0;i<3;i++) for(j=0;j<2;j++) scanf("%d",&a[i][j]);

C语言实验

一、#include int prime(int x); void main( ) { int i,n=0; for(i=2;i<5000;i++) if(prime(i)) { printf("%5d",i); n++; if(n%10==0)printf("\n"); } } int prime(int x) { int i; for(i=2;i int prime(int x); void main( ) { int i,j,f,n=0; for(i=2;i<5000;i++) if(prime(i)) { j=i; f=1; while(j!=0) { n=j%10; if(!(n==2||n==3||n==5||n==7)) {f=0;break;} j=j/10; } if(f==1) { printf("%5d",i); n++; if(n%10==0)printf("\n"); } } } int prime(int x)

{ int i; for(i=2;i int prime(int x); void main( ) { int i,n=0,j,f; for(i=2;i<5000;i++) if(prime(i)==1) { j=i/10; f=1; while(j!=0) { if( !(prime(j))) {f=0;break;} j=j/10; } if(f==1) { printf("%5d",i); n++; if(n%10==0) printf("\n"); } } } int prime(int x) { int i; if(x==1)return 0; for(i=2;i int prime(int x); void main( ) { int i,n=0,j,f; for(i=2;i<5000;i++) if(prime(i)==1)

c语言实验5函数

实验5 函数 1.实验目的和要求:参见实验指导书实验八 2.实验内容和步骤: 实验内容:实验指导书中的实验八 实验步骤: 2.1.实验内容的第1题,通过本题,了解到要在单步调试时能够观察自定义的函数内部变量变化情况,单步调试如何操作: “组建”→“开始调试”→“Step Into”→按F10一步一步调试F11进入函数内部调试 提问(1),请在下面粘贴运行结果画面: 实参a是否为同一变量?不是 提问(2),请请在下面粘贴运行结果画面:

提问(3),观察结果有何变化? 出现乱码 通过本题,可以得出什么结论? 实参一般取全局变量,当全局变量和局部变量都存在时实参优先取局部变量,当需要取外部变量时应在主函数内定义变量时前面加extern 2.2 实验内容部分第2题源程序代码,请贴图: #include int prime(int n) { int i; for(i=2;i

程序运行结果画面,请贴图:

2.4 选做题,若做了,请在下面给出源程序代码贴图及运行结果贴图

2.5选做题,若做了,请在下面给出源程序代码贴图及运行结果贴图 3.实验小结

c语言上机实验实验五

实验五 (2018-11-07) 一、实验名称: 数组。 二、实验目的: (1)掌握C语言中一维数组、二维数组的定义方法; (2)掌握字符数组与常用字符串处理函数的使用; (3)掌握与数组有关的算法(如数组元素的排序); (4)进一步熟悉Visual C++6.0开发环境下调试程序的基本步骤。 三、实验项目(必做题) 本次实验要求同学们事先在纸介质上编好解决下面问题的源程序,然后才允许进实验室上机调试。 (1)定义1个一维数组:int arr[10],然后从键盘输入10个整数,编程求出其最大值、最小值以及平均值,并在屏幕上打印输出。 提示:在一个循环体内用scanf函数输入10个数,然后再用一个循环处理数据处理。 测试实例: 输入:100 10 -125 -9 0 90 70 60 300 -250 输出:max=300 min=-250 ave= 14.60 注意:要求首先建立项目文件,然后建立源程序文件进行编辑、调试。 (2)定义两个字符数组:char str1[80], str2[80],其中字符串str1接受从键盘输入,然后编程将字符数组str1的内容逐个拷贝到字符数组str2中。(不允许使用库函数strcpy) 提示:从键盘接受1个字符串输入str1后,使用一个循环将str1中字符逐个赋值给str2中的对应元素。 测试实例: 输入:Hello World! 输出:Hello World! 注意:要求首先建立项目文件,然后建立源程序文件进行编辑、调试。 (3)定义1个一维数组:int arr[20],然后从键盘输入20个整数,使用冒泡法编程将该数组从小到大进行排序,并将排序后结果打印在屏幕上。 提示:利用一个二重循环体实现冒泡排序(算法的基本思想参见教材P134)。 测试实例:

C语言实验报告答案

二、编程题(参考答案) 1、 #include “stdio.h” void main() { int Math=82,eng=78,comp=91,average; average=(Math+eng+comp)/3; printf(“Math=%d,eng=%d,comp=%d,average=%d\n”,Math,eng,comp,average); } 2、 #include “stdio.h” void main() { int n=152,d1,d2,d3; d1=n%10; d2=(n/10)%10; d3=n/100; printf(“整数%d的个位数字是%d,十位数字是%d,百位数字是%d\n”,n,d1,d2,d3); } 3、 #include “stdio.h” void main() { int n1,n2; printf(“Enter n1,n2:”); scanf(“%d,%d”,&n1,&n2); printf(“%d+%d=%d\n”,n1,n2,n1+n2); printf(“%d/%d=%d\n”,n1,n2,n1/n2); printf(“%d%%%d=%d\n”,n1,n2,n1%n2); } 三、改错题 原错误行(共三行): /********************************** found ********************************/ #include “stdoi,h” /********************************** found ********************************/ printf(“%d=%d*%d\n”,x); /********************************** found ********************************/ printf(“%d*%d=%d\n”,y); 改正后: #include “stdio.h” printf(“%d=%d*%d\n”,y,x,x); printf(“%d*%d=%d\n”,x,x,y);

相关文档