C语言程序设计实验

时间:2024.4.27

                 

                  实验1  顺序程序设计

时间:20##年10月16日(周三)2:30-4:30 PM

地点:网络中心楼201机房(数学教室楼南面)

实验目的: 初步掌握VC编辑、编译、连接和运行C程序。  

实验内容:

1)输入并运行P37习题3.1和3.2的程序。

2)输入并运行P55习题3.3的程序。

3)输入并运行P59习题3.4的程序。

4)输入并运行P65习题3.5的程序。

         实验2  最简单的C程序设计

时间:20##年10月23日(周三)2:30-4:30 PM

地点:网络中心楼201机房(数学教室楼南面)

实验目的:掌握最简单C程序的设计

实验内容:编写程序

1) P84:习题6 。

2) P84:习题7。

                实验3 逻辑结构程序设计

时间: 20##年10月30日添加到日历(周三)2:30-4:30 PM
地点:网络中心楼201机房
实验目的: 学会正确使用if语句和switch语句   
实验内容:编程
1、实现函数:     y=x+1       x>0
                  y=x         x=0
                  y=x-1       x<0
2、由键盘输入a,b,c三个整数,求较大数(用if …else)
3、从键盘输入一个百分制成绩,输出相应成绩等级 ,90分以上为‘excellent’,70~89分为‘good’,60~69分为‘pass’,60分以下为‘failure’。(用switch,if …else两种语句)
4、求整数1~100所有偶数和(用for,while,do…while三种循环编程)       

                    实验4   循环结构
时间: 20##年11月6日添加到日历(周三)2:30-4:30 PM
地点:网络中心楼201机房
实验目的:熟悉while、do-while和for循环语句
编程实验内容:
1、输出3到500间所有素数。
2、P140  习题4
3. 键盘输入n,求
P140 习题6               

                       实验5 数组
时间: 20##年11月13日(周三)2:30-4:30 PM
地点:网络中心楼201机房
实验目的: 掌握一维数组定义、赋值和输入输出方法
编程实验内容:
1.P140 习题7
2、用数组求序列前20项  :2/1,3/2,5/3,8/5,13/8,21/13,...
3.分别用起泡法、选择法对{1,0,4,8,12,65,-76,100,-45,123} 10个数排序(由小到大),给出每趟比较的结果。         

                         实验6 数组
时间: 20##年11月20日(周三)2:30-4:30 PM
地点:网络中心楼201机房
实验目的:
编程实验内容:
1. P168 习题3
2. P168 习题4
3. P169 习题12

                       实验7 函数
时间: 20##年11月27日添加到日历(周三)2:30-4:30 PM
地点:网络中心楼201机房
实验目的:掌握多文件函数程序的编译和运行。
编程实验内容:
1.用函数求3个数中较大者
2.用函数求闰年      

                         实验8  函数
时间: 20##年12月4日(周三)2:30-4:30 PM
地点:网络中心楼201机房
实验目的: 掌握多文件函数程序的编译和运行。
编程实验内容:
1.用多文件函数键盘输入k,输出3到k间所有素数。
2.用多文件函数输入一个百分制成绩,输出相应成绩等级


第二篇:C语言程序设计上机实验指导


C语言程序设计 上机实验指导

i

目录

实验一 c语言程序的开发环境 ....................................................................... 1 实验二 数据类型描述 .............................................................................................. 3 实验三 顺序结构 .......................................................................................................... 6 实验四 选择结构 .......................................................................................................... 9 实验五 循环结构 ........................................................................................................ 12 实验六 函数与编译预处理 ................................................................................ 16 实验七 数组 .................................................................................................................... 19 实验八 指针 .................................................................................................................... 23 实验九 结构体数据类型与链表 .................................................................... 25 实验十 共用体与枚举类型 ................................................................................... 27 实验十一 文件 ................................................................................................................. 29

ii

实验一 c语言程序的开发环境

一、目的、要求

1、使学生了解c语言不同于其他语言的特点。

2、掌握在c语言的开发环境中如何实现简单程序的编辑、运行,熟悉c程序的开发环境及上机步骤。

3、通过简单的c程序,熟悉c语言程序的结构特点,掌握其基本结构框架。

4、通过实践,掌握c源程序的书写格式。

二、预习内容

1、熟悉Turbo c的集成开发环境,掌握启动、退出、编辑运行的操作。

2、了解基本命令及函数:include<stdio.h>,include<math.h>,main(),

printf(),scanf()等。

三、上机内容

