Microsoft Word - Cプログラミング演習(11)
|
|
|
- かずただ あざみ
- 8 years ago
- Views:
Transcription
1 第 11 回 (7/2) 4. いくつかのトピック (1) ビットごとの演算子 C 言語には, 次のようなビット単位で演算を行う特別な演算子が用意されている & ビットごとの AND ビットごとの OR ^ ビットごとの XOR( 排他的論理和 ) ~ 1 の補数これらの演算子は文字型と整数型で機能し, 浮動小数点数型では使用できない AND, OR, XOR は, それぞれのオペランドの対応するビットを比較して結果を返す 一方,1の補数演算子は, 整数型もしくは文字型の各ビットを反転する単項演算子である クイズ 次の演算はどんな意味をもっているだろうか n = n & 0177; x = x & ~077; 例題 4-1 XOR 演算子には面白い特徴がある a, b という2つの値がある場合,a XOR b の結果に対してもう一度 b で XOR 演算を行うと, 結果は a に戻る 例えば,a = 100, b = とした場合, 次のような出力結果が得られるプログラムをつくりなさい 出力結果 4-1 a の値 :100 b の値 : 番目の a = a^b の値 : 番目の a = a^b の値 :100
2 プログラム /* E4-1 */ 02 /* XOR 演算子 */ 03 #include <stdio.h> int main() 06 { 07 int a, b; 08 a = 100; b = 21987; 09 printf("a の値 :%d\n", a); 10 printf("b の値 :%d\n", b); 11 a = a ^ b; 12 printf("1 番目の a = a^b の値 :%d\n", a); 13 a = a ^ b; 14 printf("2 番目の a = a^b の値 :%d\n", a); return 0; 17 }
3 練習問題 30 例題 4-1を参考にして, ユーザが指定したキー文字 (unsigned char 型 ) と XOR 演算子を組み合わせて, ファイルを暗号化するプログラムをつくりなさい 但し, ファイル名とキー文字はキーボードから入力します 出力例のように動作する main 関数を作成しなさい ヒント 暗号化されたファイルを入力して同じキー文字を用いて再度実行すると暗号が解除できることを確認しなさい 出力例 ファイルを暗号化します! 入力ファイル名は :Q30.c 出力ファイル名は :Q30_crypt.c 暗号化のキー文字は :% 暗号化が完了しました!
4 (2) シフト演算子 C 言語には, 左または右方向のビットシフト演算子がある 書式は次のようになる 値 << ビット数値 >> ビット数 左シフトは数値に 2 を掛けるのに等しく, シフトされた後の右側のビットは 0 で埋められる 一方, 右シフトは数値を 2 で割るのに等しく, シフトされた左側のビットは 0 で埋められる ( 下記の注を参照 ) 但し, 負の数が指定された場合は,1 で埋められる いずれもシフトしてはみ出したビットは消失する ほぼ全ての CPU の内部演算で, シフト演算は算術演算よりも高速に処理される 注. 右シフトの注意符号なし数の右シフトでは左から 0 が入るが, 符号付きの場合は計算機によって符号桁が左から入ってくる場合 ( 算術シフト ) と 0 が入ってくる場合 ( 論理シフト ) とがある クイズ 次の関数の働きを述べなさい 但し, 仮定として, ビット位置 0 は右端で,n, p は正の整数で (p+1-n) は 0 以上とする 例えば,getbits(x,4,3) は何を返すでしょう unsigned getbits(unsigned x, int p, int n) { return (x >> (p+1-n)) & ~(~0 << n); }
5 練習問題 31 C 言語には, バイトデータのローテート (rotate) 演算子がない ローテート処理では, はみ出たビットを逆の端に置く 例えば, を左に1つローテートすると となる 呼び出される毎に 1 バイトデータの各ビットを1つずつ左にローテートする関数 void rotate(unsigned char *) を作成しなさい この関数を利用して, ユーザが入力した任意の整数 (1~255) を合計 16 回ローテートした結果を出力例のように表示するプログラムをつくりなさい ヒント バイトの端からはみ出たビットにアクセスするには共用体を用いる方法が使えます あるいは, ローテートする前にビット演算子を用いて最上位ビットが 1 か 0 かを判定して, ローテートした際のビット列を決定しなさい ユーザが入力した整数は scanf を用いて unsigned char n で宣言した変数 n で受けて, ローテート関数は rotate(&n) のように呼び出しなさい また, 出力例のようにビット列を表示する部分は,n の各ビットが 0 か 1 をビット演算子で調べればできます 出力例 1~255 の整数を入力して下さい (0 で終了 ):1 1-th shift: th shift: th shift: th shift: th shift: th shift: th shift: th shift: th shift: th shift: th shift: th shift: th shift: th shift: th shift: th shift:
6 1~255 の整数を入力して下さい (0 で終了 ): (3) 動的なメモリの割り当て動的なメモリの割り当てとは, プログラムの実行中に必要に応じてメモリを割り当てる処理を指す コンピュータ上のすべてのメモリをフルに利用する必要のあるアプリケーションで有効である Cの動的メモリ割り当て関数の核となるのは malloc() と free() 関数で, 次の書式を取る void *malloc(size_t n); void free(void *ptr); malloc() は n バイトのメモリ領域を割り当てて, 割り当てたメモリブロックの先頭を指すポインタを返す この記憶領域は 0 で初期化される また, メモリ要求に応えられないときは,NULL ポインタを返す 但し,size_t は sizeof 演算子が返す符号なし整数型である free(ptr) は ptr で指し示されるメモリ領域を解放する関数である 但し,ptr は割り当てられたメモリブロックの先頭を指すポインタである どちらの関数も stdlib.h を使用するため, これをインクルードしておく 注 ) 総称的なポインタ型 void *:void * には任意のポインタがキャスト可能であり, 情報を失うことなく逆キャストもできる この汎用ポインタには次の二つの目的がある (1) 型が一致しない というエラーを起こさずに, 任意の型のデータを指すポインタとして関数に渡すことができる (2) 関数の戻り値として汎用ポインタを返せるようにする
7 例題 個の要素を持つ動的な整数配列を作るプログラムを作成しなさい 次に, ポインタ演算または配列の添え字を使って,1 から 10 までの値を配列に代入しなさい 最後に, 代入した値をすべて表示して, その後でメモリを解放しなさい プログラム /* E4-2 */ 02 /* 動的なメモリの割り当て */ 03 #include <stdio.h> 04 #include <stdlib.h> int main() 07 { 08 int *ptr, i; ptr = (int *) malloc(10 * sizeof(int)); 11 if (!ptr) { 12 printf(" メモリー割り当てエラー "); 13 exit(1); 14 } for (i = 0; i < 10; i++) ptr[i]= i+1; printf(" 代入した整数配列を表示します \n"); 19 for (i = 0; i < 10; i++) printf("%d ", *(ptr+i)); 20 printf("\n"); free(ptr); return 0; 25 }
8 例題 次元の整数型配列を動的に生成するプログラムをつくってみましょう このために, 行数 m と列数 n を引数として渡す関数 int **get_array(int m, int n) を作成します この関数 get_array は関数内部で動的に生成した整数型の 2 次元配列 array[m][n] の先頭アドレスを返すものとします すなわち,main 関数であらかじめ宣言してある int **array; に対して, 次のようにして 2 次元配列のメモリを確保できます array = get_array(m, n); こうしてメモリを確保した array[m][n] に main 関数内で j=0,,m-1, i=0,,n-1 として array[j][i] = (j+1)*(i+1); を代入してから,array[m][n] の内容を画面に表示してみなさい 出力例 整数の 2 次元配列を動的に生成します 行数を入力して下さい :4 列数を入力して下さい :5 配列内のデータを表示します プログラム /* E4-3 */ 02 /* 2 次元配列の動的生成 */ 03 #include <stdio.h> 04 #include <stdlib.h>
9 05 06 int **get_array(int m, int n); 07 void free_array(int **array, int m); main() 10 { 11 int m, n; 12 int **array; 13 int i, j; printf(" 整数の 2 次元配列を動的に生成します \n"); 16 printf(" 行数を入力して下さい :"); 17 scanf("%d", &m); 18 printf(" 列数を入力して下さい :"); 19 scanf("%d", &n); array = get_array(m, n); for (j = 0; j < m; j++) 24 for (i = 0; i < n; i++) 25 array[j][i] = (j+1)*(i+1); printf("\n 配列内のデータを表示します \n"); 28 for (j = 0; j < m; j++) 29 for (i = 0; i < n; i++) { 30 printf("%4d", array[j][i]); 31 if (i == n-1) printf("\n"); 32 } 33 free_array(array, m); 34 } int **get_array(int m, int n) 37 { 38 int **array; 39 int i; 40
10 41 array = (int **) malloc(m * sizeof(int *)); 42 if (array == NULL) { 43 puts("memory problem\n"); 44 exit(1); 45 } 46 for (i = 0; i < m; i++) { 47 array[i] = (int *) malloc(n * sizeof(int)); 48 if (array[i] == NULL) { 49 puts("memory problem\n"); 50 exit(1); 51 } 52 } 53 return array; 54 } void free_array(int **array, int m) 57 { 58 int i; for (i = 0; i < m; i++) 61 free(array[i]); free(array); 64 }
11 (4) 再帰 (Recursion) Cの関数は再帰的に使用できる つまり, 関数は自分自身を直接または間接に呼び出してよい また, 自己参照的構造体では, 構造体の宣言で自分自身をメンバとして 再帰的 に宣言することができる いくつかの例題で動作を確認してみる
12 例題 4-4 整数 n を文字列として印字する関数 void printd(int n) を再帰的に定義して作成し, キーボードから入力した数字を印字するプログラムをつくりなさい プログラム /* E4-4 */ 02 /* 再帰 */ 03 #include <stdio.h> 04 void printd(int); main() 07 { 08 int n; while (1) { 11 printf(" 整数を入力して下さい (exit = 0):"); 12 scanf("%d", &n); 13 if (!n) break; 14 printd(n); 15 printf("\n"); 16 } 17 } void printd(int n) 20 { 21 if (n < 0) { 22 putchar('-'); 23 n = -n; 24 } 25 if (n / 10) 26 printd(n / 10); 27 putchar(n%10 + '0'); 28 }
13 練習問題 32( 難問 ) 例題 4-4で紹介した printd の考え方を用いて, 再帰版の関数 itoa_r をつくりなさい すなわち, 次のソースコードを用いて, 再帰的なルーチンを呼び出して整数を文字列に変換する関数 void itoa_r(int n, char *str) の定義部分を完成しなさい /* Q32 */ /* int 型変数を文字列に変換する再帰版 itoa_r */ #include <stdio.h> #include <stdlib.h> /* prototype declaration */ void itoa_r(int n, char *str); enum { MAX = 100 }; main() { int n; char str[max]; while (1) { printf("\n 整数を入力して下さい ( 終了 = 0):"); scanf("%d", &n); if (n == 0) break; itoa_r(n, str);
14 } } printf(" 文字列に変換すると %s です \n", str); void itoa_r(int n, char *str) { ここに関数定義をすること }
15 例題 4-5 ジョセファス (Josephus) の問題 を解く この問題とは, いま N 人が集団自殺をしようとしているとして, まず全員が円陣に並び, その円の中の M 番目の人を順に処刑する 1 人死ぬと取り除かれ, 円の大きさが 1 減ることになる 問題は, 最後に死ぬ人を見つけることである 一般には, 人々の処刑される順番を見つけることが問題である 例えば,N = 9, M = 5 とすると, 5 --> 1 --> 7 --> 4 --> 3 --> 6 --> 9 --> 2 --> 8 となり, 最後に死ぬのは最初 8 番目に並んでいた人になる この問題を解くプログラムについて自己参照的構造体を用いてつくりなさい
16 プログラム /* E4-5 */ 02 /* ジョセファスの問題 */ 03 /* 自己参照的構造体 */ 04 #include <stdio.h> 05 #include <stdlib.h> struct node { 08 int key; 09 struct node *next; 10 }; main() 13 { 14 int i, j, N, M; 15 struct node *t, *x; 16 printf("enter the total number of people : "); 17 scanf("%d", &N); 18 printf("who attempts suicide first? "); 19 scanf("%d", &M); 20 printf("\nthe sequence of suicide is as follows: \n"); 21 t = (struct node *) malloc(sizeof *t); 22 t->key = 1; 23 x = t; 24 for (i = 2; i <= N; i++) { 25 t->next = (struct node *) malloc(sizeof *t); 26 t = t->next; 27 t->key = i; 28 } 29 t->next = x; 30 j = 0; 31 while (t!= t->next) { 32 for (i = 1; i < M; i++) 33 t = t->next; 34 printf("%3d -->", t->next->key);
17 35 x = t->next; 36 t->next = t->next->next; 37 free(x); 38 j++; 39 if (j%10 == 0) printf("\n"); 40 } 41 printf("%3d\n\n", t->key); 42 } 練習問題 33 ジョセファスの問題を解く再帰的プログラムをつくりなさい ヒント ジョセファスの問題を解く部分( 例題 4-5のプログラム E4-5 の 30 行 ~41 行 ) を再帰関数で実現しなさい この関数は次のようなプロトタイプ宣言になります void josephus(struct node *, int);
Microsoft Word - Cプログラミング演習(12)
第 12 回 (7/9) 4. いくつかのトピック (5)main 関数の引数を利用したファイル処理 main 関数は, 起動する環境から引数を受け取ることができる 例えば 次に示すように,main 関数に引数を用いたプログラムを作成する 01 /* sample */ 02 /* main 関数の引数 */ 03 #include 04 05 main(int argc, char
バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科
バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 ポインタ変数の扱い方 1 ポインタ変数の宣言 int *p; double *q; 2 ポインタ変数へのアドレスの代入 int *p; と宣言した時,p がポインタ変数 int x; と普通に宣言した変数に対して, p = &x; は x のアドレスのポインタ変数 p への代入 ポインタ変数の扱い方 3 間接参照 (
Microsoft Word - Cプログラミング演習(10)
第 10 回 (6/25) 3. ファイルとその応用 (3) ファイルの更新 シーケンシャルファイルの更新 シーケンシャルファイルでは, 各レコードが可変長で連続して格納されており, その中の特定のレコードを変更することができない そこで一般的には, マスタファイルからデータを取り出し, 更新処理を行ったあとに新マスタファイルに書き込む 注 ) マスタファイル : 主ファイル, 基本ファイルと呼ばれるファイルで内容は比較的固定的であり,
問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =
問 1 配列の宣言整数型配列 data1 にデータが初期設定されている この配列 data1 のデータを下図のように 整数型配列 data2 に代入しなさい また data2 の内容を printf( "data2[0] = %d\n", data2[0] ); printf( "data2[5] = %d\n", data2[5] ); を用いて出力しなさい 実行結果 data2[0] = 76
PowerPoint プレゼンテーション
講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる
char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く
変数 入出力 演算子ここまでに C 言語プログラミングの様子を知ってもらうため printf 文 変数 scanf 文 if 文を使った簡単なプログラムを紹介した 今回は変数の詳細について習い それに併せて使い方が増える入出力処理の方法を習う また 演算子についての復習と供に新しい演算子を紹介する 変数の宣言プログラムでデータを取り扱う場合には対象となるデータを保存する必要がでてくる このデータを保存する場所のことを
プログラミング実習I
プログラミング実習 I 03 変数と式 人間システム工学科井村誠孝 [email protected] 3.1 変数と型 変数とは p.60 C 言語のプログラム中で, 入力あるいは計算された数や文字を保持するには, 変数を使用する. 名前がついていて値を入れられる箱, というイメージ. 変数定義 : 変数は変数定義 ( 宣言 ) してからでないと使うことはできない. 代入 : 変数には値を代入できる.
Microsoft PowerPoint - lec10.ppt
今日の内容, とポインタの組み合わせ, 例題 1. 住所録例題 2. と関数とは. を扱う関数. 例題 3. のリスト とポインタの組み合わせ 今日の到達目標 自分で を定義する 自分で定義したについて, 配列やポインタを作成する データ型 基本データ型 char 文字 (1 文字 ) int 整数 double 浮動小数など その他のデータ型配列 データの並び ( 文字列も, 文字の並び ) ポインタ
PowerPoint プレゼンテーション
プログラミング応用演習 第 4 回再帰的構造体 プログラミングを 余談 : 教えることの難しさ 丁寧に説明しないと分かってもらえない 説明すると 小難しくなる学生が目指すべきところプログラム例を説明されて理解できる違うやり方でも良いので自力で解決できる おっけー 動けば良い という意識でプログラミング 正しく動くことのチェックは必要 解答例と自分のやり方との比較が勉強になる 今日のお題 再帰的構造体
Taro-ポインタ変数Ⅰ(公開版).j
0. 目次 1. ポインタ変数と変数 2. ポインタ変数と配列 3. ポインタ変数と構造体 4. ポインタ変数と線形リスト 5. 問題 問題 1 問題 2-1 - 1. ポインタ変数と変数 ポインタ変数には 記憶領域の番地が格納されている 通常の変数にはデータが格納されている 宣言 int *a; float *b; char *c; 意味ポインタ変数 aは 整数型データが保存されている番地を格納している
RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用
RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用体型のローカル変数を文字列操作関数で操作する場合の注意事項 (RXC#013) 配列型構造体または共用体の配列型メンバから読み出した値を動的初期化に用いる場合の注意事項
gengo1-11
関数の再帰定義 自然数 n の階乗 n! を計算する関数を定義してみる 引数は整数 返却値も整数 n! = 1*2*3*... * (n 1)*n である ただし 0! = 1 とする int factorial(int n) int i, tmp=1; if( n>0 ) for(i=1; i
02: 変数と標準入出力
C プログラミング入門 総機 1 ( 月 1) 11: 動的メモリ確保 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2015-06-22 1 まとめ : ポインタを使った処理 内容 説明 呼び出し元の変数を書き換える第 9 回 文字列を渡す 配列を渡す 第 10 回 ファイルポインタ
02: 変数と標準入出力
C プログラミング入門 基幹 2 ( 月 4) 11: 動的メモリ確保 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2014-06-22 1 まとめ : ポインタを使った処理 内容 説明 呼び出し元の変数を書き換える第 9 回 文字列を渡す 配列を渡す 第 10 回 ファイルポインタ
Microsoft PowerPoint - CproNt02.ppt [互換モード]
第 2 章 C プログラムの書き方 CPro:02-01 概要 C プログラムの構成要素は関数 ( プログラム = 関数の集まり ) 関数は, ヘッダと本体からなる 使用する関数は, プログラムの先頭 ( 厳密には, 使用場所より前 ) で型宣言 ( プロトタイプ宣言 ) する 関数は仮引数を用いることができる ( なくてもよい ) 関数には戻り値がある ( なくてもよい void 型 ) コメント
Microsoft Word - Cプログラミング演習(7)
第 7 回 (6/4) 2. 構造体 構造体とは, 同じ型に限定されない複数の関連するデータメンバの集合である 構造体の宣言構造体指定子 struct を用いて struct 構造体タグ名 { メンバ 1 の宣言 ; メンバ 2 の宣言 ; メンバ n の宣言 ; }; 注 ) 構造体タグ名は構造体の型名で, 内容を定義するものでオブジェクトではなく, 論理的なテンプレートである 構造体の変数の宣言実際の記憶領域を占める物理的実体を確保する
memo
数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき
プログラミングI第10回
プログラミング 1 第 10 回 構造体 (3) 応用 リスト操作 この資料にあるサンプルプログラムは /home/course/prog1/public_html/2007/hw/lec/sources/ 下に置いてありますから 各自自分のディレクトリにコピーして コンパイル 実行してみてください Prog1 2007 Lec 101 Programming1 Group 19992007 データ構造
次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1
4. ソート ( 教科書 p.205-p.273) 整列すなわちソートは アプリケーションを作成する際には良く使われる基本的な操作であり 今までに数多くのソートのアルゴリズムが考えられてきた 今回はこれらソートのアルゴリズムについて学習していく ソートとはソートとは与えられたデータの集合をキーとなる項目の値の大小関係に基づき 一定の順序で並べ替える操作である ソートには図 1 に示すように キーの値の小さいデータを先頭に並べる
PowerPoint プレゼンテーション
プログラミング応用演習 第 5 回演習 前回までのお話 ポインタ ポインタを用いた文字列処理 構造体 ファイル 再帰的構造体 リスト構造 動的メモリ管理 今日のお題 ポインタやファイルなど これまでの内容の練習 教材 以前 以下に単語を収録したファイルがあることを紹介した : /usr/share/dict/words この中からランダムに単語を取り出したファイルを用意した http://sun.ac.jp/prof/yamagu/2019app/
第1回 プログラミング演習3 センサーアプリケーション
C プログラミング - ポインタなんて恐くない! - 藤田悟 [email protected] 目標 C 言語プログラムとメモリ ポインタの関係を深く理解する C 言語プログラムは メモリを素のまま利用できます これが原因のエラーが多く発生します メモリマップをよく頭にいれて ポインタの動きを理解できれば C 言語もこわくありません 1. ポインタ入門編 ディレクトリの作成と移動 mkdir
Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx
情報ネットワーク導入ユニット Ⅰ C 言語 演算と型 演算 代入 演算と型 +,-,*,/,% = C 言語では 代入 の意味 vx = a + b; //a+b の結果を vx に代入 型 : int 型 ( 整数 ) double 型 ( 実数 ) 演算での型変換 ( 整数, 実数の混在 ) キャスト演算子 型を一時的に変更 書式指定 :printf("%6d n", a); 加減, 剰余演算
PowerPoint プレゼンテーション
2018/10/05 竹島研究室創成課題 第 2 回 C 言語演習 変数と演算 東京工科大学 加納徹 前回の復習 Hello, world! と表示するプログラム 1 #include 2 3 int main(void) { 4 printf("hello, world! n"); 5 return 0; 6 } 2 プログラム実行の流れ 1. 作業ディレクトリへの移動 $ cd
Taro-ファイル処理(公開版).jtd
ファイル処理 0. 目次 1. はじめに 2. ファイル内容の表示 3. ファイル内容の複写 3. 1 文字単位 3. 2 行単位 4. 書式付き入出力 5. 文字配列への入出力 6. 課題 6. 1 課題 1 ( ファイル圧縮 復元 ) - 1 - 1. はじめに ファイル処理プログラムの形は次のようになる #include main() { FILE *fp1,*fp2; ファイルポインタの宣言
PowerPoint プレゼンテーション
プログラミング初級 第 7 回 2017 年 5 月 29 日 配列 ( 復習 )~ 文字列 1 配列とは 2 配列 : 複数の変数をグループとしてまとめて扱うもの 配列 変数 int data[10]; 整数型の配列 同種のデータ型を連続して確保したものを配列とよぶ = 整数がそれぞれにひとつずつ入る箱を 10 個用意したようなもの int data; 整数型の変数 = 整数がひとつ入る dataという名前の箱を用意したようなもの
Microsoft Word - no15.docx
7. ファイルいままでは プログラムを実行したとき その結果を画面で確認していました 簡単なものならそれでもいいのですか 複雑な結果は画面で見るだけでなく ファイルに保存できればよいでしょう ここでは このファイルについて説明します 使う関数のプロトタイプは次のとおりです FILE *fopen(const char *filename, const char *mode); ファイルを読み書きできるようにする
Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]
if 文 (a と b の大きい方を表示 ) C 言語 Ⅰ の復習 条件判定 (if, 条件式 ) ループ (for[ 二重まで ], while, do) 配列 ( 次元 次元 ) トレース int a, b; printf( 整数 a: ); scanf( %d, &a); printf( 整数 b: ); scanf( %d, &b); //つのif 文で表現する場合間違えやすい どっちに =
Microsoft PowerPoint - 5Chap15.ppt
第 15 章文字列処理 今日のポイント 15.1 文字列処理の基本 strcpy strcat strlen strchr などの使い方をマスターする strcpy はなんて読むの? 普通はストリングコピー C のキーワードの読み方に悩んだら下記サイトを参考 ( 前回紹介とは別サイト ) http://www.okakogi.go.jp/people/miwa/program/c_lang/c_furoku.html
プログラミング基礎
C プログラミング Ⅱ 演習 2-1(a) BMI による判定 文字列, 身長 height(double 型 ), 体重 weight (double 型 ) をメンバとする構造体 Data を定義し, それぞれのメンバの値をキーボードから入力した後, BMI を計算するプログラムを作成しなさい BMI の計算は関数化すること ( ) [ ] [ ] [ ] BMI = 体重 kg 身長 m 身長
/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){
ソフトゼミ A 第 6 回 関数 プログラムは関数の組み合わせでできています 今までのゼミAでも printf や scanf など様々な関数を使ってきましたが なんと関数は自分で作ることもできるのです!! 今日は自作関数を中心に扱っていきます ゲーム制作でも自作関数は避けては通れないので頑張りましょう そもそもまず 関数とは 基本的には 受け取った値に関数によって定められた操作をして その結果の値を返す
kiso2-03.key
座席指定はありません Linux を起動して下さい 第3回 計算機基礎実習II 2018 のウェブページか ら 以下の課題に自力で取り組んで下さい 計算機基礎実習II 第2回の復習課題(rev02) 第3回の基本課題(base03) 第2回課題の回答例 ex02-2.c include int main { int l int v, s; /* 一辺の長さ */ /* 体積 v
Taro-スタック(公開版).jtd
0. 目次 1. 1. 1 配列によるの実現 1. 2 再帰的なデータ構造によるの実現 1. 3 地図情報処理 1. 4 問題 問題 1 グラフ探索問題 - 1 - 1. は データの出し入れが一カ所で行われ 操作は追加と削除ができるデータ構造をいう 出入口 追加 削除 操作 最初 111 追加 111 222 追加 111 222 333 追加 111 222 333 444 追加 111 222
コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol
コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include 2. #include /*troupper,islower,isupper,tolowerを使うため宣言*/ 3. 4. int get_n(char *); 5. void replace(char
PowerPoint Presentation
工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 7 回 2010 年 11 月 18 日 1 今回のテーマ 1: ポインタ 変数に値を代入 = 記憶プログラムの記憶領域として使用されるものがメモリ ( パソコンの仕様書における 512 MB RAM などの記述はこのメモリの量 ) RAM は多数のコンデンサの集合体 : 電荷がたまっている (1)/ いない
Microsoft PowerPoint - prog04.ppt
プログラミング言語 2 第 04 回 (2007 年 05 月 14 日 ) 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 1 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/language/ にアクセスすると 教材があります 2007 年 05 月 14 日分と書いてある部分が 本日の教材です 本日の内容
<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>
C 言語講座第 2 回 作成 : ハルト 前回の復習基本的に main () の中カッコの中にプログラムを書く また 変数 ( int, float ) はC 言語では main() の中カッコの先頭で宣言する 1 画面へ出力 printf() 2 キーボードから入力 scanf() printf / scanf で整数を表示 / 入力 %d 小数を表示 / 入力 %f 3 整数を扱う int 型を使う
プログラミング実習I
プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 [email protected] 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,
cp-7. 配列
cp-7. 配列 (C プログラムの書き方を, パソコン演習で学ぶシリーズ ) https://www.kkaneko.jp/cc/adp/index.html 金子邦彦 1 本日の内容 例題 1. 月の日数配列とは. 配列の宣言. 配列の添え字. 例題 2. ベクトルの内積例題 3. 合計点と平均点例題 4. 棒グラフを描く配列と繰り返し計算の関係例題 5. 行列の和 2 次元配列 2 今日の到達目標
プログラミング及び演習 第1回 講義概容・実行制御
プログラミング及び演習 第 7 回ポインタ ( 教科書第 10 章 ) (2014/05/23) 講義担当情報連携統轄本部情報戦略室大学院情報科学研究科メディア科学専攻教授森健策 本日の講義 演習の内容 ポインタ ポインタ第 10 章 講義 演習ホームページ http://www.newves.org/~mori/14programming ところで, さあ いよいよポインタです コツさえわかれば難しくないので安心してください
PowerPoint Template
プログラミング演習 Ⅲ Linked List P. Ravindra S. De Silva e-mail: [email protected], Room F-413 URL: www.icd.cs.tut.ac.jp/~ravi/prog3/index_j.html 連結リストとは? 一つひとつの要素がその前後の要素との参照関係をもつデータ構造 A B C D 連結リストを使用する利点 - 通常の配列はサイズが固定されている
本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(C 言語 ) サンプル問題 知識科目 第 1 問 (
本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(C 言語 ) サンプル問題 知識科目 第 1 問 ( 知識 4 択 :20 問 ) 1.C 言語ソースプログラムの拡張子は何か 1 c 2 obj 3 exe
1. 入力した正の整数を降順に並べ換えて出力するプログラムを作成せよ プログラムは個別にコンパイルし make コマンドで実行すること 入力データは 50 以下とし 以下の数が混在しているとする 16 進数 : 先頭 1 文字が x または X( エックスの小文字か大文字 ) 8 進数 : 先頭 1
1. 入力した正の整数を降順に並べ換えて出力するプログラムを作成せよ プログラムは個別にコンパイルし make コマンドで実行すること 入力データは 50 以下とし 以下の数が混在しているとする 16 進数 : 先頭 1 文字が x または X( エックスの小文字か大文字 ) 8 進数 : 先頭 1 文字が 0( 零 ) 10 進数 : 先頭 1 文字が 0( 零 ) 以外の数字 1.1 プログラム
