作者Qoo1027 (猫王好帅)
看板C_and_CPP
标题[问题] 两阵列值比较大小
时间Mon Jul 6 10:28:01 2009
比如说
f[]=1,3,5,7,9
g[]=2,3,4,7,8
f[]中比g[0]大的有f[1]~f[4],比g[1]大的有f[2]~f[4]...
所以答案是4+3+3+1+1=12
可是写的程式跑不出来,想上来问问我的想法那里有问题
sum累加就是我要的答案
i,j拿来计数用
do{
for(i=0;i<5;i++){
if(f[i]>g[j])
sum+=1;
else
i++;
}
j++;
}while(j<5);
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.29.212.180
※ 编辑: Qoo1027 来自: 163.29.212.180 (07/06 10:28)
1F:推 QQ29:j有初始=0 sum有初始=0嘛? 07/06 10:30
2F:→ QQ29:乍看之下觉得你else是多余的 去掉看看对不对 07/06 10:31
3F:→ Qoo1027:有...这些都有作,所以不列出来了 07/06 10:31
4F:→ Qoo1027:else拿来判断f[i]没有大於g[j]的情况 07/06 10:32
5F:推 QQ29:没大於不用管他不是吗? 你for还是会帮你做i++ 07/06 10:35
6F:→ Qoo1027:喔喔...也对欧... 07/06 10:35
7F:→ Qoo1027:答案还是不正确,差了4 07/06 10:40
8F:推 th19883617:我自己run一次结果是对的 既然你ij有initialize=0 07/06 10:55
9F:→ th19883617:问题应该在sum是不是有initialize=0 07/06 10:56
10F:→ th19883617:当然else後面还是要去掉~~ 07/06 10:57
11F:→ gturtle73:结果对加一,做do-while之前有初始i,j,sum为0应该就ok 07/06 10:59
12F:→ Qoo1027:初始化都有作...可是结果不对...还是我电脑坏了 07/06 11:12
13F:推 QQ29:我run也是12.... 你把整个code贴到置底连结 的最後一个波一下 07/06 11:17
14F:→ Qoo1027:因为我在scanf後面加上\n,scanf("%d\n",&f[n])...所以错了 07/06 12:41
15F:→ Qoo1027:不过有人知道为什麽加上去会错吗? 07/06 12:41
16F:→ QQ29:为啥你想写换行 在scanf里面 07/06 13:46
17F:→ Qoo1027:可能还不是很熟,所以想说每个值输入完就换行...orz 07/06 13:52
19F:→ su31o4gj83:另外, 可以考虑把while loop的部分换成for loop 07/06 14:50
20F:→ su31o4gj83:两种loop做的事是一样的, 只是程式码简洁一点 07/06 14:52
21F:→ su31o4gj83:for(i = 0; i < 5; i++) 07/06 14:53
22F:→ su31o4gj83: for( j = 0; j < 5; j++) 07/06 14:53
23F:→ su31o4gj83: if( f[j] > g[i] ) sum +=1; 07/06 14:54
24F:→ su31o4gj83:如果阵列的数字已排序好, 可以有更简洁的程式码 07/06 14:56
25F:→ Qoo1027:喔喔,我了解了,谢谢 07/06 16:15