1、输入下列程序,记录在Turbo c 下的操作方法。

#include <stdio.h>

main()

{

printf(“I am a student!”);

}

环境的启动操作:

程序的编译方法:快捷键是 ;菜单操作是

程序的保存方法:快捷键是 ;菜单操作是

程序的运行方法:快捷键是 ;菜单操作是

运行结构的查看:快捷键是 ;菜单操作是

环境的退出操作:快捷键是 ;菜单操作是

2、预测结果并上机验证

#include <stdio.h>

main()

{

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

printf(“I am a student!\n”);

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

}

预测的结果是: 上机验证的结果是:

1

3、预测结果并上机验证

#include<stdio.h>

#include<math.h>

main()

{

int a,b,sum;

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

sum=a+abs(b);

printf(“a and b is %d”,sum);

}

程序运行后输入:5,-5

预测的结果是:

上机验证的结果是:

4、分析程序的功能,并上机验证

#include<stdio.h>

#include<math.h>

main()

{

int a,b,sum;

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

sum=abs(a+b);

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

}

程序的功能是:

上机验证的结果是:

5、试编写程序实现下列输出

*

* *

* * *

* * * *

编写的程序为:

2

实验二 数据类型描述

一、目的、要求

1、了解c语言的数据类型的种类。

3、熟悉c语言的变量与常量的定义与使用;符号常量的使用及合法标识符的命 名原则。

3、掌握数据类型的定义与使用。

4、掌握相关的算术运算符及相应表达式

5、熟悉不同数据类型间的相互转换。

二、预习内容

1、继续熟悉Turbo c的集成开发环境,掌握启动、退出、编辑运行的操作。

2、了解各种变量及常量的定义,熟悉标识符的正确含义。

3、各种运算符的结合规则及优先级

三、上机内容

1、预测结果并上机验证

(1) main()

{

int a,b;

a=b=3;

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

}

预测的结果是:

上机验证的结果是:

若将以上程序进行改写,编辑如下:

main()

{

int a,b;

a=3;

b=3.1;

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

}

则程序运行的结果是:

由此知,若赋值号左右数据类型不一致时,c语言将

(2)现有程序如下:

1 main()

2 {

3 int a=1,b=2;

4 printf(“%d”,(a=a+b,b=b+a));

5 }

程序运行的结果是:

3

若将以上程序第四行进行改写,编辑如下:

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

则程序运行的结果是:

对比以上两程序,结果不同的原因在于

(3) 若有以下程序段:

int c1=2,c2=4,c3;

c3=1.0/c2*c1;

则执行后,c3中的值是 ;

若将程序段改为:

int c1=1,c2=2,c3;

c3=1/c2*c1;

则执行后,c3中的值是

分析c3所得结果,其中的关键在于

2、填空题

(1) main()

{ int a=7, b=10;

a=a+b; b=a-b; a=a-b;

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

}

程序运行的功能是:

(2) main()

{ int a=0;

a+=(a=8);

printf("%d\n",a);

}

程序运行的结果是:

(3) main()

{

int a=2,b=5;

int m=3,n;

float c=2.1,d=4.5;

n=a/m+b*c-d/m;

printf(“%d”,n);

}

程序运行的结果是:

(4) main ()

{ int x=1;

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

}

运行该程序的输出结果是

(5) main()

4

{int x,y,z;

x=y=1;

z+=x+=y;

x=z++;

y=++x;

z=x+++y;

printf(“x=%d,y=%d,z=%d”,x,y,z); }

运行该程序的输出结果是

3、改错题

#include <math.h>

#define STA 30

main()

{int a,b=3;

A=3*PI*SIN(b);

STA=3*STA;

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

printf(“%d”,STA);

}

正确的程序应改为:

5

实验三 顺序结构

一、目的、要求

1、了解c语言的基本语句的概念。

2、了解数据的输入输出在c语言中的实现方法。

3、掌握数据的输入输出函数的使用;熟练掌握格式输入输出函数。

4、设计简单的顺序结构程序。

二、预习内容

1、了解c语言的基本结构。

2、熟悉c语言输入输出函数的使用。

三、上机内容

1、写出以下程序的运行结果

(1) 以下程序的输出结果是 。

main()

{

unsigned int a=65536; int b;

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

}

分析原因得知:

(2) 若有以下程序

main()

{ char a;

a='a'-'A'+‘B';

printf("%c\n",a);

}

执行后输出结果是 。

(3) main()

{

int a,b;

a=3;

b=3.1;

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

}

