头歌平台 一维数组和二维数组

#第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 a[10],t,i,j;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
    for(j=0;j<9-i;j++)
    {
      if(a[j]<a[j+1])
      {
       t=a[j];
       a[j]=a[j+1];
       a[j+1]=t;
      }
    }
}
for(i=0;i<10;i++)

 printf("%d ",a[i]);


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

#第2关:查找整数

任务描述
题目描述:给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End处补充代码。
输入
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

测试说明
样例输入:
6
1 9 4 8 3 9
9
样例输出:
2
提示:
数据规模与约定。
1 <= n <= 1000

#include<stdio.h>
int main(void)
{
    /*********Begin*********/
int a[10000],n,x,i,c;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
for(i=1;i<=n;i++)
{
   if(a[i]==x)
  {
        printf("%d",i);
        c=1;
        break;
  }
}
if(c==0)
printf("-1");

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

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

任务描述
题目描述:按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中m和n的值由用户键盘输入。已知m和n的值都不超过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 a[100][100];
int i,j,max=0,m,n,p,q;
printf("Input m, n:");
scanf("%d,%d",&m,&n);
printf("Input %d*%d array:",m,n);
for(i=0;i<m;i++)
{
    for(j=0;j<n;j++)
    {
        scanf("%d",&a[i][j]);
        if(a[i][j]>max)
        {
            max=a[i][j];
            p=i+1;
            q=j+1;
        }
    }
}
printf("\nmax=%d, row=%d, col=%d",max,p,q);

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

#第4关:二分查找

任务描述
题目描述:将n个从小到大排序的整数(n<1000000)从1~n进行编号,并一个待查找的整数m,请使用二分法进行查找。
####相关知识(略)
####编程要求
根据提示,在右侧编辑器Begin-End处补充代码。
输入
输入包括3行,第一行为整数n,第二行包括n个整数,以空格分隔,第三行为整数m。
输出
如果能够在序列中找到整数m,则输出编号(如果存在多个编号,返回编号最小的),如果不存在,则输出None。

测试说明
样例输入:
10
1 2 4 5 6 7 8 9 10 11
10
样例输出:
9

#include<stdio.h>
int main(void)
{
   
    /*********Begin*********/
 	int a[100],i,n,m,t,x=1;
  	scanf("%d",&n);
  	t=(n/2)+1;
  	for(i=1;i<=n;i++)
  	scanf("%d",&a[i]);
 	scanf("%d",&m);
 	if(m==a[t])
    {
     	printf("%d",t);
        return 0;
    }
 	if(m<a[t])
    {
  		for(i=1;i<t;i++)
  		{
   			if(m==a[i])  
   			{
				x=0;
				printf("%d",i);
                break;
			}
    			
  		}
	}
if(m>a[t])
 	{
  		for(i=t;i<=n;i++)
  		{
   			if(m==a[i])
            {
				x=0;
				printf("%d",i);
                break;
			}
  		}
 	}
    if(x==1) 
 	printf("None");
    /*********End**********/
    return 0;
}

#第5关:鞍点

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

相关知识(略)
编程要求
输入
输入数据有多行,第一行有两个数m和n,下面有m行,每行有n个数。

输出
按下列格式输出鞍点:
Array[i][j]=x
其中x代表鞍点,i和j为鞍点所在的数组行和列下标,我们规定数组下标从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 j,i;    
int max,k;
scanf("%d%d",&m,&n);
int a[m][n];
for(i=0;i<m;i++)
   for(j=0;j<n;j++)
   {
      scanf("%d",&a[i][j]);
   }
for(i=0;i<m;i++)
{
    max=a[i][0];
    for(j=1;j<n;j++)
    {
        if(max<a[i][j])
        {
            max=a[i][j];k=j;
        }
    }
    for(j=0;j<m;j++)
    {
        if(max>a[j][k])
        break;
    }
    if(j==m)
    {
        printf("Array[%d][%d]=%d",i,k,a[i][k]);
        break;
    }
}
if(i==m)
printf("None");


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

#第6关:删除最大值

任务描述
题目描述:输入10个互不相同的整数并保存在数组中,找到该最大元素并删除它,输出删除后的数组

相关知识(略)
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写删除最大值的小程序。

输入

输入10个互不相同整数

输出

输出删除最大元素后的数组

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

样例输入:

1 2 3 4 5 6 7 8 9 0

样例输出:

1 2 3 4 5 6 7 8 0

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

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

#第7关:杨辉三角

任务描述
题目描述:还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:

1 1 
1 2 1 
1 3 3 1
1 4 6 4 1 
1 5 10 10 5 1 

相关知识(略)
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写杨辉三角的小程序。

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

输出

打印出杨辉三角图形的10行。格式见题目描述部分。每个整数后面接一个空格来分隔开整数

#include<stdio.h>
int main(void)
{
    /*********Begin*********/

    int s=1,i,j;
    printf("1\n");
    for(i=2;i<=10;s=1,i++)
    {
        printf("1 ");
        for(j=1;j<=i-2;j++)
            printf("%d ",(s=(i-j)*s/j));
        printf("1\n");
    }
    /*********End**********/
    return 0;
}

  • 24
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值