1. ホーム
  2. c

[解決済み] 基本的なC言語プログラムに関する2つの質問

2022-02-17 04:44:14

質問内容

1.

3文字のpassCodeに数字が含まれている場合、hasDigitをtrueに設定します。

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

int main(void) {
   bool hasDigit;
   char passCode[50];

   hasDigit = false;
   strcpy(passCode, "abc");

   /* Your solution goes here  */

   if (hasDigit) {
      printf("Has a digit.\n");
   }
   else {
      printf("Has no digit.\n");
   }

   return 0;
}

私が試したこと(/* Your solution goes here */の代わりは。

if (isdigit(passCode) == true) {
    hasDigit = true;
}
else {
    hasDigit = false;
}

テスト時

abc

は動作しますが、テスト時に

a 5

は動作しません。

2.

2文字の文字列passCodeの中のスペース''を'_'に置き換える。与えられたプログラムの出力例。

1_

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

int main(void) {
char passCode[3];

   strcpy(passCode, "1 ");

   /* Your solution goes here  */

   printf("%s\n", passCode);
   return 0;
}

私が /* Your solution goes here */ の代わりに入れたものは。

   if (isspace(passCode) == true) {
      passCode = '_';
   }

そして、コンパイルに失敗する。

いろいろとありがとうございました。

どのように解決するのですか?

ここでは、forループの使い方を説明します。

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

int main(void) {
   bool hasDigit;
   char passCode[50];

   hasDigit = false;
   strcpy(passCode, "abc");

   /* Your solution goes here  */
   for (int i=0; passCode[i]; i++)
       if (isdigit(passCode[i]))
           hasDigit = true;

   if (hasDigit) {
      printf("Has a digit.\n");
   }
   else {
      printf("Has no digit.\n");
   }

   return 0;
}