如何修改使这段代码能在VC++2010学习版运行?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Statistics(); /* 统计数组中正、负、零的个数 */
void sortArray(); /* 一维数组排序 */
void getRowAndCol( int arr[2] ); /* 获得二维数组的行数和列数 */
void initMatrix( int** arr, int row, int col ); /* 初始化数组 */
void matrixTranspose(); /* 二维数组转置 */
void getSumAndAverage(); /* 求和和平局值 */
void getMaxAndMin(); /* 求最大值和最小值 */
void matrixMultiply(); /* 两个二维数组相乘 */
void showMatrix( int** arr, int row, int col ); /* 打印二维数组 */
void addAndSub(); /* 求二维数组的加法和减法 */
int main()
{
char ch;
arraySystem:
printf( "\n***********************数组应用系统***********************\n" );
printf( " 1.统计一维数组的正数、负数和零的个数\n" );
printf( " 2.一位数组排序\n" );
printf( " 3.二维数组的转置\n" );
printf( " 4.求二维数组的最大值和最小值\n" );
printf( " 5.求二维数组行列的和以及平均值\n" );
printf( " 6.两个二维数组的加法和减法运算\n" );
printf( " 7.两个二维数组的乘法运算\n" );
printf( " 8.退出系统\n" );
printf( "********************请输入编号选择功能*********************\n" );
ch = getchar();
switch ( ch )
{
case '1':
Statistics();
break;
case '2':
sortArray();
break;
case '3':
matrixTranspose();
break;
case '4':
getMaxAndMin();
break;
case '5':
getSumAndAverage();
break;
case '6':
addAndSub();
break;
case '7':
matrixMultiply();
break;
case '8':
printf( "****************已经退出系统,欢迎下次使用!****************\n" );
goto end;
break;
default:
printf( "*****************输入错误,请输入1-8的数字!****************\n\n" );
break;
}
getchar();
goto arraySystem;
end:;
return(0);
}
/*
* 功能:统计一维数组的正数、负数、零的个数
*/
void Statistics()
{
int i;
int len; /* 一维数组的长度 */
int posNum = 0, negNum = 0, zeroNum = 0; /* 存储正数,负数,零的个数 */
printf( "请输入数组的长度:" );
scanf( "%d", &len );
if ( len < 0 )
{
printf( "长度不能小于0!" );
exit( 0 );
}
int nums[len]; /* 定义一维数组 */
printf( "请输入数组数据,共%d个数据(数据用空格隔开):\n", len );
for ( i = 0; i < len; i++ )
{
scanf( "%d", &nums[i] );
}
printf( "原数组:\n" );
for ( i = 0; i < len; i++ )
{
printf( "%d ", nums[i] );
if ( nums[i] > 0 )
{
posNum++;
}else if ( nums[i] < 0 )
{
negNum++;
}else{
zeroNum++;
}
}
printf( "\n" );
printf( "正数的个数为:%d个\n", posNum );
printf( "负数的个数为:%d个\n", negNum );
printf( "零的个数为:%d个\n", zeroNum );
printf( "\n" );
}
/*
* 功能:一维数组排序(冒泡排序法)
*/
void sortArray()
{
int i, j, temp;
int len; /* 一维数组的长度 */
printf( "请输入数组的长度:" );
scanf( "%d", &len );
if ( len < 0 )
{
printf( "长度不能小于0!" );
exit( 0 );
}
int nums[len]; /* 定义一维数组 */
printf( "请输入数组数据,共%d个数据(数据用空格隔开):\n", len );
for ( i = 0; i < len; i++ )
{
scanf( "%d", &nums[i] );
}
printf( "原数组:\n" );
for ( i = 0; i < len; i++ )
{
printf( "%d ", nums[i] );
}
for ( i = 0; i < len - 1; i++ )
{
for ( j = 0; j < len - 1 - i; j++ )
{
if ( nums[j] > nums[j + 1] )
{
temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
printf( "\n排序后的数组:\n" );
for ( i = 0; i < len; i++ )
{
printf( "%d ", nums[i] );
}
printf( "\n" );
}
/*
* 功能:获去二维数组行数和列数
*/
void getRowAndCol( int arr[2] )
{
printf( "请输入二维数组的行数:" );
scanf( "%d", &arr[0] );
printf( "请输入二维数组的列数:" );
scanf( "%d", &arr[1] );
}
/*
* 功能:打印二维数组
*/
void showMatrix( int** arr, int row, int col )
{
int i, j;
for ( i = 0; i < row; i++ )
{
for ( j = 0; j < col; j++ )
{
printf( "%-4d", *( (int *) arr + col * i + j) );
}
printf( "\n" );
}
printf( "\n" );
}
/*
* 功能:初始化二维数组(矩阵),并打印出来
* 输入:row 行数 col 列数
* 输出:二维数组存储到arr中
*/
void initMatrix( int** arr, int row, int col )
{
int i, j;
for ( i = 0; i < row; i++ )
{
for ( j = 0; j < col; j++ )
{
scanf( "%d", ( (int *) arr + col * i + j) );
}
}
printf( "\n" );
}
/*
* 功能:二维数组转置
*/
void matrixTranspose()
{
int i, j;
int arr[2];
getRowAndCol( arr );
int row = arr[0], col = arr[1]; /* 存储行数和列数 */
int matrix[row][col]; /* 二维数组 */
int transpose[col][row]; /* 定义存储转置后的二维数组 */
printf( "请输入二维数组的数据,共%d个数(用空格隔开):\n", row * col );
initMatrix( (int * *) matrix, row, col ); /* 初始化二维数组 */
printf( "二维数组为:\n" );
showMatrix( (int * *) matrix, row, col );
/* 数组转置 */
for ( i = 0; i < row; i++ )
{
for ( j = 0; j < col; j++ )
{
*(*(transpose + j) + i) = *(*(matrix + i) + j);
}
}
printf( "转置后的二维数组为:\n" );
showMatrix( (int * *) transpose, col, row );
}
/*
* 功能:二维数组的加法和减法
*/
void addAndSub()
{
int i, j;
int arr[2];
getRowAndCol( arr );
int row = arr[0], col = arr[1]; /* 存储行数和列数 */
int sum[row][col], sub[row][col]; /* 求和数组,求差数组 */
int matrix1[row][col], matrix2[row][col]; /* 二维数组 */
printf( "\n" );
printf( "请输入第一个数组,共%d个数(用空格隔开):\n", row * col );
initMatrix( (int * *) matrix1, row, col ); /* 初始化二维数组 */
printf( "请输入第二个数组,共%d个数(用空格隔开):\n", row * col );
initMatrix( (int * *) matrix2, row, col ); /* 初始化二维数组 */
printf( "\n" );
for ( i = 0; i < row; i++ )
{
for ( j = 0; j < col; j++ )
{
sum[i][j] = matrix1[i][j] + matrix2[i][j];
sub[i][j] = matrix1[i][j] - matrix2[i][j];
}
}
printf( "第一个数组为:\n" );
showMatrix( (int * *) matrix1, row, col );
printf( "第二个数组为:\n" );
showMatrix( (int * *) matrix2, row, col );
printf( "求和为:\n" );
showMatrix( (int * *) sum, row, col );
printf( "差值为:\n" );
showMatrix( (int * *) sub, row, col );
}
/*
* 功能:两个二维数组(矩阵)相乘
*/
void matrixMultiply()
{
int i, j, k;
int row1, col1, row2, col2; /* 分别存储两个二维数组的行数和列数 */
printf( "请输入第一个二维数组的行数:" );
scanf( "%d", &row1 );
printf( "请输入第一个二维数组的列数:" );
scanf( "%d", &col1 );
printf( "请输入第二个二维数组的行数:" );
scanf( "%d", &row2 );
printf( "请输入第二个二维数组的列数:" );
scanf( "%d", &col2 );
/* 判断相乘条件是否成立,矩阵相乘条件:矩阵1的列数要等于矩阵2的行数 */
if ( col1 != row2 )
{
printf( "相乘条件不成立!" );
exit( 0 );
}
int matrix1[row1][col1], matrix2[row2][col2]; /* 两个二维数组 */
int result[row1][col2]; /* 存储相乘结果 */
printf( "\n" );
printf( "请输入第一个二维数组,共%d个数(用空格隔开):\n", row1 * col1 );
initMatrix( (int * *) matrix1, row1, col1 ); /* 初始化第一个二维数组 */
printf( "请输入第二个二维数组,共%d个数(用空格隔开):\n", row2 * col2 );
initMatrix( (int * *) matrix2, row2, col2 ); /* 初始化第二个二维数组 */
for ( i = 0; i < row1; i++ )
{
for ( j = 0; j < col2; j++ )
{
int sum = 0;
for ( k = 0; k < col1; k++ )
{
sum += matrix1[i][k] * matrix2[k][j];
}
result[i][j] = sum;
}
}
printf( "第一个二维数组为:\n" );
showMatrix( (int * *) matrix1, row1, col1 );
printf( "第二个二维数组为:\n" );
showMatrix( (int * *) matrix2, row2, col2 );
printf( "两个二维数组相乘的结果为:\n" );
showMatrix( (int * *) result, row1, col2 );
}
/*
* 功能:求每行和每列的总和和平均值
*/
void getSumAndAverage()
{
int i, j;
int arr[2];
getRowAndCol( arr );
int row = arr[0], col = arr[1]; /* 存储行数和列数 */
int sumRow[row], sumCol[col], sum = 0; /* 存储每行总和,每列总和,总和 */
int matrix[row][col]; /* 二维数组 */
printf( "请输入二维数组的数据,共%d个数(用空格隔开):\n", row * col );
initMatrix( (int * *) matrix, row, col ); /* 初始化二维数组 */
printf( "二维数组为:\n" );
showMatrix( (int * *) matrix, row, col );
for ( i = 0; i < row; i++ )
{
sumRow[i] = 0;
}
for ( i = 0; i < col; i++ )
{
sumCol[i] = 0;
}
for ( i = 0; i < row; i++ )
{
for ( j = 0; j < col; j++ )
{
sumRow[i] += matrix[i][j]; /* 求每行的总和 */
sumCol[j] += matrix[i][j]; /* 求每列的总和 */
sum += matrix[i][j]; /* 求所有的总和 */
}
}
/* 打印结果 */
for ( i = 0; i < row; i++ )
{
printf( "第%d行的总和为%d,平均值为%.2f\n", i + 1, sumRow[i], ( (float) sumRow[i]) / row );
}
printf( "\n" );
for ( i = 0; i < col; i++ )
{
printf( "第%d列的总和为%d,平均值为%.2f\n", i + 1, sumCol[i], ( (float) sumCol[i]) / col );
}
printf( "\n" );
printf( "总和为:%d,总平局值为:%.2f\n", sum, ( (float) sum) / (row * col) );
}
/*
* 功能:求二维数组的最大值和最小值
*/
void getMaxAndMin()
{
int i, j;
int max, min; /* 存储最大最小值 */
int arr[2];
getRowAndCol( arr );
int row = arr[0], col = arr[1]; /* 存储行数和列数 */
int matrix[row][col]; /* 二维数组 */
printf( "请输入二维数组的数据,共%d个数(用空格隔开):\n", row * col );
initMatrix( (int * *) matrix, row, col ); /* 初始化二维数组 */
printf( "二维数组为:\n" );
showMatrix( (int * *) matrix, row, col );
max = matrix[0][0];
min = matrix[0][0];
for ( i = 0; i < row; i++ )
{
for ( j = 0; j < col; j++ )
{
if ( max < matrix[i][j] )
max = matrix[i][j];
if ( min > matrix[i][j] )
min = matrix[i][j];
}
}
printf( "最大值为:%d\n", max );
printf( "最小值为:%d\n", min );
}
程序运行报错吗?
在vscode中运行及测试都是正常的。
粘贴上去 不对的地方改一下就行
不知道你这个问题是否已经解决, 如果还没有解决的话:6VPJ7-H3CXH-HBTPT-X4T74-3YVY7
由于题目中没有给出具体的代码和出错信息,无法给出具体的解决方案。建议提供具体的代码和出错信息,或者尝试查阅相关的编程文档和资料,进行问题的排查和解决。