编程题 矩阵一周元素之和与单词颠倒位置输出

来源:互联网 发布:淘宝卖家经营地址无效 编辑:程序博客网 时间:2024/05/02 00:06

矩阵一周元素之和与单词颠倒位置输出

1、M*N数组外围数组之和

如3*3数组:

1  2  3

4  5  6

7  8  9

和为1+2+3+6+9+8+7+4=40

函数原型为: int fun(int *a,int m,int n);

这里要注意int *a其中a是一个一维数组。不能直接当二维数组应用。

int fun(int *a,int M,int N){int i,sum=0;for(i=0;i<N;i++)   //第一行元素与最后一行的元素之和sum+=a[i]+a[(M-1)*N+i];for(i=1;i<M-1;i++)   //其余各行第一个元素与最后一个元素之和sum+=a[i*N]+a[i*N+N-1];return sum;}

main()函数调用:

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
int n=fun(a,4,3)

当然也可以先把一维数组转出二位数组:

int **b;
b=new int *[M];
for(int i=0;i<M;i++)
     b[i]=new int[N];

for(int i=0;i<M;i++)
      for(int j=0;j<N;j++)
            b[i][j]=a[i*N+j];

       用完记得释放,即:

for(int i=0;i<M;i++)
     delete b[i];
delete b;

2、单词颠倒输出:

如输入:I am programmer

输出为:programmer am I

C++ code

char *fun(char *sstr,char *dstr){char *t;char *p;int len=strlen(sstr);p=new char[len+1];t=new char[len+1];for(int i=0;i<len;i++)t[i]=sstr[i];   //方便修改数组中的内容t[len]='\0';for(int i=0;i<len;i++)  //必须的p[i]='\0';while(len--){if(*(t+len)==' '){p=strcat(p,t+len+1);*(p+strlen(p))=' ';*(p+strlen(p)+1)='\0';t[len]='\0';}}//处理第一个单词p=strcat(p,t);//cout<<p<<endl;strcpy(dstr,p);delete [] p;delete [] t;return dstr;}


java code 很简单

import java.util.Scanner;;public class Main {    public static void main(String args[])    {    Scanner in=new Scanner(System.in);        String str=null;        str=in.nextLine();        String st[]=str.split(" ");                for(int i=st.length-1;i>=0;i--)        {        System.out.print(st[i]);        System.out.print(" ");        }    }}




0 0
原创粉丝点击