所有的C程序都可以这么解决 #include<stdio.h>int fun(int a[] j m);然后再加一句for(j=0;j<m;j++)printf("b[%d]:%d/n" c);第二个else后加printf("m:%d/n" i 检错:fun函数里最后一个else语句的后面掉了一个'}' 理论上用这个方法应该能看得出来怎么回事 其实你只要在程序中多加几个输出语句 也很实用 我的办法是fun函数中的第一个else {i=j-1;break;}后加一句printf("i:%d c:%d/n" main函数中多定义了一个变量'j' 改变后的程序执行结果为:i:7 c:8m:2b[0]:-8b[1]:4i:8 c:1m:3b[0]:-8b[1]:4b[2]:1i:9 c:1m:4b[0]:-8b[1]:4b[2]:1b[3]:2 ||| 按F10是单步运行 但每次使用j都会赋初值 而j虽在内循环有用 因为i在外循环还在使用 这里的for循环增量不能用i ||| 呵呵 检查变量的值就可以监视程序的执行过程 从而省去再定义一个变量的麻烦 但是对初学者来说这个方法很省事 点一下运行一步 故可以用 不过我还是看不懂 y); for(i=0;i<n;i++) { if(i%2==0) printf("/n"); printf("%5d" n n=10; n=fun(x j i y[10] 2} 1 4 4 4 4 4 4 4 x; for(i=0;i<n;i++) { x=a[i];c=1; for(j=i+1;j<n;j++) if(a[j]==x) c++; else {i=j-1;break;} if(j>=n)i=j; if(c==1) b[m++]=x; else{b[m++]=-c;b[m++]=x; } }return m;}void main(){ int x[]={4 c m=0 j int b[]){ int i=0 int n b[j]);//注意 初学的话 最好把每个变量 给写的明白些 然后自己一步步理解 y[i]); }} ||| 程序算出来的 c语言是比较牛的 但是比较复杂的程序就麻烦了