6-1 求出二维数组的最大元素及其所在的坐标 (10分)
编写一个函数fun,函数的功能是:求出N×M整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。
函数接口定义:
int fun(int array[N][M]);
其中 a 是用户传入的参数。 函数须返回 N×M整型数组的最大元素,其所在的行坐标及列坐标放在全局变量Row和Col中。
裁判测试程序样例:
#include <stdio.h>
#define N 4
#define M 3
int Row,Col;
int fun(int array[N][M]);
int main()
{
int a[N][M],i,j,max,row,col;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
for(i=0;i<N;i++)
{ for(j=0;j<M;j++)
printf("%5d",a[i][j]);
printf("\n");
}
max=fun(a);
printf(“max=%d,row=%d,col=%d”,max,Row,Col);
return 0;
}
/* 请在这里填写答案 */
输入样例:
5 8 4
4 5 11
1 2 3
7 4 1
输出样例:
5 8 4
4 5 11
1 2 3
7 4 1
max=11,row=1,col=2
int fun(int array[N][M])
{
int i,j,k;
Row=0;Col=0;
k=array[0][0];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
{
{if(k<array[i][j])
{
k=array[i][j];
Row=i;Col=j;
}
}
}
return k;
}
6-2 数据排序 (10分)
输入n(<10)个整数,用任一排序算法按从小到大排序后输出。
函数接口定义:
在这里描述函数接口。例如:
void fun(int a[], int n);
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
void fun(int a[], int n);
int main()
{int i,a[10],n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
fun(a,n);
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n");
return 0;
}
/* 请在这里填写答案 */
输入格式:先输入n值,再输入要排序的n个数据。
输入样例:
6
3 5 4 6 2 1
输出样例:
1 2 3 4 5 6
void fun(int a[], int n)
{
int i,j,k;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[j]>a[i])
{
k=a[j];
a[j]=a[i];
a[i]=k;
}
}
}
}
6-3 求平均值并统计小于等于平均值的个数 (10分)
fun函数的功能是:给定n个实数,输出平均值,并统计小于等于平均值的实数个数。
函数接口定义:
int fun(float x[],int n);
函数fun的功能是求实型数组x中n个实数的平均值并输出平均值,函数返回小于等于平均值的实数个数。其中输出的平均值按“ave=%.2f\n”的格式输出
裁判测试程序样例:
#include<stdio.h>
int fun(float x[],int n);
int main()
{float x[]={23.5,45.67,12.1,6.4,58.9,98.4};
printf("%d\n",fun(x,6));
return 0;
}
/* 请在这里填写答案 */
输出样例:
ave=40.83
3
int fun(float x[],int n)
{
float sum=0,average;
int i,ge=0;
for(i=0;i<n;i++)
{
sum=sum+x[i];
}
average=sum/6.0;
for(i=0;i<n;i++)
{
if(x[i]<average||x[i]==average)
{
ge=ge+1;
}
}
printf("ave=%.2f\n",average);
//printf("%d\n",ge);
return ge;
}
6-4 函数判断闰年 (10分)
主函数中通过键盘输入年份,调用函数fun判断该年是否为闰年。
函数接口定义:
int fun(int year);
其中 year 是用户传入的参数。 year 的值不超过int的范围。 year是闰年函数须返回 1 ,否则返回0.。
裁判测试程序样例:
#include <stdio.h>
int fun(int year);
int main()
{
int year,np;
scanf("%d",&year);
np=fun(year);
if (!np)
printf(“no\n”,year);
else
printf(“yes\n”,year);
return 0;
}
/* 请在这里填写答案 */
输入样例:
2000
输出样例:
yes
输入样例:
1800
输出样例:
no
int fun(int year)
{int a;
if(year%400==0)
a=1;
else
{
if(year%4==0&&year%100!=0)
a=1;
else
a=0;
}
if(a==1)
{
return 1;
}
else
{
return 0;
}
}
6-5 杨辉三角形 (10分)
编写函数fun产生如下杨辉三角形,产生的行数由main给出。
函数接口定义:
void fun(int a[N][N],int n);
其中 a 和 n 都是用户传入的参数。 函数须产生 n 行杨辉三角形。
裁判测试程序样例:
#include <stdio.h>
#define N 10
void fun(int a[N][N],int n);
int main()
{
int a[N][N];
int i,j,n;
scanf("%d",&n);
fun(a,n);
for (i=0;i<n;i++)
{ for (j=0; j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
return 0;
}
/* 请在这里填写答案 */
输入样例:
5
输出样例:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
void fun(int a[N][N],int n)
{
int b,c;
a[0][0]=1;
for(b=0;b<n;b++)
{
a[b][0]=1;
for(c=0;c<=b;c++)
{
if(c==0)
a[b][c]=1;
else if(b>=1&&c>=1&&b!=c)
a[b][c]=a[b-1][c]+a[b-1][c-1];
else if(b==c)
a[b][c]=a[b-1][c-1];
}
}
}
-6 歌唱比赛打分 (8分)
某歌唱比赛计分规则是:对于评委给出的分数,去掉一个最高分,去掉一个最低分,剩余分数求算术平均值并保留2位小数,作为选手最终得分。
本题要求实现这样一个计分函数。
评委给出的分数存在数组中,分数均为0100之间的整数,并且保证评委人数在320之间。
函数接口定义:
double getScore(int *score, int total);
其中score和total是传入的参数,score是评委打分数组的首地址,total是评委人数;
函数将选手的得分以double类型返回,注意:函数返回的分数只需保证小数点后至少2位精确数字即可,打印2位小数得分的操作由函数调用者进行。
裁判测试程序样例:
/* 此测试程序仅为示例,实际的测试程序可能不同,不要仅针对样例的输入和输出编写函数,而是要根据题意要求编写函数 */
#include <stdio.h>
double getScore(int score, int total);
int main(){
int score[5] = {92, 90, 99, 95, 98}; / 仅为示例,实际的测试程序中,数组大小和元素数值都可能与样例不同 /
printf("%.2f\n", getScore(score, 5) ); / getScore( )函数只负责返回分值,由main函数中的代码负责按照2位小数打印输出 /
return 0;
}
/ 你所编写的函数代码将被嵌在这里,注意:不要提交你编写的用于测试的main( )函数,否则无法通过编译 */
输入样例:
对于本题给出的裁判测试程序样例,没有输入。实际的裁判程序可能有输入。
输出样例:
对于本题给出的裁判测试程序样例,只有一行输出如下。实际的裁判程序可能有其他输出情况。
95.00
double getScore(int *score, int total)
{
int i,j,k;
int max=score[0],min=score[0];
double sum=0,average=0;
for(i=0;i<total;i++)
{
if(score[i]>max)
max=score[i];
}
for(i=0;i<total;i++)
{
if(score[i]<min)
min=score[i];
}
for(i=0;i<total;i++)
{
if(score[i]==max)
{score[i]=0;
break;}
}
for(i=0;i<total;i++)
{
if(score[i]==min)
{score[i]=0;
break;}
}
for(i=0;i<total;i++)
{
sum=sum+score[i];
}
average=sum/((total-2)*1.0);
return average;
}
6-7 递归求Fabonacci数列 (10分)
本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:
f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。
函数接口定义:
int f( int n );
函数f应返回第n个Fabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。
裁判测试程序样例:
#include <stdio.h>
int f( int n );
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", f(n));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
6
输出样例:
8
int f( int n )
{
if(n==0)
return 0;
int i,a=1,b=1,c,d=0;
for(i=1;i<n;++i)
{
c=a+b;
a=b;
b=c;
d++;
}
return a;
}