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

*z=x - *y;

}

六、调试和测试结果

测试结果正确

实验十 结构体

四、程序清单

(请写出上机内容1的源程序和上机内容2中的函数) 1、上机内容1的源程序

#include<> #include <>

#define FORMAT \struct student {

int num;

char name[20]; int age;

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(\,*, *, , ;

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

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

四、程序清单

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

(1) 求100以内能同时被3和5整除的自然数,分别将它们输出

到显示器屏幕和文件中。

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

#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);

Init list\

\

\ \

\ \ \ \

\ \ \ \ \ \ char s[3]; int c,i; gotoxy(1,25);

printf(\ getch(); clrscr(); gotoxy(1,1); textcolor(YELLOW);

textbackground(BLACK); gotoxy(10,2); putch(0xc9); for(i=1;i<44;i++) putch(0xcd); putch(0xbb); for(i=3;i<20;i++) {

gotoxy(10,i);putch(0xba); gotoxy(54,i);putch(0xba); }

gotoxy(10,20);putch(0xc8); for(i=1;i<44;i++) putch(0xcd); putch(0xbc); window(11,3,53,19); clrscr();

for(i=0;i<16;i++) {

gotoxy(10,i+1); cprintf(\ }

textbackground(BLACK); window(1,1,80,25); gotoxy(10,21); do{

printf(\ scanf(\ c=atoi(s);

}while(c<0||c>14); return c; }

STUDENT *init() {

return NULL; }

STUDENT *create() {

int i; int s;

STUDENT *h=NULL,*info; for(;;) {

info=(STUDENT *)malloc(sizeof(STUDENT)); if(!info) {

printf(\

return NULL; }

inputs(\ if(info->no[0]=='0') break; /*when the first number is 0,break*/ inputs(\ printf(\ s=0; /*s is sum,begins with 0*/ for(i=0;i

printf(\ if(i==1)

printf(\

scanf(\scores*/

if(info->score[i]>100||info->score[i]<0) printf(\

}while(info->score[i]>100||info->score[i]<0); s=s+info->score[i]; }

info->sum=s; info->order=0; info->next=h; h=info; }

return(h); }

inputs(char *prompt, char *s, int count) {

char p[255]; do{

printf(prompt); scanf(\

if(strlen(p)>count)printf(\ }while(strlen(p)>count); strcpy(s,p); }

/*Print infor*/ void print(STUDENT *h) { int i=0; STUDENT *p; clrscr(); p=h;

printf(\