2.8 インクレメントとデクレメントの演算子, 演習2-4, 演習2-5 K&R プログラミング言語C
2009年12月19日
インクリメント(及びデクリメント)演算子の前置と後置の違い。
#include <stdio.h> int main(int argc, char *argv[]) { int i, j; i = j = 10; printf("i++ => %d\n", i++); /* 印字してからインクリメント */ printf("++j => %d\n", ++j); /* インクリメントしてから印字 */ printf("i => %d\nj => %d\n", i, j); return 0; }
実行結果
$ ./increment i++ => 10 ++j => 11 i => 11 j => 11
演習2-4
#include <stdio.h> #include <string.h> void squeeze(char s1[], char s2[]); int main(int argc, char *argv[]) { char *str0 = "hello, world"; char str1[1024]; char *str2 = "el"; strcpy(str1, str0); /* 文字列リテラルは変更できないのでコピーを作る。 */ printf("str1 : %s\n", str1); printf("str2 : %s\n", str2); squeeze(str1, str2); printf("%s\n", str1); return 0; } void squeeze(char s1[], char s2[]) { int i, j, k; for (k = 0; s2[k] != '\0'; k++) { for (i = j = 0; s1[i] != '\0'; i++) { if (s1[i] != s2[k]) { s1[j++] = s1[i]; } } s1[j] = '\0'; } }
実行結果
$ ./ex2-4 str1 : hello, world str2 : el ho, word
演習2-5
#include <stdio.h> #include <string.h> int any(char s1[], char s2[]); int main(int argc, char *argv[]) { char *str0 = "hello, world"; char str1[1024]; char *str2 = "lo"; strcpy(str1, str0); /* 文字列リテラルは変更できないのでコピーを作る。 */ printf("str1 : %s\n", str1); printf("str2 : %s\n", str2); printf("%d\n", any(str1, str2)); return 0; } int any(char s1[], char s2[]) { int i, j; for (j = 0; s2[j] != '\0'; j++) { for (i = 0; s1[i] != '\0'; i++) { if (s1[i] == s2[j]) { return i; } } } return -1; }
実行結果
$ ./ex2-5 str1 : hello, world str2 : lo 2
プログラミング言語C 第2版 ANSI規格準拠
posted with amazlet at 09.11.27
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
共立出版
売り上げランキング: 9726