2013-09-01から1ヶ月間の記事一覧

20130929【C言語】テキストファイルの内容を表示する

お題 テキストファイルの内容を表示する ソース #include <stdio.h>#include <stdlib.h> int main(int argc, char *argv[]){ FILE *fp; char ch; if (argc != 2) { fprintf(stderr, "Usage: ./<Program Name> <Text File>\n"); exit(1); } /* Open file */ if *1 == NULL) { fprintf(stderr, "Cannot open</text></program></stdlib.h></stdio.h>…

20130928【C言語】指定されたファイルから指定された文字を探す

お題 指定されたファイルから指定された文字を探す ソース #include <stdio.h>#include <stdlib.h> int main(int argc, char *argv[]){ FILE *fp; char ch; /* Validate command line args count */ if (argc != 3) { printf("Usage: <Program name> <File name> <character>\n"); exit(1); } /* Open for input */ i</character></file></program></stdlib.h></stdio.h>…

20130927【C言語】ファイルへの読み書きを行う

お題 ファイルへの読み書きを行う ソース #include <stdio.h>#include <stdlib.h> int main(void){ char str[80] = "これはファイルシステムのテストです\n"; FILE *fp; char ch, *p; /* 書き込みのためにmyfileを開く */ if *1 == NULL) { printf("ファイルを開くことができま</stdlib.h></stdio.h>…

20130926【C言語】スキャン集合を使って入力された不要な文字列を落とす

お題 スキャン集合を使って入力された不要な文字列を落とす (今回は数字を落とす) ソース #include <stdio.h> int main(void){ char str[20]; printf("数字に続けて文字列を入力してください: "); scanf("%*[0-9]%s", str); printf("%s\n", str); return 0;} 実行</stdio.h>…

20130925【C言語】素数を4列の表で表示する

お題 素数を4列の表で表示する (今回は1000まで) ソース #include <stdio.h> #define MAX 1000 int main(void){ int prime; int i, j, cnt; cnt = 0; prime = 1; for (i = 2; i <= MAX; i++) { for(j = 2; j <= i/2; j++) { if (i % j == 0) { prime = 0; break; } </stdio.h>…

20130924【C言語】最高、最低、平均を求める

お題 野球チームの最高打率、最低打率、平均打率を求める ソース #include <stdio.h> int main(void){ char name[9][20]; double hitAvr[9]; int i; int max_p = 0; int min_p = 0; int max_ha = 0; int min_ha = 0; double sum_ha = 0.0; for (i = 0; i < 9; i++) { </stdio.h>…

20130923【C言語】マクロを使う

お題 マクロを使う ソース #include <stdio.h> #define COUNT 100 int main(void){ int i; for (i = 0; i < COUNT; i++) printf("%d ", i); printf("\n"); return 0;} 実行結果</stdio.h>

20130922【C言語】16進数を8進数と10進数に変換して表示する

お題 16進数を8進数と10進数に変換して表示する ソース #include <stdio.h> int main(void){ unsigned u; printf("16進数で数字を入力してください: "); scanf("%x", &u); printf("8進数では %o 10進数では %u です\n", u, u); return 0;} 実行結果</stdio.h>

20130921【C言語】スキャン集合を使って、浮動小数点数を文字列として読み込む

お題 スキャン集合を使って、浮動小数点数を文字列として読み込む ソース #include <stdio.h> int main(void){ char num[20]; printf("浮動小数点数を入力してください: "); scanf("%[0-9.]", num); printf("入力された浮動小数点数は %s です\n", num); return 0;} </stdio.h>…

20130920【C言語】入力する文字数を制御する

お題 入力する文字数を制御する (20文字にする) ソース #include <stdio.h> int main(void){ char f[20 + 1], m[20 + 1], l[20 + 1]; printf("ファーストネーム、ミドルネーム、ラストネームを入力してください: "); scanf("%20s %20s %20s", &f, &m, &l); printf(</stdio.h>…

20130919【C言語】scanfの制御文字列に複数のフォーマット指定子を使う

お題 scanfの制御文字列に複数のフォーマット指定子を使う ソース #include <stdio.h> int main(void){ int i, j; printf("小数点付きの10進数を入力してください: "); scanf("%d.%d", &i, &j); printf("左側部分: %d 右側部分: %d\n", i, j); return 0;} 実行結果</stdio.h>

20130918【C言語】最大フィールド幅指定子の効果を試す

お題 最大フィールド幅指定子の効果を試す ソース #include <stdio.h> int main(void){ int i, j; printf("整数を入力してください: "); scanf("%3d%d", &i, &j); printf("%d %d\n", i, j); return 0;} 実行結果</stdio.h>

20130917【C言語】scanfでスペースを含んだ文字列を読み込む

お題 scanfでスペースを含んだ文字列を読み込む ソース #include <stdio.h> int main(void){ char str[80]; printf("アルファベット文字とスペースを入力してください: "); scanf("%[a-zA-Z ]", str); printf("%s\n", str); return 0;} 実行結果</stdio.h>

20130916【C言語】小数の表示桁を指定する

お題 小数の表示桁を表示する ソース #include <stdio.h> int main(void){ printf("%.2f",1023.03); return 0;} 実行結果 1023.03</stdio.h>

20130915【C言語】puts関数を使う

お題 puts関数を使う ソース #include <stdio.h> int main(void){ puts("1"); puts("2"); puts("3"); return 0;} 実行結果 1 2 3 (putsは改行を付与するのがわかる)</stdio.h>

20130914【C言語】非標準関数を使う

