例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则调换后
为:6、7、8、9、5、1、2、3、4。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#define N 9
void fun(int a[], int n)
{int i, t, p;
/**********found**********/
p = (n%2==0)?n/2:n/2+___1___;
for (i=0; i
{
t=a[i];
/**********found**********/
a[i] = a[p+___2___];
/**********found**********/
___3___ = t;
}
}
main()
{int b[N]={1,2,3,4,5,6,7,8,9}, i;
printf("\nThe original data :\n");
for (i=0; i
fun(b, N);
printf("\nThe data after moving :\n");
for (i=0; i
}
解题答案:
/**********第一空**********/
p = (n%2==0)?n/2:n/2+1;
/**********第二空*********/
a[i] = a[p+i];
/**********第三空**********/
a[p+i] = t;
****************************************** [NextPage] 二、改错题:给定程序MODI1.C中函数fun的功能是:把主函数中输入的3个数,最大的放在 a中,最小的放在c中,中间的放在b中。
例如,输入的数为:55 12 34,
输出结果应当是:a=55.0 , b=34.0 , c=12.0。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
给定源程序:
#include
void fun(float *a,float *b,float *c)
{
/**********found**********/
float *k;
if(*a<*b)
{k=*a; *a=*b; *b=k;}
/**********found**********/
if(*a>*c)
{k=*c; *c=*a; *a=k;}
if(*b<*c)
{k=*b; *b=*c; *c=k;}
}
main()
{float a,b,c;
printf("Input a b c: "); scanf("%f%f%f",&a, &b,&c);
printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c);
fun(&a,&b,&c);
printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c);
}
解题答案:
/**********found**********/
float k;
/**********found**********/
if(*a<*c)
******************************************
[NextPage] 三、程序题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组 s中,请编写函数fun,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。
注意: 部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
#define N 16
typedef struct
{char num[10];
int s;
} STREC;
int fun(STREC *a, STREC *b)
{
}
main()
{STREC s[N]={{"GA05",85},{"GA03",76}, {"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};
STREC h[N];
int i,n;FILE *out ;
n=fun(s,h);
printf("The %d highest score :\n",n);
for(i=0;i
printf("%s %4d\n",h[i].num,h[i].s);
printf("\n");
out = fopen("out.dat","w");
fprintf(out, "%d\n",n);
for(i=0;i
fprintf(out, "%4d\n",h[i].s);
fclose(out);
}
参考答案:
int fun( STREC *a, STREC *b )
{
int i, max = a[0].s, n=0;
for(i = 1; i < N; i++)
if(max < a[i].s) max = a[i].s ; /* 找出最高成绩 */
for(i = 0; i < N; i++)
if(max==a[i].s) b[n++] = a[i] ; /* 找相等的最高成绩并存入数组b中 */
return n; /* 返回符合条件的人数 */
}
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|