执行后的输出结果是:

分析原因得知:

2、填空题

(1)若有程序

main()

{ int i,j;

scanf("i=%d,j=%d",&i,&j);

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

6

}

要求给I赋5,给j赋10,则应该从键盘输入

(2) 输入并运行以下程序:

1 main( )

2 {int a,b;

3 float d,e;

4 char c1,c2;

5 double f,g;

6 long m,n;

7 unsigned int p,q;

8 a=61;b=62;

9 c1=’a’;c2=’b’;

10 d=3.56;e=-6.87;

11 f=3157.890121;g=0.123456789;

12 m=50000;n=-60000;

13 p=32768;q=40000;

14 printf(“a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n”,

a,b,c1,c2,d,e);

15 printf(“f=%15.6f,g=%15.2f\n m=%ld,n=%ld\n

16 p=%u,q=%u\n”,f,g,m,n,p,q);}

(a)程序的输出结果是:

在以上基础上,做以下改动:

(b)将程序第8—13行改为

a=61;b=62;

c1=a;c2=b;

f=3157.890121;g=0.123456789;

d=f;e=g;

p=a=m=50000;q=b=n=-60000;

运行程序,所得结果是 。

(c)在(b)的基础上将printf语句改为:

printf(“a=%d,b=%d\nc1=%c,c2=%c\nd=%15.6f,e=%15.6f\n”, a,b,c1,c2,d,e);

printf(“f=%f,g=%f\n m=%d,n=%d\n p=%d,q=%d\n”,

f,g,m,n,p,q);}

运行程序,所得结果是 。

(d)将p,q改用%o格式符输出。

运行程序,所得结果是 。

(e)改用scanf函数输入数据而不用赋值语句,scanf函数如下: 7

scanf(“%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u”,

&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);

输入的数据如下:

61,62,a,b,3.56,-6.87,3,157.890121,0.123456789,50000,-60000,37678,40000

(说明:lf和ld格式符分别用于double型和long型数据)分析运行结果。

三、编程题

编辑程序,输入学生的三个课程成绩(考虑数据类型)。

8

实验四 选择结构

一、目的、要求

1、掌握关系、逻辑运算符及其优先次序以及关系表达式的使用。

2、重点掌握if语句的使用形式(了解各种形式的使用)。

3、熟练掌握if语句的嵌套(清楚if??.else的配对关系)。

4、掌握选择结构的程序设计。

5、熟练掌握多分支switch语句的格式、功能及其使用。

二、预习内容

1、熟悉逻辑运算符、关系运算符的优先级,掌握表达式的书写。

2、熟悉各种分支语句。

3、掌握控制语句break的使用。

三、上机内容

1、写出以下程序的运行结果

(1)若有以下程序

main()

{

int a=4,b=3,c=5,t=0;

if(a<b)t=a;a=b;b=t;

if(a<c)t=a;a=c;c=t;

printf("%d %d %d\n",a,b,c);

}

执行后输出结果为 。

(2) 若有以下程序

main()

{ int p,a=5;

if(p=a!=0)

printf("%d\n",p);

else

printf("%d\n",p+2);

}

执行后输出结果是 。

(3) 以下程序输出的结果是 。

main()

{ int a=5,b=4,c=3,d;

d=(a>b>c);

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

}

(4) 若从键盘输入58,则以下程序输出的结果是 。 main()

{ int a;

9

scanf("%d",&a);

if(a>50) printf("%d",a);

if(a>40) printf("%d ",a);

if(a>30) printf("%d ",a);

}

(5) 有如下程序

main()

{ int x=1,a=0,b=0;

switch(x)

{case 0: b++;

case 1: a++;

case 2: a++;b++;

}

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

}

该程序的输出结果是 。

(6) 有以下程序

main()

{ inta=15,b=21,m= 0;

switch(a%3)

{ case0:m++;break;

case1:m++;

switch(b%2)

{ default:m++;

case0:m++;break;

}

}

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

}

程序运行后的输出结果是 。

(7) 有以下程序

main()

{ int i=1,j=1,k=2;

if((j++||k++)&&i++);

printf("%d,%d,%d\n",i,j,k);

}

执行后输出的结果是 。

(8) 设 a、b、C、d、m、n均为 int型变量,且 a=5、b=6、c=7、d=8、m=2、

n=2,则逻辑表达式 (m=a>b)&&(n=c>d)运算后,n的值为 。

(9) 运行程序并回答问题

main( )

