1. 程式人生 > >C語言sqrt函式

C語言sqrt函式

今天做Naive algorithm輸出素數時用到了“sqrt()”函式。用此函式需要先匯入標頭檔案#include<math.h>

這個是修改後的程式碼:

#include<stdio.h>
#include<math.h>
#include<conio.h>
int start = 101;
int max,i,n;
void main(){
for(n = start; n < start + 2000; n += 2)
{
max = sqrt((double)n);
for(i = 2; i <= max; i += 1)
{
if ((n % i) == 0)
break;
if (i == max)
printf("%d ",n);
}
}
getch();
}

起初我寫的是max = sqrt(n);

編譯總是提示出錯:對過載函式的呼叫不明確。

後來得知,雖然C語言是沒有過載的,但我用的是VS2010的C++編譯器來編寫的C語言。

C++中sqrt有兩個過載函式,一個引數是double,另一個是float。

由於傳入引數int,在預設的隱式型別轉換中int可以轉換成float,也可以轉換成double,所以編譯器就不知道programmer究竟想呼叫哪個了。

所以我用了強制型別轉換來解決問題。

下面附上C語言中隱式型別轉換規則

相關推薦

C語言sqrt函式

今天做Naive algorithm輸出素數時用到了“sqrt()”函式。用此函式需要先匯入標頭檔案#include<math.h> 這個是修改後的程式碼: #include<stdio.h> #include<math.h> #incl

C語言 trim函式實現

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> //去除尾部空格 char *rtrim(char *str) { if(str == N

C語言函式宣告、形參、實參

函式原型: 原型prototype是函式的宣告;描述了函式的返回值與引數;  函式原型說明了兩點: 1、該函式的返回值 2、該函式的引數及其型別 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 函式的引數: 引數到底是什

C語言isalpha函式

看程式碼: #include<ctype.h> #include<stdio.h> #include <iostream> using namespace std; int main(void){ char ch; int tot

c 語言函式遞迴來實現求 k 的 n 次方

       如果求取k的n次方,既可以用普通的方法實現,也可以用函式的遞迴來實現。        函式的遞迴即是自己呼叫自己的函式應用形式,即在main函式下定義一個函式,然後在這個函式內自己為了實現某個目的,函式

C語言探究函式遞迴的巧妙之處(以斐波那契數列為例)

對於許多C語言的初學者來說,函式是一個比較重要的版塊.函式的使用不僅在學習程式設計的時期可以方便我們解決一些問題.它在未來的工作中也是程式設計師們經常運用的東西.而函式的遞迴是函式這一版塊比較難懂的東西.因此小編以輸出斐波那契數列的第N項為例,來探討函式的遞迴的應用給我們的程式碼帶來的方便.

C語言 strrev函式

標頭檔案:#include<string.h> strrev()函式將字串逆置,其原型為: char *strrev(char *str); 【引數說明】str為要逆置的字串。 strrev()將str所指的字串逆置。 【返回值】返回指向逆置後的字串的指標。 strr

C語言函式(侵刪)

1.strlen 標頭檔案:#include <string.h> strlen()函式用來計算字串的長度,其原型為:unsigned int strlen (char *s);  s為指定的字串 #include<stdio.h> #include<

C語言assert函式完全攻略

斷言assert函式,C語言assert函式完全攻略 對於斷言,相信大家都不陌生,大多數程式語言也都有斷言這一特性。簡單地講,斷言就是對某種假設條件進行檢查。在 C 語言中,斷言被定義為巨集的形式(assert(expression)),而不是函式,其原型定義在<assert.h>檔

C語言read函式的那些坑

  今天在複習UNIX檔案系統,用到那個read函式,但是無意中卻掉到一個坑裡了,用了一個多小時才找到問題根源,這裡記錄一下。   問題是這樣的:我需要使用read和write函式把鍵盤輸入的資訊複製到輸出。所以我寫了如下程式: #include<stdio.h> #define MAX

linux下的c語言系統函式呼叫

目錄 4.linux下的系統函式的使用 c語言 4.1數學函式的使用 1pow函式 2.exp函式 3.log函式 4.rand()隨機數函式 4.2字元函式的使用 4.3系統時間與日期函式的使用 系統時間 時間間隔 4.4環境控制函式 &nb

Mr.J--C語言函式的建立(附嚴薇敏《資料結構》線性表程式碼)

  如何正確編寫 C 語言標頭檔案和與之相關聯的 c 源程式檔案 檢視此文章需要有一定的C語言程式設計基礎 首先就要了解它們的各自功能。要理解C 檔案與標頭檔案(即.h)有什麼 不同之處,首先需要弄明白編譯器的工作過程。 一般說來編譯器會做以下幾個過程: 1.預處理階段 2

C語言隨機函式的使用

rand()和srand()應該是初學者最先接觸到的隨機函數了,今天博主就這兩個函式陳述一下自己的理解。 這兩個函式的使用規範如下: /*這是一個模擬擲色子1800次的程式*/ #include <stdlib.h>

C語言函式指標陣列的初始化和使用

不比多說上一個程式碼,就懂了! 程式碼一: #include <stdio.h> int func(int i) {     printf("%d\n",i);     return i*i; } int

C語言malloc()函式與calloc()函式的區別

推薦部落格: 推薦部落格:https://blog.csdn.net/ddcodingya/article/details/80452397   推薦部落格:https:https://blog.csdn.net/Hackbuteer1/article/d

C語言 socket函式的簡單運用 29

下面所講的是在Linux系統上用gcc編寫的,Windows好像不能用。 socket是套接字,是用來在網路之間進行資料傳遞的。 在網路中,我們通過一個IP來確定一臺主機,再通過一個port來確定一個進行,而socket就是一個進行。因此:socket = IP + port   網路傳輸的

Linux : C語言pause()函式:讓程序暫停直到訊號出現

C語言pause()函式:讓程序暫停直到訊號出現   相關函式:kill, signal, sleep 標頭檔案:#include <unistd.h> 定義函式:int

c語言輸入函式getchar&fgets&scanf&scanf_s

//a)getchar:在鍵盤上輸入一個ASCII碼的文字,返回值得到的是一個數值, //c=getchar等價於scanf("%c",&c);在第一次執行時時阻塞,並等待輸入。 //如果下一次輸入緩衝中有剩餘還未提取的輸入資料,將不阻塞直接提取那些剩餘的資料; //b)fflush(std

C語言函式中引數的傳值與傳地址

任務程式碼: #include <stdio.h> void swap(int *a ,int *b)//按之前對指標認識,*a代表指標變數a,a儲存的是地址,*a是地址的值。 { //但是可以看到下面傳輸過程中swap(

深入理解C語言函式呼叫過程

    本文主要從程序棧空間的層面複習一下C語言中函式呼叫的具體過程,以加深對一些基礎知識的理解。     先看一個最簡單的程式:   點選(此處)摺疊或開啟  /*test.c*/ #include <stdio.h> int foo1(