1樓:墨汁諾
p,q是指標,*p,*q表示p,q指向的地址儲存的字元。++是自增運算子,*q++=*p表示將當前p指向的地址儲存的值賦值給q指向的地址,賦值完成後q++,即q指向下一位地址。
如果還沒有理解的話可以用例項來分析一下,對於字串s=「abcabc」,刪除字元『a』,簡單設s起始位置為0,則s[0]='a',s[1]='b',s[2]='c',s[3]='a',s[4]='b',s[5]='c',s[6]='\0'
迴圈開始時,p=0,q=0,到*p='\0',即p=6時結束,p每次+1
p=0,q=0,此時*p=s[0]='a',需要刪除,則不記錄
p=1,q=0,此時*p=s[1]='b',不需刪除,記錄*q即s[0]='b',q=q+1
p=2,q=1,此時*p=s[2]='c',不需刪除,記錄*q即s[1]='c',q=q+1
p=3,q=2,此時*p=s[3]='a',需要刪除,則不記錄
字串在儲存上類似字元陣列
它每一位單個元素都是能提取的,字串的零位是它的長度,如s[0]=10,這提供給我們很多方便,例如高精度運算時每一位都能轉化為數字存入陣列。
通常以串的整體作為操作物件,如:在串中查詢某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字串相等的充要條件是:
長度相等,並且各個對應位置上的字元都相等。
設p、q是兩個串,求q在p中首次出現的位置的運算叫做模式匹配。串的兩種最基本的儲存方式是順序儲存方式和連結儲存方式。
2樓:刺友互
1、其實頭函式每個都需要用到的就是#include ,因為程式裡面涉及到了輸出和輸入字串以及字元。#include 。
2、其次就是要定義兩個相同容量的字串儲存的變數 char a[100]; char b[100];。以及整數變數 int c; int i=0,j=0; 其中a[100]是存字串的,b是存你刪除對應字元的字串的,整數c是你想刪除第幾位。j ,i 是後面for循壞中要使用到的變數。
3、 printf("請輸入你的字串"); scanf("%s",a); printf("請輸入你想要刪除第幾位字元"); scanf("%d",&c)。
5、只要當i+1不等於c時把a【i】裡面的字元賦給b【i】,那麼這樣當i+1=c時不把它賦給b【i】從而實現刪除功能。
6、最後就給大家完整的看一下整體的一個**流程。
3樓:樂跑小子
#include
int main()
4樓:
#include
void fun(char *p,char ch)p++;}}
void main()
不知道你是不是這個意思?
c語言程式設計:在一個指定的 字串中刪除指定的 字元,並輸出該字串。
5樓:問明
#include
#include
int main(int argc, char **ar**)int num = 0;
for (int i = 0; i <= strlen(ar**[1]); i++)
if (ar**[1][i] != ar**[2][0])ar**[1][num] = (i == strlen(ar**[1])) ? '\0' : ar**[1][i];
num++;
printf("%s\n", ar**[1]);
return 0;
執行結果:
6樓:珈藍惜夢
源程式以及演算法註釋如下:#include
#include
int main()
;//定義刪除前的字串
char st[100] = ;//定義刪除後的字串q=st;//取出st字元陣列的首地址
p=str;//取出str字元陣列的首地址gets_s(str);//輸入字串
char a;//定義刪除字元變數
printf("請輸入要刪除的字元");
a = getchar();//輸入誰需要刪除的字元變數for(i=0;*(p+i)!='\0';i++)//迴圈遍歷,將非刪除字元的元素取出 }
printf("%s", st);//輸出刪除後字串return 0;
輸出結果如下:擴充套件資料:其他實現方法:
#include
#include
int main()
int j=0,i;
char str[20],c;
gets(str);
scanf("%c",&c);
for(i=0; str[i]!='\0'; i++)if(str[i]!=c)
str[j++]=str[i];
str[j]='\0';
printf("%s\n",str);
return 0;}
7樓:
宣告一個字元陣列str存入輸入的字串,再宣告一個字元變數接收要刪除的字元。分別用i和j源字元陣列計數和目標字元陣列計數,然後開始對str進行自己向自己連同最後的'\0'逐字元複製;當遇到要刪除的字元時目標計數j暫停一次計數,這樣要刪除的字元就會被下一個非刪除字元覆蓋。最後就達到了刪除指定字元的目的。
//#include "stdafx.h"//if the vc++6.0, with this line.
#include "stdio.h"
int main(void)
8樓:手機使用者
用for迴圈中的continue功能吧,當遇到指定字元是直接跳過進入下一個迴圈,具體的我想你應該會寫吧,因為我手機寫程式設計的話比較麻煩,所以就不寫了…如果有其他人寫了的話樓主就把分給他吧…
9樓:灰姑娘的霸氣
#include #include char* delcharfromstring(char *str, int len, int pos); void main() char* delcharfromstring(char *str, int len, int pos) for(i=0; i= pos) tmp++; } *tmp = '\0'; return str;}
10樓:匿名使用者
樣例輸入
sdf$$$sdf$$
$樣例輸出
sdfsdf
是要這種效果吧
附上**
#include
int main()
}printf("\n");
return 0;}
c語言,利用指標編寫程式:刪除一個字串中的某一個字元
11樓:匿名使用者
你好!p,q是指標,*p,*q表示p,q指向的地址儲存的字元
根據程式來說:
for(p = s, q = s; *p! = '\0'; p++)
if(*p != del_x)
*q++ = *p;
*q = *p;
puts(s);
首先,p作為迴圈下標,從s字串的第一位到最後一位判斷是否為刪除的字元
其次,q作為新字串s的下標,對於每一位非刪除字元,儲存下來,q下標+1等待下一個字元
最後,退出迴圈時p指向的是空字元,q還在等待新字元,這時將*p賦給*q表示新字串結束,然後puts輸出
如果還沒有理解的話可以用例項來分析一下,對於字串 s =「abcabc」,刪除字元『a』,簡單設s起始位置為0,則s[0]='a',s[1]='b',s[2]='c',s[3]='a',s[4]='b',s[5]='c',s[6]='\0'
迴圈開始時,p = 0,q = 0,到*p='\0',即p=6時結束,p每次+1
p = 0,q = 0,此時*p=s[0]='a',需要刪除,則不記錄
p = 1,q = 0,此時*p=s[1]='b',不需刪除,記錄*q即s[0] = 'b',q = q+1
p = 2,q = 1,此時*p=s[2]='c',不需刪除,記錄*q即s[1] = 'c',q = q+1
p = 3,q = 2,此時*p=s[3]='a',需要刪除,則不記錄
p = 4,q = 2,此時*p=s[4]='b',不需刪除,記錄*q即s[2] = 'c',q = q+1
p = 5,q = 3,此時*p=s[5]='c',不需刪除,記錄*q即s[3] = 'c',q = q+1
p = 6,q = 4,此時*p=s[6]='\0',退出迴圈
此時*q = *p,即s[4] = '\0' 表示字串結束,最後新字串s = 「bcbc」
12樓:智者總要千慮
#includeint main()
c語言編寫程式,c語言程式編寫
c語言的教材上好象有這個題,現在沒有時間編寫,著急要嗎?第二個應該越簡單越好。include void main printf 3d,3d,3d max maxi maxj printf 3d,3d,3d min mini minj 進行逐項比較。第一題 include main elsebreak...
c語言編寫程式利用rand函式產生100以內的隨
小夏在深圳 源 如下 srand include main int i,j for i 0 i 100 i j 1 int 10.0 rand rand max 1.0 printf d j 擴充套件資料 1 rand 的內部實現是用線性同餘法做的,它不是真的隨機數,因其週期特別長,故在一定的範圍裡...
c語言編寫程式題求大神,C語言編寫程式題,求大神
菊隱逸者也 最簡單明瞭的程式如下 include main double x,y,max,min min max 0 for x 0 x 2 x 0.2 y 2 x x x 3 x x x x 6 x x x x x 4 x 50 printf 當x f時,y f n x,y if y max ma...