编程题:
46.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
int fun ( STREC a[ ] )
{
}
main ()
{ STREC s[N]= {{“GA005″,85}, {“GA003″,76}, {“GA002″,69}, {“GA004″,85},
{“GA001″,91}, {“GA007″,72}, {“GA008″,64}, {“GA006″, 87},
{“GA015″,85}, {“GA013″,91}, {“GA012″,64}, {“GA014″,91},
{“GA011″,66}, {“GA017″,64}, {“GA018″,64}, {“GA016″,72}};
int i; FILE *out;
fun ( s );
printf (“The data after sorted :\n”);
for (i=0; i
{ if ( (i)%4==0 ) printf (“\n”);
printf (“%s %4d “, s[i].num, s[i].s);
}
printf (“\n”);
out=fopen (“out16.dat”, “w”);
for (i=0; i
{ if ( (i)%4==0 && i ) fprintf (out, “\n” );
fprintf (out, “%4d”, s[i].s);
}
fprintf ( out, “\n” );
fclose (out );
}
47.请编写一个函数void fun(char*ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入abc4EFgh,则应输出aBc4EFgH。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
void fun(char *ss)
{
}
void main( void )
{
char tt[51];
clrscr();
printf(“\nPlease enter an character string within 50 characters:\n” );
gets( tt );
printf(“\n\nAfter changing, the string\n %s”, tt );
fun(tt) ;
printf( “\nbecomes\n %s”, tt );
}
改错题:
14.下列给定程序中,函数fun和funx的功能是:用二分法求方程2x3-4x2+3x-6=0的根,并要求绝对误差不超过0.001。例如,若给m输入-100,给n输入90,则函数求得的一个根值为2.000。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include “stdio.h”
#include “math.h”
double funx(double x)
{
return (2*x*x*x-4*x*x+3*x-6);
}
double fun(double m,double n)
{
/********found********/
int r;
r=(m+n)/2;
/********found********/
while(fabs(n-m)<0.001)
{
if(funx(r)*funx(n)<0)
m=r;
else
n=r;
r=(m+n)/2;
}
return r;
}
main()
{
double m,n,root;
printf(“Enter m n : \n”);
scanf(“%lf%lf”,&m,&n);
root=fun(m,n);
printf(“root=%6.3f\n”,root);
}
15.下列给定程序中,函数fun的功能是:判断字符ch是否与str所指串中的某个字
符相同;若相同,则什么也不做,若不同,则将其插在串的最后。
请改正程序中的错误,使它能进行正确的操作。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#include
/********found********/
void fun(char str,char ch)
{
while ( *str && *str !=ch )
str++;
/********found********/
if(*str==ch)
{
str[0]=ch;
/********found********/
str[1]=’0′;
}
}
main()
{
char s[81],c;
clrscr();
printf(“\n Please enter a string:\n”);
gets(s);
printf(“\n Please enter the character to search:”);
c=getchar();
fun(s,c);
printf(“\nThe result is %s\n”,s);
}