2009-01-01から1年間の記事一覧

ポインタ

ポインタを利用して二つの値を交換する #include<stdio.h> void swap(int *nx,int *ny){ int temp = *nx; *nx = *ny; *ny = temp; } int main(void){ int na,nb; puts("二つの整数を入力してください。"); printf("整数1:"); scanf("%d",&na); printf("整数2:"); scan</stdio.h>…

C言語の難関ポインタを勉強するぞ

ポインタアドレスオブジェクトが、記憶域上のどこにあるのかを表すのがポインタ。オブジェクトのアドレスとは、それが格納されている記憶域上の番地のことである。実際にアドレスを調べてみる #include<stdio.h> int main(void){ int nx; double dx; int vc[3]; print</stdio.h>…

ポインタと配列

ポインタと配列 #include<stdio.h> int main(void){ int i; int vc[5] = {10,20,30,40,50}; int *ptr = &vc[0]; for(i=0;i<5;i++){ printf("vc[%d] = %d ptr[%d] = %d *(ptr + %d) = %d\n", i,vc[i],i,ptr[i],i,*(ptr + i)); } return 0; } 実行結果 vc[0] = 10 ptr[0</stdio.h>…

入出力と文字

数字文字のカウントgetchar()関数は、文字列を読み込んで、それを返す関数。 読み込み時にエラーが発生したり、入力の終了に達すると、EOFという値を返す。 #include<stdio.h> int main(void){ int i,ch; int cnt[10] = {0}; while(1){ ch = getchar(); if(ch == EOF)</stdio.h>…

再帰関数呼び出し

階乗を求めるプログラム #include <stdio.h> int factorial(int n){ if(n>0){ return (n * factorial(n-1)); }else{ return 1; } } int main(void){ int num; printf("整数を入力してください。"); scanf("%d",&num); printf("その数の階乗は%dです。\n",factorial(nu</stdio.h>…

列挙体

#include<stdio.h> #define putsa(str) (putchar('\a'),puts(str)) enum animal {Dog,Cat,Monkey,Invalid}; void dog(void){ puts("わんわん"); } void cat(void){ puts("にゃんにゃん"); } void monkey(void){ puts("きっきっ"); } enum animal select(void){ int tm</stdio.h>…

関数形式マクロ

関数形式マクロを利用したプログラムの例 #include<stdio.h> #define sqr(x) ( (x) * (x) ) int main(void){ int nx; double dx; printf("整数を入力してください。"); scanf("%d",&nx); printf("その数の2乗は%dです。\n",sqr(nx)); printf("実数を入力してください</stdio.h>…

記憶域期間

#include<stdio.h> int fx = 0; void func(void){ static sx = 0; int ax = 0; printf("%3d%3d%3d\n",ax++,sx++,fx++); } int main(void){ int i; puts(" ax sx fx"); puts("---------"); for(i=0;i<10;i++){ func(); } puts("---------"); return 0; } 自動記憶域期</stdio.h>…

多次元配列の受け渡し

2行3列の行列を加算するプログラム #include<stdio.h> void mat_add(const int ma[2][3],const int mb[2][3],int mc[2][3]){ int i,j; for(i=0;i<2;i++){ for(j=0;j<3;j++){ mc[i][j] = ma[i][j] + mb[i][j]; } } } int main(void){ int i,j; int ma[2][3] = {{1,2,3}</stdio.h>…

番兵法を用いた遂次探索

番兵法を用いた遂次探索 #include<stdio.h> #define NUMBER 5 #define FAILED -1 int search(int vc[],int key,int no){ int i = 0; vc[no] = key; while(1){ if(vc[i] == key){ break; } i++; } return(i == no ? FAILED:i); } int main(void){ int i,ky,idx; int vx</stdio.h>…

C言語 〜遂次探索〜

遂次探索 #include<stdio.h> #define NUMBER 5 #define FAILED -1 int search(const int vc[],int key,int no){ int i = 0; while(1){ if(i==no){ return (FAILED); } if(vc[i] == key){ return i; } i++; } } int main(void){ int i,ky,idx; int vx[NUMBER]; for(i=0</stdio.h>…

関数に配列を受け渡す

#include<stdio.h> #define NUMBER 5 int max_of(int vc[],int no){ int i; int max = vc[0]; for(i=1;i<no;i++){ if(vc[i] > max){ max = vc[i]; } } return max; } int main(void){ int i; int eng[NUMBER]; int mat[NUMBER]; int max_e,max_m; printf("%d人の点数を入力してください。\</no;i++){></stdio.h>…

復習

最高点を求めるプログラム #include<stdio.h> #define NUMBER 5 int tensu[NUMBER]; int top(void); int main(void){ extern int tensu[]; int i; printf("%d人の点数を入力してください。",NUMBER); for(i=0;i<NUMBER;i++){ do{ printf("%d:",i+1); scanf("%d",&tensu[i]); if(tensu[i] < 0 || tensu[i] > 100 ){ printf("点数は0以上100以下で入力してください</number;i++){></stdio.h>…

文字列を操作する

文字列の長さを調べる #include<stdio.h> unsigned str_length(const char str[]){ unsigned len = 0; while(str[len]){ len++; } return len; } int main(void){ char st[100]; printf("文字列を入力してください。"); scanf("%s",st); printf("文字列の長さは%uです</stdio.h>…

文字列の配列

文字列も配列化することができる。 #include<stdio.h> int main(void){ int i; char cs[][10] = {"banana","orange","pear"}; for(i=0;i<3;i++){ printf("cs[%d] =\"%s\"\n",i,cs[i]); } return 0; } 文字列配列の要素である文字列の読み込み配列の各要素に、標準入力</stdio.h>…

