编程题:
79.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define N 10
typedef struct ss
{
char num[10];
int s;
} STU;
void fun( STU a[], STU *s)
{
}
main()
{
STU a[N]={ {“A01”,81},{“A02”,89},{“A03”,66},{“A04”,87},{“A05”,77},
{“A06”,90},{“A07”,79},{“A08”,61},{“A09”,80},{“A10”,71} }, m ;
int i;
clrscr();
printf(“**** The original data *****n”);
for(i=0;i<N; i++)
printf(“N0=%s Mark=%dn”, a[i].num,a[i].s);
fun( a,&m);
printf(“***** THE RESULT *****n”);
printf(” The lowest : %s ,%dn”, m.num, m.s);
}
81.请编写函数,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放住c数的百位和个位上,b数的十位和个位数依次放c数的千位和十位上。
例如,a=45,b=12,调用该函数后,c=1425。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的
若干语句。
#include <conio.h>
#include <stdio.h>
void fun (int a, int b, long *c)
{
}
main ()
{
int a, b;
long c;
clrscr ();
printf (“Input a, b:”);
scanf (“%d%d”, &a, &b);
fun ( a, b, &c );
printf (“The result is: %ldn”, c);
}
改错题:
41.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct aa
{
int data;
struct aa *next;
}NODE;
int fun(NODE *h)
{
int sum=0;
NODE *p;
p=h;
while(p->next)
{
if(p->data%2==0)
sum +=p->data;
p=h->next;
}
return sum;
}
NODE *creatlink(int n)
{
NODE *h, *p, *s, *q;
int i, x;
h=p=(NODE *)malloc(sizeof(NODE));
for(i=1;i<n; i++)
{
s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%16;
s->next=p->next;
p->next=s;
p=p->next;
}
p->next=NULL;
return h;
}
outlink(NODE *h,FILE *pf)
{
NODE *p;
p=h->next;
fprintf(pf,”nnTHE LIST :nn HEAD”);
while(p)
{
fprintf(pf,”->%d”,p->data);
p=p->next;
}
fprintf(pf,”n”);
}
outresult(int s,FILE*pf)
{
fprintf(pf,”nThe sum of even numbers : %dn”,s);
}
main()
{
NODE *head;
int even;
clrscr();
head=creatlink(12);
head->data=9000;
outlink(head, stdout);
even=fun(head);
printf(“nThe result :n”);
outresult(even, stdout);
}
42.下列给定程序中.函数fun的功能是:将字符串s中位于奇数位置的字符或ASCII码为偶数的字符依次放入字符串t中。例如,字符串中的数据为AABBCCDDEEFF,则输出应当是ABBCDDEFF。
请改正函数fun中的错误.使它能得出正确的结果。
注意:不要改动main函敛,不得增行或删行;也不得更改程序的结构!
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
#define N 80
void fun(char *s, char t[])
{
int i, j=0;
for(i=0; i<strlen(s); i++)
if(i%2 && s[i]%2==0)
t[j++]=s[i];
t[i]=’’;
}
main()
{
char s[N], t[N];
clrscr();
printf(“nPlease enther string s:”);
gets(s);
fun(s, t);
printf(“nThe result is : %sn”,t);
}



