进程管理实验c语言版

2024-10-26 版权声明 我要投稿

进程管理实验c语言版

进程管理实验c语言版 篇1

实验名称:学生管理系统的设计与实现

实验类型:综合性实验

一、实验目的强化学生对C语言的基本语法和基本编程技能的熟练掌握,并在此基础上,重点培养学生对实际应用问题进行抽象分析的能力和综合运用C语言知识进行具体实现的编程能力。

二、实验内容

综合应用C语言中讲授的流程控制语句、模块化程序设计方法(函数)和丰富的数据类型(指针、数组、结构体等)完成“学生管理系统”的设计与实现。

三、实验环境

Windows XP系统,C语言开发环境:Win-TC、Turbo C3.0、VC等。

四、实验要求

1、总体要求:系统功能齐全,运行结果正确,用户界面友好,使用简单方便。

2、系统数据要求:学生信息如下:学号、姓名、年龄、所在系、3门课程名称及成绩、总分、平均分。

3、系统功能要求:

⑴输入至少10个学生的自然信息(学号、姓名、年龄、所在系、成绩)。

⑵计算每个学生的总分、平均分,并输出每个学生的学号,姓名,总分,平均分。

⑶根据学生的总分进行排序输出。

⑷针对课程不同科目进行排序输出。

⑸统计输出每门课程的平均分。

⑹实现多种查询功能(例如:根据学号或姓名或所在系等,查询一个或多个学生信息)。

⑺对于已输入的学生信息进行储存。

⑻能实现学生信息的增、删、改操作。

五、实验结果

实验完成要求上交全部源程序代码(包括存盘数据)和完整的综合性实验报告(包括系统设计、实验过程中出现问题的分析与修改、代码打印、运行结果拷屏打印)。

六、考核形式

C语言实验报告 篇2

第1次实验: 时间 2010-9-15

项目名称:创建第一个C语言程序

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0

实验程序:

1、单击“开始”“程序”“Microsoft Visual Studio 6.0”“Microsoft Visual C++ 6.0”,打开VC++。

2、在菜单中选择“文件”“新建”,在“工程”选项卡中选择“Win32 Console Application”,输入一个名称,点“确定”,新建一个新的工程。

3、再选择“文件”“新建”命令,在“文件”选项卡中选择“C++ Source File”,输入一个

名称,点“确定”,新建一个C++源文件。由于C++全面支持C,因此可以在此输入C语言的源代码,进行实验。

4、在代码框中输入如下代码:

#include

void main()

{

int a,b,sum;

a=123;b=456;

sum=a+b;

printf(“sum is %dn”, sum);

}

5、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中

选择“构建”最后在“编译”中选择“执行”。

实验结果:

sum is 579

讨论:本实验让我们了解了如何创建一个C语言的控制台应用程序,并学会了C语言程序的基本构架和个别特殊语句如“main”“printf”等。

实验地点:3B-20

3第2次实验:时间:2010-10-6

项目名称:顺序结构程序设计实验

(书89页4.9题,先把题抄下来)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0

实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。

实验结果:„„

讨论:„„

实验地点:3B-20

3第3次实验:时间:2010-10-27

项目名称: 选择语句switch的使用

