計算機プログラミングI (Aクラス) 期末試験 (筆記)解答例 2014

計算機プログラミング I (A クラス) 期末試験 (筆記) 解答例 2014
平成 26 年 8 月 1 日実施 解答作成 井上純一
注意
• 解答例以外にも正解とする, あるいは部分点を与える場合がある.
• 自分の成績を知りたい者は 9 月以降に情報科学研究科棟 8-13 まで来ること.
問題 1
(1) ホームディレクトリ (2) 絶対パス指定: /home/i10/A/tmp/ 相対パス指定: ../tmp/
(3) 前半: mkdir program 後半: cp ../../i10/A/tmp/sample.c program/ (4) chmod o+r tmp/sample.c
(5) /home/staff/akama/
問題 2
(1)
#include <stdio.h>
#include <math.h>
main()
{
int x,i,sum;
for(i=1,sum=0; i<=10; i++){
scanf("%d",&x);
if(x%2==0){
sum++;
}else{
sum=sum;
}
}
printf("%d\n",sum);
}
(2)
// (a) の解答
#include <stdio.h>
#include <math.h>
#define maxi(a,b,c)(c>((b>a)?b:a)?c:(b>a)?b:a)
main()
{
double x,y,z;
scanf("%lf",&x);
scanf("%lf",&y);
1
scanf("%lf",&z);
printf("%lf\n", maxi(x,y,z));
}
// (b) の解答
#include <stdio.h>
#include <math.h>
main()
{
int x;
scanf("%d",&x);
printf("%s\n",(x%2)?"odd":"even");
}
(3) キャスト演算子.
(double)a;
問題 3
(1)
f (x, n) = f (x, n − 1) +
(2) #include <stdio.h>
#include <math.h>
double FACT(int n)
{
if(n==0){
return (1.0);
}else{
return (n*FACT(n-1));
}
}
double f(double x, int n)
{
if(n==0){
return (1.0);
}else{
return (f(x,n-1)+pow(x,n)/FACT(n));
}
}
main()
2
xn
n!
{
int n=10;
double x=2;
printf("%lf\n",f(x,n));
}
問題 4
(1) #include <stdio.h>
#include <math.h>
main()
{
int x;
double y,t;
scanf("%d",&x);
scanf("%lf",&t);
switch(x)
{
case 1: printf("%lf\n",8.6*t);break;
case 2: printf("%lf\n",6.25*t);break;
case 3: printf("%lf\n",4.41*t);break;
case 4: printf("%lf\n",2.25*t);break;
}
}
(2) ./a.out
< input.dat > result.dat
3