该程序从用户获取两个数组并添加它们并打印总和。该程序使用嵌套for循环来获取值并打印值。编译器返回未在此作用域中声明的错误array1。如果我删除总和打印部分,程序也会停止工作。任何缩短该计划的建议都表示赞赏。
#include<stdio.h>
int a,b;
int i,j;
main()
{
printf("Enter the size of the array \n Rows : ");
scanf("%d",&a);
printf("Columns : ");
scanf("%d",&b);
int array[a][b];
printf("Enter the values of the %dx%d array : \n",a,b);
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
scanf("%d",&array[i][j]);
}
}
printf("The values of the First Matrix are :\n");
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
printf("%d\t",array[i][j]);
}
printf("\n");
}
int input;
printf("If you want to do further operations on Matrices press 1\n");
scanf("%d",&input);
if(input==1)
{
printf("Enter the size of the array \n Rows : ");
scanf("%d",&a);
printf("Columns : ");
scanf("%d",&b);
int array1[a][b];
printf("Enter the values of the %dx%d array : \n",a,b);
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
scanf("%d",&array1[i][j]);
}
}
printf("The values of the Second Matrix are :\n");
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
printf("%d\t",array1[i][j]);
}
printf("\n");
}
}
input = 0;
printf("If you want to add the two matrices press 1 \n");
scanf("%d",input);
int array2[a][b];
if(input==1)
{
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
array2[i][j] = array[i][j]+array1[i][j];
}
}
}
printf("The Sum of the first and Second array is : \n ");
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
printf("%d\t",array2[i][j]);
}
printf("\n");
}
}
答案 0 :(得分:2)
您在代码中遇到很多问题,建议您正确使用花括号{..}
。也可以使用int main(void) { }
代替main() { }
。
编译器是否返回未在此范围内声明的错误array1?因为array1
在if(input==1)
块内声明,并且您正在该范围之外访问。
同样声明scanf("%d",input);
是错误的,它会发出警告,用-Wall
标志编译你的程序。
最后避免对这个小任务使用全局变量,或者使用#define
来定义row
和column
值。
这是修改后的代码
int main() {
printf("Enter the size of the array \n Rows : ");
int a = 0,b = 0;
scanf("%d",&a);
printf("Columns : ");
scanf("%d",&b);
int array[a][b];
printf("Enter the values of the %dx%d array : \n",a,b);
for(int i=0;i<a;i++) {
for(int j=0;j<b;j++) {
scanf("%d",&array[i][j]);
}
}
printf("The values of the First Matrix are :\n");
for(int i=0;i<a;i++) {
for(int j=0;j<b;j++) {
printf("%d\t",array[i][j]);
}
printf("\n");
}
int input;
printf("If you want to do further operations on Matrices press 1\n");
scanf("%d",&input);
if(input==1) {
printf("Enter the size of the array \n Rows : ");
scanf("%d",&a);
printf("Columns : ");
scanf("%d",&b);
int array1[a][b];
printf("Enter the values of the %dx%d array : \n",a,b);
for(int i=0;i<a;i++) {
for(int j=0;j<b;j++) {
scanf("%d",&array1[i][j]);
}
}
printf("The values of the Second Matrix are :\n");
for(int i=0;i<a;i++) {
for(int j=0;j<b;j++) {
printf("%d\t",array1[i][j]);
}
printf("\n");
}
input = 0;
printf("If you want to add the two matrices press 1 \n");
scanf("%d",&input);/* use &input */
int array2[a][b];
if(input==1) {
for(int i=0;i<a;i++) {
for(int j=0;j<b;j++) {
array2[i][j] = array[i][j]+array1[i][j];
}
}
}
printf("The Sum of the first and Second array is : \n ");
for(int i=0;i<a;i++) {
for(int j=0;j<b;j++) {
printf("%d\t",array2[i][j]);
}
printf("\n");
}
}
return 0;
}
答案 1 :(得分:0)
在块中声明array1,以:
开头if(input==1)
然后你尝试在该块之外使用它,这会给你编译错误。
array2[i][j] = array[i][j]+array1[i][j];
最快的解决方案是将代码嵌入其中的blok,因此array1
保留在范围内。