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;
}

  

 最后代码格式问题。如果一行代码太长,直接回车就行

 

posted @ 2018-06-02 23:59  刘冬冬的博客  阅读(283)  评论(0编辑  收藏  举报