(书111页5.6题,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„ 实验地点:3B-20

3第4次实验:时间:2010-11-17 项目名称:循环语句for的使用(书129页6.1,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行” 实验结果:„„ 讨论:„„

实验地点:3B-20

3第5次实验:时间: 2010-12-8 项目名称: 数组的应用(书134页例题7.3,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行” 实验结果:„„ 讨论:„„

实验地点:3B-20

3第二学期实验:

第1次实验: 时间 2011-2-25 项目名称:编写函数

(在主函数中输入两个数,分别调用四个自定义函数,实现两个数的加、减、乘、除并输出结果。)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

6、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下: #include void main(){

int add(int x,int y);int sub(int x,int y);int mul(int x,int y);float div(int x,int y);int c,a,b;float d;

scanf(“%d,%d”,&a,&b);c=add(a,b);

printf(“%d+%d=%dn”,a,b,c);c=sub(a,b);

printf(“%d-%d=%dn”,a,b,c);c=mul(a,b);

printf(“%d*%d=%dn”,a,b,c);

d=div(a,b);printf(“%d/%d=%fn”,a,b,d);}

int add(int x,int y){

return x+y;

}

int sub(int x,int y){}

return x-y;

int mul(int x,int y){} {

return x*y;

float div(int x,int y)

return(float)x/(float)y;

}

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„。

实验地点:3B-20

1第2次实验:时间:2011-3-11 项目名称:指针的应用(书278页10.3,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„

实验地点:3B-20

3第3次实验:时间:2011-4-8

项目名称:顺序结构程序设计实验(书318页11.3题,先把题抄下来)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„

实验地点:3B-203

9.1

#include

#define S(A,B,T)T=A;A=B;B=T void main(){} 9.6

#include #define PR printf #define NL “n”

int a,b,t;

scanf(“%d,%d”,&a,&b);S(a,b,t);

printf(“%d,%dn”,a,b);

#define F “%6.2f”

#define F1 F NL #define F2 F F NL #define F3 F F F NL void main(){

float a,b,c;a=1;b=2;c=3;PR(F1,a);

PR(F2,a,b);PR(F3,a,b,c);}

作业:

#include

#include

void main(){

void fun1(float a,float b, float c);void fun2(float a,float b ,float c);void fun3(float a,float b, float c);float a,b,c,disc;

scanf(“%f%f%f”,&a,&b,&c);disc=b*b-4*a*c;if(disc>0)fun1(a,b,c);else if(disc==0)fun2(a,b,c);else

fun3(a,b,c);}

void fun1(float a,float b,float c){

float d=b*b-4*a*c;float x1,x2;

x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf(“%f,%fn”,x1,x2);}

void fun2(float a,float b,float c){

float d=b*b-4*a*c;float x1,x2;

x1=x2=(-b)/(2*a);

printf(“%f,%fn”,x1,x2);}

void fun3(float a,float b,float c){

printf(“此函数无解”);} P278

#include void main(){void aa(int x[],int n);int i,a[10];

for(i=0;i<10;i++)scanf(“%d”,&a[i]);

printf(“交换前:n”);

for(i=0;i<10;i++)printf(“%d,”,a[i]);printf(“n”);aa(a,10);

printf(“交换后:n”);for(i=0;i<10;i++)

printf(“%d,”,a[i]);printf(“n”);

}

void aa(int x[],int n){

int

temp,max=x[0],min=x[0],max_n=0,min_n=0,i;//假设第一个数是最大和最小的数,那么max,min的下标就=0for(i=1;i

max=x[i];max_n=i;}

if(min>x[i]){min=x[i];

min_n=i;

}}

if(min_n!=0){temp=x[0];x[0]=x[min_n];

x[min_n]=temp;

}

if(max_n!=n-1){temp=x[n-1];x[n-1]=x[max_n];x[max_n]=temp;

}

} eee:

#include

void main(){void jiaohuan(int *pt1,int *pt2);int a,b;

scanf(“%d,%d”,&a,&b);printf(“n交换前:n”);printf(“a=%d,b=%dn”,a,b);jiaohuan(&a,&b);printf(“n交换后:n”);printf(“a=%d,b=%dn”,a,b);

}

void jiaohuan(int *pt1,int *pt2){int temp;temp=*pt1;*pt1=*pt2;*pt2=temp;

}

习题11.3 方法一: #include void main(){int i;

struct student{int num;

char name[10];int score[3];

}stu[5]={{101,“A”,50,60,80},{102,“B”,9

0,67,45},{103,“C”,30,40,50},{104,“D”,90,80,70},{105,“E”,60,70,80}};

printf(“NUM

NAME SCOREn”);for(i=0;i<5;i++)

printf(“%4d%8s%8d,%2d,%2dn”,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);

}

方法二 : #include void main(){int i;

struct student{int num;

char name[10];

int score[3];}stu[5];for(i=0;i<5;i++){

printf(“

学号:”);scanf(“%d”,&stu[i].num);printf(“姓名:”);scanf(“%s”,&stu[i].name);printf(“成绩

”);scanf(“%d,%d,%d”,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);}printf(“NUMNAME SCOREn”);for(i=0;i<5;i++)

