c - 涉及数组的C编程作业问题
问题描述
我有一个程序要求用户选择add class/ drop class / print invoice
. 类保存为数组。我的发票有问题。我有两个函数来列出course name
和course credits
然后在print invoice function
.
然而,当用户输入多个类时,第一类在发票中具有适当的类字符串名称和信用。以下课程是准确的课程编号array
,但复制相同的学分和课程名称。我尝试了不同的解决方案,使函数返回一个指针,但没有运气。任何建议都会有所帮助,谢谢!
尝试使用功能打印/返回指针
void printInvoice(int crn[], int idNumber){
int i;
printf("\n\t\tFee Invoice Prepared for Student:\n\t\t%d", idNumber);
for ( i=1; i<MAX_CLASS ; i++){
if ( crn[i] != 0 ){
printf ("\n\t\t%d\t%s\t\t%d", crn[i], printPrefix(crn), getCredits(crn) );
}
}
}
int getCredits(int crn[]){
int i;
for(i = 1; i < MAX_CLASS; i++){
switch(crn[i]){
case 4587: return 4;
break;
case 4599: return 3;
break;
case 8997: return 1;
break;
case 9696: return 3;
break;
case 7895: return 2;
break;
case 9658: return 3;
break;
case 4287: return 4;
break;
case 9599: return 3;
break;
case 8927: return 1;
break;
case 7696: return 4;
break;
case 7890: return 3;
break;
case 9008: return 5;
break;
}
}
}
char* printPrefix(int crn[]){
int i;
for(i = 1; i < MAX_CLASS; i++){
switch(crn[i]){
case 4587: return "MAT 236";
case 4599: return "COP 220";
case 8997: return "GOL 124";
case 9696: return "COP 100";
case 7895: return "MNT 125";
case 9658: return "OPT 120";
case 4287: return "MAT 836";
case 9599: return "COP 220";
case 8927: return "GOM 124";
case 7696: return "COT 100";
case 7890: return "MOT 125";
case 9008: return "OPT 520";
}
}
}
期望相应的班级名称和学分编号。实际结果是输入的第一个数组(课程)复制其班级名称和学分编号以用于以下数组
解决方案
在您的每个功能中:
for(i = 1; i < MAX_CLASS; i++){
switch(crn[i]){
case 4587: return 4;
break;
...
你进入一个循环,然后你返回一个基于 的值crn[0]
,所以你只经历过循环的第一次迭代。
您根本不需要这些函数中的循环。不要传入整个crn
数组,而是传入您感兴趣的数组元素并对其进行操作。
因此,将您的功能更改为:
int getCredits(int crn){
switch(crn){
case 4587: return 4;
...
default: return -1;
}
}
char* printPrefix(int crn){
switch(crn){
case 4587: return "MAT 236";
...
default: return "";
}
}
并将它们称为:
printf ("\n\t\t%d\t%s\t\t%d", crn[i], printPrefix(crn[i]), getCredits(crn[i]) );
另请注意default
,每个案例都添加了案例,switch
因此总是会返回某些内容。
推荐阅读
- excel-2016 - 如何在 Excel 365 中修改连接字符串
- ios - 定义包含行、类和一般格式的自定义 NSAssert
- azure - 多租户 SaaS 应用程序的身份验证
- javascript - Twitter API Javascript 扩展模式
- php - 每隔几秒刷新一次从 MYSQL 填充的 textarea
- spring-boot - 如果给定的参数集合为空,则弹簧数据 jpa 查询选择所有行
- node.js - 为 npm 注册表 URL 设置用户名和密码
- c# - C#:在表单之外获取鼠标点击位置 - 失去焦点,在外面点击后 form1 不在前面
- python - CLI 路由不适用于 @hug.extend_api()
- android - 如何在 SQLite Android Studio 中加入表