C语言实现半波全宽算法,C语言程序设计实验电子稿

44cb7578e1df5412b94317daaa3307ba.gifC语言程序设计实验电子稿

下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。

2.下载的文档,不会出现我们的网址水印。

3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。

文档包含非法信息?点此举报后获取现金奖励!

下载文档到电脑,查找使用更方便

15

积分

还剩页未读,继续阅读

关 键 词:语言程序设计

实验

电子

资源描述:

1.3 实验一 熟悉C语言的VC++6.0编程环境

一、实验目的与要求

1. 学会使用Visual C++集成开发环境。

2.掌握简单C程序的编写、编辑、编译、连接和运行。

3.初步学会Visual C++环境下简单调试C程序的方法。

二、实验内容

1.程序运行题

(1)打开VC++6.0环境。

(2)在VC++6.0环境的编辑窗口中,输入如下程序保存为myexp1_1.cpp。

(3)选择 【组建】"【编译 myexp1_1.cpp】(可按快捷键CTRL+F7)命令对程序进行编译。

(4) 选择【组建】"【组建】(按快捷键F7)命令对程序进行连接。

(5) 单击【!】按钮或选择【组建】"【执行】菜单项(按快捷键F5),运行程序。

(6) 判断结果正确与否。

#include void main()

{ int a, b, sum;

a=123;

b=456;

sum=a+b;

printf(“a+b= %d\n”,sum);

}

填写运行结果:

关闭上面的程序,按上面的步骤再次输入如下的程序,进行编译、连接和运行,写出运行结果。

#include void main()

{ int m=7,n=4;

float a=38.4,b=6.4,x;

x=m/2+n*a/b+1/2;

printf(“%f\n”,x);

}

填写运行结果:

思考: 把前面的语句x=m/2+n*a/b+1/2;改为x=m/2.0+n*a/b+1.0/2;

运行结果将会是什么?

2.程序改错题

程序改错1:

⑴ 输入如下错误的程序,然后进行编译和连接,仔细检查并修改错误,再进行编译连接,直到没有错误为止。

⑵ 运行程序,

#include void mian( )

{ printf(“We are studying C language!\n)

}

程序改错2

输入并运行下面一个需要在运行时输入数据的程序,程序要求从键盘输入三个实数,输出它们的和。

#include mian( )

{ float a,b,c,sum;

printf(" Input a,b,c: ")

scanf("%f %f %f",&a,&b, c);

sum=a+b+c;

printf("\n sum=%f\n",sum);

}

⑴ 输入该程序,然后进行编译和连接,如果出错,仔细检查并修改错误,再进行编译连接,直到没有错误为止。

⑵ 运行程序,按照输入输出示例提示输入a、b、c三个变量的值,变量值之间用空格分隔,输入完毕按回车键【Enter】。

⑶ 查看运行结果,判断结果正确与否。

输入输出示例:

Input a,b,c:3 5 6

sum=14.0

再次运行程序并按如下的格式输入数据,观察结果是否正确?为什么?

Input a,b,c: 3,5,6

sum=?

思考: 改正程序的错误后,把printf语句中的%f改成%d,再运行程序,有什么结果?

Input a,b,c: 3.5,5.5,6.5

结果:

3.程序完整题

完整题1

二整数整除程序模板如下:

#include void main( )

{ int a,b, div;

printf(" Input a,b: "); /*提示输入二个数*/

scanf("%d%d",&a,&b); /*从键盘输入二个数存储在变量a,b中*/

/*除法运算,相除的结果放在变量div中*/

/*用%d输出结果*/

}

输入输出示例:

Input a,b:3 5

div=0

Input a,b:5 3

div=1

思考:

把上述int a,b,div;改成float a,b,div;

scanf("%d%d",&a,&b);中的%d改成%f,同时把输出语句中的%d改成%f,运行程序后,再用前面的数据输入,结果会发生如何变化?为什么有这样的变化?

Input a,b:3,5

div=

Input a,b:5,3

div=

完整题2

