怎么修改下面的代码?使得其可以在VC++2010学习版中运行
目前调试提示error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
#include <stdio.h>
#include <stdlib.h>
void fun(int a[][10],int row,int col);
int main() {
char ch;
abc:
printf("********数组应用系统*********\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': {
int i,j,t,b,a[1000];
printf("请输入该一维数组的个数\n");
scanf("%d",&b);
printf("请输入该数组:\n");
for(i=0;i<b;i++)
scanf("%d",&a[i]);
for(i=0;i<b;i++)
for(j=0;j<b-i-1;j++)
if(a[j]>a[j+1]) {
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("排序后的顺序是:\n");
for(i=0;i<b;i++)
printf("%d ",a[i]);
getchar();
goto abc;
} break;
case '2': {
int a,i,b[1000],q,w,e;
q=0;
w=0;
e=0;
printf("请输入该一维数组的个数\n");
scanf("%d",&a);
printf("请输入该一维数组\n");
for(i=0;i<a;i++) {
scanf("%d",&b[i]);
if(b[i]>0)
q++;
else if(b[i]==0)
w++;
else
e++;
}
printf("数组中正数的个数是%d\n",q);
printf("数组中负数的个数是%d\n",e);
printf("数组中0的个数是%d\n",w);
getchar();
goto abc;
} break;
case '3': {
int i, j, temp,b,c;
int a[100][100];
printf("输入行数和列数:\n");
scanf("%d%d",&b,&c);
printf("输入矩阵:\n");
for(int i=0; i<b; i++) {
for(int j=0; j<c; j++) {
scanf("%d",&a[i][j]);
}
}
printf("原始矩阵:\n");
for(i=0; i<b; i++) {
for(j=0; j<c; j++)
printf("%d ", a[i][j]);
printf("\n");
}
for(i=0; i<b; i++)
for(j=0; j<c; j++) {
if (j>i) {
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
}
printf("转置矩阵:\n");
for(i=0; i<c; i++) {
for(j=0; j<b; j++)
printf("%d ", a[i][j]);
printf("\n");
}
getchar();
goto abc;
} break;
case '4': {
int i,j,b,c;
double max,min,sum=0;
int a[100][100];
printf("输入行数和列数:\n");
scanf("%d%d",&b,&c);
printf("输入矩阵:\n");
for(int i=0; i<b; i++) {
for(int j=0; j<c; j++) {
scanf("%d",&a[i][j]);
}
}
max=min=a[0][0];
for(i=0;i<b;i++)
for(j=0;j<c;j++) {
if(a[i][j]>max)
max=a[i][j];
if(a[i][j]<min)
min=a[i][j];
}
printf("这个二维数组元素最大值为%.2lf,最小值为%.2lf\n",max,min);
getchar();
goto abc;
} break;
case '5': {
char ch[11];
int a=0,b=0,c=0,d=0;
int i,k;
printf("请输入该一维数组的个数\n");
scanf("%d",&k);
printf("请输入这个字符串:\n");
getchar();
for(i=0;i<k;i++) {
scanf("%c",&ch[i]);
if((ch[i]>='A'&&ch[i]<='Z')||(ch[i]>='a'&&ch[i]<='z'))
a++;
else if(ch[i]>='0'&&ch[i]<='9')
b++;
else
d++;
}
printf("字母有%d个,数字有%d个,其他字符有%d个\n",a,b,d);
getchar();
goto abc;
} break;
case '6': {
int i,j,b,c;
double max,min,ave,sum=0;
int a[100][100];
printf("输入行数和列数:\n");
scanf("%d%d",&b,&c);
printf("输入矩阵:\n");
for(int i=0; i<b; i++) {
for(int j=0; j<c; j++) {
scanf("%d",&a[i][j]);
}
}
for(i=0;i<b;i++)
for(j=0;j<c;j++) {
sum+=a[i][j];
}
max=min=a[0][0];
ave=sum/(b*c);
printf("平均值为%.2lf\n",ave);
getchar();
goto abc;
} break;
case '7': {
int a[10][10],row,col;
int i,j;
printf("请输入该二维数组的数组的行数和列数:\n");
scanf("%d%d",&row,&col);
printf("请输入该二维数组:\n");
for(i=0;i<row;i++) {
for(j=0;j<col;j++)
scanf("%d",&a[i][j]);
}
fun(a,row,col);
getchar();
goto abc;
} break;
case '8': {
printf("再见,欢迎下次使用");
exit(0);
} break;
default: {
printf("输入错误,请重新输入!\n");
getchar();
goto abc;
}
}
return 0;
}
void fun(int a[][10],int row,int col) {
int i,j,k,sum;
int r[10],c[10];
k=0;
for(i=0;i<row;i++) {
sum=0;
for(j=0;j<col;j++)
sum+=a[i][j];
r[k]=sum;
k++;
}
k=0;
for(j=0;j<col;j++) {
sum=0;
for(i=0;i<row;i++)
sum+=a[i][j];
c[k]=sum;
k++;
}
for(k=0;k<row;k++)
printf("第%d行的和为%d\n",k+1,r[k]);
for(k=0;k<col;k++)
printf("第%d列的和为%d\n",k+1,c[k]);
}
给你把所有的main函数定义的局部变量放到前面进行了定义,代码修改如下,你试下看能否满足需要:
#include <stdio.h>
#include <stdlib.h>
void fun(int a[][10],int row,int col);
int main()
{
char ch;
int i1,j1,t1,b1,a1[1000];
int a2,i2,b2[1000],q2,w2,e2;
int i3, j3, temp3,b3,c3;
int a3[100][100];
int i4,j4,b4,c4;
double max4,min4,sum4=0;
int a4[100][100];
char ch5[11];
int a5=0,b5=0,c5=0,d5=0;
int i5,k5;
int i6,j6,b6,c6;
double max6,min6,ave6,sum6=0;
int a6[100][100];
int a7[10][10],row7,col7;
int i7,j7;
abc:
printf("********数组应用系统*********\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': {
printf("请输入该一维数组的个数\n");
scanf("%d",&b1);
printf("请输入该数组:\n");
for(i1=0;i1<b1;i1++)
scanf("%d",&a1[i1]);
for(i1=0;i1<b1;i1++)
for(j1=0;j1<b1-i1-1;j1++)
if(a1[j1]>a1[j1+1]) {
t1=a1[j1];
a1[j1]=a1[j1+1];
a1[j1+1]=t1;
}
printf("排序后的顺序是:\n");
for(i1=0;i1<b1;i1++)
printf("%d ",a1[i1]);
getchar();
goto abc;
} break;
case '2': {
q2=0;
w2=0;
e2=0;
printf("请输入该一维数组的个数\n");
scanf("%d",&a2);
printf("请输入该一维数组\n");
for(i2=0;i2<a2;i2++) {
scanf("%d",&b2[i2]);
if(b2[i2]>0)
q2++;
else if(b2[i2]==0)
w2++;
else
e2++;
}
printf("数组中正数的个数是%d\n",q2);
printf("数组中负数的个数是%d\n",e2);
printf("数组中0的个数是%d\n",w2);
getchar();
goto abc;
} break;
case '3': {
printf("输入行数和列数:\n");
scanf("%d%d",&b3,&c3);
printf("输入矩阵:\n");
for(i3=0; i3<b3; i3++) {
for(j3=0; j3<c3; j3++) {
scanf("%d",&a3[i3][j3]);
}
}
printf("原始矩阵:\n");
for(i3=0; i3<b3; i3++) {
for(j3=0; j3<c3; j3++)
printf("%d ", a3[i3][j3]);
printf("\n");
}
for(i3=0; i3<b3; i3++)
for(j3=0; j3<c3; j3++) {
if (j3>i3) {
temp3=a3[i3][j3];
a3[i3][j3]=a3[j3][i3];
a3[j3][i3]=temp3;
}
}
printf("转置矩阵:\n");
for(i3=0; i3<c3; i3++) {
for(j3=0; j3<b3; j3++)
printf("%d ", a3[i3][j3]);
printf("\n");
}
getchar();
goto abc;
} break;
case '4': {
printf("输入行数和列数:\n");
scanf("%d%d",&b4,&c4);
printf("输入矩阵:\n");
for(i4=0; i4<b4; i4++) {
for(j4=0; j4<c4; j4++) {
scanf("%d",&a4[i4][j4]);
}
}
max4=a4[0][0];
min4=a4[0][0];
for(i4=0;i4<b4;i4++)
for(j4=0;j4<c4;j4++) {
if(a4[i4][j4]>max4)
max4=a4[i4][j4];
if(a4[i4][j4]<min4)
min4=a4[i4][j4];
}
printf("这个二维数组元素最大值为%.2lf,最小值为%.2lf\n",max4,min4);
getchar();
goto abc;
} break;
case '5': {
printf("请输入该一维数组的个数\n");
scanf("%d",&k5);
printf("请输入这个字符串:\n");
getchar();
for(i5=0;i5<k5;i5++) {
scanf("%c",&ch5[i5]);
if((ch5[i5]>='A'&&ch5[i5]<='Z')||(ch5[i5]>='a'&&ch5[i5]<='z'))
a5++;
else if(ch5[i5]>='0'&&ch5[i5]<='9')
b5++;
else
d5++;
}
printf("字母有%d个,数字有%d个,其他字符有%d个\n",a5,b5,d5);
getchar();
goto abc;
} break;
case '6': {
printf("输入行数和列数:\n");
scanf("%d%d",&b6,&c6);
printf("输入矩阵:\n");
for(i6=0; i6<b6; i6++) {
for(j6=0; j6<c6; j6++) {
scanf("%d",&a6[i6][j6]);
}
}
for(i6=0;i6<b6;i6++)
for(j6=0;j6<c6;j6++) {
sum6+=a6[i6][j6];
}
max6=a6[0][0];
min6=a6[0][0];
ave6=sum6/(b6*c6);
printf("平均值为%.2lf\n",ave6);
getchar();
goto abc;
} break;
case '7': {
printf("请输入该二维数组的数组的行数和列数:\n");
scanf("%d%d",&row7,&col7);
printf("请输入该二维数组:\n");
for(i7=0;i7<row7;i7++) {
for(j7=0;j7<col7;j7++)
scanf("%d",&a7[i7][j7]);
}
fun(a7,row7,col7);
getchar();
goto abc;
} break;
case '8': {
printf("再见,欢迎下次使用");
exit(0);
} break;
default: {
printf("输入错误,请重新输入!\n");
getchar();
goto abc;
}
}
return 0;
}
void fun(int a[][10],int row,int col)
{
int i,j,k,sum;
int r[10],c[10];
k=0;
for(i=0;i<row;i++) {
sum=0;
for(j=0;j<col;j++)
sum+=a[i][j];
r[k]=sum;
k++;
}
k=0;
for(j=0;j<col;j++) {
sum=0;
for(i=0;i<row;i++)
sum+=a[i][j];
c[k]=sum;
k++;
}
for(k=0;k<row;k++)
printf("第%d行的和为%d\n",k+1,r[k]);
for(k=0;k<col;k++)
printf("第%d列的和为%d\n",k+1,c[k]);
}
就编译而言,这段代码没有明显的错误,请你贴出截图看看
没有你说的编译错误
修改后 运行截图 , 如有帮助 给个采纳谢谢