内容 | ソース |
switch文を利用してaが1,2,3とそれ以外の場合の場合分けをするプログラムを作る。
|
#include < stdio.h >
main(){
int a;
/* Input a */
printf("a = ");
scanf("%d",&a);
/* Print a */
printf("Input DATA: a= %d \n",a);
switch(a){
case 1:case 2:case 3:
printf("a は %d \n",a);
break;
default:
printf("a は 1, 2, 3 以外\n");
}
}
|
for文を用いて1->10まで数え、表示するプログラムを作る。
|
#include <stdio.h>
main(){
int i;
for(i=1;i<=10;i++)
printf("i = %d\n",i);
}
|
while文を用いて1->10まで数え、表示するプログラムを作る。
|
#include <stdio.h>
main(){
int i;
i=1;
while(i<=10){
printf("i = %d\n",i);
i++;
}
}
|
aを一の位、bを十の位の値とし99〜0までカウントダウンし、表示するプログラムを作る。
|
#include<stdio.h>
main(){
int a,b;
for(b=9;b>=0;b--)
for(a=9;a>=0;a--)
printf("%d%d\n",b,a);
}
|
10[m]の高さから物体を自由落下させたとき,t秒後の高さ h[m]を求めるプログラムを作成する。
|
#include<stdio.h>
main(){
double t,h;
printf("何秒後の位置? ");
scanf("%lf",&t);
h=10-(0.5)*(9.8)*t*t;
if(h<0)
{
printf("%f 秒後の位置は、0m です。\n",t);
}
else{
printf("%f 秒後の位置は、fm です。\n",t,h);
}
}
|
3×3行列A、Bの差 A-B を求めるプログラムを以下の条件で作る。
| 1 3 2 |
A = | -5 0 2 |
| 3 4 -1 |
| 0 1 2 |
B = | -1 1 3 |
| 3 -2 5 |
|
#include<stdio.h>
main(){
int i,j;
float A[3][3]={{1,3,2},{-5,0,2},{3,4,-1}};
float B[3][3]={{0,1,2},{-1,1,3},{3,-2,5}};
float C[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
C[i][j]=A[i][j]-B[i][j];
for(i=0;i<3;i++){
if(i==1){
printf("C = | ");
}else{
printf(" | ");
}
for(j=0;j<3;j++){
if(C[i][j]>=0){
printf(" %.f ",C[i][j]);
}else{
printf("%.f ",C[i][j]);
}
}
printf("|\n");
}
}
|
以下の条件で、3×3行列A、Bの掛け算 A・B を求めるプログラムを作る。
| 1 3 2 |
A = | -5 0 2 |
| 3 4 -1 |
| 0 1 2 |
B = | -1 1 3 |
| 3 -2 5 |
|
#include<stdio.h>
main(){
int i,j,k;
float A[3][3]={{1,3,2},{-5,0,2},{3,4,-1}};
float B[3][3]={{0,1,2},{-1,1,3},{3,-2,5}};
float C[3][3]={{0,0,0},{0,0,0},{0,0,0}};
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(k=0;k<3;k++)
C[i][j]+=A[i][k]*B[k][j];
for(i=0;i<3;i++){
if(i==1){
printf("C = | ");
}else{
printf(" | ");
}
for(j=0;j<3;j++){
if(C[i][j]>=0 && C[i][j]<=10){
printf(" %.f ",C[i][j]);
}else{
printf("%.f ",C[i][j]);
}
}
printf("|\n");
}
}
|
地上から初速 v0[m/s], 角度th[rad](任意)で、物体を打上げたときの軌道(位置p)を計算するプログラムを作る。
|
#include<stdio.h>
#include<math.h>
main(){
/* v0:初速 , th:角度 , t:経過時間 , p[0]:高さ , p[1]:距離 */
float v0,th,t,p[2];
printf("初速? ");
scanf("%f",&v0);
printf("角度? ");
scanf("%f",&th);
do{
printf("時間? ");
scanf("%f",&t);
p[0]=v0*t*sin(th)-0.5*9.8*t*t;
p[1]=v0*t*cos(th);
if(p[0]<0)
p[0]=0;
if(t>=0){
printf("初速 %lf [m/s] 打ち上げ角 %lf [rad] のときの %lf 秒後の位置は\n",v0,th,t);
printf("高さ : %lf [m] , 距離 : %lf [m] \n",p[0],p[1]);
}else{
printf("終了します\n");
}
}while(t>=0);
}
|
double型の二つの数字 a,b が与えられたとき、大きい方の数字を返す関数[double maxd(double a, double b)]、小さい方の数字を返す関数[double mind(double a, double b)]を作る。
|
#include<stdio.h>
double maxd(double a, double b);
double mind(double a, double b);
main(){
double x,y;
printf("x = ");
scanf("%lf", &x);
printf("y = ");
scanf("%lf", &y);
printf("maxd(%f,%f) の結果 %f です。\n", x, y, maxd(x,y));
printf("mind(%f,%f) の結果 %f です。\n", x, y, mind(x,y));
}
double maxd(double a, double b){
if(a<b){
return(b);
}else{
return(a);
}
}
double mind(double a, double b){
if(a>b){
return(b);
}else{
return(a);
}
}
|
キーボードより入力された2つの文字列に対し、それぞれの長さを表示・文字列が等しいかどうかの比較・2つの文字列を連結を行うプログラムを作る。
|
#include<stdio.h>
#include<string.h>
main(){
char a[20],b[20],c[40];
/* input a */
printf("a = ");
scanf("%19s", a);
/* input b */
printf("b = ");
scanf("%19s", b);
puts("*Input Data*");
printf("a : %s\n", a);
printf("b : %s\n", b);
puts("*文字列の長さ*");
printf("a : %d\n", strlen(a));
printf("b : %d\n", strlen(b));
puts("*文字列の比較*");
if(strcmp( a, b)==0){
puts("等しい");
}else{
puts("等しくない");
}
puts("*文字列の連結*");
strcpy(c,a);
strcat(c,b);
printf("%s\n",c);
}
|
実数x,正の整数nを引数とし、xのn乗を計算する関数を再帰を用いて作成する。
|
#include<stdio.h>
double fact(int x);
main(){
double a;
printf("階乗する数? ");
scanf("%lf",&a);
printf("%lf\n",fact(a));
}
double fact(int x){
double ret;
if(x==0){
ret=1.0;
}else{
ret=x*fact(x-1);
}
return(ret);
}
|
○×ゲームを作る。
|
#include<stdio.h>
/*
print:表示
hantei:勝ち負け判定
*/
void print();
void hantei();
/*
l:○×の情報(1:○、2:×)、
End:終了判定(0:引き分け、1:○の勝ち、2:×の勝ち)
s:○×のどちらの番か、OX:○×の定義
*/
int l[3][3]={{0,0,0},{0,0,0},{0,0,0}},End,s=1;
char *OX[]={" ","○","×"};
main(){
/*
x,y:○×の位置(縦y、横x)、kaisu:何回行なったか(9で終了)、
ok:入力が完了したか(0:完了せず、1:完了)
*/
int x,y,ok,kaisu=0;
printf("3並べをします\n");
printf("(縦,横)の様に入力して下さい(例:1,2)\n");
do{
do{
ok=0;
printf("%s:",OX[s]);
scanf("%d,%d",&y,&x);
if(x>0 && x<4 && y>0 && y<4 && l[y-1][x-1]==0){
if(s==1){
l[y-1][x-1]=1;
ok=1;
}else{
l[y-1][x-1]=2;
ok=1;
}
}
}while(ok==0);
print();
hantei();
if(s==1){
s=2;
}else if(s==2){
s=1;
}
kaisu++;
}while(s!=0 && End==0 && kaisu<9);
if(kaisu==9){
printf("引き分けです。\n");
}else{
printf("%sの勝ちです。\n",OX[End]);
}
}
void print(){
/* x,y:○×の位置(縦y、横x) */
int x,y;
for(y=0;y<3;y++){
printf("+--+--+--+\n");
printf("|");
for(x=0;x<3;x++)
printf("%s|",OX[l[y][x]]);
printf("\n");
}
printf("+--+--+--+\n");
}
void hantei(){
/* i:変数(深い意味なし) */
int i;
for(i=0;i<3;i++){
if(l[0][i]==s && l[1][i]==s && l[2][i]==s)
End=s;
if(l[i][0]==s && l[i][1]==s && l[i][2]==s)
End=s;
}
if(l[0][0]==s && l[1][1]==s && l[2][2]==s)
End=s;
if(l[0][2]==s && l[1][1]==s && l[2][0]==s)
End=s;
}
|
整数nを入力すると曜日名を表示するプログラムを作る。
|
#include<stdio.h>
main(){
int n;
char *wname[]={"Sunday","Monday","tuesday","Wednesday",
"Thursday","Friday","saturday"};
printf("数字を入力して下さい(0-6)?");
scanf("%d",&n);
if(<0 || n>6){
printf("0-6の範囲にありません。\n");
}else{
printf("%d番目の曜日は %s です。\n",n,wname[n]);
}
}
|
int型の配列変数 A[10]={4,9,11,25,12,31,22,33,67,97}の内容をポインタを使って表示するプログラムを作る。
|
#include<stdio.h>
main(){
int A[]={4,9,11,25,12,31,22,33,67,97};
int *ptr=A;
int i;
printf("Aの内容\n");
for(i=0;i<10;i++)
printf("%d ",*(ptr+i));
printf("\n");
}
|
各曲の演奏時間からトータルの演奏時間を計算するプログラムを作る。
|
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main(int argc,char *argv[]){
int i,t,m=0,s=0;
char min[5]="",sec[5]="",*str;
for(t=1;t<argc;t++){
str=strchr(argv[t],':')+1;
i=strlen(argv[t])-strlen(str);
strncpy(min,argv[t],i);
strcpy(sec,str);
s+=atof(sec);
m+=atof(min);
strcpy(min,"");
strcpy(sec,"");
}
m+=(s/60);
s-=(s/60)*60;
printf("合計時間は、");
if(s<10){
printf("%d:0%d",m,s);
}else{
printf("%d:%d",m,s);
}
printf("です。");
}
|
バブルソートを行う。
|
#include<stdio.h>
main(){
int i,j,k,tmp,N=10,item[]={5,2,4,6,1,8,4,3,9,6};
for(k=0;k<N;k++)
printf("%d",item[k]);
printf("(ソートする数)\n");
printf("**ソート開始**\n");
for(i=0;i<N;i++){
for(j=N-1;j>=i;j--)
if(item[j]<item[j-1]){
tmp=item[j-1];
item[j-1]=item[j];
item[j]=tmp;
for(k=0;k<N;k++)
printf("%d",item[k]);
printf("\n");
}
}
printf("**ソート終了**\n");
}
|