二维数组指定行数和列数,但是系统不会给默认值对吗
时间: 2024-03-10 18:50:55 浏览: 64
在 Java 中,如果使用如下方式定义二维数组:
```java
int[][] arr = new int[3][4];
```
那么系统会为二维数组中的每一个元素赋予默认值 0。
如果是定义一个二维数组类型为引用类型(如字符串类型)时,系统会为每一个元素赋予默认值 null。
需要注意的是,在使用二维数组时最好先进行初始化,以免出现空指针异常等问题。
相关问题
4. 建立一个字符串类 String, 要求如下: 1)私有数据成员: • char *str:字符串的首地址。 •int ten:宇符串的长度值。 2)公有成员函数: •构造两数:动态申请存储字符串所需的内存空间,并且既能用参数指定的字符串也能用默认值 NULL 进行宇符串的初始化。 • 拷贝构造两数。 •析构两数:释放字符串所使用的动态内存空问。 • void set(char *s):为字符串赋新值。 •void shovQ:显示字符串。 •int getlen0:返回字符串的长度。 • void delchar(char ch):删除字符串中出现的所有ch字符。 • String operator -(char ch):重载“一”运算符,实现删除字符串中出现的所有c字符(如str-h)。 • String & operator =(String &):重载“=”运算符,实现宇符串的直接赋值。 • String & operator +=(String &):重载“+=”运算符,实现两宇符串的拼接。 •bool operator =-(String &):重载 运算符,进行两宇符串的相等性比较,相等返回 true, 杏则返回 false。 3)友元函数: • friend String operator +(String &, String &):重载“+〞运算符,实现两字符串的相加 请编写完整的程序,测试类的各成员两数的正确性。 ’5.定义一个矩阵类 Matrix,其数据成员为: "int.*p, rows, cols;" ,用于存放二维数组值。要水将 数组存放成一维数组,rows-和cols 表示二维数组的行数和列数,p指向数组第一个元素。要求编写 以下几个公有成员兩数。 ••Matrix(int r, int c):构造两数,初始化如组的行数和列数,并动态为数组中请空间
1. String 类的实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
class String {
private:
char *str;
int len;
public:
String() {
len = 0;
str = new char[1];
str[0] = '\0';
}
String(const char *s) {
len = strlen(s);
str = new char[len + 1];
strcpy(str, s);
}
String(const String &s) {
len = s.len;
str = new char[len + 1];
strcpy(str, s.str);
}
~String() {
delete[] str;
}
void set(char *s) {
delete[] str;
len = strlen(s);
str = new char[len + 1];
strcpy(str, s);
}
void show() {
cout << str << endl;
}
int getlen() {
return len;
}
void delchar(char ch) {
int index = 0;
for (int i = 0; i < len; i++) {
if (str[i] != ch) {
str[index++] = str[i];
}
}
str[index] = '\0';
len = index;
}
String operator-(char ch) {
String temp(*this);
temp.delchar(ch);
return temp;
}
String& operator=(String &s) {
if (this == &s) {
return *this;
}
delete[] str;
len = s.len;
str = new char[len + 1];
strcpy(str, s.str);
return *this;
}
String& operator+=(String &s) {
len += s.len;
char *temp = new char[len + 1];
strcpy(temp, str);
strcat(temp, s.str);
delete[] str;
str = temp;
return *this;
}
bool operator==(String &s) {
if (len != s.len) {
return false;
}
return strcmp(str, s.str) == 0;
}
friend String operator+(String &s1, String &s2) {
String temp;
temp.len = s1.len + s2.len;
temp.str = new char[temp.len + 1];
strcpy(temp.str, s1.str);
strcat(temp.str, s2.str);
return temp;
}
};
int main() {
String s1("hello");
String s2;
s2 = s1;
s2 -= 'l';
s1 += s2;
s1.show();
if (s1 == s2) {
cout << "s1 equals s2" << endl;
} else {
cout << "s1 does not equal s2" << endl;
}
String s3 = s1 + s2;
s3.show();
return 0;
}
```
2. Matrix 类的实现:
```cpp
#include <iostream>
using namespace std;
class Matrix {
private:
int *p;
int rows, cols;
public:
Matrix(int r, int c) {
rows = r;
cols = c;
p = new int[rows * cols];
}
~Matrix() {
delete[] p;
}
int& operator()(int i, int j) {
return *(p + i * cols + j);
}
Matrix operator+(Matrix &m) {
Matrix temp(rows, cols);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
temp(i, j) = (*this)(i, j) + m(i, j);
}
}
return temp;
}
void show() {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << (*this)(i, j) << " ";
}
cout << endl;
}
}
};
int main() {
Matrix m1(3, 3), m2(3, 3);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
m1(i, j) = i + j;
m2(i, j) = i - j;
}
}
Matrix m3 = m1 + m2;
m3.show();
return 0;
}
```
在Python中创建和初始化二维温度场想要创建一个从键盘获得两个数字并除以0.05之后新数字作为列数行数的的二维数组,每个元素代表一个温度值,此数值由键盘获得另外的两个数字之和,仅进行一次填充使其满整个二维数组
在Python中,你可以使用numpy库来方便地创建二维数组并进行温度值的初始化。首先,你需要导入`numpy`模块,然后按照以下步骤操作:
1. 导入numpy库:
```python
import numpy as np
```
2. 定义函数获取用户输入的行数和列数,以及每个元素的初始值:
```python
def get_initial_values():
rows = int(input("请输入行数: "))
cols = int(input("请输入列数: "))
# 获取每个元素的初始值,即两数之和
temp_sum = sum(map(int, input("请输入每个元素的初始值(两个数字相加): ").split()))
return rows, cols, temp_sum
```
3. 创建二维数组,并将初始值分配给每个元素:
```python
def create_temperature_field(rows, cols):
temperature_field = np.zeros((rows, cols), dtype=int)
for i in range(rows):
for j in range(cols):
temperature_field[i][j] = int(input(f"请输入第{i+1}行第{j+1}列的温度值(默认0): " or f"{temp_sum // (cols * rows)}(如果为空则使用默认值)"))
return temperature_field
# 主程序
rows, cols, initial_temp_sum = get_initial_values()
temperature_field = create_temperature_field(rows, cols)
print("二维温度场:")
print(temperature_field)
```
这个脚本会循环询问用户的输入,直到完成整个二维数组的初始化。注意,当用户不输入值时,默认使用`initial_temp_sum // (rows * cols)`的结果。如果你希望每次都能获取新的值,那么需要去除默认值部分。
阅读全文