{ int a,b,max,min;

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

10

if(a>b)

{ max=a;min=b;}

else

{ min=a;max=b; }

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

}

问题:

a、此程序的功能是

b、请用条件表达式语句(?:)修改程序使之完成相同的功能,其语句

是 。

2、编程

(1) 有一函数 编程求当分别输入x的值为0.3,3.9,11时,y的值。

(2)有一个不多于3位的整数,要求:

a)判断其是正数还是负数,并求出它是几位数;

b)分别打印出每一位数字;

c)按逆序打印出各位数字,例如原数为-321,应输出-123。

(3) 编辑程序实现:当用户输入字母后,全部以大写格式输出,如果不是字母

则输出提示:error

(4) 随机输入5个整型数据作为学生的课程成绩,编程实现由小到大排序输出

(对比第三章编程题,比较他们的优缺点)。

11

实验五 循环结构

一、目的、要求

1、了解goto语句及利用goto语句构成的循环。

2、掌握while语句,do??while语句,及for语句实现循环的方法及过程。

3、掌握循环语句的嵌套使用,重点是for循环。

4、熟悉break语句及continue语句在循环中的使用,区分其不同。

二、预习内容

1、熟悉while语句,do??while语句,及for语句,掌握其运行过程。

三、上机内容

1、读程序,写出运行结果

(1)以下程序运行后的输出结果是 。

main()

{ int i=10, j=0 ;

do

{ j=j+i; i--;

while(i>2);

printf(“%d\n”,j);

}

(2) 设有以下程序:

main()

{ int a1,a2;

scanf(“%d”,&a2);

while(a2!=0)

{ a1=a2%10;

a2=a2/10;

printf(“%d”,a1);

}

}

程序运行后,如果从键盘上输入456;则输出结果为 。

(3) 以下程序运行后的输出结果是 。

main()

{ int x=15;

while(x>10&&x<50)

{ x++;

if(x/3){x++;break;}

else continue;

}

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

}

(4) 有如下程序

12

main()

{ int i,sum=0;

for(i=1;i<=3;sum++) sum+=i;

printf(“%d\n”,sum);

}

该程序的执行结果是

(5) 若输入字符串:abcde<回车>, 则以下while循环体将执行 次。

while((ch=getchar()) = =’e’) printf(“*”);

(6) 以下程序的输出结果是

main()

{ int i=0,a=0;

while(i<20)

{ for(;;)

{ if((i%10)= =0) break;

else i--;

}

i+=11; a+=i;

}

printf("%d\n",a);

}

2、程序填空

(1) 请你在下面的函数中填空,完成求π的功能。其中函数pi的功能是根据

以下近似公式求π值:(π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)

#include “math.h”

double pi(long n)

{ double s=0.0;

long i;

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

return(sqrt(6*s));

}

(2) 以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位

学生的平均分并输出,补充实现该程序。

main()

{int n,k;

float score,sum,ave ;

sum=0.0;

for( )

{for(k=1;k<=4;k++)

{scanf(“%f”,&score);

13

}

ave=sum/4.0;

printf(“NO%d:%f\n” ,n,ave);

}

}

(3)下列程序的功能是计算表达式的值。该表达式如下所示。

1 1 1 1

—— + —— + ?? + ——— + ———

1*3 2*4 98*100 99*101

补充程序完成该功能。

#include “stiol.h”

main()

{flaot s;

int i;

for(________ ,________;________;_______) s+=_______;

printf(“s=________”,s);

}

(4) 利用以下程序,请填空完成如图所示的方阵输出。

13 14 15 16

9 10 11 12

5 6 7 8

1 2 3 4

main()

{int i,j,x;

for(j=4;________;j--)

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

{x=(j-1)*4+____________;

printf(“%4d”,x);

}

printf(“\n”);

}

}

(5) 以下程序的功能是输出100以内能被3整除且个位数为6的所有整数,请

填空补充完整。

main()

{int i,j;

for(i=0;_______________;i++)

{j=i*10+6;

if(_______________) continue;

printf(“%d”,j);

}

14

}

3、编程

(1) 百马百担。现有100匹马需驮100担货,其中大马驮3担,中马驮2担,

俩匹小马驮一担。编程计算需要如何安排。

(2) 利用循环嵌套实现如下图形输出。

A1

AB21

ABC321

ABCD4321

(3) 输入n个学生的成绩(n值由用户输入决定)。要求输出其中的最高分及最

低分(比较与前2章输入学生成绩题目的不同)。

(4) 输入一串字符串,以字符“#”表示输入结束。统计其中大写字母与小写

