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

写的如何?


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void menu1()
{
    int str[100], i, z = 0, x = 0, c = 0, n;
    printf("请输入数组元素个数:");
    scanf("%d", &n);
    printf("请输入数组元素:");
    for(i=0; i<n; i++)
    {
        scanf("%d", &a[i]);
        if(str[i] > 0)
        {
            z++;
        }
        else if(str[i] == 0)
        {
            x++;
        }
        else
        {
            c++;
        }
    }
    printf("正数:%d 个\n零:  %d 个\n负数:%d 个\n", z, x, c);
}

void menu2()
{
    int a[100], i, j, t, n;
    printf("请输入数组元素个数:");
    scanf("%d", &n);
    printf("请输入数组元素:");
    for(i=0; i<n; i++)
    {
        scanf("%d", &a[i]);
    }
    for(i=0; i<n-1; i++)
    {
        for(j=0; j<n-1-i; 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<n; i++)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
}

void menu3()
{
    int n, m, i, j, a[50][50], t;
    printf("请输入二维数组的行数:");
    scanf("%d", &n);
    printf("请输入二维数组的列数:");
    scanf("%d", &m);
    printf("请输入二维数组:\n");
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }
    for(i=0; i<n; i++)
    {
        for(j=i; j<m; j++)
        {
            t = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = t;
        }
    }
    printf("\n转置后的矩阵\n");
    for(i=0; i<m; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
}

void menu4()
{
    int a[100], i, s = 0, n, max;
    printf("请输入数组元素个数:");
    scanf("%d", &n);
    printf("请输入数组元素:");
    for(i=0; i<n; i++)
    {
        scanf("%d", &a[i]);
        s += a[i];
        if(i == 0)
        {
            max = a[0];
        }
        else
        {
            if(a[i] > max)
            {
                max = a[i];
            }
        }
    }
    printf("平均值 = %.2f\n最大值 = %d\n", s*1.0/n, max);
}

void menu5()
{
    char str1[100];
    int a[4] = {0}, i;
    printf("请输入字符数组:");
    getchar();
    gets(str1);
    for(i=0; i<strlen(str1); i++)
    {
        if(str1[i]>='0' && str1[i]<='9')
        {
            a[0]++;
        }
        else if(str1[i]>='a' && str1[i]<='z' || str1[i]>='A' && str1[i]<='Z')
        {
            a[1]++;
        }
        else if(str1[i] == ' ')
        {
            a[2]++;
        }
        else
        {
            a[3]++;
        }
    }
    printf("数字:%d 个\n字母:%d 个\n空格:%d 个\n其他:%d 个\n", a[0], a[1], a[2], a[3]);
}

int main()
{
    while(1)
    {
        int c;
        printf("*************数组应用系统************\n");
        printf("             1.统计数组正负零个数    \n");
        printf("             2.数组的排序            \n");
        printf("             3.二维数组的转置        \n");
        printf("             4.求数组最大值与平均值  \n");
        printf("             5.字符数组统计          \n");
        printf("             6.退出系统              \n");
        printf("*************请输入编号选择功能*************\n");
        scanf("%d", &c);
        switch(c)
        {
        case 1:
            menu1();
            break;
        case 2:
            menu2();
            break;
        case 3:
            menu3();
            break;
        case 4:
            menu4();
            break;
        case 5:
            menu5();
            break;
        case 6:
            printf("感谢使用 程序结束\n");
            return 0;
        default:
            printf("输入错误 请重新输入\n");
        }
        system("pause");
        system("cls");
    }
}

没有看出什么明显的错误,写得还是不错的。
如果你们比较卷,可以将数字选择的菜单变成用上下键反向高亮选择的菜单,逼格就更高了。