进程管理实验c语言版 篇3

实验七 指针 了解指针的概念,学会定义和使用指针变量。2 掌握指针、变量和数组的关系及使用方法。3 学会使用指向函数的指针变量。

二 实验内容 编写函数fun(float *sn,int n),其功能是:根据以下公式计算s,计算结果通过形参sn传回;n通过实参传入,n的值大于等于0。上机运行并记录输入输出(主函数已给出)。

s11111 3572n1fun(float *sn,int n){ 定义变量:和s,通项w,符号f,循环控制变量i; /* 其中s、f要初始化 */ 循环求累加和s { 改变符号;/* 由负变正或由正变负 */ 求通项w;累加:s+=w;} 形参指针变量sn赋值;/* 通过形参sn传回累加和s */ } main(){ float s;int n;printf(“n=”);scanf(“%d”,&n);fun(&s,n);printf(“s=%fn”,s);}

完整程序如下:

#include void fun(float *sn,int n){ float s=0.0,w,f=-1.0;int i=0;for(i=0;i<=n;i++);{ f=(-1)*f;w=f/(2*i+1);s+=w;} *sn =s;} main(){ float s;int n;printf(“n=”);scanf(“%d”,&n);fun(&s,n);printf(“s=%fn”,s);}

输出结果如下图: 想使指针变量pt1指向a和b中的大者,pt2指向小者,以下程序能否实现此目的? swap(int *p1,int *p2){ int *p;p=p1;p1=p2;p2=p } main(){ int a,b;int *pt1,*pt2;scanf(“%d,%d”,&a,&b);pt1=&a;pt2=&b;if(a

上机调试此程序。如果不能实现题目要求,指出原因并修改之。

子函数swap改成下面程序方可实现目的,主函数不变: swap(int *p1,int *p2){ int p;p=*p1;*p1=*p2;*p2=p;} 下面的程序用来实现将一个3×3的矩阵转置。#include void tranf(int(*p)[3]){ int t,i,j;for(i=0;i<3;i++)for(j=0;j

程序修改如下: #include void tranf(int(*p)[N]){ int t,i,j;for(i=0;i<3;i++)for(j=0;j char *strc(char *s1,char *s2){ char *p=s1;while(*s2!=')*p++=*s2++;return s1;} main(){ char s1[30]=“computer ok!”,s2[]=“language”,*pt;pt=strc(s1,s2);printf(“%sn”,pt);/* 第10行 */ } 将程序第10行中的%s改成%c,应该怎样修改?(只允许修改第10行)

应改为: printf(“%cn”,*pt++);

C语言实验报告(一) 篇4

一、实验题目:顺序结构

二、实验目的:(略)

三、实验内容

1.程序验证(略)

2.程序设计

1)编写程序,已知圆半径radius=1.25,求圆周长和面积。

源代码:运行结果:

2)编写程序完成单个字母的大小写转换。

源代码:运行结果:

3)任意从键盘输入一个三位整数,要求正确分离出它的个位、十位和百位数,并分别在屏幕上显示。

C语言作业实验报告 篇5

printf(“Please input the right score!n”);else {

switch(score/10)

{

case 10:

case 9:

printf(“An”);

break;

case 8:

printf(“Bn”);

break;

case 7:

printf(“Cn”);

break;

case 6:

printf(“Dn”);

break;

default:

printf(“En”);

} } }(2)if语句实现 #include void main(){ int score;printf(“Please input a score:n”);scanf(“%d”,&score);if(score<0||score>100)

printf(“Please input a right score!n”);else {

if(score/10>=9)

printf(“An”);

if(score/10==8)

printf(“Bn”);

if(score/10==7)

printf(“Cn”);

if(score/10==6)

printf(“Dn”);

if(score/10<=5)

printf(“En”);} } 3,#include void main(){ int number,a,b,c,d,e;printf(“Please input a number:n”);scanf(“%d”,&number);if(number<0||number>99999)

