c语言编程问题

Python019

c语言编程问题,第1张

#include <stdio.h>

#include <stdlib.h>

struct student {

int num

char name[20]

float score[4]

}

void input(struct student a[], int)

void aver(struct student a[], int,struct student b[])

void order(struct student a[], int)

void output(struct student a[], int,struct student b[])

int main() {

struct student stu[100]

struct student b[100]

int n

printf("请输入学生个数:")

scanf("%d", &n)

input(stu, n)

aver(stu, n,b)

order(stu, n)

output(stu, n,b)

return 0

}

void input(struct student a[], int n) {

int i, j

// printf("请输入学生的学号,姓名,英语,数学,物理,语文成绩:\n")

for (i = 0i <ni++) {

printf("请输入第%d个学生的学号,姓名,英语,数学,物理,语文成绩:\n", i + 1)

scanf("%d", &a[i].num)

//gets(a[i].name)

scanf("%s", &a[i].name)

for (j = 0j <4j++)

scanf("%f", &a[i].score[j])

}

}

void aver(struct student a[], int n,struct student b[]) {

int i=0, j

for (i = 0i <ni++) {

b[i].score[0] = 0

for (j = 0j <4j++)

b[i].score[0] += a[i].score[j]

b[i].score[0] = b[i].score[0] / 4

}

}

void order(struct student a[], int n) {

int i, j

struct student t[1]

for (i = 1i <ni++)

for (j = 0j <n - ij++)

if (a[j].score[3] <a[j + 1].score[3]) {

t[1] = a[j]

a[j] = a[j + 1]

a[j + 1] = t[1]

}

}

void output(struct student a[], int n,struct student b[]) {

int i, j

printf("学号\t姓名\t  英语\t  数学\t  物理\t  语文\t  平均成绩如下:\n")

for (i = 0i <ni++) {

printf("%d\t%s\t", a[i].num, a[i].name)

for (j = 0j <4j++)

printf("%.2f\t", a[i].score[j])

printf("%.2f", b[i].score[0])

printf("\n")

}

}

帮你改了一些,看看测试:

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

1.域宽小于实际宽度时应如何处理?

2.默认的域宽与精度各是多少?

3.精度说明大于或小于实际精度时,应如何处理?

4.FLOAT与DOUBLE的最大精度是多少?

5.如何处理符号位?

6.多余的小数位是被截断还是舍入?

解析:

事实上,您问的问题比较泛,如果结合使用的编译器类型和具体例子来问会比较好些。下面也只是泛泛而谈。

1、域宽小于实际宽度时,通常输出结果以实际宽度为准,如果需要以域宽来输出,那么实际结果需要截断。比如将结果以实际宽度输出到某个字符数组中,再截断。

2、默认的域宽为8位,精度为6位。

3、精度说明大于实际精度时,输出补余;小于实际精度时,输出截断。

4、FLOAT的最大精度是10的负44次方;DOUBLE的最大精度是10的负323次方。

5、整型数据的符号位出现在最高字节的最高位;浮点型数据则出现在字节中间的某个位上。不明白什么叫如何处理符号位?

6、多余的小数位是截断和舍入取决于不同的编译环境。应当结合自己使用的编译环境做一下测试即可明白。