c言語の質問です 入力された文字列がすべて数字ならばその数値の2倍の数値で表示されるプログラムはどのようにつくれますか 実行例 文字列を入力してください 325

C言語関連107閲覧

ベストアンサー

0

ThanksImg質問者からのお礼コメント

上手くいきました。ありがとうございます。

お礼日時:5/28 14:33

その他の回答(4件)

0

#define _CRT_SECURE_NO_WARNINGS // Visual Studio only #include <stdio.h> int main(void) {     char s[100], dmy;     int n;     for (;;) {         printf("文字列を入力してください ");         scanf("%s", s);         if (sscanf(s, "%d%c", &n, &dmy) == 1)             printf("2倍すると%dです。\n\n", 2*n);         else             printf("数値ではありません。\n\n");     } }

0

#include <stdio.h> #include <ctype.h> int main(void) { char s[250] = {0}, c; int i, f = 0; for(i = 1; (c = getchar()) != '\n' && c != EOF; ++ i){ if(f = !isdigit(c)) break; if((c = (c - '0') * 2) > 9) ++ s[i - 1], c -= 10; s[i] = c; } if(!f && i > 1){ int j; for(j = !s[0]; j < i; ++ j) putchar('0' + s[j]); } else puts("数値ではありません"); return 0; }

訂正 #include <stdio.h> #include <ctype.h> int main(void) { char s[250] = {0}; int i, f = 0; for(i = 1; i < 250 && (s[i] = getchar()) != '\n' && s[i] != EOF; ++ i){ if(f = !isdigit(s[i])) break; if((s[i] = (s[i] - '0') * 2) > 9) ++ s[i - 1], s[i] -= 10; } if(!f && i > 1){ int j; for(j = !s[0]; j < i; ++ j) putchar('0' + s[j]); } else puts("数値ではありません"); return 0; }

0

こんな感じでどうかしら? #include <ctype.h> #include <stdio.h> #include <stdlib.h> #define ___ int str_isdigit(const char *s) { ___ while (isdigit(*s)){ ___ ___ ++s; ___ } ___ return *s == 0; } void print_twice(const char *s) { ___ unsigned int digit; ___ unsigned int prev; ___ if (!str_isdigit(s)){ ___ ___ putchar('0'); ___ ___ return; ___ } ___ while (*s && (*s == '0')){ ___ ___ ++s; ___ } ___ if (*s == 0){ ___ ___ putchar('0'); ___ ___ return; ___ } ___ prev = (*s++ - '0') * 2; ___ if (prev > 9){ ___ ___ putchar('1'); ___ ___ prev -= 10; ___ } ___ while (*s){ ___ ___ digit = (*s++ - '0') * 2; ___ ___ if (digit > 9){ ___ ___ ___ ++prev; ___ ___ ___ digit -= 10; ___ ___ } ___ ___ putchar('0' + prev); ___ ___ prev = digit; ___ } ___ putchar('0' + prev); } int main(void) { ___ char s[256]; ___ printf("文字列を入力してください"); ___ if (scanf("%255s", s) != 1){ ___ ___ return EXIT_FAILURE; ___ } ___ if (str_isdigit(s)){ ___ ___ printf("2倍すると"); ___ ___ print_twice(s); ___ ___ puts("です。"); ___ } else { ___ ___ puts("数値ではありません。"); ___ } ___ return EXIT_SUCCESS; }

0

(安納芋さん) 例: #include <stdio.h> #include <stdlib.h> #include <ctype.h> int isnumeric(char *a){ while(*a){ if(isdigit(*a)==0)return 0; a++; } return 1; } int main(void){ char s[32]; printf("文字列を入力してください "); scanf("%s",s); if(isnumeric(s)){ printf("2倍すると%dです。\n",atoi(s)*2); }else{ puts("数値ではありません。"); } return 0; }