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;
}