引用 | 编辑
星辰雪
2011-03-04 00:07 |
楼主
▼ |
||
![]() 一维阵列反转 输入说明: 输入一个一维阵列 输出说明: 输出反转后的阵列 使用 c 来撰写 DEV C++软体 来编译 ------------- CODE : #include <stdio.h> #include <stdlib.h> int main(void) { FILE *input = fopen("input.txt","rb"); int s,i=0; char temp; bool IsHe .. 访客只能看到部份内容,免费 加入会员 ![]()
|
引用 | 编辑
csr
2011-03-04 22:19 |
1楼
▲ ▼ |
大大
小弟不大明白 我用一个input.txt档 里面输入123456789 再开档 它还是显示123456789 并无反转输出阿 为什么呢 是否可请大大帮小弟说明一下程式的功能在那里 谢谢 ![]() |
引用 | 编辑
星辰雪
2011-03-04 22:28 |
2楼
▲ ▼ |
他是使用读取档案(txt)
进入程式 程式会跑出 反转之后的 要执行程式 才会跑出来 不是直接开 txt档案 有点类似 ACM比赛那种的 要读取档案 ![]() |
引用 | 编辑
星辰雪
2011-03-17 20:56 |
9楼
▲ ▼ |
下面是引用 totsi 于 2011-03-17 09:02 发表的 :------------------------------------------ 使用例子来说明 #1 1 2 3 4 5 6 7 8 0 <<<这一列出现0 所以停止运作 #2 1 2 3 4 0 <<出现0 5 6 7 8 << 因为上一列出现0 停止运作,所以这一列不会列印出来 #3 0 1 2 3 3 2 1 0 0 <<出现0列 所以停止运作 我想要的功能 就如同上面所叙述 一列,只有一个字 而且那个字 是0 才停止运作。 想请问一下该如何编写 我试了好几次都写不出来 ![]() |
引用 | 编辑
totsi
2011-03-18 09:11 |
10楼
▲ ▼ |
code部分就不改了,先确定在下的认知是否正确噜~~
依照范例看来,只要遇到有一列只有一个数值,然后那个数值为0的时候,要终止程式。 那么这个可以用传说中的脏雪球理论噜XDD 依照code的写法,一次只读一个数值进来 那么在读到数值的判定时,多加上是否为0的判断。 如果第一位数值是0,则此列丑一。 之后如果那一列就没其他数值的话,那就直接结束程式。 不知这样的流程,是否符合楼主的需求? 如果是的话,那code可能可以像下面那样改: 复制程式 //节录 bool IsHeadZero = false; int nColumnNum = 0; while(...) { fscanf(input,"%d",&s[i]); if (s[i] == 0) { IsHeadZero = true; }; i++; fscanf(input,"%c",&temp); if(temp!=' ') { for(int j=i-1;j>=0;j--) { printf("%d ",s[j]); } printf("\n"); if ( IsHeadZero && i == 1) { break; }else{ IsHeadZero = false; } i=0; } //以下省略 } ![]() |
引用 | 编辑
totsi
2011-03-21 08:45 |
12楼
▲ ▼ |
把 if ( IsHeadZero && i == 1) 搬到您用来输出的地方前面就好。
大概像底下这样: 复制程式 .... if(temp!=' ') { if ( IsHeadZero && i == 1) { break; }else{ IsHeadZero = false; } for(int j=i-1;j>=0;j--) { printf("%d ",s[j]); } printf("\n"); } .... 这样就在印出前就会离开了,依您原始的写法,只要单行只有一个值的时候,是一定会进到不等于空白的判断内。 不知,这样的写法是否有如同您的预期呢? ![]() ![]() |