Error[8]: Undefined offset: 14, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

        1.本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0​a1​⋯an−1​)变换为(an−m​⋯an−1​a0​a1​⋯an−m−1​)(最后m个数循环移至最前面的m个位置)。

#include 
#define MAXN 10

void ArrayShift(int a[], int n, int m)
{
	if(m > n) //判断是否超过数组超度,如是则取余移动
		m=m%n;
	int i,j,b[MAXN];
	for(i = 0;i < m;i++) //移动m次
	{
		int temp = a[n-1];
		for(j = n-1;j > 0;j--)
		{
			a[j] = a[j-1];
		}
		a[0] = temp;
	}	
}

int main()
{
    int a[MAXN], n, m;
    int i;

    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++) scanf("%d", &a[i]);

    ArrayShift(a, n, m);

    for (i = 0; i < n; i++) {
        if (i != 0) printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");

    return 0;
}
int ArrayShift(int a[], int n, int m )
{
	int b[MAXN], i;
    if(m > n) m=m%n; //m为移动距离,n为数组长度,将移动距离调整为右移量
	for(i=0;i

        2.本题要求实现一个用选择法对整数数组进行简单排序的函数。

void sort( int a[], int n )
{
    int i,j,temp;
    for (i = 0; i < n -1; i++)
    {
        for (int j = 0; j < n - i -1; j++)
        {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

        3.本题要求实现一个函数,从一张成绩单中求平均成绩。成绩结构体定义如下:

typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
//本程序输入n,再输入n个学生及成绩,输出平均成绩。
#include 
#include 
typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
double average ( Score a[], int n );
int main()
{
    Score *s;
    int n,i;
    scanf("%d",&n);
    if(n<=0) return 0;
    s=(Score *)malloc(n*sizeof(Score));
    for(i=0;i
double average ( Score a[], int n )
{
	int i;
	double sum=0,ave=0;
	for(i=0;i

       4. 某歌唱比赛计分规则是:对于评委给出的分数,去掉一个最高分,去掉一个最低分,剩余分数求算术平均值并保留2位小数,作为选手最终得分。本题要求实现这样一个计分函数。
评委给出的分数存在数组中,分数均为0~100之间的整数,并且保证评委人数在3~20之间。

函数接口定义:
double getScore(int *score, int total);

其中scoretotal是传入的参数,score是评委打分数组的首地址,total是评委人数;

函数将选手的得分以double类型返回,注意:函数返回的分数只需保证小数点后至少2位精确数字即可,打印2位小数得分的 *** 作由函数调用者进行。

/* 此测试程序仅为示例,实际的测试程序可能不同,不要仅针对样例的输入和输出编写函数,而是要根据题意要求编写函数 */
#include 
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( )函数,否则无法通过编译 */
double getScore(int *score, int total)
{
    int min=999,max=0,i;
    double sum = 0;
    for(i = 0;i < total;i++)
    {
        if(max < *(score+i))
        {
            max=*(score+i);
        }
        if(min > *(score+i))
        {
            min=*(score+i);
        }
    }
    for(i=0;i

        5.编写三个函数:求两个整数的最大值、最小值、和。分别用这三个函数作为实参,再写一个计算函数compute,对两个整数进行各种计算。其中一个形参为指向具体算法函数的指针。

函数接口定义:
int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));
#include 
using namespace std;

int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));

int main()
{
int a, b, res;
 cin >> a >> b;
res = compute(a, b, & max);
cout << "Max of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & min);
cout << "Min of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & sum);
cout << "Sum of " << a << " and " << b << " is " << res << endl;
return 0;
}
int compute(int a, int b, int(*func)(int, int))
{
    return (*func)(a, b);//func(a, b)
}
int max(int a, int b)
{
	return a>b?a:b;
}
int min(int a, int b)
{
	return a>b?b:a;
}
int sum(int a,int b)
{
    return a+b;
}

        6.本题要求实现一个函数swap,实现两个整数的交换。

void swap (int &a,int &b)
{
    int t;
    t = a;
    a = b;
    b = t;
}

        7.求矩阵的所有不靠边元素之和,矩阵行的值m从键盘读入(2<=m<=10),调用自定义函数Input实现矩阵元素从键盘输入,调用Sum函数实现求和。(只考虑float型,且不需考虑求和的结果可能超出float型能表示的范围)。

void Input(float a[][N],int m)
{
    for(int i=0;i

        8.英美人的姓名比较复杂,一般都由三个名字组成:教名、自取名和姓氏。假设所有名字的长度均不超过30个字符。请编写函数,根据教名、自取名和姓氏,生成完整的名字。

void FullName(char* full, const char* first, const char* middle, const char* last)
{
    int i = 0, j = 0;
    for (i = 0;first[i] != '[+++]'; i++)
    {
        full[j++] = first[i];
    }
    if (j != 0 && middle[0] != '[+++]') {
        full[j++] = ' ';
    }
    for (i = 0;middle[i] != '[+++]'; i++) {
        full[j++] = middle[i];
    }
    if (j != 0 && last[0] != '[+++]')
    {
        full[j++] = ' ';
    }
    for (i = 0; last[i] != '[+++]'; i++)
    {
        full[j++] = last[i];
    }
    if (j==0)
    {
        strcpy(full,"Noname");
        full[6]='[+++]';
    }
    else
        full[j] = '[+++]';
}

        9.某商店开展买一送一活动,购买两件商品时,只需支付价格较高的商品的金额。要求程序在输入两个商品的价格后,输出所应支付的金额,请根据裁判程序编写函数cut,将代码补充完整。

#include 
using namespace std;
//请在此处添加代码
int main(){
    float a,b;
    cin>>a>>b;
    cut(a,b)=0;
    cout<<"to pay:"<

        10.输入10个整数,完成一个函数使数据 重新排序以后输出(也按空格分隔),要求:
输出奇数在前偶数在后

#include 
#include 
#include 
using namespace std;
void sort_array(int* a);
/* 请在这里填写答案 */
int main(){
    int a[10];
    for (int i=0;i < 10; i++)
        cin>>a[i]; 
   sort_array(a);
    return 0;
}
void sort_array(int *a)
{
	int s[10], b[10], c[10], i, j = 0, k = 0, m, n;
	for (i = 0; i < 10; i++)
	{
		if (*(a + i) % 2 == 0) //偶数
		{
			b[j++] = *(a + i);
		}
		else//奇数
		{
			c[k++] = *(a + i);
		}
	}
	for (m = 0; m < j - 1; m++) //升序
	{
		for (n = 0; n < j - 1 - m; n++)
		{
			if (b[n] > b[n + 1])
			{
				int temp1 = b[n];
				b[n] = b[n + 1];
				b[n + 1] = temp1;
			}
		}
	}
	for (m = 0; m < k - 1; m++) //降序
	{
		for (n = 0; n < k - m - 1; n++)
		{
			if (c[n] < c[n + 1])
			{
				int temp2 = c[n];
				c[n] = c[n + 1];
				c[n + 1] = temp2;
			}
		}
	}
	int ct = 0, nt = 0;
	for (i = 0; i < 10; i++)
	{
		if (i < k )
			s[i] = c[ct++];
		else
			s[i]  = b[nt++];
	}
	for (i = 0; i < 10; i++)
	{
		if (i != 9)
			cout << s[i] << ' ';
		else
			cout << s[i];
	}
}
int cmp(int a,int b)
{
    if((a%2==1&&b%2==0)||((a%2==1&&b%2==1)&&a>b)||((a%2==0&&b%2==0)&&a 

11.

梦山高中现需要将某普通班的最优秀学生调整入理科实验班。为此,将从两个方面考察学生,一是数学和英语两门课的总分;另一个是所有四门课的总分。分别找出两科总分和全科总分的第一名,并从中决定调整人选。

输入将首先输入学生数n, (n为不超过80的正整数);接下来依次输入各位学生的学号,数学、英语、语文、理科综合成绩。学号及四科成绩均为不超过300的正整数。

输出时:第一行输出两科总分第一的学号,第二行输出四科总分第一的学号。 约定在两位学生成绩相同时,优先选择学号较小的学生;各位学生的学号均不相同

#include 
using namespace std;
const int N=80;
struct Student{
  int num;
  int score[4];
};

/* 请在这里填写答案 */

int main()
{
  int i, j, k, n;
  bool s2(const Student &, const Student &);
  bool s4(const Student &, const Student &);
  Student st[N];
   cin>>n;
   for(i=0;i>st[i].num;
      for(j=0;j<4;j++) cin>>st[i].score[j];
    }
   cout<
bool s2(const Student &a, const Student &b)
{
    if((a.score[0]+a.score[1]>b.score[0]+b.score[1])||((a.score[0]+a.score[1]==b.score[0]+b.score[1])&&a.numb.score[0]+b.score[1]+b.score[2]+b.score[3])||((a.score[0]+a.score[1]+a.score[2]+a.score[3]==b.score[0]+b.score[1]+b.score[2]+b.score[3])&&(a.num

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 15, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

        1.本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0​a1​⋯an−1​)变换为(an−m​⋯an−1​a0​a1​⋯an−m−1​)(最后m个数循环移至最前面的m个位置)。

#include 
#define MAXN 10

void ArrayShift(int a[], int n, int m)
{
	if(m > n) //判断是否超过数组超度,如是则取余移动
		m=m%n;
	int i,j,b[MAXN];
	for(i = 0;i < m;i++) //移动m次
	{
		int temp = a[n-1];
		for(j = n-1;j > 0;j--)
		{
			a[j] = a[j-1];
		}
		a[0] = temp;
	}	
}

int main()
{
    int a[MAXN], n, m;
    int i;

    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++) scanf("%d", &a[i]);

    ArrayShift(a, n, m);

    for (i = 0; i < n; i++) {
        if (i != 0) printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");

    return 0;
}
int ArrayShift(int a[], int n, int m )
{
	int b[MAXN], i;
    if(m > n) m=m%n; //m为移动距离,n为数组长度,将移动距离调整为右移量
	for(i=0;i

        2.本题要求实现一个用选择法对整数数组进行简单排序的函数。

void sort( int a[], int n )
{
    int i,j,temp;
    for (i = 0; i < n -1; i++)
    {
        for (int j = 0; j < n - i -1; j++)
        {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

        3.本题要求实现一个函数,从一张成绩单中求平均成绩。成绩结构体定义如下:

typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
//本程序输入n,再输入n个学生及成绩,输出平均成绩。
#include 
#include 
typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
double average ( Score a[], int n );
int main()
{
    Score *s;
    int n,i;
    scanf("%d",&n);
    if(n<=0) return 0;
    s=(Score *)malloc(n*sizeof(Score));
    for(i=0;i
double average ( Score a[], int n )
{
	int i;
	double sum=0,ave=0;
	for(i=0;i

       4. 某歌唱比赛计分规则是:对于评委给出的分数,去掉一个最高分,去掉一个最低分,剩余分数求算术平均值并保留2位小数,作为选手最终得分。本题要求实现这样一个计分函数。
评委给出的分数存在数组中,分数均为0~100之间的整数,并且保证评委人数在3~20之间。

函数接口定义:
double getScore(int *score, int total);

其中scoretotal是传入的参数,score是评委打分数组的首地址,total是评委人数;

函数将选手的得分以double类型返回,注意:函数返回的分数只需保证小数点后至少2位精确数字即可,打印2位小数得分的 *** 作由函数调用者进行。

/* 此测试程序仅为示例,实际的测试程序可能不同,不要仅针对样例的输入和输出编写函数,而是要根据题意要求编写函数 */
#include 
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( )函数,否则无法通过编译 */
double getScore(int *score, int total)
{
    int min=999,max=0,i;
    double sum = 0;
    for(i = 0;i < total;i++)
    {
        if(max < *(score+i))
        {
            max=*(score+i);
        }
        if(min > *(score+i))
        {
            min=*(score+i);
        }
    }
    for(i=0;i

        5.编写三个函数:求两个整数的最大值、最小值、和。分别用这三个函数作为实参,再写一个计算函数compute,对两个整数进行各种计算。其中一个形参为指向具体算法函数的指针。

函数接口定义:
int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));
#include 
using namespace std;

int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));

int main()
{
int a, b, res;
 cin >> a >> b;
res = compute(a, b, & max);
cout << "Max of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & min);
cout << "Min of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & sum);
cout << "Sum of " << a << " and " << b << " is " << res << endl;
return 0;
}
int compute(int a, int b, int(*func)(int, int))
{
    return (*func)(a, b);//func(a, b)
}
int max(int a, int b)
{
	return a>b?a:b;
}
int min(int a, int b)
{
	return a>b?b:a;
}
int sum(int a,int b)
{
    return a+b;
}

        6.本题要求实现一个函数swap,实现两个整数的交换。

void swap (int &a,int &b)
{
    int t;
    t = a;
    a = b;
    b = t;
}

        7.求矩阵的所有不靠边元素之和,矩阵行的值m从键盘读入(2<=m<=10),调用自定义函数Input实现矩阵元素从键盘输入,调用Sum函数实现求和。(只考虑float型,且不需考虑求和的结果可能超出float型能表示的范围)。

void Input(float a[][N],int m)
{
    for(int i=0;i

        8.英美人的姓名比较复杂,一般都由三个名字组成:教名、自取名和姓氏。假设所有名字的长度均不超过30个字符。请编写函数,根据教名、自取名和姓氏,生成完整的名字。

void FullName(char* full, const char* first, const char* middle, const char* last)
{
    int i = 0, j = 0;
    for (i = 0;first[i] != ''; i++)
    {
        full[j++] = first[i];
    }
    if (j != 0 && middle[0] != '[+++]') {
        full[j++] = ' ';
    }
    for (i = 0;middle[i] != '[+++]'; i++) {
        full[j++] = middle[i];
    }
    if (j != 0 && last[0] != '[+++]')
    {
        full[j++] = ' ';
    }
    for (i = 0; last[i] != '[+++]'; i++)
    {
        full[j++] = last[i];
    }
    if (j==0)
    {
        strcpy(full,"Noname");
        full[6]='[+++]';
    }
    else
        full[j] = '[+++]';
}

        9.某商店开展买一送一活动,购买两件商品时,只需支付价格较高的商品的金额。要求程序在输入两个商品的价格后,输出所应支付的金额,请根据裁判程序编写函数cut,将代码补充完整。

#include 
using namespace std;
//请在此处添加代码
int main(){
    float a,b;
    cin>>a>>b;
    cut(a,b)=0;
    cout<<"to pay:"<

        10.输入10个整数,完成一个函数使数据 重新排序以后输出(也按空格分隔),要求:
输出奇数在前偶数在后

#include 
#include 
#include 
using namespace std;
void sort_array(int* a);
/* 请在这里填写答案 */
int main(){
    int a[10];
    for (int i=0;i < 10; i++)
        cin>>a[i]; 
   sort_array(a);
    return 0;
}
void sort_array(int *a)
{
	int s[10], b[10], c[10], i, j = 0, k = 0, m, n;
	for (i = 0; i < 10; i++)
	{
		if (*(a + i) % 2 == 0) //偶数
		{
			b[j++] = *(a + i);
		}
		else//奇数
		{
			c[k++] = *(a + i);
		}
	}
	for (m = 0; m < j - 1; m++) //升序
	{
		for (n = 0; n < j - 1 - m; n++)
		{
			if (b[n] > b[n + 1])
			{
				int temp1 = b[n];
				b[n] = b[n + 1];
				b[n + 1] = temp1;
			}
		}
	}
	for (m = 0; m < k - 1; m++) //降序
	{
		for (n = 0; n < k - m - 1; n++)
		{
			if (c[n] < c[n + 1])
			{
				int temp2 = c[n];
				c[n] = c[n + 1];
				c[n + 1] = temp2;
			}
		}
	}
	int ct = 0, nt = 0;
	for (i = 0; i < 10; i++)
	{
		if (i < k )
			s[i] = c[ct++];
		else
			s[i]  = b[nt++];
	}
	for (i = 0; i < 10; i++)
	{
		if (i != 9)
			cout << s[i] << ' ';
		else
			cout << s[i];
	}
}
int cmp(int a,int b)
{
    if((a%2==1&&b%2==0)||((a%2==1&&b%2==1)&&a>b)||((a%2==0&&b%2==0)&&a 

11.

梦山高中现需要将某普通班的最优秀学生调整入理科实验班。为此,将从两个方面考察学生,一是数学和英语两门课的总分;另一个是所有四门课的总分。分别找出两科总分和全科总分的第一名,并从中决定调整人选。

输入将首先输入学生数n, (n为不超过80的正整数);接下来依次输入各位学生的学号,数学、英语、语文、理科综合成绩。学号及四科成绩均为不超过300的正整数。

输出时:第一行输出两科总分第一的学号,第二行输出四科总分第一的学号。 约定在两位学生成绩相同时,优先选择学号较小的学生;各位学生的学号均不相同

#include 
using namespace std;
const int N=80;
struct Student{
  int num;
  int score[4];
};

/* 请在这里填写答案 */

int main()
{
  int i, j, k, n;
  bool s2(const Student &, const Student &);
  bool s4(const Student &, const Student &);
  Student st[N];
   cin>>n;
   for(i=0;i>st[i].num;
      for(j=0;j<4;j++) cin>>st[i].score[j];
    }
   cout<
bool s2(const Student &a, const Student &b)
{
    if((a.score[0]+a.score[1]>b.score[0]+b.score[1])||((a.score[0]+a.score[1]==b.score[0]+b.score[1])&&a.numb.score[0]+b.score[1]+b.score[2]+b.score[3])||((a.score[0]+a.score[1]+a.score[2]+a.score[3]==b.score[0]+b.score[1]+b.score[2]+b.score[3])&&(a.num

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 16, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

        1.本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0​a1​⋯an−1​)变换为(an−m​⋯an−1​a0​a1​⋯an−m−1​)(最后m个数循环移至最前面的m个位置)。

#include 
#define MAXN 10

void ArrayShift(int a[], int n, int m)
{
	if(m > n) //判断是否超过数组超度,如是则取余移动
		m=m%n;
	int i,j,b[MAXN];
	for(i = 0;i < m;i++) //移动m次
	{
		int temp = a[n-1];
		for(j = n-1;j > 0;j--)
		{
			a[j] = a[j-1];
		}
		a[0] = temp;
	}	
}

int main()
{
    int a[MAXN], n, m;
    int i;

    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++) scanf("%d", &a[i]);

    ArrayShift(a, n, m);

    for (i = 0; i < n; i++) {
        if (i != 0) printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");

    return 0;
}
int ArrayShift(int a[], int n, int m )
{
	int b[MAXN], i;
    if(m > n) m=m%n; //m为移动距离,n为数组长度,将移动距离调整为右移量
	for(i=0;i

        2.本题要求实现一个用选择法对整数数组进行简单排序的函数。

void sort( int a[], int n )
{
    int i,j,temp;
    for (i = 0; i < n -1; i++)
    {
        for (int j = 0; j < n - i -1; j++)
        {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

        3.本题要求实现一个函数,从一张成绩单中求平均成绩。成绩结构体定义如下:

typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
//本程序输入n,再输入n个学生及成绩,输出平均成绩。
#include 
#include 
typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
double average ( Score a[], int n );
int main()
{
    Score *s;
    int n,i;
    scanf("%d",&n);
    if(n<=0) return 0;
    s=(Score *)malloc(n*sizeof(Score));
    for(i=0;i
double average ( Score a[], int n )
{
	int i;
	double sum=0,ave=0;
	for(i=0;i

       4. 某歌唱比赛计分规则是:对于评委给出的分数,去掉一个最高分,去掉一个最低分,剩余分数求算术平均值并保留2位小数,作为选手最终得分。本题要求实现这样一个计分函数。
评委给出的分数存在数组中,分数均为0~100之间的整数,并且保证评委人数在3~20之间。

函数接口定义:
double getScore(int *score, int total);

其中scoretotal是传入的参数,score是评委打分数组的首地址,total是评委人数;

函数将选手的得分以double类型返回,注意:函数返回的分数只需保证小数点后至少2位精确数字即可,打印2位小数得分的 *** 作由函数调用者进行。

/* 此测试程序仅为示例,实际的测试程序可能不同,不要仅针对样例的输入和输出编写函数,而是要根据题意要求编写函数 */
#include 
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( )函数,否则无法通过编译 */
double getScore(int *score, int total)
{
    int min=999,max=0,i;
    double sum = 0;
    for(i = 0;i < total;i++)
    {
        if(max < *(score+i))
        {
            max=*(score+i);
        }
        if(min > *(score+i))
        {
            min=*(score+i);
        }
    }
    for(i=0;i

        5.编写三个函数:求两个整数的最大值、最小值、和。分别用这三个函数作为实参,再写一个计算函数compute,对两个整数进行各种计算。其中一个形参为指向具体算法函数的指针。

函数接口定义:
int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));
#include 
using namespace std;

int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));

int main()
{
int a, b, res;
 cin >> a >> b;
res = compute(a, b, & max);
cout << "Max of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & min);
cout << "Min of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & sum);
cout << "Sum of " << a << " and " << b << " is " << res << endl;
return 0;
}
int compute(int a, int b, int(*func)(int, int))
{
    return (*func)(a, b);//func(a, b)
}
int max(int a, int b)
{
	return a>b?a:b;
}
int min(int a, int b)
{
	return a>b?b:a;
}
int sum(int a,int b)
{
    return a+b;
}

        6.本题要求实现一个函数swap,实现两个整数的交换。

void swap (int &a,int &b)
{
    int t;
    t = a;
    a = b;
    b = t;
}

        7.求矩阵的所有不靠边元素之和,矩阵行的值m从键盘读入(2<=m<=10),调用自定义函数Input实现矩阵元素从键盘输入,调用Sum函数实现求和。(只考虑float型,且不需考虑求和的结果可能超出float型能表示的范围)。

void Input(float a[][N],int m)
{
    for(int i=0;i

        8.英美人的姓名比较复杂,一般都由三个名字组成:教名、自取名和姓氏。假设所有名字的长度均不超过30个字符。请编写函数,根据教名、自取名和姓氏,生成完整的名字。

void FullName(char* full, const char* first, const char* middle, const char* last)
{
    int i = 0, j = 0;
    for (i = 0;first[i] != ''; i++)
    {
        full[j++] = first[i];
    }
    if (j != 0 && middle[0] != '') {
        full[j++] = ' ';
    }
    for (i = 0;middle[i] != '[+++]'; i++) {
        full[j++] = middle[i];
    }
    if (j != 0 && last[0] != '[+++]')
    {
        full[j++] = ' ';
    }
    for (i = 0; last[i] != '[+++]'; i++)
    {
        full[j++] = last[i];
    }
    if (j==0)
    {
        strcpy(full,"Noname");
        full[6]='[+++]';
    }
    else
        full[j] = '[+++]';
}

        9.某商店开展买一送一活动,购买两件商品时,只需支付价格较高的商品的金额。要求程序在输入两个商品的价格后,输出所应支付的金额,请根据裁判程序编写函数cut,将代码补充完整。

#include 
using namespace std;
//请在此处添加代码
int main(){
    float a,b;
    cin>>a>>b;
    cut(a,b)=0;
    cout<<"to pay:"<

        10.输入10个整数,完成一个函数使数据 重新排序以后输出(也按空格分隔),要求:
输出奇数在前偶数在后

#include 
#include 
#include 
using namespace std;
void sort_array(int* a);
/* 请在这里填写答案 */
int main(){
    int a[10];
    for (int i=0;i < 10; i++)
        cin>>a[i]; 
   sort_array(a);
    return 0;
}
void sort_array(int *a)
{
	int s[10], b[10], c[10], i, j = 0, k = 0, m, n;
	for (i = 0; i < 10; i++)
	{
		if (*(a + i) % 2 == 0) //偶数
		{
			b[j++] = *(a + i);
		}
		else//奇数
		{
			c[k++] = *(a + i);
		}
	}
	for (m = 0; m < j - 1; m++) //升序
	{
		for (n = 0; n < j - 1 - m; n++)
		{
			if (b[n] > b[n + 1])
			{
				int temp1 = b[n];
				b[n] = b[n + 1];
				b[n + 1] = temp1;
			}
		}
	}
	for (m = 0; m < k - 1; m++) //降序
	{
		for (n = 0; n < k - m - 1; n++)
		{
			if (c[n] < c[n + 1])
			{
				int temp2 = c[n];
				c[n] = c[n + 1];
				c[n + 1] = temp2;
			}
		}
	}
	int ct = 0, nt = 0;
	for (i = 0; i < 10; i++)
	{
		if (i < k )
			s[i] = c[ct++];
		else
			s[i]  = b[nt++];
	}
	for (i = 0; i < 10; i++)
	{
		if (i != 9)
			cout << s[i] << ' ';
		else
			cout << s[i];
	}
}
int cmp(int a,int b)
{
    if((a%2==1&&b%2==0)||((a%2==1&&b%2==1)&&a>b)||((a%2==0&&b%2==0)&&a 

11.

梦山高中现需要将某普通班的最优秀学生调整入理科实验班。为此,将从两个方面考察学生,一是数学和英语两门课的总分;另一个是所有四门课的总分。分别找出两科总分和全科总分的第一名,并从中决定调整人选。

输入将首先输入学生数n, (n为不超过80的正整数);接下来依次输入各位学生的学号,数学、英语、语文、理科综合成绩。学号及四科成绩均为不超过300的正整数。

输出时:第一行输出两科总分第一的学号,第二行输出四科总分第一的学号。 约定在两位学生成绩相同时,优先选择学号较小的学生;各位学生的学号均不相同

#include 
using namespace std;
const int N=80;
struct Student{
  int num;
  int score[4];
};

/* 请在这里填写答案 */

int main()
{
  int i, j, k, n;
  bool s2(const Student &, const Student &);
  bool s4(const Student &, const Student &);
  Student st[N];
   cin>>n;
   for(i=0;i>st[i].num;
      for(j=0;j<4;j++) cin>>st[i].score[j];
    }
   cout<
bool s2(const Student &a, const Student &b)
{
    if((a.score[0]+a.score[1]>b.score[0]+b.score[1])||((a.score[0]+a.score[1]==b.score[0]+b.score[1])&&a.numb.score[0]+b.score[1]+b.score[2]+b.score[3])||((a.score[0]+a.score[1]+a.score[2]+a.score[3]==b.score[0]+b.score[1]+b.score[2]+b.score[3])&&(a.num

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 17, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

        1.本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0​a1​⋯an−1​)变换为(an−m​⋯an−1​a0​a1​⋯an−m−1​)(最后m个数循环移至最前面的m个位置)。

#include 
#define MAXN 10

void ArrayShift(int a[], int n, int m)
{
	if(m > n) //判断是否超过数组超度,如是则取余移动
		m=m%n;
	int i,j,b[MAXN];
	for(i = 0;i < m;i++) //移动m次
	{
		int temp = a[n-1];
		for(j = n-1;j > 0;j--)
		{
			a[j] = a[j-1];
		}
		a[0] = temp;
	}	
}

int main()
{
    int a[MAXN], n, m;
    int i;

    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++) scanf("%d", &a[i]);

    ArrayShift(a, n, m);

    for (i = 0; i < n; i++) {
        if (i != 0) printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");

    return 0;
}
int ArrayShift(int a[], int n, int m )
{
	int b[MAXN], i;
    if(m > n) m=m%n; //m为移动距离,n为数组长度,将移动距离调整为右移量
	for(i=0;i

        2.本题要求实现一个用选择法对整数数组进行简单排序的函数。

void sort( int a[], int n )
{
    int i,j,temp;
    for (i = 0; i < n -1; i++)
    {
        for (int j = 0; j < n - i -1; j++)
        {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

        3.本题要求实现一个函数,从一张成绩单中求平均成绩。成绩结构体定义如下:

typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
//本程序输入n,再输入n个学生及成绩,输出平均成绩。
#include 
#include 
typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
double average ( Score a[], int n );
int main()
{
    Score *s;
    int n,i;
    scanf("%d",&n);
    if(n<=0) return 0;
    s=(Score *)malloc(n*sizeof(Score));
    for(i=0;i
double average ( Score a[], int n )
{
	int i;
	double sum=0,ave=0;
	for(i=0;i

       4. 某歌唱比赛计分规则是:对于评委给出的分数,去掉一个最高分,去掉一个最低分,剩余分数求算术平均值并保留2位小数,作为选手最终得分。本题要求实现这样一个计分函数。
评委给出的分数存在数组中,分数均为0~100之间的整数,并且保证评委人数在3~20之间。

函数接口定义:
double getScore(int *score, int total);

其中scoretotal是传入的参数,score是评委打分数组的首地址,total是评委人数;

函数将选手的得分以double类型返回,注意:函数返回的分数只需保证小数点后至少2位精确数字即可,打印2位小数得分的 *** 作由函数调用者进行。

/* 此测试程序仅为示例,实际的测试程序可能不同,不要仅针对样例的输入和输出编写函数,而是要根据题意要求编写函数 */
#include 
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( )函数,否则无法通过编译 */
double getScore(int *score, int total)
{
    int min=999,max=0,i;
    double sum = 0;
    for(i = 0;i < total;i++)
    {
        if(max < *(score+i))
        {
            max=*(score+i);
        }
        if(min > *(score+i))
        {
            min=*(score+i);
        }
    }
    for(i=0;i

        5.编写三个函数:求两个整数的最大值、最小值、和。分别用这三个函数作为实参,再写一个计算函数compute,对两个整数进行各种计算。其中一个形参为指向具体算法函数的指针。

函数接口定义:
int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));
#include 
using namespace std;

int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));

int main()
{
int a, b, res;
 cin >> a >> b;
res = compute(a, b, & max);
cout << "Max of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & min);
cout << "Min of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & sum);
cout << "Sum of " << a << " and " << b << " is " << res << endl;
return 0;
}
int compute(int a, int b, int(*func)(int, int))
{
    return (*func)(a, b);//func(a, b)
}
int max(int a, int b)
{
	return a>b?a:b;
}
int min(int a, int b)
{
	return a>b?b:a;
}
int sum(int a,int b)
{
    return a+b;
}

        6.本题要求实现一个函数swap,实现两个整数的交换。

void swap (int &a,int &b)
{
    int t;
    t = a;
    a = b;
    b = t;
}

        7.求矩阵的所有不靠边元素之和,矩阵行的值m从键盘读入(2<=m<=10),调用自定义函数Input实现矩阵元素从键盘输入,调用Sum函数实现求和。(只考虑float型,且不需考虑求和的结果可能超出float型能表示的范围)。

void Input(float a[][N],int m)
{
    for(int i=0;i

        8.英美人的姓名比较复杂,一般都由三个名字组成:教名、自取名和姓氏。假设所有名字的长度均不超过30个字符。请编写函数,根据教名、自取名和姓氏,生成完整的名字。

void FullName(char* full, const char* first, const char* middle, const char* last)
{
    int i = 0, j = 0;
    for (i = 0;first[i] != ''; i++)
    {
        full[j++] = first[i];
    }
    if (j != 0 && middle[0] != '') {
        full[j++] = ' ';
    }
    for (i = 0;middle[i] != ''; i++) {
        full[j++] = middle[i];
    }
    if (j != 0 && last[0] != '[+++]')
    {
        full[j++] = ' ';
    }
    for (i = 0; last[i] != '[+++]'; i++)
    {
        full[j++] = last[i];
    }
    if (j==0)
    {
        strcpy(full,"Noname");
        full[6]='[+++]';
    }
    else
        full[j] = '[+++]';
}

        9.某商店开展买一送一活动,购买两件商品时,只需支付价格较高的商品的金额。要求程序在输入两个商品的价格后,输出所应支付的金额,请根据裁判程序编写函数cut,将代码补充完整。

#include 
using namespace std;
//请在此处添加代码
int main(){
    float a,b;
    cin>>a>>b;
    cut(a,b)=0;
    cout<<"to pay:"<

        10.输入10个整数,完成一个函数使数据 重新排序以后输出(也按空格分隔),要求:
输出奇数在前偶数在后

#include 
#include 
#include 
using namespace std;
void sort_array(int* a);
/* 请在这里填写答案 */
int main(){
    int a[10];
    for (int i=0;i < 10; i++)
        cin>>a[i]; 
   sort_array(a);
    return 0;
}
void sort_array(int *a)
{
	int s[10], b[10], c[10], i, j = 0, k = 0, m, n;
	for (i = 0; i < 10; i++)
	{
		if (*(a + i) % 2 == 0) //偶数
		{
			b[j++] = *(a + i);
		}
		else//奇数
		{
			c[k++] = *(a + i);
		}
	}
	for (m = 0; m < j - 1; m++) //升序
	{
		for (n = 0; n < j - 1 - m; n++)
		{
			if (b[n] > b[n + 1])
			{
				int temp1 = b[n];
				b[n] = b[n + 1];
				b[n + 1] = temp1;
			}
		}
	}
	for (m = 0; m < k - 1; m++) //降序
	{
		for (n = 0; n < k - m - 1; n++)
		{
			if (c[n] < c[n + 1])
			{
				int temp2 = c[n];
				c[n] = c[n + 1];
				c[n + 1] = temp2;
			}
		}
	}
	int ct = 0, nt = 0;
	for (i = 0; i < 10; i++)
	{
		if (i < k )
			s[i] = c[ct++];
		else
			s[i]  = b[nt++];
	}
	for (i = 0; i < 10; i++)
	{
		if (i != 9)
			cout << s[i] << ' ';
		else
			cout << s[i];
	}
}
int cmp(int a,int b)
{
    if((a%2==1&&b%2==0)||((a%2==1&&b%2==1)&&a>b)||((a%2==0&&b%2==0)&&a 

11.

梦山高中现需要将某普通班的最优秀学生调整入理科实验班。为此,将从两个方面考察学生,一是数学和英语两门课的总分;另一个是所有四门课的总分。分别找出两科总分和全科总分的第一名,并从中决定调整人选。

输入将首先输入学生数n, (n为不超过80的正整数);接下来依次输入各位学生的学号,数学、英语、语文、理科综合成绩。学号及四科成绩均为不超过300的正整数。

输出时:第一行输出两科总分第一的学号,第二行输出四科总分第一的学号。 约定在两位学生成绩相同时,优先选择学号较小的学生;各位学生的学号均不相同

#include 
using namespace std;
const int N=80;
struct Student{
  int num;
  int score[4];
};

/* 请在这里填写答案 */

int main()
{
  int i, j, k, n;
  bool s2(const Student &, const Student &);
  bool s4(const Student &, const Student &);
  Student st[N];
   cin>>n;
   for(i=0;i>st[i].num;
      for(j=0;j<4;j++) cin>>st[i].score[j];
    }
   cout<
bool s2(const Student &a, const Student &b)
{
    if((a.score[0]+a.score[1]>b.score[0]+b.score[1])||((a.score[0]+a.score[1]==b.score[0]+b.score[1])&&a.numb.score[0]+b.score[1]+b.score[2]+b.score[3])||((a.score[0]+a.score[1]+a.score[2]+a.score[3]==b.score[0]+b.score[1]+b.score[2]+b.score[3])&&(a.num

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 18, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

        1.本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0​a1​⋯an−1​)变换为(an−m​⋯an−1​a0​a1​⋯an−m−1​)(最后m个数循环移至最前面的m个位置)。

#include 
#define MAXN 10

void ArrayShift(int a[], int n, int m)
{
	if(m > n) //判断是否超过数组超度,如是则取余移动
		m=m%n;
	int i,j,b[MAXN];
	for(i = 0;i < m;i++) //移动m次
	{
		int temp = a[n-1];
		for(j = n-1;j > 0;j--)
		{
			a[j] = a[j-1];
		}
		a[0] = temp;
	}	
}

int main()
{
    int a[MAXN], n, m;
    int i;

    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++) scanf("%d", &a[i]);

    ArrayShift(a, n, m);

    for (i = 0; i < n; i++) {
        if (i != 0) printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");

    return 0;
}
int ArrayShift(int a[], int n, int m )
{
	int b[MAXN], i;
    if(m > n) m=m%n; //m为移动距离,n为数组长度,将移动距离调整为右移量
	for(i=0;i

        2.本题要求实现一个用选择法对整数数组进行简单排序的函数。

void sort( int a[], int n )
{
    int i,j,temp;
    for (i = 0; i < n -1; i++)
    {
        for (int j = 0; j < n - i -1; j++)
        {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

        3.本题要求实现一个函数,从一张成绩单中求平均成绩。成绩结构体定义如下:

typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
//本程序输入n,再输入n个学生及成绩,输出平均成绩。
#include 
#include 
typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
double average ( Score a[], int n );
int main()
{
    Score *s;
    int n,i;
    scanf("%d",&n);
    if(n<=0) return 0;
    s=(Score *)malloc(n*sizeof(Score));
    for(i=0;i
double average ( Score a[], int n )
{
	int i;
	double sum=0,ave=0;
	for(i=0;i

       4. 某歌唱比赛计分规则是:对于评委给出的分数,去掉一个最高分,去掉一个最低分,剩余分数求算术平均值并保留2位小数,作为选手最终得分。本题要求实现这样一个计分函数。
评委给出的分数存在数组中,分数均为0~100之间的整数,并且保证评委人数在3~20之间。

函数接口定义:
double getScore(int *score, int total);

其中scoretotal是传入的参数,score是评委打分数组的首地址,total是评委人数;

函数将选手的得分以double类型返回,注意:函数返回的分数只需保证小数点后至少2位精确数字即可,打印2位小数得分的 *** 作由函数调用者进行。

/* 此测试程序仅为示例,实际的测试程序可能不同,不要仅针对样例的输入和输出编写函数,而是要根据题意要求编写函数 */
#include 
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( )函数,否则无法通过编译 */
double getScore(int *score, int total)
{
    int min=999,max=0,i;
    double sum = 0;
    for(i = 0;i < total;i++)
    {
        if(max < *(score+i))
        {
            max=*(score+i);
        }
        if(min > *(score+i))
        {
            min=*(score+i);
        }
    }
    for(i=0;i

        5.编写三个函数:求两个整数的最大值、最小值、和。分别用这三个函数作为实参,再写一个计算函数compute,对两个整数进行各种计算。其中一个形参为指向具体算法函数的指针。

函数接口定义:
int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));
#include 
using namespace std;

int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));

int main()
{
int a, b, res;
 cin >> a >> b;
res = compute(a, b, & max);
cout << "Max of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & min);
cout << "Min of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & sum);
cout << "Sum of " << a << " and " << b << " is " << res << endl;
return 0;
}
int compute(int a, int b, int(*func)(int, int))
{
    return (*func)(a, b);//func(a, b)
}
int max(int a, int b)
{
	return a>b?a:b;
}
int min(int a, int b)
{
	return a>b?b:a;
}
int sum(int a,int b)
{
    return a+b;
}

        6.本题要求实现一个函数swap,实现两个整数的交换。

void swap (int &a,int &b)
{
    int t;
    t = a;
    a = b;
    b = t;
}

        7.求矩阵的所有不靠边元素之和,矩阵行的值m从键盘读入(2<=m<=10),调用自定义函数Input实现矩阵元素从键盘输入,调用Sum函数实现求和。(只考虑float型,且不需考虑求和的结果可能超出float型能表示的范围)。

void Input(float a[][N],int m)
{
    for(int i=0;i

        8.英美人的姓名比较复杂,一般都由三个名字组成:教名、自取名和姓氏。假设所有名字的长度均不超过30个字符。请编写函数,根据教名、自取名和姓氏,生成完整的名字。

void FullName(char* full, const char* first, const char* middle, const char* last)
{
    int i = 0, j = 0;
    for (i = 0;first[i] != ''; i++)
    {
        full[j++] = first[i];
    }
    if (j != 0 && middle[0] != '') {
        full[j++] = ' ';
    }
    for (i = 0;middle[i] != ''; i++) {
        full[j++] = middle[i];
    }
    if (j != 0 && last[0] != '')
    {
        full[j++] = ' ';
    }
    for (i = 0; last[i] != '[+++]'; i++)
    {
        full[j++] = last[i];
    }
    if (j==0)
    {
        strcpy(full,"Noname");
        full[6]='[+++]';
    }
    else
        full[j] = '[+++]';
}

        9.某商店开展买一送一活动,购买两件商品时,只需支付价格较高的商品的金额。要求程序在输入两个商品的价格后,输出所应支付的金额,请根据裁判程序编写函数cut,将代码补充完整。

#include 
using namespace std;
//请在此处添加代码
int main(){
    float a,b;
    cin>>a>>b;
    cut(a,b)=0;
    cout<<"to pay:"<

        10.输入10个整数,完成一个函数使数据 重新排序以后输出(也按空格分隔),要求:
输出奇数在前偶数在后

#include 
#include 
#include 
using namespace std;
void sort_array(int* a);
/* 请在这里填写答案 */
int main(){
    int a[10];
    for (int i=0;i < 10; i++)
        cin>>a[i]; 
   sort_array(a);
    return 0;
}
void sort_array(int *a)
{
	int s[10], b[10], c[10], i, j = 0, k = 0, m, n;
	for (i = 0; i < 10; i++)
	{
		if (*(a + i) % 2 == 0) //偶数
		{
			b[j++] = *(a + i);
		}
		else//奇数
		{
			c[k++] = *(a + i);
		}
	}
	for (m = 0; m < j - 1; m++) //升序
	{
		for (n = 0; n < j - 1 - m; n++)
		{
			if (b[n] > b[n + 1])
			{
				int temp1 = b[n];
				b[n] = b[n + 1];
				b[n + 1] = temp1;
			}
		}
	}
	for (m = 0; m < k - 1; m++) //降序
	{
		for (n = 0; n < k - m - 1; n++)
		{
			if (c[n] < c[n + 1])
			{
				int temp2 = c[n];
				c[n] = c[n + 1];
				c[n + 1] = temp2;
			}
		}
	}
	int ct = 0, nt = 0;
	for (i = 0; i < 10; i++)
	{
		if (i < k )
			s[i] = c[ct++];
		else
			s[i]  = b[nt++];
	}
	for (i = 0; i < 10; i++)
	{
		if (i != 9)
			cout << s[i] << ' ';
		else
			cout << s[i];
	}
}
int cmp(int a,int b)
{
    if((a%2==1&&b%2==0)||((a%2==1&&b%2==1)&&a>b)||((a%2==0&&b%2==0)&&a 

11.

梦山高中现需要将某普通班的最优秀学生调整入理科实验班。为此,将从两个方面考察学生,一是数学和英语两门课的总分;另一个是所有四门课的总分。分别找出两科总分和全科总分的第一名,并从中决定调整人选。

输入将首先输入学生数n, (n为不超过80的正整数);接下来依次输入各位学生的学号,数学、英语、语文、理科综合成绩。学号及四科成绩均为不超过300的正整数。

输出时:第一行输出两科总分第一的学号,第二行输出四科总分第一的学号。 约定在两位学生成绩相同时,优先选择学号较小的学生;各位学生的学号均不相同

#include 
using namespace std;
const int N=80;
struct Student{
  int num;
  int score[4];
};

/* 请在这里填写答案 */

int main()
{
  int i, j, k, n;
  bool s2(const Student &, const Student &);
  bool s4(const Student &, const Student &);
  Student st[N];
   cin>>n;
   for(i=0;i>st[i].num;
      for(j=0;j<4;j++) cin>>st[i].score[j];
    }
   cout<
bool s2(const Student &a, const Student &b)
{
    if((a.score[0]+a.score[1]>b.score[0]+b.score[1])||((a.score[0]+a.score[1]==b.score[0]+b.score[1])&&a.numb.score[0]+b.score[1]+b.score[2]+b.score[3])||((a.score[0]+a.score[1]+a.score[2]+a.score[3]==b.score[0]+b.score[1]+b.score[2]+b.score[3])&&(a.num

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 19, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

        1.本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0​a1​⋯an−1​)变换为(an−m​⋯an−1​a0​a1​⋯an−m−1​)(最后m个数循环移至最前面的m个位置)。

#include 
#define MAXN 10

void ArrayShift(int a[], int n, int m)
{
	if(m > n) //判断是否超过数组超度,如是则取余移动
		m=m%n;
	int i,j,b[MAXN];
	for(i = 0;i < m;i++) //移动m次
	{
		int temp = a[n-1];
		for(j = n-1;j > 0;j--)
		{
			a[j] = a[j-1];
		}
		a[0] = temp;
	}	
}

int main()
{
    int a[MAXN], n, m;
    int i;

    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++) scanf("%d", &a[i]);

    ArrayShift(a, n, m);

    for (i = 0; i < n; i++) {
        if (i != 0) printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");

    return 0;
}
int ArrayShift(int a[], int n, int m )
{
	int b[MAXN], i;
    if(m > n) m=m%n; //m为移动距离,n为数组长度,将移动距离调整为右移量
	for(i=0;i

        2.本题要求实现一个用选择法对整数数组进行简单排序的函数。

void sort( int a[], int n )
{
    int i,j,temp;
    for (i = 0; i < n -1; i++)
    {
        for (int j = 0; j < n - i -1; j++)
        {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

        3.本题要求实现一个函数,从一张成绩单中求平均成绩。成绩结构体定义如下:

typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
//本程序输入n,再输入n个学生及成绩,输出平均成绩。
#include 
#include 
typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
double average ( Score a[], int n );
int main()
{
    Score *s;
    int n,i;
    scanf("%d",&n);
    if(n<=0) return 0;
    s=(Score *)malloc(n*sizeof(Score));
    for(i=0;i
double average ( Score a[], int n )
{
	int i;
	double sum=0,ave=0;
	for(i=0;i

       4. 某歌唱比赛计分规则是:对于评委给出的分数,去掉一个最高分,去掉一个最低分,剩余分数求算术平均值并保留2位小数,作为选手最终得分。本题要求实现这样一个计分函数。
评委给出的分数存在数组中,分数均为0~100之间的整数,并且保证评委人数在3~20之间。

函数接口定义:
double getScore(int *score, int total);

其中scoretotal是传入的参数,score是评委打分数组的首地址,total是评委人数;

函数将选手的得分以double类型返回,注意:函数返回的分数只需保证小数点后至少2位精确数字即可,打印2位小数得分的 *** 作由函数调用者进行。

/* 此测试程序仅为示例,实际的测试程序可能不同,不要仅针对样例的输入和输出编写函数,而是要根据题意要求编写函数 */
#include 
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( )函数,否则无法通过编译 */
double getScore(int *score, int total)
{
    int min=999,max=0,i;
    double sum = 0;
    for(i = 0;i < total;i++)
    {
        if(max < *(score+i))
        {
            max=*(score+i);
        }
        if(min > *(score+i))
        {
            min=*(score+i);
        }
    }
    for(i=0;i

        5.编写三个函数:求两个整数的最大值、最小值、和。分别用这三个函数作为实参,再写一个计算函数compute,对两个整数进行各种计算。其中一个形参为指向具体算法函数的指针。

函数接口定义:
int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));
#include 
using namespace std;

int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));

int main()
{
int a, b, res;
 cin >> a >> b;
res = compute(a, b, & max);
cout << "Max of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & min);
cout << "Min of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & sum);
cout << "Sum of " << a << " and " << b << " is " << res << endl;
return 0;
}
int compute(int a, int b, int(*func)(int, int))
{
    return (*func)(a, b);//func(a, b)
}
int max(int a, int b)
{
	return a>b?a:b;
}
int min(int a, int b)
{
	return a>b?b:a;
}
int sum(int a,int b)
{
    return a+b;
}

        6.本题要求实现一个函数swap,实现两个整数的交换。

void swap (int &a,int &b)
{
    int t;
    t = a;
    a = b;
    b = t;
}

        7.求矩阵的所有不靠边元素之和,矩阵行的值m从键盘读入(2<=m<=10),调用自定义函数Input实现矩阵元素从键盘输入,调用Sum函数实现求和。(只考虑float型,且不需考虑求和的结果可能超出float型能表示的范围)。

void Input(float a[][N],int m)
{
    for(int i=0;i

        8.英美人的姓名比较复杂,一般都由三个名字组成:教名、自取名和姓氏。假设所有名字的长度均不超过30个字符。请编写函数,根据教名、自取名和姓氏,生成完整的名字。

void FullName(char* full, const char* first, const char* middle, const char* last)
{
    int i = 0, j = 0;
    for (i = 0;first[i] != ''; i++)
    {
        full[j++] = first[i];
    }
    if (j != 0 && middle[0] != '') {
        full[j++] = ' ';
    }
    for (i = 0;middle[i] != ''; i++) {
        full[j++] = middle[i];
    }
    if (j != 0 && last[0] != '')
    {
        full[j++] = ' ';
    }
    for (i = 0; last[i] != ''; i++)
    {
        full[j++] = last[i];
    }
    if (j==0)
    {
        strcpy(full,"Noname");
        full[6]='[+++]';
    }
    else
        full[j] = '[+++]';
}

        9.某商店开展买一送一活动,购买两件商品时,只需支付价格较高的商品的金额。要求程序在输入两个商品的价格后,输出所应支付的金额,请根据裁判程序编写函数cut,将代码补充完整。

#include 
using namespace std;
//请在此处添加代码
int main(){
    float a,b;
    cin>>a>>b;
    cut(a,b)=0;
    cout<<"to pay:"<

        10.输入10个整数,完成一个函数使数据 重新排序以后输出(也按空格分隔),要求:
输出奇数在前偶数在后

#include 
#include 
#include 
using namespace std;
void sort_array(int* a);
/* 请在这里填写答案 */
int main(){
    int a[10];
    for (int i=0;i < 10; i++)
        cin>>a[i]; 
   sort_array(a);
    return 0;
}
void sort_array(int *a)
{
	int s[10], b[10], c[10], i, j = 0, k = 0, m, n;
	for (i = 0; i < 10; i++)
	{
		if (*(a + i) % 2 == 0) //偶数
		{
			b[j++] = *(a + i);
		}
		else//奇数
		{
			c[k++] = *(a + i);
		}
	}
	for (m = 0; m < j - 1; m++) //升序
	{
		for (n = 0; n < j - 1 - m; n++)
		{
			if (b[n] > b[n + 1])
			{
				int temp1 = b[n];
				b[n] = b[n + 1];
				b[n + 1] = temp1;
			}
		}
	}
	for (m = 0; m < k - 1; m++) //降序
	{
		for (n = 0; n < k - m - 1; n++)
		{
			if (c[n] < c[n + 1])
			{
				int temp2 = c[n];
				c[n] = c[n + 1];
				c[n + 1] = temp2;
			}
		}
	}
	int ct = 0, nt = 0;
	for (i = 0; i < 10; i++)
	{
		if (i < k )
			s[i] = c[ct++];
		else
			s[i]  = b[nt++];
	}
	for (i = 0; i < 10; i++)
	{
		if (i != 9)
			cout << s[i] << ' ';
		else
			cout << s[i];
	}
}
int cmp(int a,int b)
{
    if((a%2==1&&b%2==0)||((a%2==1&&b%2==1)&&a>b)||((a%2==0&&b%2==0)&&a 

11.

梦山高中现需要将某普通班的最优秀学生调整入理科实验班。为此,将从两个方面考察学生,一是数学和英语两门课的总分;另一个是所有四门课的总分。分别找出两科总分和全科总分的第一名,并从中决定调整人选。

输入将首先输入学生数n, (n为不超过80的正整数);接下来依次输入各位学生的学号,数学、英语、语文、理科综合成绩。学号及四科成绩均为不超过300的正整数。

输出时:第一行输出两科总分第一的学号,第二行输出四科总分第一的学号。 约定在两位学生成绩相同时,优先选择学号较小的学生;各位学生的学号均不相同

#include 
using namespace std;
const int N=80;
struct Student{
  int num;
  int score[4];
};

/* 请在这里填写答案 */

int main()
{
  int i, j, k, n;
  bool s2(const Student &, const Student &);
  bool s4(const Student &, const Student &);
  Student st[N];
   cin>>n;
   for(i=0;i>st[i].num;
      for(j=0;j<4;j++) cin>>st[i].score[j];
    }
   cout<
bool s2(const Student &a, const Student &b)
{
    if((a.score[0]+a.score[1]>b.score[0]+b.score[1])||((a.score[0]+a.score[1]==b.score[0]+b.score[1])&&a.numb.score[0]+b.score[1]+b.score[2]+b.score[3])||((a.score[0]+a.score[1]+a.score[2]+a.score[3]==b.score[0]+b.score[1]+b.score[2]+b.score[3])&&(a.num

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 20, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

        1.本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0​a1​⋯an−1​)变换为(an−m​⋯an−1​a0​a1​⋯an−m−1​)(最后m个数循环移至最前面的m个位置)。

#include 
#define MAXN 10

void ArrayShift(int a[], int n, int m)
{
	if(m > n) //判断是否超过数组超度,如是则取余移动
		m=m%n;
	int i,j,b[MAXN];
	for(i = 0;i < m;i++) //移动m次
	{
		int temp = a[n-1];
		for(j = n-1;j > 0;j--)
		{
			a[j] = a[j-1];
		}
		a[0] = temp;
	}	
}

int main()
{
    int a[MAXN], n, m;
    int i;

    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++) scanf("%d", &a[i]);

    ArrayShift(a, n, m);

    for (i = 0; i < n; i++) {
        if (i != 0) printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");

    return 0;
}
int ArrayShift(int a[], int n, int m )
{
	int b[MAXN], i;
    if(m > n) m=m%n; //m为移动距离,n为数组长度,将移动距离调整为右移量
	for(i=0;i

        2.本题要求实现一个用选择法对整数数组进行简单排序的函数。

void sort( int a[], int n )
{
    int i,j,temp;
    for (i = 0; i < n -1; i++)
    {
        for (int j = 0; j < n - i -1; j++)
        {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

        3.本题要求实现一个函数,从一张成绩单中求平均成绩。成绩结构体定义如下:

typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
//本程序输入n,再输入n个学生及成绩,输出平均成绩。
#include 
#include 
typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
double average ( Score a[], int n );
int main()
{
    Score *s;
    int n,i;
    scanf("%d",&n);
    if(n<=0) return 0;
    s=(Score *)malloc(n*sizeof(Score));
    for(i=0;i
double average ( Score a[], int n )
{
	int i;
	double sum=0,ave=0;
	for(i=0;i

       4. 某歌唱比赛计分规则是:对于评委给出的分数,去掉一个最高分,去掉一个最低分,剩余分数求算术平均值并保留2位小数,作为选手最终得分。本题要求实现这样一个计分函数。
评委给出的分数存在数组中,分数均为0~100之间的整数,并且保证评委人数在3~20之间。

函数接口定义:
double getScore(int *score, int total);

其中scoretotal是传入的参数,score是评委打分数组的首地址,total是评委人数;

函数将选手的得分以double类型返回,注意:函数返回的分数只需保证小数点后至少2位精确数字即可,打印2位小数得分的 *** 作由函数调用者进行。

/* 此测试程序仅为示例,实际的测试程序可能不同,不要仅针对样例的输入和输出编写函数,而是要根据题意要求编写函数 */
#include 
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( )函数,否则无法通过编译 */
double getScore(int *score, int total)
{
    int min=999,max=0,i;
    double sum = 0;
    for(i = 0;i < total;i++)
    {
        if(max < *(score+i))
        {
            max=*(score+i);
        }
        if(min > *(score+i))
        {
            min=*(score+i);
        }
    }
    for(i=0;i

        5.编写三个函数:求两个整数的最大值、最小值、和。分别用这三个函数作为实参,再写一个计算函数compute,对两个整数进行各种计算。其中一个形参为指向具体算法函数的指针。

函数接口定义:
int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));
#include 
using namespace std;

int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));

int main()
{
int a, b, res;
 cin >> a >> b;
res = compute(a, b, & max);
cout << "Max of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & min);
cout << "Min of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & sum);
cout << "Sum of " << a << " and " << b << " is " << res << endl;
return 0;
}
int compute(int a, int b, int(*func)(int, int))
{
    return (*func)(a, b);//func(a, b)
}
int max(int a, int b)
{
	return a>b?a:b;
}
int min(int a, int b)
{
	return a>b?b:a;
}
int sum(int a,int b)
{
    return a+b;
}

        6.本题要求实现一个函数swap,实现两个整数的交换。

void swap (int &a,int &b)
{
    int t;
    t = a;
    a = b;
    b = t;
}

        7.求矩阵的所有不靠边元素之和,矩阵行的值m从键盘读入(2<=m<=10),调用自定义函数Input实现矩阵元素从键盘输入,调用Sum函数实现求和。(只考虑float型,且不需考虑求和的结果可能超出float型能表示的范围)。

void Input(float a[][N],int m)
{
    for(int i=0;i

        8.英美人的姓名比较复杂,一般都由三个名字组成:教名、自取名和姓氏。假设所有名字的长度均不超过30个字符。请编写函数,根据教名、自取名和姓氏,生成完整的名字。

void FullName(char* full, const char* first, const char* middle, const char* last)
{
    int i = 0, j = 0;
    for (i = 0;first[i] != ''; i++)
    {
        full[j++] = first[i];
    }
    if (j != 0 && middle[0] != '') {
        full[j++] = ' ';
    }
    for (i = 0;middle[i] != ''; i++) {
        full[j++] = middle[i];
    }
    if (j != 0 && last[0] != '')
    {
        full[j++] = ' ';
    }
    for (i = 0; last[i] != ''; i++)
    {
        full[j++] = last[i];
    }
    if (j==0)
    {
        strcpy(full,"Noname");
        full[6]='';
    }
    else
        full[j] = '[+++]';
}

        9.某商店开展买一送一活动,购买两件商品时,只需支付价格较高的商品的金额。要求程序在输入两个商品的价格后,输出所应支付的金额,请根据裁判程序编写函数cut,将代码补充完整。

#include 
using namespace std;
//请在此处添加代码
int main(){
    float a,b;
    cin>>a>>b;
    cut(a,b)=0;
    cout<<"to pay:"<

        10.输入10个整数,完成一个函数使数据 重新排序以后输出(也按空格分隔),要求:
输出奇数在前偶数在后

#include 
#include 
#include 
using namespace std;
void sort_array(int* a);
/* 请在这里填写答案 */
int main(){
    int a[10];
    for (int i=0;i < 10; i++)
        cin>>a[i]; 
   sort_array(a);
    return 0;
}
void sort_array(int *a)
{
	int s[10], b[10], c[10], i, j = 0, k = 0, m, n;
	for (i = 0; i < 10; i++)
	{
		if (*(a + i) % 2 == 0) //偶数
		{
			b[j++] = *(a + i);
		}
		else//奇数
		{
			c[k++] = *(a + i);
		}
	}
	for (m = 0; m < j - 1; m++) //升序
	{
		for (n = 0; n < j - 1 - m; n++)
		{
			if (b[n] > b[n + 1])
			{
				int temp1 = b[n];
				b[n] = b[n + 1];
				b[n + 1] = temp1;
			}
		}
	}
	for (m = 0; m < k - 1; m++) //降序
	{
		for (n = 0; n < k - m - 1; n++)
		{
			if (c[n] < c[n + 1])
			{
				int temp2 = c[n];
				c[n] = c[n + 1];
				c[n + 1] = temp2;
			}
		}
	}
	int ct = 0, nt = 0;
	for (i = 0; i < 10; i++)
	{
		if (i < k )
			s[i] = c[ct++];
		else
			s[i]  = b[nt++];
	}
	for (i = 0; i < 10; i++)
	{
		if (i != 9)
			cout << s[i] << ' ';
		else
			cout << s[i];
	}
}
int cmp(int a,int b)
{
    if((a%2==1&&b%2==0)||((a%2==1&&b%2==1)&&a>b)||((a%2==0&&b%2==0)&&a 

11.

梦山高中现需要将某普通班的最优秀学生调整入理科实验班。为此,将从两个方面考察学生,一是数学和英语两门课的总分;另一个是所有四门课的总分。分别找出两科总分和全科总分的第一名,并从中决定调整人选。

输入将首先输入学生数n, (n为不超过80的正整数);接下来依次输入各位学生的学号,数学、英语、语文、理科综合成绩。学号及四科成绩均为不超过300的正整数。

输出时:第一行输出两科总分第一的学号,第二行输出四科总分第一的学号。 约定在两位学生成绩相同时,优先选择学号较小的学生;各位学生的学号均不相同

#include 
using namespace std;
const int N=80;
struct Student{
  int num;
  int score[4];
};

/* 请在这里填写答案 */

int main()
{
  int i, j, k, n;
  bool s2(const Student &, const Student &);
  bool s4(const Student &, const Student &);
  Student st[N];
   cin>>n;
   for(i=0;i>st[i].num;
      for(j=0;j<4;j++) cin>>st[i].score[j];
    }
   cout<
bool s2(const Student &a, const Student &b)
{
    if((a.score[0]+a.score[1]>b.score[0]+b.score[1])||((a.score[0]+a.score[1]==b.score[0]+b.score[1])&&a.numb.score[0]+b.score[1]+b.score[2]+b.score[3])||((a.score[0]+a.score[1]+a.score[2]+a.score[3]==b.score[0]+b.score[1]+b.score[2]+b.score[3])&&(a.num

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
C++第9周课后作业(数组函数指针)_C_内存溢出

C++第9周课后作业(数组函数指针)

C++第9周课后作业(数组函数指针),第1张

        1.本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0​a1​⋯an−1​)变换为(an−m​⋯an−1​a0​a1​⋯an−m−1​)(最后m个数循环移至最前面的m个位置)。

#include 
#define MAXN 10

void ArrayShift(int a[], int n, int m)
{
	if(m > n) //判断是否超过数组超度,如是则取余移动
		m=m%n;
	int i,j,b[MAXN];
	for(i = 0;i < m;i++) //移动m次
	{
		int temp = a[n-1];
		for(j = n-1;j > 0;j--)
		{
			a[j] = a[j-1];
		}
		a[0] = temp;
	}	
}

int main()
{
    int a[MAXN], n, m;
    int i;

    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++) scanf("%d", &a[i]);

    ArrayShift(a, n, m);

    for (i = 0; i < n; i++) {
        if (i != 0) printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");

    return 0;
}
int ArrayShift(int a[], int n, int m )
{
	int b[MAXN], i;
    if(m > n) m=m%n; //m为移动距离,n为数组长度,将移动距离调整为右移量
	for(i=0;i

        2.本题要求实现一个用选择法对整数数组进行简单排序的函数。

void sort( int a[], int n )
{
    int i,j,temp;
    for (i = 0; i < n -1; i++)
    {
        for (int j = 0; j < n - i -1; j++)
        {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

        3.本题要求实现一个函数,从一张成绩单中求平均成绩。成绩结构体定义如下:

typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
//本程序输入n,再输入n个学生及成绩,输出平均成绩。
#include 
#include 
typedef struct
{
    char name[50]; //姓名
    int score;  //成绩
}Score;
double average ( Score a[], int n );
int main()
{
    Score *s;
    int n,i;
    scanf("%d",&n);
    if(n<=0) return 0;
    s=(Score *)malloc(n*sizeof(Score));
    for(i=0;i
double average ( Score a[], int n )
{
	int i;
	double sum=0,ave=0;
	for(i=0;i

       4. 某歌唱比赛计分规则是:对于评委给出的分数,去掉一个最高分,去掉一个最低分,剩余分数求算术平均值并保留2位小数,作为选手最终得分。本题要求实现这样一个计分函数。
评委给出的分数存在数组中,分数均为0~100之间的整数,并且保证评委人数在3~20之间。

函数接口定义:
double getScore(int *score, int total);

其中scoretotal是传入的参数,score是评委打分数组的首地址,total是评委人数;

函数将选手的得分以double类型返回,注意:函数返回的分数只需保证小数点后至少2位精确数字即可,打印2位小数得分的 *** 作由函数调用者进行。

/* 此测试程序仅为示例,实际的测试程序可能不同,不要仅针对样例的输入和输出编写函数,而是要根据题意要求编写函数 */
#include 
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( )函数,否则无法通过编译 */
double getScore(int *score, int total)
{
    int min=999,max=0,i;
    double sum = 0;
    for(i = 0;i < total;i++)
    {
        if(max < *(score+i))
        {
            max=*(score+i);
        }
        if(min > *(score+i))
        {
            min=*(score+i);
        }
    }
    for(i=0;i

        5.编写三个函数:求两个整数的最大值、最小值、和。分别用这三个函数作为实参,再写一个计算函数compute,对两个整数进行各种计算。其中一个形参为指向具体算法函数的指针。

函数接口定义:
int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));
#include 
using namespace std;

int max(int a, int b);
int min(int a, int b);
int sum(int a, int b);
int compute(int a, int b, int(*func)(int, int));

int main()
{
int a, b, res;
 cin >> a >> b;
res = compute(a, b, & max);
cout << "Max of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & min);
cout << "Min of " << a << " and " << b << " is " << res << endl;
res = compute(a, b, & sum);
cout << "Sum of " << a << " and " << b << " is " << res << endl;
return 0;
}
int compute(int a, int b, int(*func)(int, int))
{
    return (*func)(a, b);//func(a, b)
}
int max(int a, int b)
{
	return a>b?a:b;
}
int min(int a, int b)
{
	return a>b?b:a;
}
int sum(int a,int b)
{
    return a+b;
}

        6.本题要求实现一个函数swap,实现两个整数的交换。

void swap (int &a,int &b)
{
    int t;
    t = a;
    a = b;
    b = t;
}

        7.求矩阵的所有不靠边元素之和,矩阵行的值m从键盘读入(2<=m<=10),调用自定义函数Input实现矩阵元素从键盘输入,调用Sum函数实现求和。(只考虑float型,且不需考虑求和的结果可能超出float型能表示的范围)。

void Input(float a[][N],int m)
{
    for(int i=0;i

        8.英美人的姓名比较复杂,一般都由三个名字组成:教名、自取名和姓氏。假设所有名字的长度均不超过30个字符。请编写函数,根据教名、自取名和姓氏,生成完整的名字。

void FullName(char* full, const char* first, const char* middle, const char* last)
{
    int i = 0, j = 0;
    for (i = 0;first[i] != ''; i++)
    {
        full[j++] = first[i];
    }
    if (j != 0 && middle[0] != '') {
        full[j++] = ' ';
    }
    for (i = 0;middle[i] != ''; i++) {
        full[j++] = middle[i];
    }
    if (j != 0 && last[0] != '')
    {
        full[j++] = ' ';
    }
    for (i = 0; last[i] != ''; i++)
    {
        full[j++] = last[i];
    }
    if (j==0)
    {
        strcpy(full,"Noname");
        full[6]='';
    }
    else
        full[j] = '';
}

        9.某商店开展买一送一活动,购买两件商品时,只需支付价格较高的商品的金额。要求程序在输入两个商品的价格后,输出所应支付的金额,请根据裁判程序编写函数cut,将代码补充完整。

#include 
using namespace std;
//请在此处添加代码
int main(){
    float a,b;
    cin>>a>>b;
    cut(a,b)=0;
    cout<<"to pay:"<

        10.输入10个整数,完成一个函数使数据 重新排序以后输出(也按空格分隔),要求:
输出奇数在前偶数在后

#include 
#include 
#include 
using namespace std;
void sort_array(int* a);
/* 请在这里填写答案 */
int main(){
    int a[10];
    for (int i=0;i < 10; i++)
        cin>>a[i]; 
   sort_array(a);
    return 0;
}
void sort_array(int *a)
{
	int s[10], b[10], c[10], i, j = 0, k = 0, m, n;
	for (i = 0; i < 10; i++)
	{
		if (*(a + i) % 2 == 0) //偶数
		{
			b[j++] = *(a + i);
		}
		else//奇数
		{
			c[k++] = *(a + i);
		}
	}
	for (m = 0; m < j - 1; m++) //升序
	{
		for (n = 0; n < j - 1 - m; n++)
		{
			if (b[n] > b[n + 1])
			{
				int temp1 = b[n];
				b[n] = b[n + 1];
				b[n + 1] = temp1;
			}
		}
	}
	for (m = 0; m < k - 1; m++) //降序
	{
		for (n = 0; n < k - m - 1; n++)
		{
			if (c[n] < c[n + 1])
			{
				int temp2 = c[n];
				c[n] = c[n + 1];
				c[n + 1] = temp2;
			}
		}
	}
	int ct = 0, nt = 0;
	for (i = 0; i < 10; i++)
	{
		if (i < k )
			s[i] = c[ct++];
		else
			s[i]  = b[nt++];
	}
	for (i = 0; i < 10; i++)
	{
		if (i != 9)
			cout << s[i] << ' ';
		else
			cout << s[i];
	}
}
int cmp(int a,int b)
{
    if((a%2==1&&b%2==0)||((a%2==1&&b%2==1)&&a>b)||((a%2==0&&b%2==0)&&a 

11.

梦山高中现需要将某普通班的最优秀学生调整入理科实验班。为此,将从两个方面考察学生,一是数学和英语两门课的总分;另一个是所有四门课的总分。分别找出两科总分和全科总分的第一名,并从中决定调整人选。

输入将首先输入学生数n, (n为不超过80的正整数);接下来依次输入各位学生的学号,数学、英语、语文、理科综合成绩。学号及四科成绩均为不超过300的正整数。

输出时:第一行输出两科总分第一的学号,第二行输出四科总分第一的学号。 约定在两位学生成绩相同时,优先选择学号较小的学生;各位学生的学号均不相同

#include 
using namespace std;
const int N=80;
struct Student{
  int num;
  int score[4];
};

/* 请在这里填写答案 */

int main()
{
  int i, j, k, n;
  bool s2(const Student &, const Student &);
  bool s4(const Student &, const Student &);
  Student st[N];
   cin>>n;
   for(i=0;i>st[i].num;
      for(j=0;j<4;j++) cin>>st[i].score[j];
    }
   cout<
bool s2(const Student &a, const Student &b)
{
    if((a.score[0]+a.score[1]>b.score[0]+b.score[1])||((a.score[0]+a.score[1]==b.score[0]+b.score[1])&&a.numb.score[0]+b.score[1]+b.score[2]+b.score[3])||((a.score[0]+a.score[1]+a.score[2]+a.score[3]==b.score[0]+b.score[1]+b.score[2]+b.score[3])&&(a.num

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/735343.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)