演習後半ではC言語をやります。 林 晴比古著の 「新C言語入門 ビギナー編」 を参考にします。
本文の例: 学籍番号:1234567890 氏名:府大 工太郎
私は、高校時代に○○部に所属し、××に青春を捧げてまい
りました。大学では。。。
BMI値=体重(kg)/(身長(m)*身長(m))
ただし、身長と体重は適当でよく、ゴジラのBMI等でもよい。角度(度) | ラジアン |
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; } |
http://www.edu.osakafu-u.ac.jp/service/fileshare.htmlから「★★★★★知能情報工学演習I(岩村)」というフォルダの中の「11: 6月24日の課題」というフォルダに、「学籍番号-課題番号.c」、「学籍番号.dvi」というファイル名で提出してください。提出締切に遅れたレポートは原則として見ません。
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 |