C言語10

Similar documents
Microsoft Word - no12.doc

演算増幅器

Prog1_15th

プログラミング基礎

C言語7

program7app.ppt

gengo1-11

Microsoft Word - no202.docx

Prog1_10th

Microsoft PowerPoint - 09.pptx

Microsoft Word - no206.docx

Microsoft Word - Cプログラミング演習(12)

Microsoft Word - no205.docx

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

Microsoft Word - no13.docx

02: 変数と標準入出力

Microsoft PowerPoint - handout07.ppt [互換モード]

02: 変数と標準入出力

PowerPoint プレゼンテーション

第1回 プログラミング演習3 センサーアプリケーション

DVIOUT

Undestand の解析 Understand の C 言語で抽出できない依存関係について サンプルコードを用いて説明します 確認バージョン Understand 3.0 (Build 640) Understand 3.1 (Build 700) Understand 4.0 (Build 78

Microsoft Word - no15.docx

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

Microsoft PowerPoint ppt

情報処理Ⅰ演習

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

プログラミング基礎

第2回

Microsoft Word - no204.docx

第3回 配列とリスト

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

DVIOUT

memo

,000m 7 CAT

C 資料 電脳梁山泊烏賊塾 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に

Microsoft PowerPoint - CproNt02.ppt [互換モード]

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

Microsoft PowerPoint - 11.pptx

Microsoft PowerPoint pptx[読み取り専用]

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog07.ppt

C言語講座 後半

Microsoft PowerPoint - 12.ppt [互換モード]

データ構造

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(C 言語 ) サンプル問題 知識科目 第 1 問 (

PowerPoint プレゼンテーション

Microsoft PowerPoint - kougi7.ppt

配列, 関数, 構造体

gengo1-10

Microsoft PowerPoint - 12.ppt [互換モード]

Microsoft PowerPoint - 13.ppt [互換モード]

Microsoft Word - no103.docx

PowerPoint プレゼンテーション

Microsoft Word - Training8_データ構造とポインタ.docx

02: 変数と標準入出力

プログラミング基礎

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint - 計算機言語 第7回.ppt

初歩のC言語ターミナル_2014_May.pages

02: 変数と標準入出力

始めに, 最下位共通先祖を求めるための関数 LcaDFS( int v ) の処理を記述する. この関数は値を返さない再帰的な void 関数で, 点 v を根とする木 T の部分木を深さ優先探索する. 整数の引数 v は, 木 T の点を示す点番号で, 配列 NodeSpace[ ] へのカーソル

目次

PowerPoint プレゼンテーション

Microsoft Word - no15.docx

Microsoft Word - 05

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - prog06.ppt

概要 プログラミング論 構造体 構造体 複数の変数を組合わせて, ひとまとめにしたもの 簡単 重要 自己参照型, リスト 重要, 難しい S-1 S-2 新しい構造体の宣言 struct 構造体名 { データ型メ

main

17 1. strucr Potter ( ) Harry Potter and the Philosopher s Stone 1997 English Title : Harry Potter and the Philosopher s Stone : : 1997 #include<stdio

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

ファイル入出力

Microsoft PowerPoint - 5Chap15.ppt

02: 変数と標準入出力

講習No.12

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

講習No.12

Microsoft Word - Training10_プリプロセッサ.docx

Microsoft Word - no14.docx

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

Java プログラミング Ⅰ 11 回目多次元配列 2 次元配列 2 次元配列配列要素が直線上に並ぶ一次元配列に対して 平面上に並ぶ配列要素をもつ配列 直観的には 2 次元配列の準備配列変数の宣言は型と識別子を指定して次のように行う 型識別子 [ ][ ]; または 型 [ ][ ] 識別子 ; 配

目次

memo

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

情報処理 Ⅱ 2007 年 11 月 26 日 ( 月 )

Microsoft PowerPoint - 12Chap16.ppt

講習No.8

PowerPoint プレゼンテーション - 物理学情報処理演習

演習課題No12

6 関数 6-1 関数とは少し長いプログラムを作るようになると 同じ処理を何度も行う場面が出てくる そのたびに処 理を書いていたのでは明らかに無駄であるし プログラム全体の見通しも悪くなる そこで登場す るのが 関数 である 関数を使うことを 関数を呼び出す ともいう どのように使うのか 実際に見て

II 3 yacc (2) 2005 : Yacc 0 ~nakai/ipp2 1 C main main 1 NULL NULL for 2 (a) Yacc 2 (b) 2 3 y

Microsoft Word - no11.docx

ファイル入出力

プログラミング及び演習 第1回 講義概容・実行制御

02: 変数と標準入出力

2. 整数の値を 3 つ 引数として受け取ってそのうち最大の値を返す関数 int max(int a,int b,int c) 3 つの中からの最大値, と値が少ないので, 配列を使わずにごり押しで最大値を求めてみ ました. 配列を使う方法については今までの解答を見ればわかるはずです. その場合受け

1. 入力した正の整数を降順に並べ換えて出力するプログラムを作成せよ プログラムは個別にコンパイルし make コマンドで実行すること 入力データは 50 以下とし 以下の数が混在しているとする 16 進数 : 先頭 1 文字が x または X( エックスの小文字か大文字 ) 8 進数 : 先頭 1

Microsoft PowerPoint - 13th.ppt [互換モード]

Transcription:

C 言語 10 構造体

構造体の記述 例 typedef struct Soseki{ char title[30]; int year; Soseki; 実行結果 題名 : 吾輩は猫である発行年 :1911 Soseki soseki1 = {" 吾輩は猫である ", 1911; printf(" 題名 :%s n", soseki1.title); printf(" 発行年 :%d n", soseki1.year);

typedef struct Soseki{ char title[30]; int year; Soseki; 構造体の配列 実行結果 題名 : 吾輩は猫である発行年 :1905 題名 : 坊ちゃん発行年 :1906 題名 : 草枕発行年 :1906 int i; Soseki soseki[3]={{" 吾輩は猫である ", 1905, {" 坊ちゃん ", 1906, {" 草枕 ", 1906; for(i=0; i<3; i++){ printf(" 題名 :%s n", soseki[i].title); printf(" 発行年 :%d n", soseki[i].year);

#include<string.h> 構造体の配列, 代入 typedef struct Soseki{ char title[30]; int year; Soseki; int i; 実行結果 題名 : 吾輩は猫である発行年 :1905 題名 : 坊ちゃん発行年 :1906 題名 : 草枕発行年 :1906 Soseki soseki[3]; strcpy(soseki[0].title, " 吾輩は猫である "); soseki[0].year = 1905; strcpy(soseki[1].title, " 坊ちゃん "); soseki[1].year = 1906; strcpy(soseki[2].title, " 草枕 "); soseki[2].year = 1906; for(i=0; i<3; i++){ printf(" 題名 :%s n", soseki[i].title); printf(" 発行年 :%d n", soseki[i].year);

構造体と関数 平面上の点として 整数の組 (x, y) からなる構造体 struct Point を定義する 2 つの点 pt1 と pt2 を加える関数 addpoint を定義する このとき 2 点を加えた新しい点 pt3 は pt3.x = pt1.x+pt2.x pt3.y = pt1.y+pt2.y を満たすものとする 最初の例では 関数の引数には 値を渡します 2 番目の例では 関数の引数には ポインタを渡します

typedef struct Point{ int x; int y; Point; struct Point addpoint(point pt1, Point pt2){ struct Point pt3; pt3.x = pt1.x + pt2.x; pt3.y = pt1.y + pt2.y; return pt3; 値渡し 実行結果 pt1 = (2, 3) pt2 = (5, 7) pt3 = (7, 10) Point pt1={2, 3; Point pt2={5, 7; Point pt3; pt3 = addpoint(pt1, pt2); printf("pt1 = (%d, %d) n", pt1.x, pt1.y); printf("pt2 = (%d, %d) n", pt2.x, pt2.y); printf("pt3 = (%d, %d) n", pt3.x, pt3.y);

typedef struct Point{ int x; int y; Point; ポインタ渡し void addpoint(point *pt1, Point *pt2, Point *pt3){ pt3 -> x = pt1->x + pt2->x; pt3 -> y = pt1->y + pt2->y; 実行結果 pt1 = (2, 3) pt2 = (5, 7) pt3 = (7, 10) Point pt1={2, 3; Point pt2={5, 7; Point pt3; addpoint(&pt1, &pt2, &pt3); printf("pt1 = (%d, %d) n", pt1.x, pt1.y); printf("pt2 = (%d, %d) n", pt2.x, pt2.y); printf("pt3 = (%d, %d) n", pt3.x, pt3.y);

構造体と配列と関数 typedef struct Novel{ char title[30]; int year; Novel; struct Novel Soseki(int i){ Novel soseki[3]={{" 吾輩は猫である ", 1905, {" 坊ちゃん ", 1906, {" 草枕 ", 1906; return soseki[i]; 実行結果 題名 : 吾輩は猫である発行年 :1905 題名 : 坊ちゃん発行年 :1906 題名 : 草枕発行年 :1906 int i; for(i=0; i<3; i++){ printf(" 題名 :%s n", Soseki(i).title); printf(" 発行年 :%d n", Soseki(i).year);

構造体と並べ替え typedef struct Pref{ char name[30]; int area; double pop; Pref; void swap(pref *x, Pref *y){ Pref tmp = *x; *x = *y; *y = tmp; int n=3, i, j; Pref t3[3] = {{" 青森 ", 9645,133.5, {" 岩手 ", 15279,129.5, {" 秋田 ", 11636, 105.0; 実行結果 北東北 3 県青森 9645 km^2 133.5 万人岩手 15279 km^2 129.5 万人秋田 11636 km^2 105.0 万人面積の広い順岩手 15279 km^2 129.5 万人秋田 11636 km^2 105.0 万人青森 9645 km^2 133.5 万人 printf(" 北東北 3 県 n"); for(i=0; i<n ; i++) printf("%6s %6d km^2 %6.1f 万人 n", t3[i].name, t3[i].area, t3[i].pop); for(i=0; i<n-1;i++){ for(j=i+1; j<n ;j++){ if(t3[i].area<t3[j].area) swap(&t3[i], &t3[j]); printf(" 面積の広い順 n"); for(i=0; i<n ; i++) printf("%6s %6d km^2 %6.1f 万人 n", t3[i].name, t3[i].area, t3[i].pop);

typedef struct Pref{ unsigned char name[30]; unsigned char kana[30]; Pref; void swap(pref *x, Pref *y){ Pref tmp = *x; *x = *y; *y = tmp; int n=3, i, j; Pref t3[3] = {{" 青森 ", " あおもり ", {" 岩手 ", " いわて ", {" 秋田 ", " あきた "; printf(" 北東北 3 県 n"); printf(" 漢字ひらがな : ひらがな最初 2 文字のコード n"); for(i=0; i<n ; i++) printf("%6s %8s: %d %d %d %d n", t3[i].name, t3[i].kana, t3[i].kana[0], t3[i].kana[1], t3[i].kana[2], t3[i].kana[3]); for(i=0; i<n-1;i++){ for(j=i+1; j<n ;j++){ if(t3[i].kana[1] > t3[j].kana[1]){ swap(&t3[i], &t3[j]); else if(t3[i].kana[1] == t3[j].kana[1]){ if(t3[i].kana[3] > t3[j].kana[3]) swap(&t3[i], &t3[j]); 文字コードと並べ替え 実行結果 北東北 3 県漢字ひらがな : ひらがな最初 2 文字のコード青森あおもり : 130 160 130 168 岩手いわて : 130 162 130 237 秋田あきた : 130 160 130 171 あいうえお順青森あおもり秋田あきた岩手いわて 注 0 番目と 2 番目のコードの値は同じなので まず 1 番目を比較し 次に 3 番目を比較する printf(" あいうえお順 n"); for(i=0; i<n ; i++) printf("%6s %6s n", t3[i].name, t3[i].kana);

構造体のネスト ( 入れ子 ) typedef struct Point{ int x; int y; Point; typedef struct Triangle{ Point p1; Point p2; Point p3; Triangle; 実行結果 1, 2 4, 3 2, 5 // 構造体の初期化 Point point1={1, 2; Point point2={4, 3; Point point3={2, 5; Triangle t1; // 構造体への代入 t1.p1=point1; t1.p2=point2; t1.p3=point3; printf("%d, %d n", t1.p1.x, t1.p1.y); printf("%d, %d n", t1.p2.x, t1.p2.y); printf("%d, %d n", t1.p3.x, t1.p3.y);

構造体のネスト (2) 構造体の配列 typedef struct Laureate{ // 受賞者 char name[30]; char cat[30]; //cat = category Laureate; typedef struct NobelPrize{ int year; Laureate lt[30]; NobelPrize; 実行結果 ノーベル賞 2015 年大村智生理学医学賞梶田隆章物理学 int i; Laureate l1[2] = {{" 大村智 ", " 生理学医学賞 ", {" 梶田隆章 ", " 物理学 "; NobelPrize np1; np1.year=2015; for(i=0; i<2; i++) np1.lt[i] =l1[i]; printf(" ノーベル賞 %d 年 n", np1.year); for(i=0; i<2; i++){ printf( %8s %s n", np1.lt[i].name, np1.lt[i].cat);

構造体のネスト (3) 構造体の多重配列 typedef struct Laureate{ char name[30]; char cat[30]; //cat = category Laureate; typedef struct NobelPrize{ int year; int n; // 受賞者数 Laureate lt[30]; // 受賞者 NobelPrize; int i, j; Laureate nl[4][3]={ {{" 根岸英一 ", " 化学賞 ", {" 鈴木章 ", " 化学賞 ", {"END","", {{" 山中伸弥 ", " 生理学 医学賞 ", {{" 赤﨑勇 ", " 物理学賞 ", {" 天野浩 ", " 物理学賞 ", {" 中村修二 ", " 物理学賞 ", {{" 大村智 ", " 生理学 医学賞 ", {" 梶田隆章 ", " 物理学賞 " ; 実行結果 ノーベル賞 2010 年根岸英一化学賞鈴木章化学賞ノーベル賞 2012 年山中伸弥生理学 医学賞ノーベル賞 2014 年赤﨑勇物理学賞天野浩物理学賞中村修二物理学賞ノーベル賞 2015 年大村智生理学 医学賞梶田隆章物理学賞 NobelPrize np[4]; np[0].year=2010; np[0].n=2; np[1].year=2012; np[1].n=1; np[2].year=2014; np[2].n=3; np[3].year=2015; np[3].n=3; for(i=0; i<4; i++){ for(j=0; j<3; j++) np[i].lt[j] =nl[i][j]; for(i=0; i<4; i++){ printf(" ノーベル賞 %d 年 n", np[i].year); for(j=0 ; j< np[i].n ; j++){ printf(" %8s %s n", np[i].lt[j].name, np[i].lt[j].cat);