新しく始まった実習授業「C言語とUNIX」の準備で何もできない。でも、1時間声帯の運動にいく、1か月ぶりくらい。
==
学生さんの進度チェックのために作った問題。
6級(if文を使う問題)ifの条件部を書ければOK
問題1:西暦を入力し、うるう年か否かを出力(4で割切れればうるう年)
問題2:整数を入力し、2でも3でも割切れるか否かを出力
問題3:整数を入力し、2か3で割り切れるか否かを出力
問題4:平面のx座標とy座標を実数で入力し、その点が半径1の円の内部か否かを出力形態(xの自乗足すyの自乗が1以下なら「円内」)
学生さんの進度チェックのために作った問題。
6級(if文を使う問題)ifの条件部を書ければOK
問題1:西暦を入力し、うるう年か否かを出力(4で割切れればうるう年)
問題2:整数を入力し、2でも3でも割切れるか否かを出力
問題3:整数を入力し、2か3で割り切れるか否かを出力
問題4:平面のx座標とy座標を実数で入力し、その点が半径1の円の内部か否かを出力形態(xの自乗足すyの自乗が1以下なら「円内」)
5級(switch_caseを使う問題)
問題5:整数を入力し、0ならzero,1ならone,それ以外ならnoと出力する
問題5:整数を入力し、0ならzero,1ならone,それ以外ならnoと出力する
問題6:点数(100点満点)を入力すると評価(A,B,C,D)が出力される
4級(for文を使う問題)
問題7:
for(int i=0; i<30; i++){
printf(???);
}
問題7:
for(int i=0; i<30; i++){
printf(???);
}
上のプログラムで次のように出力するための、???は何でしょう。
(「,」も出力すること)
(1)0,1,2,3,0,1,2,3,0,1,2,3,….
(2)0,2,4,6,8,….
(3)1,3,5,7,….
(4)0,1,4,9,16,25,36,49,64,81,….
(「,」も出力すること)
(1)0,1,2,3,0,1,2,3,0,1,2,3,….
(2)0,2,4,6,8,….
(3)1,3,5,7,….
(4)0,1,4,9,16,25,36,49,64,81,….
問題8:1~100まで加算し、総和を出力するプログラムを書け。
問題9:1*2*3*…*9を出力するプログラムを書け。
問題10:整数を5つ入力し、最大値を出力するプログラムです。XXXXは何でしょう?
#include <stdio.h>
main(){
int max=0,indata=0;
for(int i=0; i<5; i++){
printf(“整数を入力してください”);
scanf(“%d”,&indata);
XXXX
}
printf(“%d”,max);
}
#include <stdio.h>
main(){
int max=0,indata=0;
for(int i=0; i<5; i++){
printf(“整数を入力してください”);
scanf(“%d”,&indata);
XXXX
}
printf(“%d”,max);
}
問題11:整数を5つ入力し、総和と平均を出力する。XXXXとYYYYは何か?
#include <stdio.h>
main(){
int total=0,indata=0;
double heikin;
for(int i=0; i<5; i++){
printf(“整数を入力してください”);
scanf(“%d”,&indata);
XXXX
}
YYYY
printf(“%d,%lf\n”,total,heikin);
}
#include <stdio.h>
main(){
int total=0,indata=0;
double heikin;
for(int i=0; i<5; i++){
printf(“整数を入力してください”);
scanf(“%d”,&indata);
XXXX
}
YYYY
printf(“%d,%lf\n”,total,heikin);
}
3級の問題(while文)
問題12:1+2+3+ … +n の和を計算し、和が100を越えた時点で終了するプログラム。「合計」と「その時のnの値」を出力する。
問題12:1+2+3+ … +n の和を計算し、和が100を越えた時点で終了するプログラム。「合計」と「その時のnの値」を出力する。
問題13:現在カビが1gあり、一日で重さが1.2倍に増えます。カビが10gになるのは何日後かを求めるwhileを使ったプログラムです。XXXXは何か?
(10gを初めて超える日を出力すること)
#include <stdio.h>
main(){
double kabi = 1.0;
int i=1;
(10gを初めて超える日を出力すること)
#include <stdio.h>
main(){
double kabi = 1.0;
int i=1;
XXXX
printf(“%lf,%d\n”,kabi, i);
}
printf(“%lf,%d\n”,kabi, i);
}
2級の問題(配列)
問題14
5人(aさん、bさん、cさん、dさん、eさん)の試験の点数が、 80, 75, 92, 65, 84 でした。最高点と、最高点を取った人の名を出力するプログラムを作りなさい。
何位になるかを求めるプログラムを書きなさい。
char name[5] ={‘a’, ‘b’, ‘c’, ‘d’, ‘e’};
int ten[5] ={ 80, 75, 92, 65, 84 };
int max; //最高点
int top=0;//トップの人の番号
max=ten[0];
この部分
printf(“トップは%c さんで、%d 点でした。\n”,name[top],max);
問題14
5人(aさん、bさん、cさん、dさん、eさん)の試験の点数が、 80, 75, 92, 65, 84 でした。最高点と、最高点を取った人の名を出力するプログラムを作りなさい。
何位になるかを求めるプログラムを書きなさい。
char name[5] ={‘a’, ‘b’, ‘c’, ‘d’, ‘e’};
int ten[5] ={ 80, 75, 92, 65, 84 };
int max; //最高点
int top=0;//トップの人の番号
max=ten[0];
この部分
printf(“トップは%c さんで、%d 点でした。\n”,name[top],max);
問題15:配列aと配列bの中身を入れ替える
int a[3]={1,2,3};
int b[3]={4,5,6};
int c[3];
この後を書く。
int a[3]={1,2,3};
int b[3]={4,5,6};
int c[3];
この後を書く。
問題16:次のプログラムを実行すると、配列sの中身はどのように変化しますか?
(1)
int s[5] ={5,6,8,3,3};
for(int i=0; i<4; i++){
s[i+1]=s[i];
}
(1)
int s[5] ={5,6,8,3,3};
for(int i=0; i<4; i++){
s[i+1]=s[i];
}
(2)
int s[5] ={5,6,8,3,3};
for(int i=0; i<4; i++){
s[4-i]=s[3-i];
}
int s[5] ={5,6,8,3,3};
for(int i=0; i<4; i++){
s[4-i]=s[3-i];
}
(3)
int s[5] ={5,6,8,3,3};
for(int i=0; i<4; i++){
s[i]=s[i+1];
}
int s[5] ={5,6,8,3,3};
for(int i=0; i<4; i++){
s[i]=s[i+1];
}
問題17:
次のプログラムで出力される数値を書きなさい。
(1)
int a[2] ={1,0};
for(int i=0; i<5; i++){
a[1]=a[0]+3;
printf(“%d”,a[1]);
a[0]=a[1];
}
次のプログラムで出力される数値を書きなさい。
(1)
int a[2] ={1,0};
for(int i=0; i<5; i++){
a[1]=a[0]+3;
printf(“%d”,a[1]);
a[0]=a[1];
}
(2)
int a[2] ={1,0};
for(int i=0; i<5; i++){
a[1]=a[0]*3;
printf(“%d”,a[1]);
a[0]=a[1];
}
int a[2] ={1,0};
for(int i=0; i<5; i++){
a[1]=a[0]*3;
printf(“%d”,a[1]);
a[0]=a[1];
}
(3)
int a[3] ={1,1,0};
for(int i=0; i<5; i++){
a[2]=a[0]+a[1];
printf(“%d”,a[2]);
a[0]=a[1];
a[1]=a[2];
}
int a[3] ={1,1,0};
for(int i=0; i<5; i++){
a[2]=a[0]+a[1];
printf(“%d”,a[2]);
a[0]=a[1];
a[1]=a[2];
}
1級の問題(2重のfor文)
問題18:
次のプログラムで出力される数値を書きなさい。
(1)
int a[3] ={1,1,0};
for(int i=0; i<5; i++){
a[2]=a[0]+a[1];
printf(“%d”,a[2]);
for(int j=0; j<2; j++){
a[j]=a[j+1];
}
}
問題18:
次のプログラムで出力される数値を書きなさい。
(1)
int a[3] ={1,1,0};
for(int i=0; i<5; i++){
a[2]=a[0]+a[1];
printf(“%d”,a[2]);
for(int j=0; j<2; j++){
a[j]=a[j+1];
}
}
(2)
int a[3] ={1,1,0};
for(int i=0; i<5; i++){
a[2]=0;
for(int j=0; j<2; j++){
a[2]=a[2]+a[j];
}
printf(“%d”,a[2]);
for(int j=0; j<2; j++){
a[j]=a[j+1];
}
}
int a[3] ={1,1,0};
for(int i=0; i<5; i++){
a[2]=0;
for(int j=0; j<2; j++){
a[2]=a[2]+a[j];
}
printf(“%d”,a[2]);
for(int j=0; j<2; j++){
a[j]=a[j+1];
}
}