关于#C语言#的问题,如何解决?

怎么修改下面的代码?使得其可以在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]);
}

就编译而言,这段代码没有明显的错误,请你贴出截图看看

没有你说的编译错误

修改后 运行截图 , 如有帮助 给个采纳谢谢

img


问题描述
在 abc: 后面缺少了一个分号

img