评估c中的“long long int”

时间:2014-01-04 08:02:46

标签: c types

我需要让用户在c中键入long long int值,然后评估此值示例

long long int x = 1234567;

然后我的评价需要知道没有。每个位置的元素和数字:

if(digit at 2nd position == 2)
{
do something;
}else{
 do something else;  
}

我曾尝试将其转换为数组,但问题是我如何提前获得数组大小,当我不知道用户输入的内容时,例如一个用户可能键入1234,其他人可能输入211212121212 ..

7 个答案:

答案 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);
}
}