我需要让用户在c中键入long long int
值,然后评估此值示例
long long int x = 1234567;
然后我的评价需要知道没有。每个位置的元素和数字:
if(digit at 2nd position == 2)
{
do something;
}else{
do something else;
}
我曾尝试将其转换为数组,但问题是我如何提前获得数组大小,当我不知道用户输入的内容时,例如一个用户可能键入1234,其他人可能输入211212121212 ..
答案 0 :(得分:1)
将long long
打印到sprintf
的字符串,然后按字符访问结果。
编辑:如果您使用此方法,您还必须处理负值情况。
答案 1 :(得分:1)
将数字转换为字符串,然后在索引1处使用char来检查第二个数字,如下所示:
char buf[20] = 0;
long long int number = 1234567LL;
snprintf(buf, 20, "%lld", number);
if (buf[1] == '2'){ // second char is 2
}
else{
}
代码:
#include<stdio.h>
char* str(char* buf, long long int number)
{
snprintf(buf, 21, "%lld", number);
return buf;
}
int main(){
long long int number = 1234567LL;
char buf[20] = "";
if(str(buf, number)[1] == '2'){
printf("yes");
}
else{
printf("No");
}
printf("\n");
return 0;
}
答案 2 :(得分:1)
在数学上你可以使用ceil(log10())来确定数字的数量,和/或一系列的除法/模数/减法来确定X位置的数字值。如上所述,转换为char数组将是最简单的解决方案(sprintf,itoa)。
答案 3 :(得分:1)
#include <stdio.h>
int main(void)
{
long long int x = 1234567, i = x;
while (i >= 100) i /= 10;
printf("%lld\n", i % 10); /* prints the second digit */
return 0;
}
或者把它放在一个函数中(也适用于底片):
#include <stdio.h>
#include <math.h>
/* returns x digit or -1 */
int xdigit(long long int x, int pos)
{
long long int e = pow(10, pos);
if (x < 0) x = -x;
if (x < e / 10) return -1;
while (x >= e) x /= 10;
return x % 10;
}
int main(void)
{
long long int x = 1234567;
printf("%s\n", xdigit(x, 2) == 2 ? "yes" : "no");
return 0;
}
必须使用-lm
编译math.h
答案 4 :(得分:0)
尝试使用下面的
double num = 23.345;
int intpart =(int)num;
double decpart = num - intpart;
printf(“Num =%f,intpart =%d,decpart =%f \ n”,num,intpart,decpart);
现在你已经从十进制和整数部分去了字符串...现在通过将十进制乘以10继续计算并将每个保存在一个数组中(比方说)。 的替代地强> 你也可以将长十进制乘以1后跟数字的数字(比如说小数点后的5点为5)&amp;以后可以使用%opeartor。
答案 5 :(得分:0)
你真的需要一个很长的int吗?如果用户输入一个数字作为字符串,
char bignum[64];
int ii
fgets(bignum, sizeof(bignum), stdin);
for (ii = 0; ii < strlen(bignum); ++ii)
printf("character %d is %c", ii, bignum[ii]);
答案 6 :(得分:-1)
please give me comment on the code
Thy this code it uses division to find of number of digits
and uses division and modulo to digits at different positions
#include <stdio.h>
void main()
{
long long int i,x = 1234567;
int n=0;
i=x; //make a copy of x
//block to find number of digit
for(;i!=0;i/=10)
{
n++;
}
printf("number of digits %d\n",n);
//Display digits
for(;x!=0;x/=10,n--)
{
printf("element at %d is %d\n",n,x%10);
}
}