关于C语言的,答案哪里错了,帮忙改下!谢谢!

 我来答
业俭殷昭
2020-02-05 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:32%
帮助的人:877万
展开全部
1.你定义的数组大小只有10个数
在没找到x的情况下,你是把x添加到数组中,这样会导致数组越界
2。你在添加过程中,直接把x赋给了指针p,这是不对的,p只接收地址,并不是值
3。p=w只是把数组w的首地址传给了p,不是把数组整个给p。
4。在循环里不要用printf语句,这样就容易导致循环一次就会打印一条语句出来
这样并不是想要的结果,你可以在循环里,if语句里面,做个标记。
再在循环外面写打印语句。
你可以参考一下:
#include<stdio.h>
#define
size
100
//定义更大一点的数组,是为了让后面的添加数字不容易越界
void
main()
{
int
w[size]={23,13,56,38,1,55,90,37,44,86},*p,x,flag=0,count=0,n=10;
printf("请输入要查找的数:");
scanf("%d",&x);
for(p=w;p<w+n;p++)
//用指针做循环条件,n是初始化数组的个数
{
count++;
//count是用来记数的,判断x的位置
if(*p==x)
//找到的条件
{
flag=1;
//这就是循环里面的标记,上面flag赋的初值为0,这里把它改为1,就证明上面if条件满足,进到了条件语句里面
break;
}
}
if(flag==0)
//这里就是判断是否找到,1就是找到了,0就是没找到。
{
printf("数组中不存在%d,将其放入w[0]中。",x);
*p=x;
n++;
}
else
printf("%d出现在数组中第%d个位置上。\n",x,count);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式