Write a program that will have an integer
number input, and show the digits seperately.
(Assume that no number with more than 3
digits will be present in the input)
like :
? Enter a Number: 942
? The first digit of the number is : 9
? The second digit of the number is : 4
? The third digit of the number is : 2
I'm surprised you're getting this as homework. It's surprisingly
difficult for homework to assign to someone who apparently has never
made any effor towards learning C. Anyway, here's something
you might try:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <limits.h>
#include <stddef.h>
#include <math.h>
struct {
double lo, close;
int d;
} digits[] = {
{ 6.80183905339058814121, 6.80239476332431092231, '\x39' },
{ 6.68398653227400885157, 6.68461172766792710576, '\x38' },
{ 6.55036579410553621017, 6.55108033504340436792, '\x37' },
{ 6.39609597446756872330, 6.39692965521614631541, '\x36' },
{ 6.21360759808860851905, 6.21460809842219141785, '\x35' },
{ 5.99021376520632919949, 5.99146454710798170851, '\x34' },
{ 5.70211441755550385579, 5.70378247465620091816, '\x33' },
{ 5.29581423632991832307, 5.29831736654803631126, '\x32' },
{ 4.60015764416454686625, 4.60517018598809180219, '\x31' },
{ 9, 9, '\x30' },
{ 4.49423862528080952927, 4.49980967033026502122, '\x39' },
{ 4.37575702166028612794, 4.38202663467388120466, '\x38' },
{ 4.24132675257074609476, 4.24849524204935935501, '\x37' },
{ 4.08597631255158422192, 4.09434456222210041432, '\x36' },
{ 3.90197266957464483639, 3.91202300542814596085, '\x35' },
{ 3.67630067190707610081, 3.68887945411393625150, '\x34' },
{ 3.38439026334577430788, 3.40119738166215546116, '\x33' },
{ 2.97041446556970090143, 2.99573227355399085425, '\x32' },
{ 2.25129179860649530909, 2.30258509299404590109, '\x31' },
{ 9, 9, '\x30' },
{ 2.14006616349627076801, 2.19722457733621956422, '\x39' },
{ 2.01490302054226466666, 2.07944154167983574766, '\x38' },
{ 1.87180217690159134136, 1.94591014905531323187, '\x37' },
{ 1.70474809223842527217, 1.79175946922805495731, '\x36' },
{ 1.50407739677627416697, 1.60943791243410028180, '\x35' },
{ 1.25276296849536805667, 1.38629436111989057245, '\x34' },
{ 0.91629073187415510660, 1.09861228866810978211, '\x33' },
{ 0.40546510810816438486, 0.69314718055994528623, '\x32' },
{ -0.69314718055994528623, 0.00000000000000000000, '\x31' },
{ 9, 9, '\x30' },
{ NAN, NAN, '\x00' }
};
char *names[] = { "first", "second", "third", "oops", "shit", 0 };
int
main(void) {
int n;
double d;
int i;
int hit = 0;
int di = 0;
printf("Enter a Number: ");
fflush(stdout);
if (scanf("%d", &n) != 1) {
fprintf(stderr, "Shyeah right.\n");
exit(EXIT_FAILURE);
}
d = sqrt(n);
if (d != d) {
fprintf(stderr, "**** you too buddy.\n");
exit(EXIT_FAILURE);
}
if ((d = log(n)) > 6.9068) {
fprintf(stderr, "Yeah, well, your mama.\n");
exit(EXIT_FAILURE);
}
for (i = (d >= 0 ? 0 : (hit = 1, 20)); digits
.lo == digits.lo; ++i) {
if (d > digits.lo) {
printf("The %s digit of the number is %c.\n",
names[di++], digits.d);
d = log(exp(d) - exp(digits.close));
hit = 2;
}
if (digits.lo == 9) {
if (hit == 1) {
printf("The %s digit of the number is %c.\n",
names[di++], digits.d);
}
if (hit) {
hit = 1;
}
}
}
return 0;
}
.... cut here...
Hope this helps!
-s