c语言-删除字符串中指定的字符

一、问题描述:从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。

1、输入:第一行是一个字符串; 第二行是一个字符。

2、输出:删除指定字符后的字符串。

二、设计思路:

1、 同插入问题,定义两个字符数组a,b。以及标志删除位置的int型pos。

2、用gets函数输入数组a的值,并利用for循环将数组a 到 数组b。

3、利用for循环,令pos位的数组b元素赋值到a。

三、实现代码如下:

(1)c语言除重扩展阅读

gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加''字符。其调用格式为:gets(s),其中s为字符串变量(字符串数组名或字符串指针)。

gets()函数读取到 (我们输入的回车)于是停止读取,但是它不会把 包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行。

gets(s) 函数中的变量s为一字符串指针。如果为单个字符指针,编译连接不会有错误,但运行后内存溢出错误。宽字符版本,当使用unicode宽字符文本时,使用这个函数 _getws();在C11标准中被删除,可用C标准库中的fgets代替.

Ⅱ C语言数组去除重复内容

用两个游标控制,可以方便的实现,参考代码如下:
#include<stdio.h>
#define SIZE 12
int a[SIZE]={0,0,0,1,2,2,3,4,4,5,5,44};
int main()
{
int i=1,j=0;
while(i<SIZE)
if(a[j]!=a[i]){
++j;
a[j]=a[i];
++i;
} else ++i;

for(i=0;i<=j;++i){
printf("%d",a[i]);
if(i<j)printf(",");
}
return 0;
}

Ⅲ c语言if语句多重选择 求助!!!!!

大哥,谁教你这么写if里面的判断的
倒是可以执行
if (80<=t[i]<=89)
执行顺序好像是先判断后一个t[i]<=89,这样要是正确就是1
接着执行80<=1,这样就错了,这样就是0,这个if就不执行了
要是实现你的功能,就只能这么写
if (80<=t[i]&t[i]&<=89)

Ⅳ c语言重新输入

printf("%请输抄入1-3:\n");scanf("%d\n",&a);
while(!(a>=1&&a<=3))
{ printf("%请重新输入:\n");
scanf("%d\n",&a);}
这样就可以实现了。只要满足1-3,便跳出循环

Ⅳ C语言实现:删除重复元素!!

双层for循环即可;
for(int i=0;i<n-1;i++){
for(int k=i+1;k<n;k++){
if(a[i]==a[k]){//查找是不是与前一个相同的数据相同 相同把后一个重新赋值为0 或者你认
a[k]=0; //更好的
}
}
}
for(i=0;i<n;i++){
if(a[i]>0) printf("%2d",a[i]);//打印
}

Ⅵ c语言,输入为一些字符串,想要去除重复的字符串然后输出

#defineN100//定义最多可以测试100个字串
#defineM100//定义每个字串最长100
#defineEND"End!"//定义结束输入的字串
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
intissame(char*p[],char*f,intn){
inti;
for(i=0;i<=n;i++)
if(strcmp(p[i],f)==0)return1;
return0;
}
intmain(void){
char*p[N];
inti=0,total;
intcount=0;
printf("请输入不多于%d的字符串,以End!为结束 ",N);
while(1){
p[i]=(char*)(malloc(M));//定义每个字串最长为100
printf("第%d个字串:",i+1);
gets(p[i]);
if(strcmp(p[i],END)==0)break;//如果输入了结束标记则结束输入
i++;
}
total=i-1;//计算总共输入了多少字串
printf("以下得出不同的字串 ");
for(i=0;i<=total;i++){
if(issame(p,p[i],i-1)==0){//检查是否与前面输入的字符一致
count++;
printf("%d %s ",count,p[i]);
}
}

}

Ⅶ C语言中如何用break语句退出多重循环

break语句退出循抄环时,它将退出离它最近的那层循环。比如下面的代码,定义一个两维数组,不希望输出第2行。

#include<stdio.h>
intmain()
{
inta[3][3]={{1,2,3},//第一行
{4,5,6},//第二行
{7,8,9}//第三行
};
for(inti=0;i!=3;++i){
for(intj=0;j!=3;++j)
{
if(a[i][j]==4)break;//进入第二行时break跳出,只跳出离它最近的for循环
printf("%d ",a[i][j]);
}
}
return0;
}

Ⅷ C语言中怎么表示将n除16的商重新赋值给n

这样就可以了:
n=n/16;

Ⅸ 怎样让C语言编程删除个字,重新写不会把下一个字覆盖

兄弟,你不小心把编辑格式换成了覆盖,在键盘上点击以下 Insert就好了

Ⅹ C语言使用指定函数去除重复串

#include <stdio.h>
#include <string.h>

void rm(char *a, char *b)
{
int len = strlen(b);
char *p;

p=a;
while(1)
{
权if(strncmp(p,b,len) == 0)
p += len;
*a++ = *p;
if(*p == '\0')
break;
p++;
}
}

int main()
{
char a[] = "ABCDEFAABCFGH";
char b[] = "ABC";

rm(a,b);
printf("%s\n",a);

return 0;
}