字母各出现了多少次。

15

实验六 函数与编译预处理

一、目的、要求

1、了解模块化程序设计思想。

2、熟悉函数的基本结构及定义方式。

3、重点掌握函数调用和参数传递。

4、掌握函数的嵌套调用,递归调用及递归函数设计。

5、了解变量的作用域与存储方式。

6、理解宏的概念,熟悉宏定义的方法,掌握其用法。

二、预习内容

1、熟悉函数的定义及使用。

2、重点掌握函数的调用及参数的传递。

3、了解变量的作用域。

4、掌握宏定义和文件包含等编译预处理命令

三、上机内容

1、预测结果,并验证

(1) 现有程序如下:

fun(int x, int y, int z)

{ z=x*x+y*y; }

main()

{ int a=31;

fun(5,2,a);

printf(“%d”,a);

}

程序的输出结果是 。

分析原因可知:_______________________________

(2) 有以下程序:

int a, b;

void fun()

{ a=100; b=200; }

main( )

{ int a=5, b=7;

fun();

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

}

执行后的输出结果是 。

分析原因可知:___________________________________

(3) 有以下程序

int f(int n)

{ if(n==1) return 1;

16

else return f(n-1)+1;

}

main()

{ int i,j=0;

for(i=i;i<3;i++) j+=f(i);

printf(“%d\n”,j);

}

运行后的输出结果是 。

(4) 以下程序输出的最后一个值是 。

int ff(int n)

{ static int f=l;

f=f*n;

return f;

}

main()

{ int i;

for(i=1;i<=5;i++ ;printf(“%d\n”,ff(i));

}

(5) 设有以下函数:

1 f ( int a)

2 { int b=0;

3 static int c = 3;

4 b++; c++;

5 return(a+b+c);

6 }

如果在下面的程序中调用该函数,则输出结果是 。

main()

{ int a = 1, i;

for(i=0;i<3;i++) printf(“%d\n ”,f(a));

}

如果将f函数中的3句改写为 int c=3,结果输出为:_____________。

(6)下面程序的运行结果是 。

#define N 10

#define s(x) x*x

#definef (x) (x*x)

main()

{ int i1,i2;

i1=1000/s(N);i2=1000/f(N);

printf(“%d%d\n”,i1,i2);

}

(7) 读如下程序,输出结果是 。

long fib(int n)

17

{ if(n>2)

return(fib(n-1)+fib(n-2));

else return(2);

}

main()

{ printf(“%d\n”,fib(3));}

2、程序填空

(1) strcen函数把b字符串连接到a字符串的后面,并返回a中新字符串的长

度。请填空实现该函数功能。

strcen(char a[], char b[])

{ int num=0,n=0;

while(*(a+num)!= ) num++;

while(b[n]){*(a+num)=b[n]; num++; }

return(num);

}

(2) isprime函数的功能是判断形参a是否为素数。如果是素数,则返回1,否

则返回0。补充程序完成功能设计。

int isprime( )

{int I;

for(I=2;I<a/2;I++)

if (a%I==0) ____________________

_______________________________

}

3、编程

(1) 编辑函数,实现两数互换操作。

(2) 编辑函数求水仙花数。要求通过main函数控制数值范围(即求出某范围

内的水仙花数)。

(3) 输入两数,要求编辑函数求该数的最大公约数。

(4) 利用函数实现n!。

18

实验七 数组

一、目的、要求

1、熟练掌握一维数组、字符数组的定义、初始化、引用的方法。

2、掌握二维数组的定义、初始化、引用的方法。

3、掌握字符串函数的使用。

4、掌握数组作为函数的参数的使用。

5、了解与数组有关的非数值计算方法:气泡排序、选择排序、折半查找算法记

杨辉三角等。

二、预习内容

1、数组的定义方法。

三、上机内容

1、预计结果并上机验证

(1) 下列程序段的输出结果是 。

main()

{ char s[]="abcdef";

s[3]=‘\0';

printf("%s\n",s);

}

(2) 若有以下程序

main()

{ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14} ,{-21,23,0,-24},{-31,

32,-33,0}};

int i,j,s=0;

for(i=0;i<4;i++)

{ for(j=0;j<4;j++)

{ if(a[i][j]<0) continue;

if(a[i][j]==0) break;

s+=a[i][j];

}

}

printf("%d\n",s);

}

执行后输出结果是 。

(3) 以下程序的输出结果是 。

main()

