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
输出最大字符串的内容
Sample Input
Sample Output
Description
设有如下代码:
int main()
{
/*****************************************************/
//只允许在这里添加代码,后面的代码不允许做任何改动或删除,否则不得分
/*****************************************************/
printf("%s", s);
return 0;
}运行时,从键盘输入一个字符串(不超过50个字符),将其逆序存放,然后输出。如:若输入ab cd,则输出应为:dc ba
Input
输入一个字符串
Output
输出逆序存放后的字符串
Sample Input
Sample Output
#include<string.h>
#include<stdio.h>int main(){ char s[50],b[50]; int i,n,j=0; scanf("%[^\n]",s); n=strlen(s); for(i=n-1;i>=0;i--) b[j++]=s[i]; b[j]='\0'; strcpy(s,b); printf("%s",s); return 0;}
Description
键盘输入一个字符串(可以有空格)存入数组,然后统计数字、字母和空格的出现个数
本题必须用数组求解
Input
字符串(不超过50字符)
Output
数字、字母、空格的个数,每个一行
Sample Input
Sample Output
#include<stdio.h>
int main()
{
char str[100];
int i=0;
int num=0,ch=0,blank=0,other=0;
gets(str);
while(str[i]!='\0')
{
if((str[i]>='A' && str[i]<='Z') || (str[i]>='a' && str[i]<='z'))
ch++;//字母
else if(str[i]>='0' && str[i]<='9')
num++;//数字
else if(str[i]==' ')
blank++;//空格
else
other++;
i++;
}
printf("数字%d个,字母%d个,空格%d个,其他%d个\n",num,ch,blank,other);
return 0;
}
Description
键盘输入三行字符,每行均以回车结束,每行都不超过20个字符(不含回车)。统计每行中大写字母、小写字母、空格以及数字的个数
提醒:本题目不要用getchar()一个一个地读字符
Input
输入三行字符
Output
输出每行中4种字符的个数
Sample Input
Sample Output
#include<stdio.h>
#include<string.h>int main(){ char a[3][21]; int i; int k; int ch1=0,ch2=0,blank=0,num=0; for(i=0;i<3;i++) { gets(a[i]); } for(i=0;i<3;i++) { ch1=0,ch2=0,blank=0,num=0; for(k=0;a[i][k];k++) { if(a[i][k]>=65&&a[i][k]<=90) { ch1++; } if(a[i][k]>=97&&a[i][k]<=122) { ch2++; } if(a[i][k]==32) { blank++; } if(a[i][k]>='0'&&a[i][k]<='9') { num++; } } printf("%d,%d,%d,%d\n",ch1,ch2,blank,num); }}
Description
键盘输入4个字符串(都不超过20个字符),找出最大的字符串。所谓最大,是指按字典顺序排序最大,如:good morning比good afternoon大,因为m比a大,又如:abc比abC大,因为c比C大(ascii码大)
Input
输入四个字符串
Output
输出最大字符串的内容
Sample Input
Sample Output
#include <string.h>
#include <stdio.h>#include <stdlib.h>int main(){ char str[21], max[21]; int i; gets(max); for(i=0; i<=3; i++) { gets(str); if(strcmp(max,str)<0) strcpy(max,str); } puts(max);}
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
#include <stdio.h>
int main(){ char s[21]; int i,j,k; gets(s); j=0; for(i=0;s[i];i++) { if(s[i]!=32) { s[j]=s[i]; j++; } } s[j]='\0'; puts(s); return 0; }Description
键盘输入一个不超过20字符的字符串,将最后m个字符移动到最前面,前面的字符后移
Input
输入一个字符串和一个整数
Output
输出移动后的字符串
Sample Input
Sample Output
#include<stdio.h>
#include<string.h>int main(){ char a[30]; int i,n,j,k; char temp; gets(a); k=strlen(a); scanf("%d",&n); for(i=0;i<n;i++) { temp=a[k-1]; for(j=k;j>=0;j--) { a[j+1]=a[j]; } a[0]=temp; } for(j=0;j<k;j++) { printf("%c",a[j]); }}