演習1: 文字列処理用の関数を利用 p266list.c (教科書266ページ)
C言語では文字列を連結するのに「"ABC" + "DEF"」とはできない。
文字列の連結には専用の関数 strcat() を使う。
また文字列を操作するための標準ライブラリが他にも用意されている。
p266list.c
#include <stdio.h>
#include <string.h>
int main(void){
char s1[80];
char s2[80];
int n;
strcpy(s1,"ABCDE");
strcpy(s2,"XYZ");
printf("s1=%s s2=%s\n",s1,s2);
n = strlen(s1);
printf("s1の長さ=%d\n",n);
if(strcmp(s1,s2)>0){
printf("左辺が大きい\n");
}
else if(strcmp(s1,s2)<0){
printf("右辺が大きい\n");
}
else{
printf("等しい\n");
}
strcat(s1,"1234");
strcat(s1,s2);
printf("連結された文字列=%s\n",s1);
return 0;
}
ランダムな数字(乱数)を生成するための関数 (rand) も標準ライブラリ関数で用意されている。
C言語の rand 関数では「乱数のたね」をセットして利用する。
またrand関数が返す値の幅が決まっているので、「1から6までの整数」などと幅を決めたい場合には工夫が必要。
p273list.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
int i,n;
// ランダム関数の初期化
srand((unsigned)time(NULL));
// rand() は 0 から 32767 の数字を返す
printf("0-32767\n");
for(i=1;i<=10;i++){
printf("%d ",rand());
}
printf("\n");
printf("0-1未満\n");
for(i=1;i<=10;i++){
printf("%6.4f ",rand()/(RAND_MAX+1.0));
}
printf("\n");
printf("1-6\n");
for(i=1;i<=10;i++){
printf("%d ",((int)(rand()/(RAND_MAX+1.0)*6.0))+1 );
}
printf("\n");
}
演習3: hellomath.c (数学関数利用例)
hellomath.c
#include <stdio.h>
#include <math.h>
int main(void){
double x, r;
printf("x\ttsin(x)\tcos(x)\n");
for(x=0.0;x<=180.0;x+=15.0){
r = x * 3.14159 / 180.0;
printf("%6.2f\t%8.5f\t%8.5f\n",x,sin(r),cos(r));
}
return 0;
}
実行例 (hellomath.txt)に出力 (「>」でリダイレクト
>hellomath.exe > hellomath.txt
hellomath.txt をデータファイルとしてExcel に取り込み、グラフウィザードを実行すると以下のようなグラフも作成可能。
エクセルで[ファイル]-[開く]を選択
プログラムでリダイレクト出力したファイルを選択する
演習1、演習2、演習3で作成したソースコードと、演習3で作成したExcelファイルをメールで提出