{ int a[3][3]={ {1, 2},{3,4},{5,6} },i,j,s=0;

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

for(j=0;j<=i;j++)s+=a[i][j];

printf(“%dn”,s);

}

19

(4) 以下程序段的输出结果是 。

main()

{ char ch[3][5]={"AAAA","BBB" ,"CC"};

char s[]="\\141\141abc\t";

printf ("%s\n",s);

printf("\"%s\"\n",ch [1]);

}

(5) 以下程序的输出结果是 。

main()

{ int b[3][3]={0,1,2,0,1,2,0,1 ,2},i,j,t=1;

for(i=0;i<3;i++)

for(j=i;j<=i;j++) t=t+b[i][b[j][ j]];

printf("%d\n",t);

}

(6) 有以下程序

main()

{ char a[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘\0’}; int i,j;

i=sizeof(a);j=strlen(a);

printf(“%d,%d\b”i,j);

}

程序运行后的输出结果是 。

2、 程序填空

(1) 以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、

3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。

fun( int a[ ])

{ int i;

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

for(i=0; i<5; i++) =a[i];

}

(2) 函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形

式如下

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1.

其构成规律是:

(1) 第0列元素和主对角线元素均为1

(2) 其余元素为其左上方和正上方元素之和

(3) 数据的个数每行递增1

请将程序补充完整。

20

#define N 6

void yanghui(int x[N][N])

{ int i,j;

x[0][0]=1;

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

{ x[i][0]= =1;

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

x[i][j]= ;

}

}

(3) 函数f的功能是在数组x的n个数(n个数互不相同)中找出最大最小数,

将其中最小数与第一个数对调,把最大数与最后一个数对调。请填空。 #include “stdio.h”

void f(int x[],int n)

