#include
main()
{
int a[10]={3,6,9,11,14,16,18,23,26};
int i,temp;
for(i=0;i<=9;i++){
printf("%d ",a[i]);}
printf("\n");
printf("Please input a integer data");
scanf("%d",&temp);
for(i=8;i>=0;i--)
{
if(temp<a[i]){
a[i]=a[i+1];}
else{
temp=a[i+1];
break;}
}
for(i=0;i<=9;i++)
printf("%d ",a[i]);
printf("\n");
}
这个怎么怎么都插不进去,哪里有问题?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 柰茶 2019-03-03 15:38关注
我跑了一下,发现了你的问题,错的是代码的逻辑上。楼主是否对于赋值
a[i]=a[i+1]
和
a[i+1]=a[i]
有点混淆?问题出在这段代码:
for(i=8;i>=0;i--) { if(temp<a[i]){ a[i]=a[i+1];} else{ temp=a[i+1]; break;} }
逻辑应该是,你将输入的数与数组中的每个数进行大小比较,而且是从后往前。当比较的数比你输入的数大时,你应该把这个数往后移一位,就是
a[i+1]=a[i]
这句代码的意思就是将a[i]上的值赋给a[i+1]上,“=”是从右赋值向左的。
当比较到的数比你输入的数小时,此时下一位就是你要放的位置,而那个位置已经从之前的操作中空出来了。就正确了。
修改代码如下:#include<iostream> void main() { int a[10]={3,6,9,11,14,16,18,23,26}; int i,temp; for(i=0;i<=9;i++){ printf("%d ",a[i]);} printf("\n"); printf("Please input a integer data"); scanf("%d",&temp); for(i=8;i>=0;i--) { if(temp<a[i]){ //a[i]=a[i+1]; a[i+1] = a[i]; } else{ //temp=a[i+1]; a[i+1] = temp; break;} } for(i=0;i<=9;i++) printf("%d ",a[i]); printf("\n"); }
解决 无用评论 打赏 举报
悬赏问题
- ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
- ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
- ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
- ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
- ¥20 腾讯企业邮箱邮件可以恢复么
- ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
- ¥15 错误 LNK2001 无法解析的外部符号
- ¥50 安装pyaudiokits失败
- ¥15 计组这些题应该咋做呀
- ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?