*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;i
正确的程序为:
将 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(\