マガジンのカバー画像

C言語

63
C言語に関するあれこれ
運営しているクリエイター

#C言語教室

C言語教室 第26回 - いろいろなソート(回答提出)(続)

C言語教室 第26回 - いろいろなソート(回答提出)(続)

【2023/6/6 追記】
このソート記事はイマイチ。
ソートについてはこちらも是非。

先日、こちらの課題を回答しました。

今回は続編です。

昔書いたことがあるソートロジックを今一度書いてみました。

バブルソートと同じく総当たりでチェックしますが、バブルソートと言えるのかどうかわからない。
考え方は単純。

まず一番小さい数値を探して先頭におく。

終われば次に小さい数値を探して2番目にお

もっとみる
C言語教室 第26回 - いろいろなソート(回答提出)

C言語教室 第26回 - いろいろなソート(回答提出)

こちらの課題回答です。

思いっきりサボりまくって、課題記事のコードを流用し、ちょっとだけ修正して終わりました。文字列はどうしようかと悩みに悩んで(笑)、好きな小説からの引用です。古典の名作。

課題記事のコメントで遊月さんも仰っていましたけど、私が把握していたバブルソートもこれとは少し違います。それについてはまた改めて書いてみようかな。

コード#include <stdio.h>void bu

もっとみる
C言語教室 第24回 - 関数ポインタとは(回答提出)

C言語教室 第24回 - 関数ポインタとは(回答提出)

こちらの記事の課題回答です。

課題

コメント関数ポインタって、書き方がなかなか覚えられなくって。いつも、過去コードを見直して書いたりします。そんなに頻繁に書かないし、どこに()をつければいいのか、なんだか直感的にわかりにくいというか。何度書いてもなれないなぁ。最近は「pfunc()」と書けるとは知らなかった。

コード#include <stdio.h>// 課題// 1. まず整数の引き数を

もっとみる
C言語教室 第17回 - 共用体とは何か(回答提出)

C言語教室 第17回 - 共用体とは何か(回答提出)

こちらの記事の課題に対する回答です。

課題例によって箇条書きにする。

int 型が4バイトであるとする。

1バイトずつアクセスできる共用体を宣言する。

整数の値を先頭バイトから1バイトずつ16進数で出力する関数を書きなさい。

さあ。
始めましょう。

プログラム#include <stdio.h>#include <limits.h>union uniAnyType{ int i; ch

もっとみる
C言語教室 第15回 - 構造体の基本 (回答提出)

C言語教室 第15回 - 構造体の基本 (回答提出)

こちらの記事の課題回答です。

課題プログラムthree_dimension.h

struct Point3d{ int x; int y; int z;};double distance3d(const struct Point3d*const pa, const struct Point3d*const pb);

three_dimension.c
#include <stdlib.h>

もっとみる
C言語教室 第12回(続) - 回答提出

C言語教室 第12回(続) - 回答提出

こちらの記事の課題回答です。

以下、
・引数チェックなし
・const なし
・エラー処理なし
です!

では、順番に。

課題1コード

int area_rect(int side1, int side2){ return (side1 * side2);}

テストと結果

int area = area_rect(4, 5);printf("area of rectangle (4

もっとみる
C言語教室 第11回 - プリプロセッサとマクロ 答案提出

C言語教室 第11回 - プリプロセッサとマクロ 答案提出

課題えーっと。
書いたのがこのコード。
#include <stdio.h>#define MAX(x,y) ((x) > (y) ? (x) : (y))int main(){ int a, b; int max_ab, max_ab_inc_f, max_ab_inc_b; a = 537; b = 9274; max_ab = MAX(a, b);

もっとみる
C言語教室 第10回 文字種判定 答案提出

C言語教室 第10回 文字種判定 答案提出

今回も考えてみました。

コード#include <stdio.h>#include <string.h>#include <ctype.h>/* 英小文字を英大文字に書き換える */void to_strupper(char str[]){ int len = strlen(str); int i; for (i = 0; i < len; i++) { s

もっとみる
C言語教室 第8回 回答

C言語教室 第8回 回答

できたできた(笑)

課題回答
#include <string.h>#include <stdlib.h>void string_string( char*const ss, const char*const s1, const char*const s2){ if (ss == NULL) { return; } ss[0] = '\0

もっとみる
「C言語教室 第7回」ー後書きー

「C言語教室 第7回」ー後書きー

先日の「C言語教室 第7回 - 動的なメモリ割り当て」の回答を取り上げていただきました。
ありがとうございます。

そうすると、またいろいろ考えてしまふ(笑)。
もう少し書き足してみます。

動的メモリ今回は動的メモリに関する課題でした。
私は、
・動的にメモリを確保する関数と、
・解放する関数を
2つ用意しましたが、実際の設計では少なくとも更にもう一つ被せます。特に複数人で開発する場合、確保解放

もっとみる