第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关:计算数组中元素的最大值及其所在的行列下标值
任务描述
题目描述:按如下函数原型编程从键盘输入一个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 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关:鞍点
任务描述
题目描述:找出具有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 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关:字符插入
任务描述
题目描述:输入两个字符串a
和b
,将b
串中的最大字符插入到a
串中最小字符后面。
相关知识(略)
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End
区域内进行代码补充。 输入 输入一段文字 输出 输入两个字符串a
和b
。
测试说明
样例输入: 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;
}