1. 「abcd」などの文字列を反転させ、「dcba」に変更します。
1 / * 文字列を反転* / 2 #include <stdio.h> 3 #include < 文字列 .h> 4 #include <stdlib.h> 5 6 char * str_reverse(char * src) 7 { 8 char * dest = NULL ; 9 10 int len = strlen(src); 11 dest =(char *)malloc(len + 1); // \ 0にスペースを割り当てる 12 char * d = dest; 13 charSRC =&S * [lenは1。]; 14 ながら(LEN =!0 ) 15 { 16 * ++ = D * S -カントン; 17。 len-- ; 18れる } 19。 * D = ' \ 0 ' ; // この場合、D最後の要素を 指す'0'または '\ 0' 20 return dest; // ヒープメモリへのポインターを返すことができ、スタックは機能しません 21 } 22 23 int main(int argc、const char * argv []) 24 { 25 char* src = " ABCDEF " ; 26 char * dest = str_reverse(src); 27 printf(" %s \ n " 、dest); 28 29 free(dest); // ヒープメモリを解放してメモリリークを回避する 30 31 return 0 ; 32 }
1 #include <stdio.h> 2 #include < string .h> 3 #include <stdlib.h> 4 5 int main(int argc、const char * argv []) 6 { 7 char str [] = " ABCDEFG " ; 8 int len = strlen(str); 9 10 文字 t; // 中于量 11 int i; 12 のための式(I = 0 ; I <= LEN / 2 ; iが++ ) 13 { 14 t = str [i]; 15 str [i] = str [len-i- 1 ]; 16 str [len-i- 1 ] = t; 17 } 18 printf(" %s \ n " 、str); 19は 0を返し ます。 20 }
関連知識:文字列と文字配列
データ型文字列はC言語には存在しませんが、文字配列を使用して文字列を保存しています
文字列ポインタ変数自体は、文字列の最初のアドレスを格納するために使用される変数です。文字列自体は、最初のアドレスで始まり '\ 0'で終わる連続したメモリ空間に格納されます。
文字ポインタは全体として割り当てることができます:
char * ps =” C言語”; char * ps; ps =” C言語”;と書くことができます。
文字配列は、宣言されて初期化されたときにのみ、全体として割り当てることができます。
配列モードchar st [] = {” C言語”}; char st [20]として書き込むことはできません; St = {” C言語”};初期化後、文字配列の各要素には1つずつしか割り当てることができません。
2. 2つのスタックでキューの機能を実装する
アイデア:
最初は空の2つのスタックをAとBとします。
エンキュー:
新しい要素をスタックAにプッシュします。
出発:
(1)スタックBが空かどうかを判別します。
(2)空でない場合、スタックBの一番上の要素がポップアウトされます。空の場合、Aのすべての要素がPOPアウトされ、Bにプッシュされます。その後、一番上の要素がPOPアウトされ、Aが1つ下に移動します。単位。
3.マクロを使用してスワップを実装する
算数
a = a + b; b = a- b; a = ab;
#define swap1(x、y)(y)=(x)+(y); (x)=(y)-(x); (y)=(y)-(x);
4.マクロは2つのパラメーターを入力し、小さい方のパラメーターを返します
#define MIN(x、y)((x)<(y)?(x):( y))
5.線形テーブルaとbは2つの順序付き昇順線形テーブルです。2つの順序付き線形テーブルを1つの順序付き昇順線形テーブルhにマージするプログラムを作成します。
6. 2つの配列とそのサイズ、および動的に開発されたメモリを指定し、交差を見つけて、その交差を動的メモリドンタイに入れ、交差の数を返します。
7.単一の連続テーブルの確立、「a」〜「z」の26文字を連続テーブルに挿入し、フラッシュバックして印刷します。
8.ソフトウェアの時間のスペースまたは時間のスペースの例を挙げてください。
1 ---> 時間优 2 void swap(int a、int b) 3 { 4 int c; 5 c = a; 6 a = b; 7 b = c; 8 } 9 ---> 空优 10 void swap(int a、int b) 11 { 12 a = a + b; 13 b = a- b; 14 a = a- b; 15 }
9. C言語を使用して、ライブラリ関数を使用せずに整数を文字列に変換する
10.最小の公開文字列を見つける
11. 2つの文字列str1とstr2のサイズを比較する関数を記述し、それらが等しい場合は0を返し、str1がstr2より大きい場合は1を返し、str1がstr2より小さい場合は-1を返します。