# | 月日 | 内容 |
---|---|---|
1 | 4月12日 | ガイダンス |
2 | 4月19日 | Linuxの利用方法 (柳本先生担当) |
3 | 4月26日 | |
4 | 5月10日 | |
5 | 5月17日 | |
6 | 5月24日 | |
7 | 5月31日 | プログラミング環境(1、2章) |
8 | 6月 7日 | 変数とデータ型(3章) 、演算子(4章) |
9 | 6月14日 | コンソール入出力(6章) 、配列(3章)、数学処理の標準ライブラリ(11章) |
10 | 6月21日 | 制御文1 (テキスト5章) |
11 | 6月28日 | 制御文2 (テキスト5章) |
12 | 7月 5日 | 関数(テキスト7章)、プリプロセッサ(テキスト10章) |
13 | 7月12日 | 応用プログラム |
14 | 7月19日 | 総合演習 (谷川先生担当) |
15 | 7月26日 |
演習後半ではC言語をやります。 林 晴比古著の 「新C言語入門 ビギナー編」 を参考にします。
BMI値=体重(kg)/(身長(m)*身長(m))
ただし、身長と体重は適当でよく、ゴジラのBMI等でもよい。※コメントの書き方(テキストP.30):「/*」と「*/」で囲まれた文字列はコメントとして扱われ、コンパイルのときに無視されます。
角度(度) | ラジアン |
0 | 0 |
30 | π/6 |
45 | π/3 |
90 | π/2 |
180 | π |
360 | 2π |
※コメントがあれば、プログラムソースの中に書いてください。
1から3まで足すプログラム |
#include <stdio.h> int main(void) { int i, sum=0; for(i=1; i<=3; i++) { sum += i; /* sum = sum+iと同じ */ } printf("1から3までの合計は %d です。\n", sum); return 0; } |
※コメントがあれば、プログラムソースの中に書いてください。
int a, b, tmp; tmp=a; a=b; b=tmp;ヒント:for文を二重に使うとよい。
for文を二重に使うプログラム(0、1、2、3の全組合せを取る) |
#include <stdio.h> int main(void){ int i,j; /* 外側のforループ 実は(for (i=0; i<4; i++))でも結果は同じになります。 */ for (i=0; i<3; i++) { /* 内側のforループ */ for (j=i+1; j<4; j++) { /* iとjの表示 */ printf("i=%d, j=%d\n",i,j); } } return 0; } |
課題は「学籍番号-課題番号.c」、「学籍番号.dvi」というファイル名で提出してください。提出締切に遅れたレポートは原則として見ません。
printfの書式の指定方法(の一部)のプログラム例 |
#include <stdio.h> int main(void) { int i; int a[]={-10,300,5,7,19}; for (i=0; i<5; i++) { printf("%4d",a[i]); } printf("\n"); return 0; } |
絶対値のプログラム例 |
#include <stdio.h> #include <stdlib.h> int main(void) { int a, b; a=-1; b=abs(a); printf("a=%d, b=%d\n",a,b); } |
Segmentation faultが発生するプログラム:aaa.c |
#include <stdio.h> int main(void) { int a[2]; a[0] = 10; a[1] = 20; a[100000] = 30; printf("a[0] = %d\n", a[0]); printf("a[1] = %d\n", a[1]); printf("a[100000] = %d\n", a[100000]); return 0; } |
gcc aaa.c -g
gdb a.out
GNU gdb Red Hat Linux (6.0post-0.20040223.17rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/tls/libthread_db.so.1". (gdb)
(gdb) run Starting program: /home/nt/tmi00113/unix/a.out Program received signal SIGSEGV, Segmentation fault. main () at aaa.c:7 7 a[100000] = 30; (gdb)
(gdb) quit The program is running. Exit anyway? (y or n) y
参考:ファイヤープロジェクト
10進数 | 8進数 | 16進数 |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 2 | 2 |
3 | 3 | 3 |
4 | 4 | 4 |
5 | 5 | 5 |
6 | 6 | 6 |
7 | 7 | 7 |
8 | 10 | 8 |
9 | 11 | 9 |
10 | 12 | A |
11 | 13 | B |
12 | 14 | C |
13 | 15 | D |
14 | 16 | E |
15 | 17 | F |
16 | 20 | 10 |