J'ai besoin de l'apport d'un nombre comme: 200939915Comment supprimer le premier nombre d'un nombre entier?
Après avoir fait cela, que je sais, je dois enlever le premier numéro il devient: 00939915
Quelle est la meilleure façon de le faire?
J'ai besoin de l'apport d'un nombre comme: 200939915Comment supprimer le premier nombre d'un nombre entier?
Après avoir fait cela, que je sais, je dois enlever le premier numéro il devient: 00939915
Quelle est la meilleure façon de le faire?
char *c = "200939915";
char *d = c + 1;
+1; Si vous voulez traiter le nombre comme une chaîne, faites-en une chaîne. – tenfour
N'oubliez pas que 'sizeof (d)! = Sizeof (c)' –
Quand je vais imprimer le nouveau caractère, il est vide? –
Une autre méthode, bien que j'aime Matt Kane mieux:
unsigned long n = 42424242;
n = n % (unsigned long)pow(10.0, (double)floor(log10(n)));
// n = 2424242;
'pow' renvoie un double qui n'est pas valide avec le ''% opérateur '' Cette approche est en principe sujette à des problèmes d'arrondis Essayez 'printf ("% lld \ n ", (long long) pow (10,18)); 'ou alors –
Hey ... Pourquoi ai-je obtenir -1? –
Je vais probablement attirer les downvoters, mais voici ce que je ferais:
#include <iostream>
#include <math.h>
int main()
{
int number;
std::cin >> number;
int temp = number;
int digits = 0;
int lastnumber = 0;
while(temp!=0)
{
digits++;
lastnumber = temp % 10;
temp = temp/10;
}
number = number % (lastnumber * (int)pow(10,digits-1));
std::cout << number << std::endl;
return 0;
}
évidemment puisque vous voulez il en c changer std::cin
à scanf
(ou autre) et std::cout
à printf
(ou autre). Gardez à l'esprit cependant que si vous voulez que les deux 00 restent dans le côté gauche du nombre, la réponse de Kane est ce que vous devriez faire. Cheers
Ne vous inquiétez pas, je ne vais pas downvote. :) Vous pouvez toujours wiki de la communauté. –
est ce devoir? – tenfour
Non. Travailler sur un projet personnel pour m'aider à apprendre C. –