实验6:数组

第1关:排序问题

任务描述

本关任务:将十个数进行从大到小的顺序进行排列。

相关知识(略)
编程要求

根据提示,在右侧编辑器Begin-End处补充代码。 输入 输入十个整数。

输出 以从大到小的顺序输出这个十个数。

测试说明

样例输入: 1 2 3 4 5 6 7 8 9 10

样例输出: 10 9 8 7 6 5 4 3 2 1

上答案:
 

include<stdio.h>
int main(void)
{
    /*********Begin*********/
int i,j,t;
int a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
{
    for(i=0;i<9-j;i++)
       { 
          if(a[i]<a[i+1])
          {t=a[i];
           a[i]=a[i+1];
           a[i+1]=t;
         }
        }
}
printf("");
for(i=0;i<10;i++)
{
   printf("%2d",a[i]);
}
printf("");


    /*********End**********/
    return 0;
}

第2关:计算数组中元素的最大值及其所在的行列下标值

任务描述

题目描述:按如下函数原型编程从键盘输入一个mn列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中mn的值由用户键盘输入。已知mn的值都不超过10

相关知识(略)
输入

输入数组大小:"%d,%d" 下面输入数组中元素。

输出

输出格式: 数组大小输入提示信息:"Input m, n:" 数组元素输入提示信息:"Input %d*%d array: " 输出格式:"max=%d, row=%d, col=%d"

样例输入

5,5

1 2 3 4 5

4 5 6 100 2

3 2 1 5 6

1 2 3 5 4

3 5 6 4 8

样例输出

Input m, n:Input 5*5 array:

max=100, row=2, col=4

上答案:

#include<stdio.h>
int main(void)
{
    /*********Begin*********/
int m, n,j,i,max,row,col;
printf("Input m, n:");
scanf("%d,%d",&m,&n);
int a[m][n];
printf("Input %d*%d array:\n",m,n);
for(i=0;i<n;i++)
{
    for(j=0;j<m;j++)
    scanf("%d",&a[i][j]);
}
max=a[0][0];
row=1;
col=1;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(max<a[i][j])
{
    max=a[i][j];
    row=i+1;
    col=j+1;
}

printf("max=%d, row=%d, col=%d",max,row,col);
    /*********End**********/
    return 0;
}

第3关:鞍点

任务描述

题目描述:找出具有mn列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10

相关知识(略)
编程要求
输入

输入数据有多行,第一行有两个数mn,下面有m行,每行有n个数。

输出

按下列格式输出鞍点: Array[i][j]=x 其中x代表鞍点,ij为鞍点所在的数组行和列下标,我们规定数组下标从0开始。 一个二维数组并不一定存在鞍点,此时请输出None 我们保证不会出现两个鞍点的情况,比如: 3 3 1 2 3 1 2 3 3 6 8

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。

样例输入:

3 3

1 2 3

4 5 6

7 8 9

样例输出:

Array[0][2]=3

上答案:

#include<stdio.h>
int main(void)
{
    /*********Begin*********/
int m,n;
    int Array[10][10];
    int i,j,b=0,c=0;
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++)
	{
        for(j=0;j<n;j++)
		{
            scanf("%d",&Array[i][j]);
        }
    }
    int max=0;
    int min=0; 
    for(i=0;i<m;i++)
    {
        max=Array[i][0];
        for(j=0;j<n;j++)
        {
             
             if(Array[i][j]>max)
             {
                 max=Array[i][j];
                 b=j; 
             }
        }
        min=Array[0][b];
        for(int k=0;k<m;k++)
		{
		
            if(Array[k][b]<min)
            {
                min=Array[k][b];
                c=k; 
            }
        }
        if(min==max) 
	    {
            printf("Array[%d][%d]=%d",c,b,Array[c][b]);
            break; 
        }
    }
    if(min!=max) 
	{
    	printf("None");
	}

    /*********End**********/
    return 0;
}

第4关:字符插入

任务描述

题目描述:输入两个字符串ab,将b串中的最大字符插入到a串中最小字符后面。

相关知识(略)
编程要求

请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充。 输入 输入一段文字 输出 输入两个字符串ab

测试说明

样例输入: MynameisAmy MynameisJane

样例输出: MynameisAymy

提示: 字符串长度不超过100

注意:使用**gets()**函数会引起警告并不是报错,只要代码编译正确并不会影响测评结果。 推荐使用:fgets()函数。

上答案:
 

#include <stdio.h>
#include <string.h>
#define MAX 100
int main(void)
{
    /*********Begin*********/
char a[MAX],b[MAX];		
	int i,j,n,m,min,max;
	gets(a);
	m=strlen(a);	
	for(i=0,min=0; i<m; i++)
		if(a[i]<a[min])
			min=i;	

	gets(b);
	n=strlen(b);
	for(i=0,max=0; i<n; i++)
		if(b[i]>b[max])
			max=i;	

	for(j=m+1; j>min; j--)
		a[j]=a[j-1];	
	a[j+1]=b[max];
	puts(a);

    /*********End**********/
    return 0;
}

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Galaxy*★

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值