3
1
paiza×Qiita記事投稿キャンペーン「プログラミング問題をやってみて書いたコードを投稿しよう!」

paiza×Qiita コラボキャンペーン 「Dランク問題:文字の一致」をC言語で解いてみました

Posted at

paiza×Qiita コラボキャンペーンが開催されているとのことで、遅ればせながら参加してみました。
今回(というよりスキルチェック全て)C言語で回答しています。

というのも初めて学んだプログラミング言語がC言語だったので、ほぼ何も考えなくても書けるというのが理由です。

同じ問題をPythonなどで解いてみようと挑戦はするのですが、英語とかと同じようになかなか新しい言葉が身につかず困っています。

なんとか他の言語を習得して、Web系のフロントエンド〜バックエンドまでこなせる技術を身に付けたいものです。

さて、本題ですが今回は以下のDランク問題を解いています。
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str

以下が文字列の比較をC言語で行った場合のコードとなります。

文字の一致.rb
#include <stdio.h>
#include <string.h>
int main(void){

    char a[100],b[100];
    
    scanf("%s", a);
    scanf("%s", b);
    
    if(strcmp(a,b)==0){
        printf("OK");
    }
    else{
        printf("NG");
    }
    return 0;
}

あまり需要はないと思いますが、せっかくなので一応解説してみます。

#include <stdio.h>
#include <string.h>

この2行はC言語のライブラリファイルを宣言している構文となります。
通常は「stdio.h」のみですが、今回は文字列比較のためにstrcmp関数を使用したので「string.h」も宣言しています。

main関数.rb
int main(void){

    char a[100],b[100];
    
    scanf("%s", a);
    scanf("%s", b);
    
    if(strcmp(a,b)==0){
        printf("OK");
    }
    else{
        printf("NG");
    }
    return 0;
}

こちらが実際に動作するmain関数になります。
それぞれ解説していきます。

    char a[100],b[100];

この部分は使用する変数を宣言しています。
今回は2つの文字列a、bを比較するので、char型の変数を2つ宣言しています。
Pythonとか宣言しなくても変数を使える言語もありますが、C言語は宣言していない変数は使用できないので、プログラム内で変数を使う場合は必須となります。

    scanf("%s", a);
    scanf("%s", b);

こちらは外部入力された文字列を変数に代入しています。
「%s」は文字列の代入時に使用します。
(他にも「%d」や「%c」など、代入する型によって%の後ろが異なる文字になります)

    if(strcmp(a,b)==0){
        printf("OK");
    }
    else{
        printf("NG");
    }

この部分で文字列の比較をしています。

strcmp関数はaとbの文字列が一致している場合「0」を返すので、「0」が返ってきた場合は一致なので「OK」、それ以外が返ってきた場合は「NG」を出力するようにしています。

一応解説(っぽいもの)を記載してみましたが、C言語は今となっては古い言語なので知りたい方も少ないかな、と思っています。

同じ問題を他の言語で解いてみたものも今後解説してみようと思っていますので、もしよかったらご覧ください。

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1