与えられた数字のケタ数
Posted feedbacks - C
0が入力されたときは、
ケタ数1、最大桁の位1で良かったでしょうか。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <stdio.h>
#include <math.h>
int main()
{
unsigned long input_data;
int digit;
printf("正の整数を入力してください : ");
scanf("%ld", &input_data);
/* 0と入力されたとき対策 */
if (input_data != 0) {
digit = 0;
}
else {
digit = 1;
}
while (input_data > 0) {
input_data /= 10;
digit++;
}
printf("ケタ数 : %d\n", digit);
printf("最大桁の位 : %d\n", (int)pow(10, digit-1));
return 0;
}
|
まず使う機会がない(というか使うべきではない)__int64型を、さらにunsignedで使ってみました☆
1 2 3 4 5 6 7 8 | #include<stdio.h>
int main(void){
unsigned __int64 x,y=1;
int z=1;
for(printf("正数="),scanf("%I64d",&x);x>9;z++,y*=10,x/=10);
printf("桁数=%d\n最大=%I64u\n",z,y);
return 0;
}
|
ううむw なぜかpow関数を自作したくなり、作ってしまったw あまり良くないコードかもしれませんが、みせしめのため投稿(ノ∀`)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <stdio.h>
#include <stdlib.h>
int pow();
int main(int argc, char **argv)
{
if (argc != 2) {
fprintf(stderr, "error\n");
exit(1);
}
int i;
int digit = 0;
i = atoi(argv[1]);
if (i < 0)
i = -i;
while (i > 0) {
i /= 10;
digit++;
}
printf("[%d, %d]\n", digit, pow(10, (digit - 1)));
exit(1);
}
int pow(int x, int y)
{
int t = 1;
while (y > 0) {
t *= x;
y--;
}
return t;
}
|
特に難しい事をする事もなく。
1 2 3 4 5 6 7 8 9 | #include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
printf("[%d, 1%.*0d]", strlen(argv[1]), strlen(argv[1])-1, 0);
return EXIT_SUCCESS;
}
|


susu
#3396()
Rating0/0=0.00
このお題はsusuさんの投稿です。ご投稿ありがとうございます。
[ reply ]