二維數組


Description

有一個n行n列的二維數組,n以及數組中的所有數據均由鍵盤輸入,求主對角線之上(右上方)所有數據之和

Input

輸入n(2<=n<=10)的值,以及二維數組所有元素的值

Output

輸出題目要求的數值

Sample Input

3 1 2 3 4 5 6 7 8 9

Sample Output

11 
 

#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

 

1 2 3 4 8 7 6 5 3 5 6 2

 

Sample Output

 

4:1,4 8:2,1 6:3,3
 

#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

2 3 2 3 5 2 4 7 1 8 6 3 7 2 5

Sample Output

43 63 55 78
 

#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

-1 -2 -3 -4 2 3 8 9 10 -10 6 45

Sample Output

a[0][0]=-1 

Sample Output

3 2 7 4 5 6 1 8 9
 

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

3 1 2 3 4 5 6 7 8 9

Sample Output

1 4 7 2 5 8 3 6 9 

 

#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

abcd123

Sample Output

321dcba 
 
 

Description

鍵盤輸入一個字符串(可以有空格)存入數組,然后統計數字、字母和空格的出現個數

本題必須用數組求解

注意:在OJ上,實際上數據是從文件中讀的,文件中字符串后面並沒有換行符。如果getchar()讀取字符時遇到無數據可讀的情況,將返回EOF(EOF即-1)

Input

字符串(不超過50字符)

Output

數字、字母、空格的個數,每個一行

Sample Input

I am a student.1w3,He said:"very good!",325 end.

Sample Output

5 29 6
 
 
 

Description

鍵盤輸入三行字符,每行均以回車結束,每行都不超過20個字符(不含回車)。統計每行中大寫字母、小寫字母、空格以及數字的個數

提醒:本題目不要用getchar()一個一個地讀字符

Input

輸入三行字符

Output

輸出每行中4種字符的個數

Sample Input

aAbMcSd 8Kde ,23JH skdf 0923 D,F

Sample Output

6,6,2,3 0,4,1,4 2,0,0,0 

 

Description

鍵盤輸入一個不超過20字符的字符串,將最后m個字符移動到最前面,前面的字符后移

Input

輸入一個字符串和一個整數

Output

輸出移動后的字符串

Sample Input

abcdefg 3

Sample Output

efgabcd
 
 

Description

鍵盤輸入一個不超過20字符的字符串,若含有空格(可能不止一處),將所有空格去掉,輸出刪除空格之后的串。

主函數框架如下,你只需提交所缺代碼即可,前后兩部分代碼已在后台。

#include <stdio.h>
int main()
{
    char s[21];
    int i,j,k;
    gets(s);
    /*************************************/

      //在此編寫代碼並提交該部分代碼

    /*************************************/
    puts(s);
    return 0;  
}

Input

輸入一個字符串

Output

輸出處理后的字符串

Sample Input

abc d 12 3

Sample Output

abcd123
 
 

Description

鍵盤輸入4個字符串(都不超過20個字符),找出最大的字符串。所謂最大,是指按字典順序排序最大,如:good morning比good afternoon大,因為m比a大,又如:abc比abC大,因為c比C大(ascii碼大)

Input

輸入四個字符串

Output

輸出最大字符串的內容

Sample Input

abc welcome to yantai 12345 welcome to beijing

Sample Output

welcome to yantai
 

Description

 設有如下代碼:

int main()

{

      /*****************************************************/

     //只允許在這里添加代碼,后面的代碼不允許做任何改動或刪除,否則不得分

     /*****************************************************/

     printf("%s", s);

     return 0;
}

運行時,從鍵盤輸入一個字符串(不超過50個字符),將其逆序存放,然后輸出。如:若輸入ab  cd,則輸出應為:dc  ba

 

Input

輸入一個字符串

Output

輸出逆序存放后的字符串

Sample Input

abcd123

Sample Output

321dcba 
 

#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

鍵盤輸入一個字符串(可以有空格)存入數組,然后統計數字、字母和空格的出現個數

本題必須用數組求解

注意:在OJ上,實際上數據是從文件中讀的,文件中字符串后面並沒有換行符。如果getchar()讀取字符時遇到無數據可讀的情況,將返回EOF(EOF即-1)

Input

字符串(不超過50字符)

Output

數字、字母、空格的個數,每個一行

Sample Input

I am a student.1w3,He said:"very good!",325 end.

Sample Output

5 29 6
 

#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

aAbMcSd 8Kde ,23JH skdf 0923 D,F

Sample Output

6,6,2,3 0,4,1,4 2,0,0,0 
 

#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

abc welcome to yantai 12345 welcome to beijing

Sample Output

welcome to yantai
 

#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

abc d 12 3

Sample Output

abcd123
 

#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

abcdefg 3

Sample Output

efgabcd
 

#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]);
}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM