网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月09日漏签0天
c吧 关注:133,572贴子:393,967
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 5回复贴,共1页
<<返回c吧
>0< 加载中...

一个简单的数组问题不明白?

  • 只看楼主
  • 收藏

  • 回复
  • 51171618
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void delete(intA[],int n,inty)
{
 int i,j;
  for(i=0;i<=n;i++)
      if(y==A[i])
        {
          for(j=i;j<=n;j++)
              {
                A[j]=A[j+1];
               }
         }
 }
main()
{
 int y,A[10],i,n;
 printf("\n input num:");
 for(i=0;i<5;i++)
     {
      printf("\n num %d:",i);
      scanf("%d",&A[i]);
      }
 n=i;
 for(i=0;i<n;i++)
    printf("%d",A[i]);
 
 printf("\n input delete num:");
 scanf("%d",&y);
 delete(A,n,y);
 for(i=0;i<n;i++)
 printf("%d",A[i]);
 }
如果输入一个要删除的数,而这个数不在先前输入的数组里,想让程序出现错误提示,这个程序应该怎么改?


  • 218.75.156.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你不觉得你这程序有问题吗?
 函数里的数组大小是不是变大了?
要改的话应该
void delete(intA[],int *n,int y) 
{ 
 int i,j,flag=0; 
 for(i=0;i<n;i++)
 { 
 if(y==A[i])
 {
flag=1;
 break;
 }
 }
 if(flag=1)
 { 
 for(j=i;j<*n-1;j++) 
 { 
 A[j]=A[j+1]; 
 }
 *n=*n-1;
 } 
 else
 {
printf("没这个数");
 } 
}
我也是初学者 要做错了请多包涵


2025-08-09 13:19:52
广告
不感兴趣
开通SVIP免广告
  • 124.161.155.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在上面的子函数里加上一个条件啥!!!!


  • 璐村惂鐢ㄦ埛_0QPRNSQ馃惥
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
继续支持没话说~ 楼主真强


  • choelcn
  • 白丁
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
3点注意:
1. delete是个关键字,也就是系统保留字,子函数使用别的标识符.
2. 如果有匹配数并删除数组中的元素,那么n必须-1,否则最后一个输出为脏值.
3. 输出注意控制格式,for循环连续输出数组值,后面加\t分隔.不然数都凑一起,看不清楚。

修改程序如下:
#include <stdio.h>

int del(int A[],int n,int y) 
{ 
int i,j; 
 for(i=0;i<=n;i++) 
{ 
if(y==A[i]) 
 { 
for(j=i;j<=n;j++) 
A[j]=A[j+1]; 
 return 1;
 } 
}
return 0;
} 

void main() 
{ 
int y,A[10],i,n; 
printf("input num: \n"); 
for(i=0;i<5;i++) 
{
printf("num %d:",i); 
scanf("%d",&A[i]); 
} 
n=i; 
for(i=0;i<n;i++) 
printf("%d\t",A[i]); 
 
printf("\ninput delete num:"); 
scanf("%d",&y); 
if(del(A,n,y)==1) 
for(i=0;i<n-1;i++) 
printf("%d\t",A[i]);
else printf("\nerror!can't find this number!\n");
}


  • 122.29.77.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼上的还是显的比较专业呵呵!


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回c吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示