首页 > 代码库 > 2.4-?:转C++脑子康复水题训练

2.4-?:转C++脑子康复水题训练

4/∞


这里是日常的脑子康复转C++训练。真是失策啊把第一月计任务和转语言弄一起了

为了转语言刷的水题都羞耻于扔月计上凑数(这个坑用来装羞耻题

一样不放题目,需要的自行baidu.com

---------------------

1.蛇形填数

 

技术分享
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #define MAXN 25
 5 using namespace std;
 6 int a[MAXN][MAXN]={0,0};
 7 int main()
 8 {
 9     int n,x,y,tot;
10     scanf("%d",&n);
11     tot=a[x=1][y=n]=1;
12     while (tot<n*n)
13     {
14         while (x+1<=n && ! a[x+1][y]) a[++x][y]=++tot;
15         while (y-1>=1 && ! a[x][y-1]) a[x][--y]=++tot;
16         while (x-1>=1 && ! a[x-1][y]) a[--x][y]=++tot;
17         while (y+1<=n && ! a[x][y+1]) a[x][++y]=++tot;
18     }
19     for (int i=1;i<=n;++i)
20     {
21         for (int j=1;j<=n;++j) printf("%3d",a[i][j]);
22         printf("\n");
23     }
24     return 0;
25 }
蛇形填数

 

2.同行列对角线的格子

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 using namespace std;
 6 int main()
 7 {
 8     int n,i,j,v,u;
 9     scanf("%d%d%d",&n,&i,&j);
10     v=i-j;
11     u=i+j;
12     for (int k=1;k<=n;++k)
13     printf("(%d,%d) ",i,k);
14     printf("\n");
15     for (int k=1;k<=n;++k)
16     printf("(%d,%d) ",k,j);
17     printf("\n");
18     for (int k=1;k<=n;++k)
19     if (k-v>=1 && k-v<=n) printf("(%d,%d) ",k,k-v);
20     printf("\n");
21     for (int k=1;k<=n;++k)
22     if (u-k>=1 && u-k<=n) printf("(%d,%d) ",u-k,k);
23     return 0;
24 }
同行列对角线的格子

感觉是道有趣的题…之前还被它玩虐过T_T

3.按字母表顺序和逆序每隔一个字母打印

技术分享
#include<iostream>
#include<cstdio>
#include<cstring>
#include<iomanip>
using namespace std;
int main()
{
    for (char le=a;le<=z;le+=2)
    printf("%c ",le);
    printf("\n");
    for (char le=z;le>=a;le-=2)
    printf("%c ",le); 
    return 0;
}
View Code

4.对给定的10个国家名称,按字母顺序输出

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 using namespace std;
 6 int main()
 7 {
 8     char t[80],cname[11][210];
 9     for (int i=1;i<=10;++i) gets(cname[i]);
10     for (int i=1;i<=9;++i)
11     {
12         int k=i;
13         for (int j=i+1;j<=10;++j)
14         if (strcmp(cname[k],cname[j])>0) k=j;
15         strcpy(t,cname[i]);
16         strcpy(cname[i],cname[k]);
17         strcpy(cname[k],t);
18     }
19     for (int i=1;i<=10;++i)
20     printf("%s\n",cname[i]);
21     return 0;
22 }
View Code

实际上就是字符串从小到大排序

 

2.4-?:转C++脑子康复水题训练