首页 新闻 赞助 找找看

c语言数组问题

0
[待解决问题]

删除字符s中所有数字字符,空的是要填空的。

void dele(char *s)

{ in n=0,i;

 for(i=0;s[i];i++)

  if(    )   //if(s[i]>='0'&&s[i]<='9'这是我自己填的

  s[n++]=s[i];

 s[n]=     ;//s[n]=0;

}

我想问;如果按照我的思路,if条件判断s【i】里面是不是数字字符,是就保存下来,然后清零,但问题来了,s【n++】运行后不是加了一吗?要清零的s【n】不就变成s【n+1】吗?那清零还有用吗?

  再者我想知道if条件句的{}是在s【n++】=s【i】;这结束,还是在末尾结束。

  然后当是s【i】第一个字符不是数字字符时,他是直接运行到哪里?

ccccc三的主页 ccccc三 | 初学一级 | 园豆:5
提问于:2019-02-21 22:16
< >
分享
所有回答(2)
0

s[n++]运行后不是加1吗?

首先,你需要搞清楚n++++n的区别。n++代表的是先进行运算,再+1,而++n表示先+1,再进行运算。

再者我想知道if条件句是在s[n++]=s[i];这结束,还是在末尾结束。

这是一个作用域的问题。如果if语句后没有{}的话,其作用域仅仅为一条语句,也就是s[n++]=s[i];这条语句。如果有{}作用域即到}结束。

然后当是s[i]第一个字符不是数字字符时,他是直接运行到哪里?

当第一个字符不是数字时,指针移动到下一个位置,也就是说s[1]

这都是比较基础的问题,建议你好好回看一下课本,夯实一下基础。
另外,你的代码似乎也有些问题,不知你做的是题目还是老师出的习题。你可以在电脑上运行一下试试。

古宇 | 园豆:476 (菜鸟二级) | 2019-02-21 23:32

你回答的第一个问题,我意思是,当符合if条件语句了,执行到s【n++】=s【i】,那这句的意思就是s【n】=s【i】,n+1,继续执行下去s【n】=0;这时候的n已经变成了1,s【1】=0,这样清零还有作用吗?

你回答的第三个问题,能具体点吗,我的想法是这样的:当数组里面遇到不是数字字符的时候,不符合if条件句,那直接执行到s【n】=0;这清零有意思?还是怎么跳过全部,直接到i++这部分,然后再判断?能给我解释一下吗?

支持(0) 反对(0) ccccc三 | 园豆:5 (初学一级) | 2019-02-22 00:04

@ccccc三: 请问你这个题目是哪里来的?我觉得代码有些问题。不好意思,理解错你第一个问题的意思了。

支持(0) 反对(0) 古宇 | 园豆:476 (菜鸟二级) | 2019-02-22 00:09
0

正确答案应该是:

if(s[i]<0'||s[i]>'9)'

s[n]=s[++i];

如果s[i] 不是数字,那么s[n] =s[i],n++
如果是数字,++i 跳过这个数字,再s[n] = s[i]

n的作用实际上用来 重新赋值 s 数组的,

Shendu.CC | 园豆:2138 (老鸟四级) | 2019-02-22 12:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册