1 你的第二个if分支需要和第二个scanf组成一个代码块,才能达到预期的效果。
2 输入的是实数而不是整形
3 实数在是否零值的判断上不能用等于0
2 输入的是实数而不是整形
3 实数在是否零值的判断上不能用等于0
#include <stdio.h> int main(void) { int i,sf=0,sl=0,sz=0,n,m; float a; while(1) { printf("请输入一个非零值: "); scanf("%d",&n); if(n==0) break; else { for(i=0;i<n;i++) { printf("请输入你想输入的值: "); scanf("%d",&m); if(m>0) sz++; else if(m<0) sf++; else sl++; } } printf("%d %d %d\n",sf,sl,sz); sz=0; sf=0; sl=0; } return 0; } 按照需求和你的思路应该是这样的。 不知道我做的对不对,如果不对,还请各位指正。