{int p0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

for(m=0;m<n;m++)

{if(x[m]>i){i=x[m]p0=m;}

else if(x[m]<j) {j=x[m];p1=m;}

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[p1];x[p1]=____________;______________;

}

main()

{int a[10],u;

for(u=0;u<10;u++) scanf(“%d”,____________);

f(a,10);

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

printf(“\n”);

}

(3) 函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指的二维数组中的第0行放到b所指的二维数组的最后一列。其他数据不变。请填空。

#define N 4

void rotate(int a[][N],int b[][N])

{int i,j;

for(I=0;;i<N;i++)

{b[I][N-1]=____________;}

___________________;

21

}

(4) 程序的功能是求出数组中各个相邻两个元素的和,依次存放到a数组中,然后输出。请填空。

mian ()

{

int x[10],a[9],i;

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

scanf(“%d”,&x[i]);

for(__________;I<10;I++)

a[i-1]=x[i]+_________;

for(i=0;i<9;i++)

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

printf(“\n”);

}

3、编程

(1) 编辑程序,将用户输入的任意字符串中的数字字符全部删除,形成新的字

符串输出。

(2) 有m行n列的整数矩阵,现由用户给其赋值。要求编程找出其中最大数及

其所在行列。

(3) 输入n个学生成绩,计算他们的平均值并输出所有高于平均成绩的学生成

绩(试与前各章节中输入学生成绩的题目比较,有和优点)。

22

实验八 指针

一、目的、要求

1、重点掌握指针与指针变量的概念,指针与地址运算符的关系及运算;

2、重点掌握指针常量的定义、初始化、与使用;

3、掌握指针与数组、函数以及字符串的关系,熟练掌握指向数组、函数与字符串的指针变量,并能够通过指针灵活引用该类型的数据;

4、了解指向指针变量的指针;

5、了解指针数组与多级指针变量。

二、预习内容

1、掌握指针常量的定义、初始化、与使用;

2、掌握指针运算符的使用。

三、上机内容

1、程序填空

(1) 以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后继

字符串的首地址。例如:str所指字符串是“Hello!”,c中的字符为e,则函数返回字符串ello!的首地址。若str所指字符串为空串或不包含c中的字符,则函数返回NULL。请填空。

char *fun(char *str,char c)

{int n=0;

char *p=str;

if(p!=NULL)

while(p[n]!=c &&p[n]!=’\0’) n++

if(p[n]=’\0’)___________________;

return____________________;

}

(2) 以下程序的功能是利用指针指向三个整型变量,并通过指针找出其中最大

的值,输出到屏幕上。请填空。

main()

{int x,y,z,max,*px,*py,*pz,*pmax;

scanf(“%d%d%d”,&x,&y,&z);

px=&x;

py=&y;

pz=&z;

pmax=&max;

_________________;

if(*pmax<*py) *pmax= *py;

if(*pmax<*pz) *pmax= *pz;

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

23

}

2、 编程

(1)由用户输入字符串。编辑程序将其中大写字符取出放入数组c中。

(2)编辑函数fun。利用函数实现数据从大到小的排序。在main函数中输入数

据,调用fun函数实现排序输出。

(3)已知一个从小到大顺序排列的数组int a[10]={2,6,8,11,14,17,20,21,

25},现输入一个数插入到数组a中,要求数组仍按从小到大顺序排列。 24

实验九 结构体数据类型与链表

一、目的、要求

1、了解自定义数据类型、结构体类型的概念;

2、了解链表的概念、建立及操作。

3、掌握结构体数据类型的变量的定义、初始化以及使用;

4、掌握结构体变量的基本使用方法及指向结构体类型的指针的用法。

二、预习内容

1、熟悉结构体变量的定义、成员的使用;

2、继续熟悉结构体变量的基本使用方法及指向结构体类型的指针;

3、了解链表的概念、建立及操作。

三、上机内容

1、程序填空

(1)函数min的功能是:在带头节点的单链表中查找数据域中值最小的节点。请填空。

#include“stdio.h”

struct node

{int data;

struct node *next;

}

int min(struct node first)

{struct node *p;

int m;

p=first ->next;m=p->data;p=p->next;

for(;p!=NULL;p=___________)

if(p->data<=m)____________;

retrun m;

}

(2) 已知fun函数的功能是用于构成带有头结点的单向链表,在结点的数据域

中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点的字符串。请填空完成函数disp。

typedef struct node/*链表结点结构*/

{char sub[3];

struct node *next;

}Node;

void disp(Node *h)

{Nodde *p;

p=h->next;

while(________________)

25

{printf(“%s\n”,p->sub);___________________;}

}

main()

{Node *hd;

hd=fun();

disp(hd);

printf(“\n”);

}

2、编程

(1)利用结构体类型编写程序。要求记录3个学生的学号、姓名及课程成绩。找出其中最高分输出。

(2)已知链表节点信息为学号、姓名、课程成绩。现有两个链表均按学号升序排列。现在编程实现链表合并,要求仍按升序排列。

26

实验十 共用体与枚举类型

一、目的、要求

1、理解共用体类型和枚举类型的概念;

2、掌握共用体类型变量的定义与使用;

3、了解枚举类型变量的定义。

二、预习内容

1、了解内存的动态分配。

三、上机内容

1、程序填空

(1) 以下程序用已读入两个学生的情况存入结构数组。每个学生的情况包括:

姓名,学号,性别。若是男同学,则还登记视力正常与否(正常用Y,不 正常用N);对女学生则还登记身高和体重。请填空。

struct

{char name [10];

int number:

char sex;

union

{char eye;

struct

{ int heigth;

int weight;

} f;

}body;.

}per[2];

main ()

{ int i;

for (i=0;i<2;i++)

{ scanf (“%s %d %c”,&per[i].name,&per[i].number,&per[i].sex); if(per[i].sex==’m’)

scanf (“%c”,____________________ );

else if (per[i].sex==’f’)

scanf (“%d %d”,____________________, ___________________); else printf (“input error\n”);

}

(2) 写出下列程序的输出结果____________________。

enum coin {penny,nickel,dime,quarter,half_dollar,dollar }; char *name[ ]={“penny”,”nickel”,”dime”,”quarter”,

”hal_fdollar”,”dollar”};

main ()

{ enum coin money1,money2;

money1=dime;

27

money2=dollar;

printf(“%d %d\n”,money1,money2);

printf(“%s %s\n”,name[(int)money1],name[(int)money2]);

}

2、编程

利用共用体类型编辑程序。要求3组记录分别记录学生的学号(或教师工号)、姓名、某一门课程成绩(或教师所在院系)。

28

实验十一 文件

一、目的、要求

1、了解理解文件的基本概念;

2、熟悉文件类型指针;

3、了解文件的定义、打开、读、写及关闭等基本操作的实现。

二、预习内容

1、了解文件的基本概念及相关操作函数。

三、上机内容

1、读程序,写结果

(1) 下面的程序执行后,文件testt .t中的内容是 。 #include<stdio.h>

void fun(char *fname.,char * st)

{ FILE *myf; int i;

myf=fopen(fname,“w ” );

for(i=0;ibr> st[i],myf);

fclose(myf);

}

main()

{ fun(“test”,“new world”;

fun(“test”,“hello,”0;)

}

(2) 有以下程序

main()

{ unsigned char a,b,c;

a=0x3;b=a|0x8;c =b<<1;

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

}

程序运行后的输出结果是 。

(3) 有以下程序

#include<stdio.h>

main()

{ FILE*fp;inti=20,j=30,k,n;

fp=fopen(“d1.dat”“w”);

fprintf(fp,“%d\n”,i);fprintf(f p,“%d\n”j); fclose(fp);

fp=fopen(“d1.dat”,“r”);

fp=fscanf(fp,“%d%d”,&k,&n);printf(“%d%d\n”,k,n); fclose(fp);

}

程序运行后的输出结果是 。

29

2、程序填空

(1) 以下程序用来统计文件中字符个数。请填空补充实现。

#include "stdio.h"

main()

{ FILE *fp; long num=0L;

if((fp=fopen("fname. dat","r"))==NULL)

{ pirntf("Open error\n"); exit(0);}

while( )

{ fgetc(fp); num++;}

printf("num=%1d\n",num-1);

fclose(fp);

}

(2) 以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件

末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE *myf; ling f1;

myf= (“test .t”,“rb”);

fseek(myf,0,SEEK_END); f1=ftel(myf);

fclose(myf);

printf(“%d\n”,f1);

(3) 下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为

bi.dat的新文件中。请填空。

#include “stdio.h ”

FILE *fp;

{ char ch;

if( (fp=fopen ( ) )= = NULL)exit(0);

while( (ch=getchar( )) !=’@’)

fputc (ch,fp);

fclose(fp);

}

3、编程。

1)从键盘输入文件内容,要求保存到c:\pra1.txt文件中。

2)从键盘输入字母,要求将所有字母以大写形式保存到c:\pra2.txt中。

3)将pra1.txt和pra2.txt文件的内容合并存入c:\pra3.txt中。

