0

どちらがファイル内にあるかを分離-51.235して、 - 、 51 、 .235 として配置する必要があります。私の問題は、ファイルから読み取ってコードブロックで印刷しようとすると、 int として配置し、同時に float できることです。時間なので、int (51) と float (51.235) を減算できます。また、記号を文字としてどのように分離できますか? これは私がこれまでに持っているものです

if (comand == 'S')
{
  fscanf(entrada, "%d %f",&y, &a);
  printf("\n\nthe separate number is: %d , %f",y,a); 
}

そして、それは私に与えます: 個別の番号は:-51です0.235000(末尾の 3 つのゼロを削除するにはどうすればよいですか?)

メモ帳に次のように表示されます。

S -51.235
4

4 に答える 4

1

ほんの数ステップ:

  1. Positiveかどうかを確認し、YES の場合:-
  2. あなたの数 = あなたの数の絶対値 (正の場合は削除し、-そうでない場合は何も削除しません)。
  3. intに変換して、小数点なしで数値を取得します
  4. decimal を取得するには:元の FloatInt値で減算するだけです。結果 = 0.XXX

これらすべてを 1 行で:

float num = -51.235555;
printf("%c %d %.3f", ((num > 0.0 ) ? ' ' : '-'), (int)num, (num - (float)((int)num)));
于 2012-07-13T15:47:05.630 に答える
1

次のように実行できます。

#include<stdio.h>
#include<math.h>

int main(void)
{
  float num = -51.235;
  char sign;
  int intpart;
  float floatpart;

  sign=(num>=0.00f)?'+':'-';
  intpart=floor(fabs(num));
  floatpart=fabs(num)-intpart;
  printf("%c,%d,%g",sign,intpart,floatpart);
  return 0;
}
于 2012-08-23T15:41:40.153 に答える
0
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

char getChar(char **p){
    return *(*p)++;
}

void skipSpace(char **p){
    while(isspace(getChar(p)));//skip space char
    --(*p);//unget
}

char getSign(char **p){
    if(**p=='+' || **p=='-') return *(*p)++;
    return ' ';
}

void getNatural(char **p, char *buff){
    while(isdigit(**p))
        *buff++=*(*p)++;
    *buff='\0';
}

void getFloatPart(char **p, char *buff){
    char point;
    point = getChar(p);
    if(point != '.'){
        *buff = '\0';
    } else {
        *buff++ = point;
        getNatural(p, buff);
    }
}

void separate_float(char **p, char *sign, char *int_part, char *float_part){
    skipSpace(p);
    *sign = getSign(p);
    getNatural(p, int_part);
    getFloatPart(p, float_part);
}

int main(){
    char line[128]="S -51.235";
    char *p = line;
    char command;
    char sign, int_part[32], float_part[32];

    command = getChar(&p);
    if(command == 'S'){
        separate_float(&p, &sign, int_part, float_part);
        printf("%c,%s,%s\n", sign, int_part, float_part);//-,51,.235
        printf("%d %g\n", atoi(int_part), atof(float_part));//51 0.235
    }
    return 0;
} 
于 2012-07-13T20:08:15.783 に答える
0

質問:そしてそれは私に与えます:別の数字は: -51 , 0.235000 (どうすれば最後の3つのゼロを削除できますか?)

最後の 3 つのゼロを削除する答えは?

printf("\n\nthe separate number is: %d , %.3f",y,a); 
于 2012-07-13T15:23:28.937 に答える