仿照教材中例1-2程序,在横线地方填写语句,输入圆柱体的半径和高,计算并输出圆柱体的体积和表面积。

#include void main( )

{ ; /* 定义变量*/

printf("请输入圆的半径和高:\n"); /*在屏幕上显示提示信息*/

scanf("%f%f", &r,&h); /* 从键盘输入半径和高给变量r*/

; /* 计算体积*/

;/* 计算表面积*/

printf("v=%f,s=%f\n", v,s) ; /* 输出体积和表面积*/

}

输入与输出:

请输入圆的半径和高:

5.0 8.0

输出结果?

试一试:

如果把上述程序中所有的%f改成%d,再次运行程序,仍然输入“5.0 8.0”,输出结果会是什么?分析结果。

把上述程序中的第一个\n去掉,再编译运行程序,有什么变化?试说出\n的作用。

2.5 实验二 编写几个简单的C程序

一、实验目的与要求

1. 掌握C语言基本数据类型的概念,理解数据类型与运算的关系。

2. 掌握简单变量的定义,算术表达式和赋值表达式的使用。

3. 掌握基本输出语句的使用。

4. 进一步熟悉C程序的编辑、编译、连接和运行的过程。

5. 掌握简单C程序查错方法,编写几个简单程序。

6. 实验4学时

二、实验内容

1.程序验证或填空

(1) 编译和运行下面程序,查看执行的结果:

#includeint main(void)

{

int si=-1;

float f=5;

double df=3;

printf("si = %d, f = %f, f = %lf\n", si,f,df);

return 0;

}

若把输出语句中的格式控制中的格式说明符的顺序改变一下,会有什么结果?

再把%lf修改为%f,运行会有什么结果?

(2)分析程序,并上机运行验证运行结果

#include “stdio.h”

void main( )

{ printf(“\t*\n”);

printf(“\t\b* * *\n”);

printf(“\t\b\b * * * * *\n”);

}

(3) 运行程序,并分析结果。

#include “stdio.h”

void main( )