30

更多相关推荐:
《C语言程序设计》课程设计报告(小组)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:电子工程学院专业:电子信息工程年级:20##班别:2班指导教师:##组长:##同组成员:##目录一、目的....................…

c语言课程设计报告

C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体设计四详细设计五运行结果六课程设计体会一实验目的1通过课程设计加深对结构化程序设...

C语言课程设计报告

河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机07-2班指导教师20XX年9月12日目录1.设计任务书21.…

C语言课程设计报告范例

C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的难点及解决办法四小结五附录原程序2一课程设计题目及所涉及知识点一课程设计题目1基...

厦门理工学院11级C语言C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求1二方案实现与调试221掷骰子游戏222射击游戏323汽车...

C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期专业计算机科学与技术班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求3二方案实现与调试321掷骰子游戏322汽车加...

c语言程序贪吃蛇课程设计报告

山东工商学院信电学院自动111班第一组贪吃蛇课程设计报告高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称高级语言程序设计英文名称CProgramExperimentDe...

C语言课程设计报告书样本

海南大学三亚学院C语言程序设计课程设计贪吃蛇算法专业计算机科学与技术班级计科1001姓名杨凯文题目学号指导老师李春林目录C语言程序设计课程设计11程序要求32程序分析与设计33流程图44源程序清单45调试过程1...

C语言课程设计报告—人事管理系统

人事管理系统前言:现代计算机技术的发展为人们的学习、生活、工作提供了很大的帮助,各行各业都需要特定计算系统的运用,我们需要了解这些系统是怎么样为我们服务以及他们是怎样编辑出来的。我们需要学习C语言编程,根据课堂…

C语言课程设计报告(通讯录)

设计说明书通讯录系统起止日期20xx年01月03日至20xx年01月08日学班学成生姓名级号绩XXX指导教师签字计算机与通信学院20xx年01月08日一课题任务设计一个通讯录管理系统课题的主要任务是1对通讯录信...

C语言课程设计报告 扫雷

程序课程设计基础课程设计扫雷游戏院系计算机科学技术学院计算机科学与技术师范班级师计091设计者徐群杨松徐春辉杨雷刘安然学号3224312504指导教师黄绍义20xx年12月25日1目录1概述311研究的背景及意...

简单计算器C语言课程设计报告书

C语言课程设计报告书题目:简单计算器院系:班级:学号:姓名:一、课程设计目的1.巩固和加深C语言课程的基本知识的理解和掌握2.掌握C语言编程和程序调试的基本技能3.利用C语言进行基本的软件设计4.掌握书写程序设…

c语言程序设计课程设计报告(34篇)