#include <stdio.h>
#include <math.h>
int main () {
float a, b, c, s, ar;
s=((a+b+c)/2);
printf("Ingrese los lado del triangulo");
scanf("%f%f%f",&a,&b,&c);
ar=(sqrt(s*(s-a)*(s-b)*(s-c)));
printf("el perimetro es %f",ar);
return 0;
}
我不明白为什么在编译时会抛出此错误
tmp / ccs6PFsP.o:Enlafunciónmain':
ejercicio 34.c :(。text + 0x87):referencia asqrt'sin definir collect2:错误:ld返回1退出状态
答案 0 :(得分:2)
要在C中使用数学库,请将package com.example.android.miwok;
import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.media.Image;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import static android.media.AudioManager.AUDIOFOCUS_GAIN;
import static android.media.AudioManager.AUDIOFOCUS_LOSS;
import static android.media.AudioManager.AUDIOFOCUS_LOSS_TRANSIENT;
import static android.media.AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK;
import static android.view.View.GONE;
public class WordAdapter extends ArrayAdapter<Word> {
private static final String LOG_TAG = WordAdapter.class.getSimpleName();
private int mColorResourceId;
private MediaPlayer mMediaPlayer;
private final static int MAX_VOLUME = 100;
public WordAdapter(Activity context, ArrayList<Word> words, int
colorResourceId) {
super(context, 0, words);
mColorResourceId = colorResourceId;
}
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
.
.
.
}
标志传递给编译器:
lm
然后你的程序将编译并链接到数学库。
答案 1 :(得分:1)
正如所指出的,在编译时使用-lm
标志,虽然看起来逻辑不正确。
为了使您的程序有效,您应该插入此声明
s=((a+b+c)/2);
在scanf
声明之后。
在您的代码中,您甚至在从终端读取值之前计算a
,b
和c
的总和。