printf(“The number is out of compass!”);else {

a=number%10;

if(a==number)

{

printf(“The number is 1.n”);

printf(“%dn”,a);

printf(“%dn”,a);

}

else

{

b=number/10%10;

if(b==number/10)

{

printf(“Yhe number is 2.n”);

printf(“%d %dn”,b,a);

printf(“%d %dn”,a,b);

}

else

{

c=number/100%10;

if(c==number/100)

{

printf(“The number is 3.n”);

printf(“%d %d %dn”,c,b,a);

printf(“%d %d %dn”,a,b,c);

}

else

{

d=number/1000%10;

if(d==number/1000)

{

printf(“The number is 4.n”);

printf(“%d %d %d %dn”,d,c,b,a);

printf(“%d %d %d %dn”,a,b,c,d);

}

else

{

e=number/10000;

printf(“The number is 5.n”);

printf(“%d %d %d %d %dn”,e,d,c,b,a);

printf(“%d %d %d %d %dn”,a,b,c,d,e);

}

}

}

} } } 4,#include void main(){ int a,b,c,x;printf(“Please input three numbers:n”);scanf(“%d”,&a);scanf(“%d”,&b);scanf(“%d”,&c);if(a>b){

x=a;

a=b;

b=x;} if(c

if(c

printf(“%d %d %dn”,a,c,b);

else

printf(“%d %d %dn”,a,b,c);} } 5, #include #include void main(){ float a,b,c,m,s;printf(“Please input lengthsn”);scanf(“%f”,&a);scanf(“%f”,&b);scanf(“%f”,&c);if(a+b>c&&a+c>b&&b+c>a){

m=(a+b+c)*(a+b-c)*(a+c-b)*(b+c-a);

s=sqrt(m)/4;

printf(“%fn”,s);

if(a==b&&b==c)

printf(“DengBianSanJiaoXing”);

else

{

if(a==b||b==c||c==a)

printf(“DengYaoSanJiaoXing”);

else

{

if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)

printf(“ZhiJiaoSanJiaoXing”);

else

printf(“YiBanSanJiaoXing”);

}

} } else

