c++ 用户输入 2个值 定义二维数组 但是报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 用户输入 2个值 定义二维数组 但是报错相关的知识,希望对你有一定的参考价值。
#include <iostream>
using namespace std;
void main ()
int x,y;
cin >>x>>y;
int m[x][y];
虽然用变量声明数组大小会报编译错误,但是可以通过指针来动态申请空间实现动数组长度的变量赋值,写法如下:
int length = 10;
int * varArray;
3varArray = new int[length];
这样varArray就可以当做数组来用了,这个数组的长度可以在程序运行时由计算得来。如果是普通的数组如int is[10] 编译时必须能确定数组长度,不然会报编译错误,这样灵活性受限比较大。我想这个就是new的存在原因之一吧,在栈中分配的内存,大小都是编译时就确定好的,如果想在运行时来动态计算使用内存的大小的话,就要用new这样的动态分配函数,来达到更高的灵活性。 参考技术A C++中数组定义里面不能用变量,你可以换成
#define x;
#define y;
void main ()
cin >>x>>y;
int m[x][y];
c++输入一个5行5列的二维数组,求最大值和最小值其对应行列的位置。。
没有一点逻辑啊,请大神用 #include<iostream.h> 些尽简单的语句来写,怕看不懂··
自己写的 但是不对劲啊。没学C直接C++了。
#include<iostream.h>
void main()
int i;
int j;
int max;
int min;
int row;
int col;
int a[5][5]=1,2,3,4,5,2,3,4,5,6,,3,4,5,6,7,4,5,6,7,8,5,6,7,8,9;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(a[i][j]>max)
max=a[0][0];
max=a[i][j];
row=i;
col=j;
cout<<"max:"<<max;
min = a[0][0];
row=0;col=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(a[i][j]<min)
min=a[i][j];
row=i;
col=j;
cout<<"min:"<<min;
using System;
class Program
static void Main(string[]args)
int[,]array=new int[4,4];
int i,j,k;
int max,min,max_row,max_col,min_row,min_col,sum=0;
string str1,str2="";
Console.WriteLine("请输入五行数据,每行五个数据,以空格隔开,每行输入完之后回车(输入格式不对会出错):");
for(i=0;i<4;i++)
str1=Console.ReadLine();
j=0;
k=0;
while(j<str1.Length)
if(str1[j]!='')
str2+=str1[j];
else
array[i,k++]=int.Parse(str2);
str2="";
j++;
array[i,k]=int.Parse(str2);
str2="";
max=min=array[0,0];
max_row=max_col=1;
min_row=min_col=1;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(max<array[i,j])
max=array[i,j];
max_row=i+1;
max_col=j+1;
if(min>array[i,j])
min=array[i,j];
min_row=i+1;
min_col=j+1;
for(i=0;i<4;i++)
sum+=array[i,i];
Console.WriteLine("最大数为:0,位置是:第1行,第2列",max,max_row,max_col);
Console.WriteLine("最小数为:0,位置是:第1行,第2列",min,min_row,min_col);
Console.WriteLine("对角线上的元素之和为:0",sum);
return0;
扩展资料:
return的用法:
return的作用是结束正在运行的函数,并返回函数值。return后面可以跟一个常量,变量,或是表达式。
函数的定义一般是这样的,例如:
inta(inti)//第一个int是函数的返回值的类型,也就是return后面跟的值的类型,a是函数的名称,括号里的是传递给函数的参数,int是参数的类型,i是参数的名字
{
...//省略函数体内容
returnb;//b必须与函数头的返回值一致(此处为int型)
}
简单函数举例:
参考技术A #include <iostream>using namespace std;
int main()
int a[5][5];
for (int row = 0; row < 5; row++)
for (int col = 0; col < 5; col++)
scanf("%d", &a[row][col]);
int max, min, maxRow, maxCol, minRow, minCol;
max = min = a[0][0];
for (int row = 0; row < 5; row++)
for (int col = 0; col < 5; col++)
if (a[row][col] > max)
max = a[row][col];
maxRow = row;
maxCol = col;
if (a[row][col] < min)
min = a[row][col];
minRow = row;
minCol = col;
cout << "max: " << max << ", row: " << maxRow << ", col: " << maxCol << endl;
cout << "min: " << min << ", row: " << minRow << ", col: " << minCol << endl;
return 0;
参考技术B #include<iostream.h>
void main()
int i;
int j;
int a[5][5]=1,2,3,4,5,2,3,4,5,6,,3,4,5,6,7,4,5,6,7,8,5,6,7,8,9;
//最大最小先初始为第一个元素
int max = a[0][0];
int min = a[0][0];
int min_row = 0;
int min_col = 0;
int max_row = 0;
int max_col = 0;
for(i = 0; i < 5; ++i)
for(j = 0; j < 5; ++j)
if(a[i][j] > max)
max = a[i][j];
max_row = i;
max_col = j;
if(a[i][j] < min)
min = a[i][j];
min_row = i;
min_col = j;
cout<<"最小值是a["<<min_row<<","<<min_col<<"]值为"<<min<<endl;
cout<<"最大值是a["<<max_row<<","<<max_col<<"]值为"<<max<<endl;
本回答被提问者采纳 参考技术C 一个循环就能搞定的事情,非得用两个循环。看来很多人从来不关心算法的复杂度啊!追问
怎么一个循环搞定啊? 不懂
以上是关于c++ 用户输入 2个值 定义二维数组 但是报错的主要内容,如果未能解决你的问题,请参考以下文章