一、程序填空题
在此程序中,主函数已给出由结构体构成的链表结点a、b、c,各结点的数据域中均存入字符,函数fun()的作用是:将a、b、c三个结点连接成一个单向链表,并输出链表结点中的数据。
#include <stdio.h>
typedef struct list
{ char data;
struct list *next;
} Q;
void fun( Q *pa, Q *pb, Q *pc)
{ Q *p;
/**********found**********/
pa->next=___1___;
pb->next=pc;
p=pa;
while( p )
{
/**********found**********/
printf(" %c",____2_____);
/**********found**********/
p=____3____;
}
printf("\n");
}
void main()
{ Q a, b, c;
a.data='E'; b.data='F'; c.data='G'; c.next=NULL;
fun( &a, &b, &c );
}
答案:(1) pb (2) p->data (3) p->next
二、程序修改题
在此程序中,函数fun()的功能是统计s所指一维数组中的0的个数(存在变量zero中)和1的个数(存在变量one中),并输出结果。
#include <stdio.h>
void fun( int *s, int n )
{
/**********found**********/
int i, one=0, zero ;
for(i=0; i<n; i++)
/**********found**********/
switch( s[i] );
{
/**********found**********/
case 0 : zero++;
case 1 : one ++;
}
printf( "one : %d zero : %d\n", one, zero);
}
void main()
{ int a[20]={1,1,1,0,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0}, n=20;
fun( a, n );
}
答案:(1) int i,one=0, zero=0; (2) switch( s[i] ) (3) case 0 : zero++; break;
三、程序设计题
在此程序中,编写函数fun,其功能是将形参s所指字符串放入形参a所指的字符数组中,使a中存放同样的字符串。说明:不得使用系统提供的字符串函数。
#include <stdio.h>
#define N 20
void NONO();
void fun( char *a , char *s)
{
}
void main()
{ char s1[N], *s2="abcdefghijk";
fun( s1,s2);
printf("%s\n", s1);
printf("%s\n", s2);
NONO();
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i;
char s1[256], s2[256];
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fgets(s2, 255, fp);
fun(s1,s2);
fprintf(wf, "%s", s1);
}
fclose(fp) ;
fclose(wf) ;
}
答案:
while(*s!='\0')
{ *a=*s;
a++;
s++;
}
*a='\0';