#include //我感觉思路已经很清晰了
int main()
{
int array[10];
int arrayOdd[10][20];
int arrayEven[10][20];
int m , n , i , j , m1 , l = 0 , n1;
int Kodd=0,Keven=0;
scanf("%d",&m);
n1 = m;
for( i = 1; i <= m; i++)
{
scanf("%d",&array[i]);
}
while(m)//这次的运行结果少了1和2
{
for( i = 1; i <= array[m]; i++)//就是一和2消失了
{
if(i%2==0)
{
arrayEven[m][Keven]=i;
Keven++;
//printf("%d ",arrayEven[m][Keven]);
}
if(i%2!=0)
{
arrayOdd[m][Kodd]=i;
Kodd++;
//printf("%d ",arrayOdd[m][Kodd]);
}
}
Kodd=0,Keven=0;
m--;
}
for( i = 1; i <= n1;i++)//看来问题出来了输出这里,输入我并没有发现此物都很符合逻辑
{
for( j = 0 ;j < array[i]/2 ; j++)
{
printf("%d ",arrayOdd[i][j]);
}
printf("\n");
for(j = 0;j < array[i]/2-1;j++)
{
printf("%d ",arrayEven[i][j]);
}
printf("%d",arrayEven[i][array[i]/2-1]);
//printf("\n");
l++;
if(l < n1)
{
printf("\n");
}
if(i<n1)
printf("\n");
}
// printf("\n");
return 0;//,为什么一直在输出格式这里面搞事?
}//嗯 还差了 一个 空格的问题
测试数据:
2
1000
10000
输出的答案就不对了,你的数组开太小了,,而且最后还少一个换行
为什么 会提示我 输出不对?求大神解惑
可以不用这么麻烦,简单一点可以用以下这样的代码,一边数据i一遍输出答案。
#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&i);
for (int z=0; z<i; z++) {
scanf("%d",&n);
//不是第一个数据的话要留一个空行
if (z != 0) {
printf("\n");
}
// 输出奇数
for (int j=1; j<=n; j++) {
if (j%2) {
if (j > 2) {
// 注意空格用于分隔当前输出数据和前一个输出数据之间
printf(" ");
}
printf("%d",j);
}
}
printf("\n");
// 输出偶数
for (int j=1; j<=n; j++) {
if (j%2 == 0) {
if (j > 2) {
// 注意空格用于分隔当前输出数据和前一个输出数据之间
printf(" ");
}
printf("%d",j);
}
}
printf("\n");
}
return 0;
}
偶数和奇数,不都是相邻两个数相差2吗?
循环的步长,设置为2 就可以了
不必计算某个数是奇还是偶
对第一个奇数或偶数,选取好,后面的2步伐。就可以了。