C语言程序设计实验电子稿 下载本文

{ 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处理大量数据时非常方便,可以从存储介质上直接导入导出,而不必从键盘上一个一个数据输入。

使用文件时,首先要定义一个文件指针 FILE *fp;

C语言把文件看成是一个字符(字节)的序列,即由一个一个字符的数据顺序组成。根据数据的组织形式,可分成ASCII文件和二进制文件。区别如下所示。

十进制整数10000

内存中存放形式: 00100111 00010000 二进制文件中的存放形式: 00100111 00010000

ASCII码文件中的存放形式:00110001 00110000 00110000 00110000 00110000 ASCII优点:容易移植,缺点:占用存储空间大,耗时;

二进制优点:占用存储空间少,存储时间快;缺点:不易移植。 2. 文件的打开、关闭 文件打开:

if ((fp=fopen(“file1.c”, ” r ”))= =NULL)

{printf(“cannot open this file\\n”); exit(0);} 文件关闭:fclose(fp);

3. 文件读写及定位操作

常用的读写函数:fputc,fgetc,fputs,fgets,fscanf,fprintf,fread,fwrite 定位函数:rewind,fseek,ftell

10.2 常见错误和难点分析

文件打开和关闭时,一定要指明打开或关闭的方式,如“r”, “w”, “a”分别表示只读形式,写入形式,附加形式。 1. 文件指针的定义

对文件进行操作,首先,必须要建立文件指针。文件类型指针的定义方式: FILE *文件指针变量名; 注意:编程的时候,所有的标点符号必须在英文输入状态下输入! 2. 打开与关闭文件,

文件要使用时,必需先对文件打开,使用后,在程序结束之前,必须要关闭文件,也就是说fopen和fclose是成对出现!

3. 掌握输入输出函数fscanf,fprintf,fread,fwrite等中每个参数的意义,以及相对位置。

参数书写位置一定不能搞错,如fscanf(fp,“%d,%f”,&i,&t); 绝对不可以写成fscanf( “%d,%f”,&i,&t ,fp);

10.3 测试与练习题

1. 程序阅读题

有如下程序 #include void main() { FILE *fp;

int i=20,j=30,k,n; fp=fopen(\

fprintf(fp,\fclose(fp);

fp=fopen(\fscanf(fp,\printf(\ %d\\n\fclose(fp); }

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

A) 20 30 B) 10 30

C) 10 20

2.程序填空题

阅读下面题目,请补充完整。 #include \#include \void main() {

FILE *fp; char ch;

if((fp=fopen(\{

printf(\ exit(0);} ch=getchar(); while(ch!='#') { fputc( 【1】); ch=getchar();

}

D) 20 10