NaaN日記

やったこと、覚えたことを発信する場

C

ビット演算子を使って足し算がしたい(C)

C

授業で半加算器とか全加算器を学んだ結果、 「C言語でビット演算やりたい!」 となりました。 10進数を2つ入力すると、足した数が出力されます。多分。 #include <stdio.h> int and (int a, int b) { return a&b; } int xor (int a, int b) { return a^b; } int calcu</stdio.h>…

引数で与えられた数を足す(C)

C

引数で与えられた数を足し算する. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ int sum = 0; int i; int num; for(i = 1; i < argc; i++){ num = atoi(argv[i]); sum += num; } printf("%d\n", sum); exit(0); } int argcは,渡された引数の数(</stdlib.h></stdio.h>…

バイナリファイルの操作(C)

C

バイナリファイルを扱うとき fopen("a.bin", "rb+") のように、モードにbを記す #include <stdio.h> int main(void){ FILE *hoge; hoge = fopen("b.bin", "wb"); fclose(hoge); return 0; } bと+はどちらが先に来てもかまわない。 ファイルに値を直接書きこむ fwrite</stdio.h>…

テキストファイルの操作(C)

C

もうすぐC言語を授業でやる。 ということで、まだ使ったことがなかった、テキストファイルに直接書いたりする方法を勉強するぞ ファイルを開くときの形 ファイル型のポインタ変数 = fopen("テキストファイル名", "モード") モード ファイルを開いてどうする…

1から与えられた数まで素数かどうか(C)

C

前回の続きができた。今度は1から与えられた数まで調べる #include <stdio.h> #include <math.h> int main(void){ int max;//最大値 int i, j; int sosu[100]; //とりあえず100まで。ここが0だったら素数 double sqr[100]; //それぞれの平方根 int num[100]; //1から最大値ま</math.h></stdio.h>…

与えられた数が素数かどうか(C)

C

sqrtを使って素数かどうかを判断できるものを作れると知ったので、 入力した数字が素数かどうか判断するものを書いてみた。 #include <stdio.h> #include <math.h> int main(void){ int num, i; int sqr; //平方根 int sosu = 0; //ここの値が変わらなかったら素数 scanf("%d"</math.h></stdio.h>…

math.h その1(C)

C

math.h、何が何だか忘れそう コンパイル GCCでコンパイルするためには gcc hoge.c -lm 平方根・累乗・累乗根 sqrt(x); //平方根 pow(x,n); //累乗 pow(x, 1/n); 累乗根 対数関数・指数関数 log(x) //対数関数 exp(x) //指数関数 //指数関数は値が大きくなる…

breakを使わないswitch(C)

C

西暦・月・日を入力して、 12月31日までの日数を答えるプログラムを作ってるときに、 breakを使わないswitch文でいけるんじゃね?と思って、 やってみた。構造としては、 case 月: の形で、1月だと2月、3月……と12月まで流れていく。 それぞれの月でその月に…

Staticしたい(C)

C

staticについて 書こうと思ったんですが最後まで書けなかった。 でもとりあえずの途中経過として公開はする。 使ってみた #include <stdio.h> void show(); int main(void){ int i; for(i=0; i<3; i++){ show(); } return 0; } void show(){ static int a; //指定しな</stdio.h>…

戦ってみたかった(C)

C

最初はポインタを使ってなにかしたいなーーと思った。 特に文字コードで何かやりたかった。 しかし気がついたら黒い画面の上で戦ってた。 構造体とかswitchとか色々と詰め込みたいものを詰め込んでいた。 途中で設定に飽きた。 色々とやりたかったことはある…

入力する文字を指定する(C)

C

今回はスキャン集合を確認。 この文字以外入力させたくない scanf("%[abcdefg]", moji) //abcdefgのみ入力できる 入力する範囲を選択 1. scanf("%[a-z]", moji) //aからz以外が入力されると終了 2. scanf("%[^\n]" moji) //改行以外の入力を受け付ける これ…

構造体を配列にする(C)

C

構造体は配列にもできる #include <stdio.h> #include <string.h> typedef struct{ int age; char animal[10]; }animals; int main(void){ int i; animals data[3];//配列として宣言 data[0].age = 3; strcpy(data[0].animal, "いぬ"); data[1].age = 4; strcpy(data[1].animal,</string.h></stdio.h>…

構造体でポインタ

C

構造体型のポインタ変数 書き方 (*変数名).要素名 変数名->要素名 変数名[0].要素名 実際に使ってみる #include <stdio.h> #include <string.h> typedef struct { char animal[64]; char name[64]; int old; int weight; } animals; int main(void){ animals data; animals *p_d</string.h></stdio.h>…

最大値と最小値を出す(C)

C

ポインタを使ってみるよ ポインタを使った式を、もっと短くかけたので、追記。 素敵なことを教えていただいたので追記 与えられた数の中から最も大きいものと小さいものを表示するようにする入力方式 [一つ目の値, 二つ目の値, 三つ目の値……, 最後の値,, 終…

配列のポインタ(C)

C

コメントで教えてくださりありがとうございます。 表し方の数を増やしました。 これらは同じ意味 data[i] *(data + i) *(i + data) //New!! i[data] //New!! i[data]で表せることにビックリした 配列を書き換えられる int arr[5] = {1,2,3,4,5}; printf("%d\…

ポインタを使えるようになりたい(C)

C

ポインタは難しい。 同じアドレスになる #include <stdio.h> int main(void){ int *p; //ポインタ変数を宣言 int i = 2; p = &i; //pにiのアドレスを入れる printf("%d\n", i); printf("%p\n", &i); //iのアドレスを表示 printf("%p\n", p);//pのアドレスを表示 retur</stdio.h>…

構造体(C)

C

構造体について。 構造体の作成 struct 構造体タグ名{ //データ } 普通関数よりも先に宣言する 構造体の型の変数を宣言 struct 構造体タグ名 構造体変数名; C++ではstructをつけなくても宣言できるらしい。 新しく名前をつける struct animals_tag { char an…