2010C语言实验报告参考答案 下载本文

char sex; };

main()

{ void input(struct student stu[] ); void stat(struct student stu[]); struct student stu[4]; int i;

input(stu);

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

{ printf(FORMAT,stu[i].num,stu[i].name,stu[i].age,stu[i].sex); }

stat(stu); }

void input(struct student stu[]) {int i;

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

{scanf(\getchar();

scanf(\getchar();

scanf(\getchar();

scanf(\getchar();} }

void stat(struct student stu[]) {int i,c=0,boy=0,girl=0; for(i=0;i<4;i++) {

if(stu[i].age<18) c+=1; if(stu[i].sex=='m') boy++; else girl++; }

printf(\printf(\}

2、

void fun(struct STREC *a) { int i; a->ave=0;

for(i=0;iave+=a->s[i]; a->ave/=N; } 3、改错题

正确的程序为:

将 printf(\,*p.num, *p.name, p.sex, p.age);

改为:printf(\, p->.num, p->name, p->sex, p->age);

实验十一 共用体、位运算和文件

四、程序清单

(请写出上机内容2中的程序源代码)

(1) 求100以内能同时被3和5整除的自然数,分别将它们输出到显示器屏幕和x.txt

文件中。

(2)用程序读出上述x.txt文件中的数据,将它们输出到屏幕,并求它们的和。 #include #include #include

int main(void) {

int i,sum; FILE *fd;

char s[10],*p,ch;

if( (fd=fopen(\ {

printf(\ exit(0); } else {

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

if( (i%3 ==0) && (i%5 == 0) ) {

printf(\

itoa(i,s,10); //转换成字符串 fputs(s,fd); fputc(' ',fd); } }

printf(\ fclose(fd); }

//提取字符转换成数字输入

if( (fd=fopen(\ {

printf(\ exit(0); } else {

p=s; sum=0; do {

ch=fgetc(fd); if(ch == ' ') {

i=atoi(s); sum +=i;

printf(\ strset(s,'\\0'); p=s; } else {

*p=ch; p++; }

}while(ch != EOF);

printf(\数的和是:%d\\n\ fclose(fd); }

return 0; }

实验十二 参考答案

实验十二参考答案:(可根据情况,弄清楚一个模块即可)

题目:设某班有n位同学,每位同学的数据包括以下内容:学号(长整型)、姓名(字符串)、数学成绩(整型)、程序设计成绩(整型)。设计程序完成以下五项功能:新建数据档案、添加数据、删除数据、对输入的数据进行排序和查询。

注:输入数据时,要求学号不能相同,姓名可以相同。

设计思路: 1).程序运行时,首先显示主菜单(模块)如下:

1.程序运行时,首先显示主菜单如下: 1.新建数据 2.添加数据 3.删除数据 4.排序 5.查询 6.退出

用户输入序号后,程序进行相应操作。 2).在主菜单中选择序号4,弹出子菜单选择排序方式,子菜单如下:

1.数学成绩排序 2.程序设计成绩排序 3.总分排序。 4.返回主菜单

选择子菜单的序号后,程序能正确运行并在屏幕上显示按要求排序后的相关信息。 3.在主菜单中选择序号5,弹出子菜单选择查询方式,子菜单如下:

1.学号查询 2.姓名查询 3.数学成绩查询 4.程序设计成绩查询 5.总分查询 6.返回主菜单

请按序号选择相应操作

在子菜单中选择序号后,程序按以下方式工作。

(1)学号查询:输入学号后,若该学号存在则显示与其相关的所有信息,否则显示找不到的提示信息;(提示:查询到满足条件的结果后,查询即可结束)

(2)姓名查询:输入姓名后,若该姓名存在则显示与其相关的所有信息,否则显示找不到的提示信息;(提示:使用字符串比较函数进行比较)

(3)按科目查询:输入指定分数,程序运行后显示该科目中考试成绩大于等于指定分数的同学的学号、姓名以及该科成绩并统计满足条件的人数;

(4)总分查询:输入指定分数,程序运行后显示总分成绩大于等于指定分数的同学的学号、姓名以及各科成绩并统计满足条件的人数。

C源程序清单如下:

#include \#include \#include \#include \#include \

#include \#include \#define N 2 typedef struct z1 {

char no[11]; char name[15]; int score[N]; float sum; float average; int order;

struct z1 *next; }STUDENT; /*Functions*/

STUDENT *init(); /*initialize*/ STUDENT *create();

STUDENT *delete(STUDENT *h); STUDENT *searchno(STUDENT *h); void print(STUDENT *h); void search(STUDENT *h); void save(STUDENT *h); STUDENT *load();

STUDENT *insert(STUDENT *h); STUDENT *sort(STUDENT *h); STUDENT *index(STUDENT *h); int menu_select(); /*menu*/ /******main*******/ main() { int i;

STUDENT *head; head=init(); clrscr(); for(;;) {

switch(menu_select()) {

case 1:head=init();break; case 2:head=create();break;

case 3:head=delete(head);break; case 4:print(head);break; case 5:search(head);break;

case 6:head=searchno(head);break;