填空题

给定程序中,函数fun()的功能是在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
#include<stdio.h>
#include<stdlib.h>
#define N 8
typedef struct list
int data;
struct list *next;
SLIST;
SLIST *creatlist(char*);
void outlist(SLIST*);
int fun(SLIST *h,char ch)
SLIST *p;int n=0;
p=h->next;
/**********found**********/
while(p!= (1) )
n++;
/**********found**********/
if(p->data==ch)return (2) ;
else p=p->next;

return 0;

main()
SLIST *head;int k;char ch;
char a[N]=’m’,’p’,’g’,’a’,’w’,’x’,’r,’d’;
head=creatlist(a);
outlist(head);
printf("Enter a letter:");
scanf("%c",&ch);
/**********found**********/
k=fun( (3) );
if(k==0)printf("\nNot found!\n");
else printf("The sequence number is:%d\n",k);

SLIST *creatlist(char *a)
SLIST*h,*p,*q;int i;
h=p=(SLIST*)malloc(sizeof(SLIST));
for(i=0;i<N;i++)
q=(SLIST*)malloc(sizeof(SLIST));
q->data=a[i];p->next=q;p=q;

p->next=0;
return h;

void outlist(SLIST *h)
SLIST *p;
p=h->next;
if(p==NULL)printf("\nThe list is NULL!\n");
else
printf("haHead");
do
printf("->%c",p->data);
p=p->next;
while(p!=NULL);
printf("->End\n");

【参考答案】

(A)0或NULL (B)n (C)head,ch
热门 试题

填空题
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun()的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 #include<stdio.h> #define N 5 typedef struct student long sno; char name[10]; float score[3]; STU; void fun(char *filename) FILE *fp;int i,j; STU s[N],t; **********found********** fp=fopen(filename, (1) ); fread(s,sizeof(STU),N,fp); fclose(fp); for(i=0;i<N-1;i++) for(j=i+1;j<N;j++) **********found********** if(s[i].sno (2) s[j].sno) t=s[i];s[i]=s[j];s[j]=t;) fp=fopen(filename, wb ); **********found********** (3) (s,sizeof(STU),N,fp); *二进制输出* fclose(fp); main() STUt[N]=10005, ZhangSan ,95,80,88,10003, LiSi ,85,70,78,10002, CaoKai ,75,60,88,10004, FangFang , 90,82,87,10001, MaChao ,91,92,77,SS[N]; int i,j;FILE *fp; fp=fopen( student.dat , wb ); fwrite(t,sizeof(STU),5,fp); fclose(fp); printf( n nThe original data: n n ); for(j=0;j<N;j++) printf( nNo:%ld Name:%-8s Scores: ,t[j].sno,t[j]name); for(i=0;i<3;i++)printf( %6.2f ,t[j]score[i]); printf( n ); fun( student.dat ); printf( n nThe data after sorting: n n ); fp=fopen( student.dat , rb ); fread(ss,sizeof(STU),5,fp); fclose(fp); for(j=0;j<N;j++) printf( nNo:%ld Name:%-8s Scores: ,ss[j].sno,ss[j].name); for(i=0;i<3;i++)printf( %6.2f ,ss[j].score[i]); printf( n );