#include<stdio.h> int main(){ int men,women,child,cnt; double limit_m,limit_w,n; printf("Enter n:"); scanf("%lf",n); limit_m=n/3; limit_w=n/2; cnt=0; for(men=0;men<=limit_m;men++){ for(women=0;women<=limit_w;women++){ child=n-men-women; if(men*3+women*2+child*(1/2)==n){ printf("men=%d,women=%d,child=%d\n",men,women,child); cnt++; } } }if(cnt==0){ printf("无解\n"); } return 0; }无输出
时间: 2024-02-18 16:00:44 浏览: 148
代码中仍然存在一个问题。在第6行,scanf函数的第二个参数应该是一个指向n变量的指针,但是代码中传入的是n变量本身。需要将其改为如下形式:
```
scanf("%lf", &n);
```
修改后的代码如下:
```
#include<stdio.h>
int main() {
int men, women, child, cnt;
double limit_m, limit_w, n;
printf("Enter n:");
scanf("%lf", &n);
limit_m = n / 3;
limit_w = n / 2;
cnt = 0;
for(men = 0; men <= limit_m; men++) {
for(women = 0; women <= limit_w; women++) {
child = n - men - women;
if(men * 3 + women * 2 + child * 0.5 == n) {
printf("men=%d, women=%d, child=%d\n", men, women, child);
cnt++;
}
}
}
if(cnt == 0) {
printf("无解\n");
}
return 0;
}
```
注意到在第13行中,child*(1/2)的计算结果是0,而实际上应该是0.5。因此,将其改为child*0.5即可。