1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 两门课成绩平均分c语言 【函数C语言面试题】面试问题:C语言(指针方… - 看准网...

两门课成绩平均分c语言 【函数C语言面试题】面试问题:C语言(指针方… - 看准网...

时间:2022-05-07 12:00:54

相关推荐

两门课成绩平均分c语言 【函数C语言面试题】面试问题:C语言(指针方… - 看准网...

(指针方法处理)有一个班4个学生,5门课程.1)求第一门课程的平均分; 2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生.分别编三个函数实现以上三个要求

#define _CRT_SECURE_NO_WARNINGS

#include

#include

#define N 4//N个学生

#define M 6//M - 1门课程

void print0() {

printf("学号\t");

for (int i = 0; i < M - 1; ++i) {

printf("成绩%d\t", i + 1);

}

}

void print(int i, double(*p)[M]) {

printf("\n");

for (int j = 0; j < M; ++j) {

if (j == 0) {

printf("%.0f\t", *(*(p + i) + j));

}

else {

printf("%.3f\t", *(*(p + i) + j));

}

}

printf("\n");

}

double class1_aver(int n, double(*p)[M]) {//计算第n门课的成绩

double sum = 0;

for (int i = 0; i < N; ++i) {

sum += *(*(p + i) + n);

}

return sum / N;

}

void fail(double(*p)[M]) {

int count = 0;

double sum = 0;

for (int i = 0; i < N; ++i) {

count = 0;

sum = 0;

for (int j = 1; j < M; ++j) {

if (*(*(p + i) + j) < 60.0) {

count += 1;

}

}

if (count >= 2) {

for (int j = 1; j < M; ++j) {

sum += *(*(p + i) + j);

}

printf("如下该学生有超过两门课程成绩不及格\n");

print0();

print(i, p);

printf("\n平均成绩为%.3f\n\n", sum / (M - 1));

}

}

}

void excellent(double(*p)[M]) {

int count = 0;

double sum = 0;

for (int i = 0; i < N; ++i) {

count = 0;

sum = 0;

for (int j = 1; j < M; ++j) {

sum += *(*(p + i) + j);

if (*(*(p + i) + j) >= 85) {

count += 1;

}

}

if (count == M - 1) {

printf("如下该学生有所有成绩均超过85分\n");

print0();

print(i, p);

printf("\n平均成绩为%.3f\n", sum / (M - 1));

}

else if (sum / (M - 1) >= 90) {

printf("如下该学生有所有成绩平均分超过90分\n");

print0();

print(i, p);

printf("\n平均成绩为%.3f\n", sum / (M - 1));

}

}

}

void main() {

double stu[N][M];

double(*p)[M] = stu;

for (int i = 0; i < N; ++i) {

for (int j = 0; j < M; ++j) {

if (j == 0) {

printf("请输入第%d名学生的学号\n", i + 1);

while (1) {

scanf("%lf", *(p + i) + j);

if (i == 0) {

break;

}

if (*(*(p + i) + j) != *(*(p + i - 1) + j)){

break;

}

printf("您的输入的学号与第%d名学生学号相同都为%.0f,请重新输入\n", i, *(*(p + i - 1) + j));

}

continue;

}

printf("请输入该学生的第%d门成绩\n", j);

scanf("%lf", *(p + i) + j);

}

system("cls");

}

print0();

for (int i = 0; i < N; ++i) {

print(i, p);

}

printf("\n第一门课程的平均分为:\n%.3f\n\n", class1_aver(1, p));

fail(p);

excellent(p);

system("pause");

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。