文字列

文字列リテラルは、整数での50や、浮動小数点数での3.14といった定数のようなもの。 オブジェクトに格納することによって、自由に取り扱うことができる。文字の配列に文字列を格納・表示してみる #include<stdio.h> int main(void){ char str[4]; str[0] = 'A'; str[1</stdio.h>…

復習 〜配列〜

そろそろ夏休みだし、もっと勉強しようと思う。点数を読み込んで合格者の一覧を表示する #include<stdio.h> #define NUMBER 5 int main(void){ int i; int snum = 0; int tensu[NUMBER]; int succs[NUMBER]; puts("点数を入力してください。"); for(i=0;i<NUMBER;i++){ printf("%2d番",i+1); scanf("%d",&tensu[i]); if(tensu[i] >= 60){ succs</number;i++){></stdio.h>…

多次元配列

多次元配列の要素とアドレスがどうなるのか確かめてみる #include <stdio.h> int main() { int a[3][2] = {10,20,30,40,50,60}; int i,j; for(i=0;i<3;i++){ for(j=0;j<2;j++){ printf("a[%d][%d] = %d\n",i,j,a[i][j]); } } printf("\n"); /*各要素のアドレスを確か</stdio.h>…

配列とアドレス

配列の要素は原則として、順番にメモリ上に並んでいる。配列の各要素のアドレスを調べてみよう #include <stdio.h> int main() { int a[4] = {1,2,3,4},i; for(i=0;i<4;i++){ printf("&a[%d] = %p\n",i,&a[i]); } printf("\na = %p\n",a); return 0; } 実行結果 &a[0]</stdio.h>…

C言語ポインタ

ポインタポインタをつかって変数の値を入れ替える。 #include <stdio.h> void swap(int *,int *); int main(void) { int a,b; a = 10; b = 20; swap(&a,&b); printf("a = %d , b = %d\n",a,b); return 0; } void swap(int *x,int *y) { int z; z = *x; *x = *y; *y = </stdio.h>…

オセロつくる

C言語でオセロつくろう。 でも石を置くところまで書いて躓き中。 #include <stdio.h> int main(void){ int circle[8][8]; int i,j,x,y; int flag = 1; int ans; int player = 1; for(i=0;i<8;i++){ for(j=0;j<8;j++){ circle[i][j] = 0; } } for(;;){ if(flag == 1){ </stdio.h>…

C言語 配列

C言語で配列を使う。 #include <stdio.h> int main() { int a[5]; int i; for (i=0;i<5;i++){ printf("整数を入力してください\n"); scanf("%d",&a[i]); } printf("入力された整数を出力します\n"); for (i=0;i<5;i++){ printf("%d",a[i]); } return 0; } こんな感じ</stdio.h>…

C言語勉強しなきゃ

なんか問題みたいなの #include <stdio.h> int sum = 1; int main(void) { int x; if(sum==1){ printf("問題を出します。数字で答えてください\n"); }else{ printf("%d回目のチャレンジです。頑張ってください!!",sum); } printf("問題:世界一高い山は?\n"); print</stdio.h>…

関数の再帰呼び出し

再帰呼び出し階乗を求めるプログラム #include <stdio.h> int factorial(int); int main() { int i; for (i=0;i<11;i++) printf("%d! = %d\n",i,factorial(i)); return 0; } int factorial(int n) { if (n==0){ return 1; }else{ return n* factorial(n-1); } } facto</stdio.h>…

文字列のインデントの変更 〜Python Cook Book〜

複数の行から成る文字列の行頭のスペースを加減して、インデントをそろえた文字列を作るには、 def reindent(s,numSpace): spaces = numSpace * ' ' lines = [spaces + line.strip() for line in s.splitlines()] return '\n'.join(lines) こうすればよい。…

関数

関数 #include <stdio.h> int func(int,int); int main() { int a,b,c; a = 10; b = 10; c = func(a,b); printf("%d X %d = %d\n",a,b,c); return 0; } int func(int a,int b) { int c ; c = a*b; return c; } 関数を使うときはプロトタイプ宣言をしないといけない。 </stdio.h>…

C言語入門

Hello world!! /* hello.c */ #include <stdio.h> int main() { printf("Hello world!!"); return 0; } いまさらながらC言語を入門させていただきます。変数を使うには宣言をしなければならない #include <stdio.h> int main() { int a,b,c; a = 10; b = 15; c = a+b; printf("</stdio.h></stdio.h>…

練習問題6.4

1.以下の関数に、引数が2つ指定されていない場合にエラーを表示するコードを追加しなさい。 function max(arg1,arg2){ if(arg1 > arg2){ return arg1; } return arg2; } これを・・・ function max(arg1,arg2){ if(arguments.lenght != 2){ throw new Error(…

引数をオブジェクトで指定するテクニック

function calcCone(obj){ if(obj==null || !obj.radius){ throw new Error('引数にはradiusプロパティを持ったオブジェクトを指定してください'); } //heightのデフォルト値は10 if(!obj.height){ obj.height = 10; } var dimension = obj.radius * obj.radi…

関数の再帰呼び出し

関数の中で、自分自身(その関数)を呼び出すことを「再帰呼び出し」と呼ぶ。 以下は再帰呼び出しを利用して階乗を計算するプログラム。 function factorial(n){ if (n<0){ throw new Error('0以上の値を指定してください:'); }else if(n==0){ return 1; }el…