这个程序计算整数的平均数而不打印小数。它将结果打印为一个整数:N.000000。为什么?

//Store name, roll no, marks of 4 students using structure
//and calculating average
struct student
{
    char name[10];
    int roll_no;
    int marks;
};

void main()
{
    struct student s1,s2,s3,s4;
    float avg;
    clrscr();
    printf("\nEnter name, rollnumber and marks of student 1 : \n");
    scanf("%s%d%d",&s1. name,&s1. roll_no,&s1. marks);
    printf("\nEnter name, rollnumber and marks of student 2 : \n");
    scanf("%s%d%d",&s2. name,&s2. roll_no,&s2. marks);
    printf("\nEnter name, rollnumber and marks of student 3 : \n");
    scanf("%s%d%d",&s3. name,&s3. roll_no,&s3. marks);
    printf("\nEnter name, rollnumber and marks of student 4 : \n");
    scanf("%s%d%d",&s4. name,&s4. roll_no,&s4. marks);
    avg = (s1. marks + s2. marks + s3. marks + s4. marks) / 4;
    printf("\nAverage : %f",avg);

    getch();
}

最佳答案

int marks;

表示每个标记都是整数然后求和,这也是一个整数然后把它们除以4,这也是一个整数,所以这个操作将是一个整数除法-一个丢弃结果的小数部分的操作把它除以4.0就可以了。

关于c - 我的C程序没有计算十进制值,而只是打印整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12302946/

10-12 02:58