一个简单的c程序,帮忙看上吧,错在哪
一个简单的c程序,帮忙看下吧,错在哪?
一个有'升序'的数组 x[n], 计算 x[0]+x[1]+...x[i]和 x[k]+x[k+1]+...x[n-1] 相等的总个数,gcc编译器,未报错, 但显示不出结果来。
1 #include<stdio.h>
2
3 int num(int [], int n);
4
5 int main()
6 {
7 int x[100];
8 int i;
9 for( i = 0; i < 100; i++ )
10 x[i] = i;
11
12 printf("%d\n",num( x,100));
13 }
14
15 int num(int x[], int n)
16 {
17 int j, k, sum;
18 j = k = sum = 0;
19
20 int pre_sum = x[j];
21 int suf_sum = x[99-k];
22
23 while( j < 100 && k < 100)
24 {
25 if (pre_sum > suf_sum)
26 {
27 k++;
28 suf_sum += x[99-k];
29 }
30 else if(pre_sum < suf_sum)
31 {
32 j++;
33 pre_sum += x[j];
34 }
35 else
36 sum++;
37 }
38 return sum;
39 }
40
------解决方案--------------------
死循环, 到这里i,j都不动了:
一个有'升序'的数组 x[n], 计算 x[0]+x[1]+...x[i]和 x[k]+x[k+1]+...x[n-1] 相等的总个数,gcc编译器,未报错, 但显示不出结果来。
1 #include<stdio.h>
2
3 int num(int [], int n);
4
5 int main()
6 {
7 int x[100];
8 int i;
9 for( i = 0; i < 100; i++ )
10 x[i] = i;
11
12 printf("%d\n",num( x,100));
13 }
14
15 int num(int x[], int n)
16 {
17 int j, k, sum;
18 j = k = sum = 0;
19
20 int pre_sum = x[j];
21 int suf_sum = x[99-k];
22
23 while( j < 100 && k < 100)
24 {
25 if (pre_sum > suf_sum)
26 {
27 k++;
28 suf_sum += x[99-k];
29 }
30 else if(pre_sum < suf_sum)
31 {
32 j++;
33 pre_sum += x[j];
34 }
35 else
36 sum++;
37 }
38 return sum;
39 }
40
c
------解决方案--------------------
死循环, 到这里i,j都不动了: