蓝杯十六

一、/*回形取数

问题描述  回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。输入格式  输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。输出格式  输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。

样例输入

3 3

1 2 3

4 5 6

7 8 9

样例输出

1 4 7 8 9 6 3 2 5

样例输入

3 2

1 2

3 4

5 6

样例输出

1 3 5 6 4 2*/

#include

int main() {   

int n,m,count;   

scanf("%d%d",&n,&m); 

count=n*m;   

int a[n][m],i,j;   

for(i=0; i

for(j=0; j

scanf("%d",&a[i][j]);       

          }   

}    //以上是数的输入

  int t=0;//t用于记录圈数 

i=0;//数的横坐标   

j=0;//数的纵坐标   

while(count) {    //省略if(i==t&&j==t&&count),判断坐标是否在左上角的节点,因为条件必然成立       

while(i

if(i==0&&j==0) {//第一个数的输出格式             

printf("%d",a[0][0]);             

i++;           

}

else             

  printf(" %d",a[i++][j]);           

count--;        }       

i--;     

j++;       

//省略if(i==n-1-t&&j==t),左下角的节点的判断       

while(j

printf(" %d",a[i][j++]);         

count--;        }     

j--;     

i--;        //省略if(i==n-1-t&&j==m-1-t&&count),右下角节点的判断     

while(i>=t&&count) {//向上走           

printf(" %d",a[i--][j]);         

count--;        }     

  i++;       

j--;        //省略if(i==t&&j==m-1-t),右上角节点的判断     

while(j>t&&count) {//向左走           

printf(" %d",a[i][j--]);         

count--;        }       

j++;       

i++;       

t++;//圈数加一    }   

return 0;

}

二、/*递归求二项式系数值

问题描述

样例输入

一个满足题目要求的输入范例。

3 10

样例输出

与上面的样例输入对应的输出。

数据规模和约定

  输入数据中每一个数的范围。

  例:结果在int表示时不会溢出。

*/

#include  

int ditui(int k,int n){ 

    if(k>n/2) k=n-k; 

    if(k==0||n==1) return 1; 

    else

return ditui(k,n-1)+ditui(k-1,n-1); 

int main() { 

    int k,n; 

    scanf("%d%d",&k,&n); 

    printf("%d",ditui(k,n)); 

    return 0; 


三、/*十六进制转十进制

问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

*/

#include

int main()

{

    char in[9];

    int i;

    long long int out;

    gets(in);

    out=0;

    for(i=0;in[i]!='\0';i++)

    {

        if(in[i]>='0'&&in[i]<='9')

        out=out*16+(in[i]-'0');

        else

        out=out*16+(in[i]-'A'+10);

    }

    printf("%I64d\n",out);

    return 0;

}

图片发自App

图片发自App

图片发自App

图片发自App

图片发自App

图片发自App

你可能感兴趣的:(蓝杯十六)