{ int a=10,x=5,y=6;

a+=a*=6;

x=y++;

y=++x;

a=x+++y;

printf(“%d,%d,%d\n”,a,x,y);

(4)不用第3个变量,实现将二个数进行对调,请填空。

#include “stdio.h”

void main( )

{ int a,b;

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

printf(“a=%d b=%d\n”,a,b);

a= ;

b= ;

a= ;

printf(“a=%d b=%d\n”,a,b);

}

2.程序改错

改正下面程序中的多处错误。计算某个数x的平方y,并分别以“y = x*x”和“x*x = y”的形式输出x和y的值。x的值由键盘输入。

输出示例(假设x的值为3):

9 = 3*3

3*3 = 9

源程序(有错误的程序)

#includeint main(void)

{

int y;

y = x*x;

printf("%d = %d * %d",x); /* 输出

printf("d * %d = %d", y);

}

3.一般编程题

编程题1

编写程序,输入二个整数,计算它们的和、差、积、商和余数,并按5+11=16这样的输出格式输出结果。

编程题2

编写程序,输入二个实数,计算它们的和、差、积、商,并按32.24=12.2+20.04这样的输出格式输出结果。实数分别定义为单精度实数或双精度实数。

编程题3

编写程序,从键盘输入一个大写字母,改用小写字母输出。

编程题4

求华氏温度150 ℉对应的摄氏温度。计算公式如下,其中:c表示摄氏温度,f表示华氏温度。

要求输出结果为: fahr = 150,celsius = 66

思考:如果使用公式计算华氏温度150 ℉所对应的摄氏温度,计算结果是否一样?为什么?

编程题5 编写程序,从键盘输入学生的三门课成绩,求其平均成绩(保留小数点后1位)。

4.较难编程题

编程题1

当n为三位十进制整数时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。

这里增加了一个题目

输出示例:

n为整数152时,它的个位数字是2,十位数字是5,百位数字是1

提示:n的个位数字digit1的值是n%10,十位数字digit2的值是(n/10)%10,百位数字digit3的值是n/100。

编程题2

将从键盘输入的实型十进制数分离为整数部分和小数部分后输出。如输入233.55,输出为:233.55=233+0.55。

编程题3

计算定期存款的本金与利息之和。设银行定期存款的年利率rate为2.25%,存款期为n年,存款本金为money元,具体的数字由键盘输入,编程计算n年后的本金与利息之和(提示,利用pow函数)。

3.5 实验三 选择结构程序设计

一、实验目的与要求

1. 理解C语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。

2. 掌握利用if结构实现选择结构的方法。

3. 掌握利用switch结构实现多分支选择结构。

4. 结合程序掌握一些简单的算法,学习调试程序

5. 实验4学时

二、实验内容

1.程序改错题

改正下面程序中的错误。输入实数x,计算并输出下列分段函数f(x)的值(保留1位小数)。

输入输出示例1(改正后程序的运行结果)

Enter x:100

f(100.00)= 0.1

输入输出示例2(改正后程序的运行结果)

Enter x:23

f(23.00)= 23.0

源程序(有错误的程序)

#include#includevoid main(void)

{

double x;

printf("Enter x: \n");

scanf("=%f", x);

if(x = 100) {

y = 1/sqrt(x)

}

else (x != 100) {

y = x;

}

printf("f(%.2f) = %.1f\n",x,y);

}

2.一般编程题

编程题1

输入任意三个整数a,b,c,求3个数中的最大值和最小值。

编程题2

输入x,计算并输出下面分段函数f(x)的值(保留2位小数)。请调用sqrt函数求平方根,调用pow函数求幂。

输入输出示例(共运行3次)

Enter x:10

f(10.00) = 3.16

Enter x:-0.5

f(-0.50) = -2.75

Enter x:0

f(0.00) = 0.00

成本

编程题3

有一函数:

x (-5void main()

{

int x,number;

printf("请输入一个整数:");

scanf("%d",&x);

do{

x=number%10;

number=number/10;

printf("%d", x);

}while(number!=0);

printf("\n");

}

如果输入的是一个负整数,程序应该如何改?

(2)程序改错

计算表达式1+2!+3!+…10!的值,改正下面程序中的多处错误。

源程序(有错误的程序)

#includevoid main(void)

{

int sum1,sum2, i,j;

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

for(j=1,j<=i,i++)

sum1*=j;

sum1+=sum2;

printf("%d ",sum1);

}

3.一般编程题

编程题1

用三种循环结构(while语句、do-while语句、for语句),求1000以内奇数的和。

编程题2

输入一个正整数n,计算 的前n项之和,输出时保留6位小数。

输入输出示例1:

Enter n:5

sum = 1.787302

输入输出示例2:

Enter n:23

sum = 2.549541

编程题3

编写程序求a+aa+aaa+……+aa……a,a是一个数字,有n个a,实际的n和a值由键盘输入,输出格式如下示例(此时a是3,n是5)。

3+33+333+3333+33333=37035

提示:将a乘上10倍并加上a,变成aa,再将aa乘上10倍并加上a,变成aaa,依次类推,在变化的同时将a,aa,aaa进行累加。

编程题4

统计从键盘输入的一行字符中的英文字母的个数。

4.较难编程题

编程题1

输出1-999之间的所有同构数。(同构数:一个数出现在它的平方数的右端,这个数就称为同构数,如5出现在25的右端,5是同构数,25出现在625右端,25也是同构数。

编程题2

如下程序利用c语言的数学函数库,求解sinx的近似值, 根据高等数学的公式,sinx =x-x3/3!+x5/5!-...(-1)k-1*x2k-1/(2k-1)!+...,直到最后一项的绝对值小于1e-7为止。请阅读此程序,并根据cosx =1-x2/2!+x4/4!-...(-1)k*x2k/(2k)!+...,实现计算cosx的程序代码。(exph4_1.cpp)

5.4 实验五 函数与预处理

一、实验目的与要求

1. 掌握C语言函数的定义方法、函数的声明及函数的调用方法。

2. 理解函数实参与形参的对应关系以及“值传递”的方式。

3. 掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。

4. 掌握动态存储分配的方法。

5. 掌握宏定义和文件包含处理方法。

6. 实验4学时

二、实验内容

1.程序验证与改错题

(1) 程序验证题

① 下面程序执行的结果是什么

void swap(int x, int y)

{

int temp;

temp=x;

x=y;

y=temp;

}

void main()

{

int a,b;

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

if(a>b)

swap(a, b);

printf(“%d\t %d”, a,b);

}

思考:为什么a,b的值没有交换?

② 调用函数fun计算:m=1+2+3+4+…+9+10,并输出结果。请验证下面的程序是否符合题目要求。

#include”stdio.h”

int fun(int n)

{

int m, i;

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

{

m+=i;

}

return m;

}

void main()

{

printf("m=%d\n", fun(10));

}

在上面程序的基础上,修改程序. 计算m=1-2+3-4+…+9-10。

(2)程序改错题

下列程序的功能是利用自定义函数计算一无符号的整数各位数字的乘积。

#includeunsigned f(unsigned num)

{

unsigned k=0;

do

{

k*=num/10;

num/=10;

}while(k);

return k;

}

void main()

{

int x;

printf(“input x=:\n”);

scanf(“%d”, x);

printf(“%d”, f(x));

}

2.一般编程题

编程题1 编写一函数,把输入的4个数字字符转换成一个int数据存放,如输入4123这字符转换为4123这个整数,并通过主函数验证结果。

编程题2 编写程序求:1*1*1+2*2*2+3*3*3+4*4*4+5*5*5

提示:主函数用来现实结果,f1( )函数用来求一个数的立方,f2( )函数用来求和。

#include int f1(int n)

{

……

}

int f2(int m)

{

……

}

void main()

{

……

}

编程题3 定义两个带参数的宏,将两个参数的值相加和相减,并写出程序,输入两个数作为使用宏时的实参。输出相加和相减后的和与差。

编程题4

编程输出2到10000之间的所有完数。所谓完数是指因子之和与它本身相等的数。如6=1+2+3,6是一个完数。

要求:定义函数 factor(m) 判断m是否为完数;由主函数调用它,来对所有2到10000之间的所有数进行判断。

#include #include int factor(int m)

{

int i,s=0;

……

}

void main()

{

int i,m,sum;

……

}

3.较难编程题

编程题1 用函数调用实现求两个数的最大公因子和最小公倍数

编程题2 用递归方法求1+2+3+...+n并将其中素数去除后之和。

#include #include int isprime (int number)

{

……

}

long fact(int n)

{

……

}

void main()

{

int m,sum;

……

}

6.4 实验六 数组

一、 实验目的与要求

1. 掌握一维数组的定义、赋值和输入输出的方法。

2. 理解一维数组的存储方法及下标的表示方法。

3. 掌握与数组有关的算法(特别是排序算法)。

4. 掌握二维数组的定义、赋值和输入输出的方法。

5. 理解二维数组的存储方法及下标的表示方法。

6. 实验4学时。

这里有改动

二、实验内容

1.程序验证题与改错题

(1)程序验证题

① 给定一个整型数组a,要求求出其中小于0的元素的个数。请验证下面的程序是否符合题目要求。

#define N 10

void main()

{

int a[N]={11,2,4,-1,5,-3,-66,0,10,-5};

int i; /*变量i用于for循环*/

int count=0; /*变量count用于技术,初始化为0*/

for (i=0;i#define N 3

void main()

{

int a[N][N]={{1,2,3},{4,5,6},{7,8,9}};

int i,j; /*变量i,j用于for循环*/

int sum=0; /*变量sum用于求和,初始化为0*/

for (i=0;ie。若找到相等元素,则返回元素下标,否则返回-1表示无此数。

7.4 实验七 字符与字符串处理

一、实验目的与要求

1. 掌握C语言字符型数据的概念,理解字符型与整型数据之间的关系。

2. 掌握字符的输入与输出。

3. 掌握转义字符常量、字符串常量的使用。

4. 掌握字符、字符串与字符数组的输入与输出。

5. 掌握字符串函数的使用\字符串数组的使用。

6. 实验课时2学时

二、实验内容

1.程序改错题

① 调试下列程序,使之具有如下功能:任意输入两个字符串(如:"ningbo"和"china"),并存放在a,b两个数组中。然后把较短的字符串放在a数组,较长的字符串放在b数组。并输出。程序中的strlen是库函数,功能是求字符串的长度,它的原型保存在头文件"string.h"中。调试时注意库函数的调用方法,不同的字符串输入方法,通过错误提示发现程序中的错误。

#include #includevoid main()

{

char a[10],b[10],ch;

int c,d,k;

scanf("%s",&a);

scanf("%s",&b); /* error */

printf("a=%s,b=%s\n",a,b);

c=strlen(a);d=strlen(b);

if(c>d)

{

for(k=0;kvoid fun(char *s)

{

int i,j;

for(i=0;j=0;s[j]!=\0;i++) /* error */

if(s[i]>=0 && s[i]<=9)

s[j++]=s[i];

s[j]=”\0”; /* error */

}

void main()

{

char item[80];

printf("\nEnter a string :");

gets(item);

printf("\n\nThe string is : %s\n",item);

fun(item);

printf("\n\nThe string of changing is : %s\n",item);

}

2.一般编程题

编程题1

请编一个函数fun(char*s),该函数的功能是把字符串中的内容逆置。

例如:字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。

注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include #include #define N 81

void fun ( char s[])

{

/*请填写完整*/

}

void main()

{ char a[N];

printf ( "Enter a string : ");

gets ( a );

printf ( "The original string is: " );

puts( a );

fun( a );

printf("\n");

printf ( "The string after modified : ");

puts (a);

}

编程题2

请编写输入以下图案(1)、(2)的程序,图案的行数由输入的值确定。

(1) (2)

3.较难编程题

编程题1

编写程序:程序功能是从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,例如,若输入edcba,则应输出abcde。

#include#includevoid main()

{

int i,j;

char string[100], c;

printf("Please input a string:");

gets(string);

/*请填写完整*/

printf("result:%s\n", string);

}

编程题2

编写程序:程序功能是统计子串substr在母串str中出现的次数。要求编写并调用函数fun的功能是:从str所指字符串中,找出substr所指子串的个数作为函数值返回。例如,当str所指字符串中的内容为abcdabfab,substr所指字符串的内容为ab,则函数返回整数3。

#include count(char str[],char substr[])

{

/*请填写完整*/

}

void main()

{char str[80],substr[80];

int n;

gets(str);

gets(substr);

printf("%d\n",count(str,substr)); }

8.4 实验八 指针

一、 实验目的与要求

1. 理解和掌握指针的概念,定义和使用指针变量。

2. 掌握函数之间指针的传递关系。

3. 掌握通过指针操作数组中元素的方法。

4. 实验2学时

二、实验内容

1.程序调试

(1)调试本程序,了解运算符*与&的用法,并注意容易出错的地方。

#includevoid main()

{ float x;

float *xptr; //①

xptr=&x; //②,此处是否可以用*xptr=&x;?

x=7.9;

printf(“The address of x is %x\n”,&x);

printf(“The value of xptr is %x\n”,xptr);

printf(“The value of x is %f\n”,x);

printf(“The value of *xptr is %f\n”,*xptr); //③

}

程序运行结果如下:

在上面的程序中,注意区别*ptr的不同意义。语句①中的*表示此处的xptr是作为一个指针变量来定义的,而语句③中的*则表示取变量xptr所指向的值,在本题中就是变量x的值,这时的*可以作为运算符来看待。这也可以理解为什么语句②中用了xptr=&x而不是*xptr=&x,因为在运算过程中*xptr所表示的就是x,如果将x的地址赋给x,肯定会产生错误。明白了*与&的用法后,可以接着看下面一个例子,分析其出错的原因。

(2) 调试程序。下面程序中有错误,请调试修改

输入3个整数,按从小到大的顺序输出。

#include “stdio.h”

void main( )

{int a,b,c;

int *p1,*p2,*p3; //定义3个指针变量

void swap(int *p1,int *p2);

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

p1=&a; p2=&b; p3=&c; //3个指针分别指向3个整型变量

//用swap函数交换2个数,使较小数放到变量a中,较大数放到变量b中

if(a>b) swap(p1,p2); // ①

if(a>c) swap(p1,p3);

if(b>c) swap(p2,p3);

printf(“%d,%d,%d”,a,b,c); //按从小到大的顺序输出3个数

}

void swap(int *p1,int *p2) //swap函数试图实现2个数的交换

{ int *x;

x=p1; // ②

p1=p2; //③

p2=x; //④

}

本题编译连接都没有问题,但是不能运行出正确结果。原因在哪里呢?对语句①的调用进行分析,请大家仔细观察swap函数的实现部分。语句①表明a>b成立,因此需要将变量a和b中的数值进行调换,使其满足从小到大的排列顺序。swap函数中定义了一个指针变量x,语句②~④是以指针变量x作为中间变量,将形参指针p1和p2所指的方向进行了调换,即,使形参指针p2指向了较小值,而p1指向了较大值,但是这种交换对变量a和b并没有产生任何影响,当swap函数调用完毕后,变量a和b依然维持原有情况,无法使它们中的数值按从小到大的顺序重新排列,因此无法得到正确的运行效果。

对swap函数如何改造才能得到正确结果呢?请大家结合本题进行改错。

2. 程序完整题

运用指针对传递进来的两个整型量计算它们的和与积之后,通过参数返回,并予以输出。划横线的位置是本程序缺失的部分,请填写正确内容并运行此程序。

#include void compute(int m, int n, int *sum, int *p)

{

}

void main()

{

int x,y,sum,product;

scanf("%d%d",&x,&y); //输入两个整型量

compute(x,y,&sum,&product); //将两数和存入变量sum,积存入变量product

printf("%d %d\n",sum,product);

}

3.一般编程题

1. 用指针法统计10个数中正数、负数和零的个数,并分别求正数的总和,负数的总和。

2. 通过指向整型数组的指针将数组a[m][n]的内容按m行n列的格式输出,如一个23的数组将显示为如下所示的2行3列的形式:

4.较难编程题

1. 输入一行字符,开始用一个指针指向这行字符的开头,并依次向后移,分别统计出其中英文字母、空格、数字和其它字符的个数。

2. 输入一个正整数表示一个星期中的某一天,若此数字在[1,7]内,则 输出对应英文星期名,否则表示输入错误,例如,输入2,程序输出“Tuesday”,输入“16”,程序输出“Illegal day” 要求用指针数组处理。

9.4 实验九 结构体与链表

一、 实验目的与要求

1. 掌握结构体类型变量的定义和使用。

2. 掌握结构体类型数组的定义和使用。

3. 掌握利用结构和指针处理单向链表的方法

4. 实验4学时。

二、实验内容

1. 程序完整题

定义一个结构体变量(包括年、月、日),计算该日在本年中是第几天,注意闰年问题。以下的程序没有考虑闰年问题,请调试以下程序,并将闰年的判断加在程序中使其完整。

#include struct

{int year;

int month;

int day;

} date;

void main( )

{int i,days;

int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

printf(“Input year, month, day:”);

scanf(“%d,%d,%d”, &date.year, &date.month, &date.day);

days=0;

for(i =1; i struct

{int year;

int month;

int day;

} date;

main()

{

}

daysum(int year, int month, int day)

{

}

3. 一般编程题

(1) 宁波大学阳明学院分流,信息科学与工程学院有4个专业,分别是通信工程、电子信息科学与工程、自动化、光电信息工程,编写程序统计每个专业的报名人数,描述候选专业的信息用专业名和报名数表示。

(2) 从键盘输入n个学生的3门课程(语文、数学和英语)考试成绩,计算每个学生的平均成绩,并按平均成绩从高到低排序输出每个学生的信息。要求使用结构体数据类型

(3) 利用下面的节点结构:

struct Node

{char data;

struct Node *link;

}

实现:从键盘输入一行字符,然后按输入顺序建立链表,最后输出整个链表。其中建立链表和输出链表的过程分别用不同的函数实现。

(4) 假设有a、b两个链表,每个链表中的节点包括学号、一门课程的成绩。要求把两个链表合并,按学号升序排列。(两个链表中不存在重复的学号)

4. 较难编程题

(1) 用结构体数组修改教材上的例9-2,输入n个职工的姓名,工资,奖金和扣款,对每个职工在原来工资的基础上增加5%,计算职工的实发工资并输出每个职工的工资条。

(2) 编写一个程序实现对学生数据的操作,每个学生结点包括学号和三门课程的成绩以及平均分,要求:①输入若干学生的学号和成绩建立链表; ②能对链表进行输出; ③能根据学号删除指定的学生结点;④能插入给定的学生结点。围绕以上4个功能建立一个简单的菜单,使用户能方便地选择不同功能进行操作。

第10章 文件

10.1 知识要点

1. 文件的功能

文件的引入,使得c处理大量数据时非常方便,可以从存储介质上直接导入导出,而不必

展开阅读全文

温馨提示:

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。

2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。

3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。

4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。

5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。

6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。

7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

bb6249c6567dd4384e6ab3556cfc22ed.gif 

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

本文标题:C语言程序设计实验电子稿

链接地址:https://www.renrendoc.com/p-84911603.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
页面置换算法是操作系统中的重要概念,其目的是为了优化内存的利用。常见的页面置换算法包括最近最少使用(LRU)算法、先进先出(FIFO)算法、时钟算法等。 以下是一个简单的页面置换算法程序设计的C语言实现示例,以LRU算法为例: ``` #include <stdio.h> #include <stdlib.h> #define MAX_PAGE_FRAMES 5 // 定义内存中的最大页帧数 int main() { int page_frames[MAX_PAGE_FRAMES]; // 定义页帧数组,表示内存中的页帧 int page_faults = 0; // 记录缺页中断的次数 int pages[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 要访问的页面序列 int n_pages = sizeof(pages) / sizeof(pages[0]); // 页面序列的长度 int i, j, k, lru; // 初始化页帧数组为-1 for (i = 0; i < MAX_PAGE_FRAMES; i++) { page_frames[i] = -1; } // 遍历页面序列 for (i = 0; i < n_pages; i++) { int page = pages[i]; int page_found = 0; // 查找页面是否在内存中 for (j = 0; j < MAX_PAGE_FRAMES; j++) { if (page_frames[j] == page) { page_found = 1; break; } } // 如果页面不在内存中 if (!page_found) { page_faults++; // 查找最久未使用的页帧 lru = 0; for (j = 1; j < MAX_PAGE_FRAMES; j++) { if (page_frames[j] < page_frames[lru]) { lru = j; } } // 替换最久未使用的页帧 page_frames[lru] = page; } // 打印当前内存中的页帧 printf("Page Frames: "); for (k = 0; k < MAX_PAGE_FRAMES; k++) { if (page_frames[k] == -1) { printf("[ ] "); } else { printf("[%d] ", page_frames[k]); } } // 打印缺页中断次数 printf("Page Faults: %d\n", page_faults); } return 0; } ``` 在这个程序中,我们使用了一个大小为`MAX_PAGE_FRAMES`的整型数组`page_frames`来模拟内存中的页帧。在程序开始时,我们将`page_frames`数组初始化为-1,表示所有页帧都是空闲的。 接着,我们遍历要访问的页面序列`pages`,对于每个页面,我们首先查找它是否已经在内存中,如果在内存中,我们不需要进行任何操作。否则,我们需要将该页面加载到内存中,并选择最

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值