Description
有一个n行n列的二维数组,n以及数组中的所有数据均由键盘输入,求主对角线之上(右上方)所有数据之和
Input
输入n(2<=n<=10)的值,以及二维数组所有元素的值
Output
输出题目要求的数值
Sample Input
Sample Output
#include<stdio.h>
int main()
{
int n;
int i,j,a[10][10],sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
sum+=a[i][j];
printf("%d\n",sum);
return 0;
}
Description
由键盘给一个3行4列的二维数组输入数据,然后找出每行中的最大数及其位置
Input
输入12个整数
Output
输出每行的最大数及其行列号
Sample Input
Sample Output
#include<stdio.h>
int main()
{
int a[3][4],i,j,m,p,q;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
{
m=a[i][0];
p=i+1;
q=1;
for(j=0;j<4;j++)
if(a[i][j]>m)
{
m=a[i][j];
p=i+1;
q=j+1;
}
printf("%d:%d,%d\n",m,p,q);
}
return 0;
}
Description
键盘输入9个整数存入3行3列的二维数组中,请找出最大值和最小值(最大值和最小值都只有一个),并将它们分别交换到各自对称的位置。若最大数或最小数在主对角线上,则不需要交换,在原位置不动。
解释:
1、主对角线:下面的数据中,“1,5,9”所处的一条线就是主对角线。
1 2 3
4 5 6
7 8 9
2、所谓对称位置,是相对于主对角线而言的。例如:上面9个数中,2和4对称,6和8对称,3和7对称
Input
输入9个整数
Output
输出交换后数组中的数据,共三行,每行三个数据,相邻两个数据之间用1个空格隔开
#include<stdio.h>
int main()
{
int a[3][3],i,j,max,min;
int k,s,m,n,p,q;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",(*(a+i)+j));
max=min=a[0][0];
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
{
if(a[i][j]>=max)
{
max=a[i][j];
k=i;
s=j;
}
if(a[i][j]<=min)
{
min=a[i][j];
m=i;
n=j;
}
}
}
if((k!=n)||(s!=m))
{
if(k!=s)
{
p=a[k][s];
a[k][s]=a[s][k];
a[s][k]=p;
}
if(m!=n)
{
q=a[m][n];
a[m][n]=a[n][m];
a[n][m]=q;
}
}
else if((k==n)&&(s==m))
{
p=a[k][s];
a[k][s]=a[s][k];
a[s][k]=p;
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
printf("%d ",*(*(a+i)+j));
printf("%d",*(*(a+i)+2));
printf("\n");
}
return 0;
}
Description
有两个分别是a*b(a行b列)和b*c(b行c列)的矩阵,相乘后是一个a*c的矩阵,a,b,c及矩阵数据均由键盘输入,a,b,c均不超过10,请编程输出相乘后的矩阵。
下面是2*3矩阵和3*2矩阵相乘的一个例子:
1 2 3 1 2 1*1+2*3+3*5 1*2+2*4+3*6 22 28
* 3 4 = =
4 5 6 5 6 4*1+5*3+6*5 4*2+5*4+6*6 49 64
Input
Output
Sample Input
Sample Output
#include <stdio.h>
int main()
{
int m[10][10],n[10][10],k[10][10];
int a,b,c,i,j,t;
scanf("%d %d %d",&a,&b,&c);
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
scanf("%d",&m[i][j]);
}
}
for(i=0;i<b;i++)
{
for(j=0;j<c;j++)
{
scanf("%d",&n[i][j]);
}
}
for(i=0;i<a;i++)
{
for(j=0;j<c;j++)
{
k[i][j]=0;
}
}
for(i=0;i<a;i++)
{
for(j=0;j<c;j++)
{
for(t=0;t<b;t++)
{
k[i][j]=k[i][j]+m[i][t]*n[t][j];
}
}
}
for(i=0;i<a;i++)
{
for(j=0;j<c-1;j++)
{
printf("%d ",k[i][j]);
}
printf("%d\n",k[i][j]);
}
return 0;
}
Description
键盘输入一个3行4列的整型二维数组a[3][4]的数据,找出鞍点。所谓鞍点,就是该位置上的数,在它所在行最大(没有跟它相等的数),在它所在列最小(没有跟它相等的数)。
注意:也可能没有鞍点。若没有鞍点,输出:“not exist”
Input
输入二维数组的所有数据
Output
输出鞍点,或输出not exist
Sample Input
Sample Output
Sample Output
Description
键盘输入一个N*N的矩阵,将其转置(行变列,列变行)
如:
1 2 3
4 5 6
7 8 9
转置后:
1 4 7
2 5 8
3 6 9
请在下面程序框架的基础上编程:
#include <stdio.h>
int main()
{
int n,i,j,t,a[100][100];
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d", &a[i][j]);
/********************************************************/
//只允许在此填写代码,其他任何地方不得修改,也不允许定义任何变量或数组
/********************************************************/
for(i=0; i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
printf("%5d", a[i][j]) ;
printf("\n");
}
return 0;
}
Input
键盘输入一个n(1<=n<=100),代表行数和列数,接着输入n行数据,每行n个
Output
输出转置后的数据,每个数据至少占5格
Sample Input
Sample Output
#include <stdio.h>
int main(void)
{
int n,i,j,t,a[100][100];
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d", &a[i][j]);
for(i=0;i<n;i++)
for(j=0;j<i;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;}
for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
printf("%5d",a[i][j]);
printf("\n");
}
return 0;
}
Description
设有如下代码:
int main()
{
/*****************************************************/
//只允许在这里添加代码,后面的代码不允许做任何改动或删除,否则不得分
/*****************************************************/
printf("%s", s);
return 0;
}
运行时,从键盘输入一个字符串(不超过50个字符),将其逆序存放,然后输出。如:若输入ab cd,则输出应为:dc ba
Input
输入一个字符串
Output
输出逆序存放后的字符串
Sample Input
Sample Output
Description
键盘输入一个字符串(可以有空格)存入数组,然后统计数字、字母和空格的出现个数
本题必须用数组求解
Input
字符串(不超过50字符)
Output
数字、字母、空格的个数,每个一行
Sample Input
Sample Output
Description
键盘输入三行字符,每行均以回车结束,每行都不超过20个字符(不含回车)。统计每行中大写字母、小写字母、空格以及数字的个数
提醒:本题目不要用getchar()一个一个地读字符
Input
输入三行字符
Output
输出每行中4种字符的个数
Sample Input
Sample Output
Description
键盘输入一个不超过20字符的字符串,将最后m个字符移动到最前面,前面的字符后移
Input
输入一个字符串和一个整数
Output
输出移动后的字符串
Sample Input
Sample Output
Description
键盘输入一个不超过20字符的字符串,若含有空格(可能不止一处),将所有空格去掉,输出删除空格之后的串。
主函数框架如下,你只需提交所缺代码即可,前后两部分代码已在后台。
#include <stdio.h>
int main()
{
char s[21];
int i,j,k;
gets(s);
/*************************************/
//在此编写代码并提交该部分代码
/*************************************/
puts(s);
return 0;
}
Input
输入一个字符串
Output
输出处理后的字符串
Sample Input
Sample Output
Description
键盘输入4个字符串(都不超过20个字符),找出最大的字符串。所谓最大,是指按字典顺序排序最大,如:good morning比good afternoon大,因为m比a大,又如:abc比abC大,因为c比C大(ascii码大)
Input
输入四个字符串
Output
输出最大字符串的内容