Heim  >  Artikel  >  Backend-Entwicklung  >  C-Programm zur Darstellung von Zahlen im Zähler und Nenner im String-Format

C-Programm zur Darstellung von Zahlen im Zähler und Nenner im String-Format

WBOY
WBOYnach vorne
2023-09-01 16:41:071408Durchsuche

C-Programm zur Darstellung von Zahlen im Zähler und Nenner im String-Format

Frage

Finden Sie den Bruchteil zweier vom Benutzer zur Laufzeit angegebener Ganzzahlen und stellen Sie den Zähler und den Nenner mithilfe der dynamischen Speicherzuweisung im Zeichenfolgenformat dar.

Lösung

Die Lösung, um Zähler und Nenner im String-Format auszudrücken, lautet wie folgt:

Beispiel -

  • Die Eingabe lautet wie folgt:
Numerator1 = 3
Denominator2 = 2

numerator2 = 4
denominator2 = 7
  • Das Ausgabeergebnis lautet wie folgt: −
Fractional part1: 1.5
Fractional part2: 0.(571428)

Beispiel

Das folgende Programm ist in C geschrieben, um Zähler und Nenner im String-Format darzustellen

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
char* fractionToDecimal(int numerator, int denominator) {
   char *p;
   int psz, n, *dec, dsz, x;
   long long num, den, k, f;
   int i, repeat_at;
   int neg = 0;
   psz = dsz = 100; n = x = 0;
   p = malloc(psz * sizeof(char));
   //assert(p);
   neg = ((numerator > 0 && denominator < 0) ||
   (numerator < 0 && denominator > 0)) ? 1 : 0;
   num = numerator;
   den = denominator;
   num = (num < 0) ? -num : num;
   den = (den < 0) ? -den : den;
   k = num / den;
   f = num % den;
   if (neg && (k || f)) p[n ++] = &#39;-&#39;;
      n += sprintf(&p[n], "%lld", k);
   if (!f) {
      p[n] = 0;
      return p;
   }
   p[n ++] = &#39;.&#39;;
   dec = malloc(dsz * sizeof(int));
   repeat_at = -1;
   if (f < 0) f = -f;
   while (f) {
      for (i = 0; i < x; i += 2) {
         if (dec[i] == f) {
            repeat_at = i;
            goto done;
         }
      }
      if (x + 1 >= dsz) {
         dsz *= 2;
         dec = realloc(dec, dsz * sizeof(int));
      }
      dec[x ++] = f;
      f *= 10;
      k = f / den;
      dec[x ++] = k;
      f = f % den;
   }
   done:
   for (i = 0; i < x; i += 2) {
      if (n + 3 > psz) {
         psz *= 2;
         p = realloc(p, psz * sizeof(char));
      }
      if (repeat_at == i) {
         p[n ++] = &#39;(&#39;;
      }
      p[n ++] = &#39;0&#39; + dec[i + 1];
   }
   if (repeat_at != -1) p[n ++] = &#39;)&#39;;
      p[n ++] = 0;
   free(dec);
   return p;
}
int main(void){
   int n,d;
   printf("enter numerator1 and denominator1:");
   scanf("%d%d",&n,&d);
   printf("n = %d, d = %d ", n, d);
   printf("</p><p>Fractional part1: %s </p><p>",fractionToDecimal(n, d));
   printf("enter numerator2 and denominator2:");
   scanf("%d%d",&n,&d);
   printf("</p><p>n = %d, d = %d ", n, d);
   printf("</p><p>Fractional part2: %s</p><p> ",fractionToDecimal(n, d));
   return 0;
}

Ausgabe

Wenn das obige Programm ausgeführt wird, erzeugt es das folgende Ergebnis: −

enter numerator1 and denominator1:4 5
n = 4, d = 5
Fractional part1: 0.8
enter numerator2 and denominator2:5 9

n = 5, d = 9
Fractional part2: 0.(5)

Das obige ist der detaillierte Inhalt vonC-Programm zur Darstellung von Zahlen im Zähler und Nenner im String-Format. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen