c++实验十二 数组(二维)
先通过一个二维数组保存学生相关的信息
为了更直观的观看,决定用字符串数组来保存数据
当然在计算的时候要转变格式,
// 实验十二 数组(二维).cpp: 定义控制台应用程序的入口点。 #include "stdafx.h" #include<iostream> using namespace std; #include<string> int main() { string a[4][5] = { {"生","号","语","数","英"} ,{"A ","01","80","85","96"},{"B ","02","72","90","89"},{"c ","03","78","86","88"} }; cout << "当前成绩表如下:"<<endl; for (int i = 0; i < 6; i++) { for (int j = 0; j < 5; j++) { cout << a[i][j] << " "; } cout << endl; } return 0; }
输出结果如下:
当前成绩表如下:
生 号 语 数 英
A 01 80 85 96
B 02 72 90 89
c 03 78 86 88
请按任意键继续. . .
首先尝试用强制转换类型来将字符串型转换为整型便 写了下面的代码
int a[1][2], a[2][2], a[3][2];
但是发现并没有什么卵用
然后又想到了.......什么也没想到
再然后当然去百度啦
百度发现是可以用指针来实现类型的转换的
那么具体怎么做呢
.....................................
半个小时过去后
并没有发现什么
................................
两个小时过后仍没找到办法
最后写出来的这个程序居然有点小问题
第二天接着写,一会我就解决这两个问题了
首先第一个,为什么会出现编译时候不报错,在运行的时候报错,是因为for循环的范围超出数组的大小,改一下i<的那个数就好了
第二个,怎么将数组转换为字符串类型
那么就是下面的代码了
// 实验十二 数组(二维).cpp: 定义控制台应用程序的入口点。 #include "stdafx.h" #include<iostream> using namespace std; #include<string> int main() { string score[4][5] = { {"生","号","语","数","英"} ,{"A ","01","80","85","96"},{"B ","02","72","90","89"},{"C ","03","78","86","88"} }; cout << "当前成绩表如下:"<<endl; for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { cout << score[i][j] << " "; } cout << endl; } int i_sorce[4][5]; for (int i = 1; i < 4; i++) { for (int j = 2; j < 5; j++) { i_sorce[i][j] = atoi(score[i][j].c_str()); //字符串数组转换为int型数组 } } for (int i = 1; i < 4; i++) { for (int j = 2; j < 5; j++) { cout << i_sorce[i][j] + 1; //字符串n转换为int型n } } return 0; } int average() { return 0; }
说白了就是将数组里的每一个元素转换成一个int型变量接受的数,然后再写入一个int型数组
虽然有点麻烦,但是能用的啦
然后我又在函数方面犯了一个大错,没有函数声明,就把函数放在主函数下面了,如图
出现的错误是函数找不到标志符
最后基本算是完成了吧
// 实验十二 数组(二维).cpp: 定义控制台应用程序的入口点。 #include "stdafx.h" #include<iostream> using namespace std; #include<string> int average(int i_sorce[4][5],int subject) //定义一个计算平均值的函数有两个参数1、成绩数组2、科目代号,决定传递数组名做参数(传递的地址) { return (i_sorce[1][subject + 1] + i_sorce[2][subject + 1] + i_sorce[3][subject + 1]) / 3; } int sum(int i_sorce[4][5], int student) //定义一个计算求和函数 { return(i_sorce[student][2] + i_sorce[student][2] + i_sorce[student][2]); } int average_st(int i_sorce[4][5], int student) { return (i_sorce[student][2] + i_sorce[student][3] + i_sorce[student][4]) / 3; } int main() { string score[4][5] = { {"生","号","语","数","英"} ,{"李 ","01","80","85","96"},{"刘 ","02","72","90","89"},{"张 ","03","78","86","88"} }; cout << "当前成绩表如下:"<<endl; for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { cout << score[i][j] << " "; } cout << endl; } int i_sorce[4][5]; //为了后面循环简便,我决定让int型数组的大小和原数组的大小一样 for (int i = 1; i < 4; i++) { for (int j = 2; j < 5; j++) { i_sorce[i][j] = atoi(score[i][j].c_str()); //字符串数组转换为int型数组 } } cout << "语文的平均成绩为: "; cout << average(i_sorce, 1)<<endl; cout << "数学的平均成绩为: "; cout << average(i_sorce, 2) << endl; cout << "英语的平均成绩为: "; cout << average(i_sorce, 3) << endl<<endl; cout << "1学生的总分为: "; cout << sum(i_sorce, 1) << endl; cout << "2学生的总分为: "; cout << sum(i_sorce, 2) << endl; cout << "3学生的总分为: "; cout << sum(i_sorce, 3) << endl << endl; cout << "1学生的平均成绩为: "; cout << average_st(i_sorce, 1) << endl; cout << "2学生的平均成绩为: "; cout << average_st(i_sorce, 2) << endl; cout << "3学生的平均成绩为: "; cout << average_st(i_sorce, 3) << endl; return 0; }
最后代码格式问题。如果一行代码太长,直接回车就行