お題 conio.hをインクルードして非標準関数を使う。 getch()を使って、画面から文字を入力し、 そのASCIIコードを表示する。 ソース #include <stdio.h>#include <conio.h> int main(void){ char ch; printf("文字を入力してください: "); ch = getch(); printf("%d\n", ch); </conio.h></stdio.h>…

20130913【C言語】マクロ置換を行う

お題 マクロ置換を行う ソース #include <stdio.h> #define SMALL 1#define MEDIUM SMALL + 1#define LARGE MEDIUM + 1 int main(void){ printf("%d %d %d\n", SMALL, MEDIUM, LARGE); return 0;} 実行結果 1 2 3</stdio.h>

20130912【C言語】再帰関数を使ってアルファベットのすべての文字を表示する

お題 再帰関数を使ってアルファベットのすべての文字を表示する ソース #include <stdio.h>#include <stdlib.h> void alpha(char *ch); int main(int argc, char *argv[]){ char ch = 'A'; alpha(&ch); exit(0);} void alpha(char *ch){ printf("%c", *ch); if((*ch)++ != 'Z'){</stdlib.h></stdio.h>…

20130911【C言語】文字列を比較する

お題 文字列をASCIIコードで比較する ソース #include <stdio.h>#include <stdlib.h>#include <string.h> int main(int argc, char *argv[]){ int cmp = 0; if (argc != 3) { fprintf(stderr, "Usage: ./r_7_4 str1 str2\n"); exit(1); } cmp = strcmp(argv[1], argv[2]); if (cmp > 0) pr</string.h></stdlib.h></stdio.h>…

20130910【C言語】コマンドライン引数を使う

お題 コマンドライン引数を使う ソース #include <stdio.h>#include <stdlib.h> int main(int argc, char *argv[]){ double pounds; if (argc != 2) { printf("使用法: <プログラム名> <オンスの値>\n"); printf("もう一度やり直してください"); exit(1); } pounds = atof(argv</stdlib.h></stdio.h>…

20130909【C言語】文字列を入力するプロンプト

お題 文字列を入力するプロンプト ソース #include <stdio.h> void prompt(char *msg, char *p); int main(void){ char str[80]; prompt("文字を入力してください: ", str); printf("入力された文字: %s\n", str); return 0;} void prompt(char *msg, char *p){ pri</stdio.h>…

20130908【C言語】配列へのポインタを受け取る仮引数

お題 配列へのポインタを受け取る仮引数 ソース #include <stdio.h> void f1(int num[5]), f2(int num), f3(int *num); int main(void){ int count[5] = {1, 2, 3, 4, 5}; f1(count); f2(count); f3(count); return 0;} /* 配列として宣言された仮引数 */void f1(int </stdio.h>…

20130907【C言語】サブルーチンへの参照渡し(call by reference)

お題 サブルーチンに参照渡しする ソース #include <stdio.h> void swap(int *i, int *j); int main(int argc, char *argv[]){ int num1 = 100; int num2 = 800; printf("num1: %d num2: %d\n", num1, num2); swap(&num1, &num2); printf("num1: %d num2: %d\n", num1</stdio.h>…

20130906【C言語】再帰を使って文字列を表示する

お題 再帰を使って文字列を表示する ソース #include <stdio.h> void f(char *p); int main(int argc, char *argv[]){ char str[80] = "これはテストです"; f(str); return 0;} void f(char *p){ if (*p){ putchar(*p++); f(p); } return;} 実行結果 これはテストです</stdio.h>

20130905【C言語】階乗を再帰で計算する

お題 階乗を再帰で計算する ソース #include <stdio.h> int fact(int i); int main(void){ printf("%d\n",fact(5)); return 0;} int fact(int i){ if (i == 1) { return 1; } else { return i * fact(i - 1); }} 実行結果 120</stdio.h>

20130904【C言語】相互再帰を利用する

お題 相互再帰を利用する ソース #include <stdio.h> void f2(int b);void f1(int a); int main(void){ f1(30); return 0;} void f1(int a){ if (a) f2(a - 1); printf("%d ", a);} void f2(int b){ printf("."); if (b) f1(b - 1);} 実行結果</stdio.h>

20130903【C言語】再帰を使って文字列をコピーする

お題 再帰を使って文字列をコピーする ソース #include <stdio.h> void rcopy(char *s1, char *s2); int main(void){ char str[80]; rcopy(str, "これはテストです"); printf(str); return 0;} /* 再帰を利用してs1にs2をコピーする */void rcopy(char *s1, char *s2)</stdio.h>…

20130902【C言語】wc -l と同等のコマンドを作る

お題 wc -l と同等のコマンドを作る。 ※但し、標準出力のみ対応 ソース 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 static void do_wcl(FILE *f); 5 6 int main(int argc, char argv[]) 7 { 8 do_wcl(stdin); 9 exit(0); 10 } 11 12 static void do_wcl(FILE *f) 13 { 14 </stdlib.h></stdio.h>…

20130901【C言語】タブ文字と改行を変換して出力するcatコマンドを作る

お題 タブ文字と改行を下記のようんい変換して出力するcatコマンドを作る。 (変換方法) \t → \\t \n → $\n ソース 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 static void do_cat(FILE *f); 5 6 int 7 main(int argc, char *argv[]) 8 { 9 int i; 10 11 if (argc == 1) </stdlib.h></stdio.h>…

20130831【C言語】関数の仮引数としてポインタを使う

お題 関数の仮引数としてポインタを使う ソース #include <stdio.h>#include <string.h> void mystrcat(char *to, char *from); int main(void){ char str[80]; strcpy(str, "最初の部分"); mystrcat(str, " 2番目の部分"); printf(str); return 0;} void mystrcat(char *to, ch</string.h></stdio.h>…