问题描述
- 奇数和偶数分离的问题 求大神 指点 提交不上去
- #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=0Keven=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=0Keven=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 ni; 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步伐。就可以了。
时间: 2024-10-10 00:31:43