试卷详情
-
二级C语言机试-219
-
[简答题]N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,其功能是:求出平均分,并由函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序
#include <stdlib.h>
#include <stdio.h>
#define N 8
struct slist
double s;
struct slist * next;
;
typedef struct slist STREC;
double fun(STREC * h)
STREC * creat (double * s) /*创建链表* /
STREC * h, * p, * q;
int i=0;
h=p=(STREC*) malloc (sizeof
(STREC));
p->s=0;
while (i<N)
q=(STREC *)malloc (sizeof
(STREC));
q->s=s[i]; i++; p->next=q; p=q;
p->next=0;
return h;
outlist (STREC * h)
STREC * p;
p=h->next;
printf ("head ");
do
printf("->% 4.1f ", p->s);
p=p->next; /*输出成绩* /
while (p !=NULL);
printf ("/n/n");
void main ( )
double s[N]=85, 76, 69, 85, 91, 72, 64, 87 , ave;
STREC
-
[简答题]下列给定程序中,函数fun的功能是进行数字字符转换。若形参ch中是数字字符’0’~’9’,则将’0’转换成’9’, ’1’转换成’8’,’2’转换成’7’,……,’9’转换成’0’;若是其他字符则保持不变;并将转换后的结果作为函数值返回。
请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h >
/**********found********** /
(1) fun (char ch)
/**********found********** /
if(ch>’0’ && (2) )
/**********found********** /
return ’9’-(ch- (3) );
return ch;
main ( )
char c1, c2;
printf ("/nThe result :/n");
c1=’2’; c2=fun (c1);
printf ("c1=% c c2=% c/n",
c1, c2);
c1=’8’; c2=fun (c1);
printf ("c1=% c c2=% c/n",
c1, c2);
c1=’a’; c2=fun (c1);
printf ("c1=% c c2=% c/n",
c1, c2);
-
[简答题]下列给定程序中,函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制3个字符之后插入一个空格。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h >
void fun (char * p, char * b)
int i, k=0;
while (* p)
i=1;
while (i<=3 && * p)
/**********found********** /
b[k]=p;
k++; p++; i++;
if(* p)
/**********found********** /
b[k++]" ";
b[k]=’/0’;
main ( )
char a[80], b[80];
printf ("Enter a string:");
gets (a);
printf ("The original string: ");
puts (a);
fun (a, b);
printf ("/nThe string after insert
space: ");
puts (b); printf ("/n/n");