求各位编程高手帮忙解答,帮我看看哪里错了,该怎么改正

 我来答
wang433
2013-10-11 · TA获得超过969个赞
知道小有建树答主
回答量:320
采纳率:0%
帮助的人:126万
展开全部
  1. C语言的数组是静态分配的,即在程序运行前就要分配好。因此C语言不允许使用 int a[n];这样的定义,因为n是未知的,C语言的数组定义中,元素个数必须是“常量表达式”,这点你要注意了。

  2. 如果你非要进行动态分配,可以使用指针,即:

    int *a;

    scanf("%d",&n);

    a=(int*)malloc(n*sizeof(int));   //如果是C++环境,可以简化为a=new int[n];

  3. 如果是C++环境,你程序中的前三行顺序是可以的,但是如果是标准C(如TC)的话,函数的变量定义只能在第一行执行代码之前定义,如:

    int n,i,j;

    int *a;

    scanf("%d",&n);

    a=(int*)malloc(n*sizeof(int));

     

    在标准C下,这样的定义是错误的:

     

    int n,i,j;

    scanf("%d",&n);

    int *a;   //不符合变量定义规则

    a=(int*)malloc(n*sizeof(int));

  4. 如果要用动态分配,你的程序最前面应该加上一行头文件包含:

    #include <malloc.h>

  5. 你的程序中的代码过于繁琐了,可以使用C的“往下掉”的特点,使程序变得简单:

    switch(j)

    {

     case 0:case 1:case 2:case 3:case 4:case 5:printf("E");break;

     case 6:printf("D");break;

     ...

     case 9:case 10: printf("A");break;

     defalut:printf("ERROR SCORE SCOPE!");

    }

cdyzxy
2013-10-11 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3724万
展开全部
建议修改程序为:
#include<stdio.h>
#include<malloc.h>
void main()
{ int n,i,j,*a;
scanf("%d",&n);
a=(int *)malloc(sizeof(int)*n); //申请数组内存
if ( a ) //如果申请成功
{ for ( i=0;i<n;i++ )
{ scanf("%d",a+i);
j=a[i]/10;
switch ( j )
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5: printf("E"); break;
case 6: printf("D"); break;
case 7: printf("C"); break;
case 8: printf("B"); break;
case 9:
case 10: printf("A"); break;
}
}
free(a); //释放申请的内存
}
}
其中的判断也可以用条件来写:
在程序开始定义个字符变量c
c='E';
if ( a[i]>=90 ) c='A';
else if ( a[i]>=80 ) c='B';
else if ( a[i]>=70 ) c='C';
else if ( a[i]>=60 ) c='D';
printf("%c",c);
追问
可以了,谢谢了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhaoyj163em
2013-10-11 · TA获得超过1033个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:363万
展开全部
int a[n];
这里有问题,楼主你不能用一个变量来声明数组的长度。
你应该用一个常量或者像下面这样做:
int *a = new int[n];
追问
这样子还是有问题,而且我这样写是跟书上一样的
追答
编译器的提示信息有什么?
我看到的只有把main前面的void改成int
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cjj796
2013-10-11 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3452万
展开全部

你好!!

篮圈的地方,a[i]/10,不是除,应该是取余数,改成:a[i] % 10

追问
我要的的确是要除,但是还是谢谢你
追答
问题解决了吗,把代码发上来吧,别贴图片
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jadyzdr
2013-10-11
知道答主
回答量:7
采纳率:0%
帮助的人:6932
展开全部
int a[n] 改为 int *a = new int[n]
追问
不行,调试还是出现错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式