C语言 该内存不能为read?!

请各位大侠看一下吧~~没看出来哪里超了啊……#include"stdio.h"main(){intn,i,a[1000],j,max,s;charx[1100];scan... 请各位大侠看一下 吧~~ 没看出来哪里超了啊……
#include "stdio.h"
main()
{
int n,i,a[1000],j,max,s;
char x[1100];
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%s%d",&x[i],&a[i]);
for(i=1;i<=n;i++)
{
max=a[i]; s=i;
for(j=1;j<=n;j++)
if(a[j]>max)
{
max=a[j];
s=j;
}
printf("%s",x[s]);
a[s]=0;
}
return 0;
}
展开
 我来答
hu0904
推荐于2017-10-01 · TA获得超过222个赞
知道小有建树答主
回答量:510
采纳率:0%
帮助的人:457万
展开全部
printf("%s",x[s]);//这里 你没有在任何地方设置0结束标记
scanf("%s%d",&x[i],&a[i]);//在输入字符数+i大于1098时 x写入越界 i>999 a 写入越界 不过一般来说 输入的n不会很多 大了输入累 这是一个潜在的 难以出现的错误
更多追问追答
追问
可是n为2 也出现不能为read啊
追答
上面第一句 弄错了 如果是printf("%s",&x[n])才是我上面说的
你这是将 x[s]一个char对象作为传个printf而printf由%s认为这是一个地址 所以出错
ddfdt
2013-09-21 · TA获得超过326个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:85.2万
展开全部
第一个for循环后面的scanf不可以用%s 然后&x[i],应该改为for(i=1;i<n;i++)scanf("%s%d",x,&a[i]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友92fd261ac
2013-09-21
知道答主
回答量:20
采纳率:0%
帮助的人:15.5万
展开全部
就是把a数组中的最大的位置对应的x数组的值输出呗 你这个 printf("%s",x[s]);语法都是错的 如果要输出整个数组就直接是数组名 输出一个就%c
你的for循环找最大值的时候就有问题 你重复找了n次最大值 输出了n次数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
褒枫夔鸿晖
2020-08-27 · TA获得超过1088个赞
知道小有建树答主
回答量:1463
采纳率:100%
帮助的人:6.5万
展开全部
内存出错往往都是对地址操作不当,看你的这一句
scanf("%d",score);
,是不是要改为
scanf("%d",&score);,前面加一个取地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2fe62d8
2013-09-21 · 超过10用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:20.3万
展开全部
scanf("%s%d",&x[i],&a[i]);

%s应该%c
追问
为什么呢?

那不是只能输入一个字符了么?
追答
for(i=1;i<=n;i++)
scanf("%s%d",&x[i],&a[i]);
这种写法,就是循环输入的,这样的话,如果循环次数大于一次,不越界输入的数据也是会被变化的。
printf("%s",x[s]);这个地方打印是超了,出问题应该是这,上面那个是后续会发现的问题,数据不对。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式