printf(“Error!n”);} 6, #include #include void main(){ float salary;

} printf(“Please input the salary:n”);scanf(“%f”,&salary);if(salary>850&&salary<=1500)salary=salary-0.01*salary;else { if(salary>850&&salary<=2000)

salary=salary-0.015*salary;else {

if(salary>2000)

C语言程序设计实验安排 篇6

实验一 顺序结构程序设计(2学时)

一、实验目的熟悉在VC运行环境下,编辑调试C语言程序的一般步骤。掌握顺序结构程序设计的基本思想和基本方法。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴ 程序功能描述。

⑵ 程序版本号、创作日期。

⑶ 作者信息描述:班级、学号、姓名。

⑷ 问题分析描述。

⑸ 算法设计描述。

⑹ 关键语句注释说明。

⑺ 调试运行过程中出现的错误及改正方法。

⑻ 输入数据样例。

⑼ 输出数据样例。

三、实验内容

以下两题,任选其一解答。

你知道淄博到北京的地面距离是多少千米吗,淄博到纽约的地面距离又是多少千米呢?说不上来了吧。还是让我们编一个程序来计算一下吧。

1.已知地球的平均半径为6371千米,假设在地球的同一纬度上,有两个处于不同经度的城市A、B,编程序求出这两个城市之间的地面距离。

输入数据样例:例如,欲求北纬30度上东经10度到东经50度的距离,输入格式应为:30 10 50

参考测试数据:

输入:0 0 180 输出:20015.08

输入:30 0 90 输出:8397.7

2输入:60 0 45 输出:2453.20

2.地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序求出这两个城市之间的地面距离。

提示:球面上两点之间的最短距离,等于过这两点以球心为圆心的圆上,这两点之间劣弧的长度。(即这两点与球心之间的连线构成的夹角所对球面劣弧的长度)。

建议你自己一步步推导出公式,而不要照搬网上的现成公式。

四、常见问题

疑问1:这分明是两道数学题啊,能否将数学公式提供给我们呢,我们的主要任务不是编写程序吗?

答:建立数学模型也是编程序的一部分。学会分析解决现实中遇到的问题,是我们学习的重要目标。

疑问2:这个问题好像属于球面几何的范畴,用平面几何可以求解吗?

答:这个问题的确涉及到球面几何,但是也的确可以利用投影以及平面几何方法来求解。

实验二 选择结构程序设计(2学时)

一、实验目的

掌握选择结构程序设计的一般方法及选择结构程序的调试方法。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

你知道你生日那天是星期几吗,还有你知道你爸爸生日那天是星期几吗?你可能会说:可以查万年历啊。那么,不查万年历你能计算出来吗?

以下两题,任选其一解答。

1.编程序实现:输入一个年份y,求出从公元1年1月1日到y年1月1日,总共有多少天,并求出y年的1月1日是星期几。

2.编程序实现:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几。

四、常见问题

疑问1:闰年的规律是不是四年一闰?

答:四年一闰是儒略历(儒略也就是凯撒大帝)的置闰规则。我们现在使用的是格里高利历,置闰规则是每400年97闰。

疑问2:公元1年1月1日是星期几呢?

答:星期一。

疑问3:据说从儒略历改为格里高利历时,将1582年10月4日的下一天定为格里高利历的10月15日,中间销去了10天,这会不会影响星期几的计算?

答:这个调整是对儒略历误差的纠正,并不会影响总天数和星期几的计算。

疑问4:这里计算总天数,好像要用到循环程序吧?

答:其实根据闰年的置闰规则,不使用循环也可以计算出来总天数。当然,你想使用循环编写该程序也是可以的。

实验三 循环结构程序设计(2学时)

一、实验目的掌握循环结构程序设计的一般方法及循环结构程序的调试方法。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

以下两题,任选其一解答。

1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。

2. 若还款方式采用等额本息还款法(即贷款期限内每期以相等的额度偿还贷款本息,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。

四、常见问题

疑问1:等额本息还款法每个月的还款额怎么计算,应该有个公式吧,要不然怎么计算出来每个月应还的利息与本金?

答:的确有一个计算公式。当然你可以自己推导出来(这样你会很有成就感!),要不然就从网上搜索出来。

实验四 循环程序综合应用(4学时)

一、实验目的:

掌握循环结构程序设计的一般方法及循环结构程序的调试方法,能够综合运用顺序、选择和循环结构解决一般难度的实际应用问题。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

以下两题,任选其一解答。

1.编程序实现如下功能:输入任意一个年份和月份,按以下格式输出该月份的公历日历。

要求由程序计算出来该月份的1日是星期几,并用循环控制打印。打印样例如下:

2012年日历

==========

9月

---------日 一 二 三 四 五 六2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30-------------------------

2.编程序实现如下功能:输入任意一个年份,按以下格式输出该年份全年的公历日历。要求由程序计算出来每个月份的1日是星期几,并用循环控制打印。

四、常见问题

疑问1:如何控制某个月1日的打印位置?

答:先由程序计算出来该月份的1日是星期几,然后控制在打印“1”之前打印相应个数的空格。

疑问2:如何控制每周和每月的打印换行?

答:可以根据当前这一天的打印位置控制每周的打印换行,并根据该月份的天数控制每月的打印换行。

实验五 字符串处理综合应用(4学时)

一、实验目的

掌握字符串处理的一般方法及字符串处理应用程序的调试方法,能够综合运用选择、循环结构和数组、指针解决一般难度的实际应用问题。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

以下两题,任选其一解答。

1.编程实现,输入一个整数的小写金额值(即不考虑角和分),转化为大写金额值并输出。先实现基本功能,如输入1002300,可以输出“壹佰零拾零万贰仟叁佰零拾零元整”。

2.编程实现,输入一个小写金额值,转化为大写金额值输出。要求实现相对完善的功能,如输入1002300.90,应该输出“壹佰万贰仟叁佰元零玖角整”。

四、常见问题

疑问1:如何才能分离出整数中的每一位数字?

答:可以利用整数的求余数和除法运算实现数字的分离,同时将分离出的数字存入到一个事先定义好的数组中,每个数组元素只存储一位数字。

疑问2:若不能确定整数的实际位数,如何控制分离过程?

答:可以通过循环控制数字的分离过程,每循环一次分离出来当前的最末一位,然后去掉最末一位,直至分离出所有的位。

疑问3:如何控制给某位数字添加合适的数量单位,如万、仟、佰、拾、元?

答:可以根据该数字在原小写数值中的位置进行控制,如第0位单位为“元”,第1位单位为“拾”,依此类推。

实验六 文件应用程序设计(2学时)

一、实验目的掌握文件应用程序设计的一般方法及其调试方法。

二、实验要求

1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。

3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。

5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。

6.源程序注释信息可以包括以下几方面内容:

⑴程序功能描述。

⑵程序版本号、创作日期。

⑶作者信息描述:班级、学号、姓名。

⑷问题分析描述。

⑸算法设计描述。

⑹关键语句注释说明。

⑺调试运行过程中出现的错误及改正方法。

⑻输入数据样例。

⑼输出数据样例。

三、实验内容

以下两题,任选其一解答。

1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。要求将输出结果写入到数据文件中。

进程管理实验c语言版 篇7

一、需求分析

本通讯录是一款具有基本通讯信息管理功能的系统。包括基本添加,修改,删除,查询和输出等功能。其中联系组是为了更好地管理联系人信息,如常用的组有亲戚,家人,朋友,同学等。用户添加的信息存储到文件当中,本系统的数据存储文件包括group.dat和linkman.dat,其中group.dat存储组信息;而linkman.dat则存储联系人的信息。用户登陆系统后,根据需要,选择操作类型。系统一启动,便将相关数据文件装载进内存,如果数据文件不存在,系统将会创建新的数据文件。并将数据文件内的记录存放在链表数据结构类型中,接下来用户所有的操作,都是对链表的操作。当用户退出系统时,系统将自动将链表的信息存进数据文件。本系统中包含两个链表:group链表和linkman链表,分别对应group,dat 和linkman,dat两个数据文件。

1、组信息管理模块: ◎添加新组信息:当用户添加一个新组时,这个新组将被添加到group.dat文件的末尾,如果添加的组已存在则返回出错信息。

◎修改已有组信息:用户首先输入所要修改的联系组,然后系统查询该联系组存不存在。若存在,则要求用户输入新的信息,并进行替换;若不存在,则返回错误信息。

◎删除已有组:用户首先输入所要删除的组,然后系统查询该组存不存在。如果存在,则先删除该组下的所有联系人的信息,再删除该组;如果所要删除的信息不存在, 则返回错误信息。

◎删除所有已有组信息:该操作没有输入值。如果原来group.dat文件中没有联系组,返回错误信息;否则,删除所有联系组,同时删除各个组下的联系人信息。

◎组查询功能:按用户输入的查询条件,在group.dat文件中查询相关信息。若存在符合条件的组,则输出相应的组信息;若不存在,则返回出错信息。

◎输出所有组信息:将group.dat中所有组全部输出来。

2、联系人信息管理模块: ◎添加联系人:当用户添加一个新联系人时,这个联系人的信息将被添加到group.dat 文件的末尾,若添加的联系人已存在,则返回出错信息。添加一个联系人时,他所

属的组成员个数同时增加1。

◎修改联系人:用户首先输入所要修改的联系人,然后系统查询该联系人存不存在。

若存在,则要求用户输入新的信息,并进行替换;若不存在,则返回错误信息。◎删除联系人:用户首先输入所要删除的联系人,然后系统查询该联系人存不存在。

如果存在,则删除,并返回相关信息;如果所要删除的信息不存在,则返回错误信 息。删除一个联系人时,他所属的组成员个数同时减少1。

◎删除所有联系人:该操作没有输入值。如果原来linkman.dat文件中没有联系联系

人,返回错误信息;否则,删除所有联系人信息。

◎联系人查询功能: 按用户输入的查询条件,在linkman.dat文件中查询相关信息。

若存在符合条件的联系人,则输出相应的联系人信息;若不存在,则返回出错信息。

而且提供不同种类的查询,如:按联系人姓名来查询,按联系人电话来查询,按联 系人所在的组来查询。

◎输出所有联系人信息:将所有联系人信息输出。

二、概要设计

1、抽象数据类型定义: /* **********************存储结构设计**************************** */ /**************节点类型设计***************/ typedef struct{ char group_num[10];//组号 char group_name[20];//组名称 int mem_num;//组内联系人个数 }GroupType;//存放一条组信息 typedef struct{ char mem_num[10];//联系人号 char mem_name[20];//联系人名称 char mem_sex[2];//联系人性别 char mem_phone[20];//联系人电话

char mem_addr[50];//联系人地址

char mem_group_num[10];//联系人所在组的组号 }LinkmanType;/*************线性表存储结构设计**************/ typedef struct groupnote{ GroupType groupdata;//组数据信息 struct groupnote *next;}*GroupNote;//组表节点 typedef struct{ GroupNote head, tail;//分别指向组信息链表的头结点和尾节点 int lenth;//链表中元素个数 }GroupList;typedef struct linkmannote{ LinkmanType linkmandata;struct linkmannote *next;}*LinkmanNote;//联系人表节点 typedef struct{ LinkmanNote head, tail;//分别指向联系人信息链表的头结点和尾节点 int lenth;//链表中元素个数

}LinkmanList;/*************基本操作列表******************/ /*************组管理模块功能函数**************/ ◎void addGroup(;//操作类型号是1 ◎void deleteCroup(;//操作类型号是2 ◎void deleteAllGroup(;//操作类型号是3 ◎void selectGroup(;//操作类型号是4 ◎void printAllGroup(;//操作类型号是5 /*************联系人模块功能函数**************/ ◎void addLinkman(;//操作类型号是6 ◎void updateLinkman(;//操作类型号是7 ◎void deleteLinkman(;//操作类型号是8 ◎void deleteAllLinkman(;//操作类型号是9 ◎void selectMenu(;//操作类型号是10 ○ selectByName(;//查询子菜单下的类型号1 ○ selectByPhone(;//子菜单下的类型号2 ○ selectByGroup(;//子菜单下的类型号3 ◎void printAllLinkman(;//操作类型号是12 /*************系统基本操作**************/

◎ void systemMenu(;//系统菜单

◎ void readFromFile(;//将数据文件导入内存并存储在单链表中,系统一开始运行时,就将数据文件读入内存。

◎ void writeToFile(;//将内存单链表中的数据写入数据文件

◎ void exitSystem(;//退出并保存,操作类型号是0,退出系统时自动将链表中的数据写入数据文件。

◎GroupNote selectGroupPub(char *name;/*组查询的公共函数*/ ◎LinkmanNote selectLinkmanPub(char *name;/*联系人查询的公共函数*/ ◎void deleteByGroup(char *groupname;/*删除某一组下的所有联系人信息*/◎void printLinkman(LinkmanNote ln;/*输出ln节点里联系人的信息*/

三、详细设计

详细设计中主要用了PDA(问题分析图来进行设计。考虑到链表基本操作书上都有,所以这里凡是涉及到链表的基本操作,都没有给出,只轻轻带过。到代码实现部分再具体实现这些功能。

/************************系统功能模块详细设计*************************/

1、系统菜单函数systemMenu(的PAD图: List all menu items Choose the option addGroup(1 3 4 5 6 7 8 9 10 11 0 deleteGroup(deleteAllGroup(selectGroup(printAllGroup(addLinkman(updateLinkman(deleteLinkman(deleteAllLinkman(selectMenu(printAllLinkman(exitSystem(option=

2、查询菜单函数selectMenu(的PDA图: List all menu items Choose the option selectByName(1 2 3 0selectByPhone(selectByGroup(systemMenu(option=

3、加载数据文件函数readFromFile(:加载数据文件时,首先判断数据文件存不存在。如

果不存在,输出相关错误信息并返回主菜单;若存在,则打开数据文件group.dat和linkman.dat。接着,判断数据文件是不是为空。如果为空,则什么都不做;若不为空,则建立两个链表group和linkman,并循环将group.dat和linkman.dat两个数据文件中的每一条记录分别加载到group和linkman两个链表中。注意,每读入一条新纪录,则动态开辟一个存储节点,将记录信息读入这个节点,然后将这个节点采用尾插法插入相应链表中。

对应PDA图如下: Open the files Files exist? return nothing Load the files Files empty? Load the files Build linklist group def Build linklist linkman Until group.dat end Until linkman.dat end Malloc a new note Read current record into the note Insert the note into the linkman Malloc a new note Read current record into the note Insert the note into the group

4、保存数据函数writeToFile(:将group和linkman两个链表中的所有信息分别存储到group.dat和linkman.dat中。每存储进一个节点则将对应的节点删除(头删除法,释放存储空间。由于存储节点时,从链表的首位置依次循环将所有节点都写入数据文件。对应的PAD 图如下: Until the group empty Write current note into group.dat Delete current note from group Until the group empty Write current note into linkman.dat Delete current note from linkman Close the files

5、退出系统函数exitSystem(:退出系统,退出时将保存内存中的数据信息。Call the writeToFile(Exit the system

6、组查询公共函数selectGroupPub(char *name: /************************组管理功能模块详细设计*************************/

1、添加组函数addGroup(:开辟一个新的结点,提示用户输入要添加的组信息,并判断这

个组是否已经存在。如果存在,返回错误信息;若不存在则将这个节点插入到group链表的尾部。最后判断用户是否要继续添加。如果是,则继续完成上述过程;否则,返回主菜单。

Build the group

Group not exist? While choice Malloc a new note Put in new info Print error info Info already exist? Insert the note into group Put in choice(0/1

2、修改组函数updateGroup(:首先,提示用户输入所要修改的组的组名称。然后查询,如果组不存在,则输出出错信息并返回主菜单。否则,提示用户输入新的组信息替换原来的组信息。

Put in group_name Error and ruturn Info not exist? Put in the new info

2、删除组信息函数deleteGroup(:删除某一个组时,同时将这个组下的所有联系人信息也

一并删除,所以进行操作之前,必须要求用户确认。首先,提示用户输入所要删除的组的组名称。判断该组存不存在,若不存在,出错并返回;否则,要求用户确认操作,若用户取消操作,则退出;否则,首先在linkman链表中查找该组下的所有联系人,并一一将它们删除,最后从group链表中删除该组。

Put in the group_name

Info not exist? Error and return Are you sure? Return Select from linkman and delete all info belonged to the group note Delete this group note

3、删除所有组信息函数deleteAllGroup(:删除所有组信息时,首先删除所有联系人,再删

除所有组。

Delete All Linkman Delete all group Return Are you sure ?

4、组查询函数selectGroup(:因为组信息不多,所以这里只提供一个查询函数,即按组的

名称来查询。首先,用户输入组名称,系统在group链表中查询,若存在,则输出该组的信息;否则出错返回。

Put in group_name Select it from group Print the info Find? Return

5、输出所有组信息函数printAllGroup(:这个就是将group链表的所有节点信息输出来。/************************联系人管理功能模块详细设计*************************/ 由于addLinkman(,updateLinkman(,deleteLinkman(,deleteAllLinkman(,printAllLinkman(和组管理模块对应功能是基本相同的,所以这里就不再对它们进行详细设计了。下面主要对查询功能给出详细设计。

1、按名字查询函数selectByName(:首先,用户输入所要查询的联系人姓名。系统按照联

系人姓名在linkman链表中进行查询,找到符合条件的则输出该联系人的所有信息。否则,输出出错信息。

Put in mem_name Select it from linkman Print the info Find? Error and return

2、按电话号码查询函数selectByPhone(:首先,用户输入所要查询的电话号码。系统按照电话号码在linkman链表中进行查询,找到符合条件的则输出该联系人的所有信息。否则,输出出错信息。

Put in mem_phone Select it from linkman Error and return Find?

Print the info

2、按组查询函数selectByGroup(:首先,用户输入所要查询的组的组名称。系统按照组名

称在group 链表中查询,如果该组不存在则出错并返回;否则,取得该组的组号,并按照组号在linkman 链表中进行查询,找到符合条件的则输出该组下所有联系人的信息。否则,输出出错信息。注意:由于一个组下的联系人可能不止一个,所以,系统在查询联系人信息时应该遍历全表,而不能像上两个函数一样,找到符合条件的信息就可以退出查找了。

上一篇:美的集团财务管理论文下一篇:沟通纪要