gpt4 book ai didi

累积平均绩点计算器 C 书写

转载 作者:行者123 更新时间:2023-11-30 15:36:07 24 4
gpt4 key购买 nike

我正在开发 GPA 计算器,而且我是 C 语言新手。我在 Ubuntu 12 中使用 gvim 编写此代码,并在终端中使用 gcc 进行编译。

这是我到目前为止的代码。我还想包含一种检查方法,以确保用户没有在函数 number_subjects 中输入字符 (a-z),但不确定正确的方法。我还认为主函数末尾的 gpa 计算公式有问题。我还添加了一个 do while 语句来提示用户是否想在程序结束时重试,但由于某种原因,程序总是在不接受用户输入的情况下重新启动。

#include<stdio.h>
#include<string.h>

int number_subjects(int num_sub);

int main(void) {

int class_grades[10];
int i;
int credit_hrs[10];
int num_sub;
int totalCreditHour = 0;
double sum_gpaxcredit_hrs = 0;
double grade_point[10];
double gpa;
char subject[10][10];
char grade[10][10];
char option, y_n;

do{

/*主菜单*/

printf("\t*** GPA CALCULATOR ***\n\n");
printf("Please choose and option\n");
printf("[a] Calculate GPA\n[q] Quit\n");
scanf("%c", &option);

switch(option){

/* 退出程序 */

case 'q':
return(0);
break;

/* 调用主题数量的函数 */

case 'a':
num_sub = number_subjects(num_sub);
break;
default:
printf("Not a valid choice\n");
break;
}

/* 要求用户命名并输入每个类(class)的成绩 */

for(i = 0; i <= num_sub -1; i++) {  
printf("\n Class %d \n", i +1);
printf("\nClass name : ");
scanf("%s", subject[i]);
printf("Enter grade: ");
scanf("%d", &class_grades[i]);
printf("Enter credit hours: ");
scanf("%d", &credit_hrs[i]);

/* 成绩转换 */

if(class_grades[i] >= 95 && class_grades[i] <=100)
{
grade_point[i] = 4.00;
strcpy(grade[i], "A+");
}
else if(class_grades[i] >= 90 && class_grades[i] <=94)
{
grade_point[i] = 4.00;
strcpy(grade[i], "A");
}
else if(class_grades[i] >= 85 && class_grades[i] <= 89)
{
grade_point[i] = 3.33;
strcpy(grade[i], "B+");
}
else if(class_grades[i] >= 80 && class_grades[i] <= 84)
{
grade_point[i] = 3.00;
strcpy(grade[i], "B");
}
else if(class_grades[i] >= 75 && class_grades[i] <= 79)
{
grade_point[i] = 2.33;
strcpy(grade[i], "C+");
}
else if(class_grades[i] >= 70 && class_grades[i] <= 74)
{
grade_point[i] = 2.00;
strcpy(grade[i], "C");
}
else if(class_grades[i] >= 60 && class_grades[i] <= 69)
{
grade_point[i] = 1.00;
strcpy(grade[i], "D");
}
else if(class_grades[i] >= 0 && class_grades[i] <= 59)
{
grade_point[i] = 0.0;
strcpy(grade[i], "F");
}
}

/* GPA 计算公式 */

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

sum_gpaxcredit_hrs = grade_point[i] * credit_hrs[i];
gpa = sum_gpaxcredit_hrs / credit_hrs[i];
}

/* 将所有类(class)信息显示给用户 */

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

printf("\n%d\t%s\t\t%d\t %.2f\t\t%s\t\n", i +1, subject[i],class_grades[i], grade_point[i], grade[i]);
}

/* 打印出 GPA */

printf("\n\n GPA is %.2f\n\n\n", gpa);

printf("Would you like to try again?\n");
printf("[y] yes\n[n] no\n");
scanf("%c", &y_n);
}while(y_n ='n');
printf("Goodbye!\n");

return(0);

}

/* 用户输入类的数量 */

int number_subjects(int num_sub){   

do {
printf("Please enter the number of classes you are taking [Max 10] \n");
scanf("%d", &num_sub);

if((num_sub >10) || (num_sub < 1))
printf("**Please enter number between 1 and 10**\n");

}while((num_sub >10) || (num_sub <1));

return(num_sub);
}

最佳答案

数组的名称本身就是一个指针(正式短语是数组的名称衰减为指向数组第一个元素的指针)。所以你不在那里使用 & :

而不是

    scanf("%s", &subject[i]);

你应该有

    scanf("%s", subject[i]);

编辑:刚刚看到您有两个错误,而不是一个。第二个是因为您的 grade_point 是单个值而不是 vector 。将其声明为 doublegrade_point[10](请参阅[10] 部分)。

关于累积平均绩点计算器 C 书写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com