c语言双重循环,求解答

本关任务:编写一个程序,学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元。现输入学生总人数30,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?
######注意:逗号为英文标点。用双重循环做

#include<stdio.h>
int main(){
int x,y,z,sum;
scanf("%d",&sum);
sum=0;
for(x=1;x<30;x++)
{
for(y=1;y<30;y++)
{
z=30-x-y;
if ((z!=0)&&(3x+2y+z==50))
{
printf("大学生%d,中学生%d,小学生%d\n",x,y,z);
sum=sum+1;
}
else
continue;
}
}
printf("sum=%d\n",sum);

return 0;

}

你题目的解答代码如下:

#include <stdio.h>
int main()
{
    int x, y, z, sum;
    //scanf("%d", &sum); 不需要输入sum
    sum = 0;
    for (x = 1; x < 30; x++)
    {
        for (y = 1; y < 30; y++)
        {
            z = 30 - x - y;
            if ((z >= 1) && (3*x + 2*y + z == 50))  //要判断z >= 1  3*x + 2*y  乘法要加* 
            {
                printf("大学生%d,中学生%d,小学生%d\n", x, y, z);
                sum = sum + 1;
            }
            else
                continue;
        }
    }
    printf("sum=%d\n", sum);

    return 0;
}

img

如有帮助,望采纳!谢谢!