分段函數編譯程序
㈠ c++初學者,如圖,分段函數編程
對於C++類,一些關鍵字只要寫在.h中就好,cpp中就不用再加上了,比如virtual、static等關鍵字,如果再cpp中多寫,編譯器會報錯。比如如下的虛介面與靜態成員變數的定義,只要在頭文件中聲明就可以了。
class shape
{
virtual Draw();
//...
static int nLevel;
}
2、函數參數的默認值寫到函數實現中了
帶有參數默認值的函數,默認值是加在函數聲明處的,函數實現處的參數是不需要帶上的。為了方便查看代碼,在函數實現處的參數中,將默認值注釋起來。正確的做法是,頭文件中有默認值:
BOOL CreateConf( const CString& strConfName, const BOOL bAudio = FALSE );
在函數實現處的參數中不用添加默認值:
BOOL CreateConf( const CString& strConfName, const BOOL bAudio/* = FALSE*/ );
{
// ......
}
3、在編寫類的時候,在類的結尾處忘記添加";"分號了
在類的結尾處忘記添加分號,編譯會報錯,新人們有可能找了半天也沒找出引起編譯錯誤的原因。其實很簡單,在類的結尾處忘記添加分號了。
class Shape
{
// ...
};
4、只添加了函數聲明,沒有函數實現
在添加類的函數時,只在類的頭文件中添加了函數聲明,但在cpp中卻沒有添加函數的實現。如果其他地方調用到該函數,在編譯鏈接的時候會報 unresolved external symbol錯誤。因為沒有實現,所有沒有供鏈接使用的obj文件。
5、cpp文件忘記添加到工程中,導致沒有生成供鏈接使用的obj文件
在添加C++類時,我們一般會添加.h頭文件和一個.cpp源文件。結果忘記把.cpp文件添加到工程中了,即沒有參與編譯,沒有生成供鏈接使用的obj文件。如果有代碼調用到該C++類的介面,則在編譯鏈接的時候會報 unresolved external symbol錯誤,即鏈接不到該C++類對應的介面。
㈡ 怎麼用c語言編程一個分段函數
實驗報告
1、有一分段函數:
設計一程序完成, 主控函數main()輸入X的值並輸出Y值.函數VAL計算Y的值。
1.需求規格說明
本題要求掌握C語言的數據類型,程序結構,基本輸出輸入,函數應用知識,問題的要求用到兩個函數,要求利用主控函數main()輸入X的值並輸出Y值.並用函數VAL計算Y的值。
2.設計
2.1 設計思想
用兩個儲存空間分別存放主函數和被調用函數,在主函數中控制輸入輸出,在調用函數中對數據進行處理. 本程序需要用到實型變數作為數據主要數據類型.
2.2 設計表示
本程序有兩大模塊,主函數MAIN()和被調用函數VAL()
2.3實現注釋
程序開發環境為「Windows XP sp2中文版「為操作系統,運行環境turbo c/vc 6.0等等可以運行C語言程
2.4詳細設計
3.用戶手冊
用戶打開turbo c/vc 6.0的界面,啟動本程序,然後按ALT+R運行程序,用戶根據提示輸入x值, 然後按回車鍵,最後用ALT+F5看運行結果。
4.調試報告
在調試過程中,如果在主函數中沒有調用函數y=VAL(x),結果可以運行,但不能得到正確的結果.由此可知,我們在做主控函數時,一定要注意調用函數的重要性.
5.源程序清單
#include<stdio.h>
void main()
{float VAL(float x);
float x,y;clrscr();
printf("input x=");
scanf("%f",&x);
y=VAL(x);
printf("y= %f",y);
}
float VAL(float x)
{float y;
if(x<1)
y=x;
else if(x>=1&&x<10)
y=2*x-1;
else
y=3*x-11;
return(y);
}
㈢ 關於C語言,用if語句寫數學的分段函數
#include<stdio.h>
intmain()
{
intx,y;
printf("請輸入一個X的值:");
scanf("%d",&x);
if(x==0)
y=x=0;
elseif(x>0)
y=x=1;
elseif(x<0)
y=x=-1;
printf("x=%d,y=%d",x,y);
return0;
}
//--------------------------------以上是本人根據你的意思修改的大意,添添加加而已,呵呵。
//在這里,我指出你的錯誤,可以對你有很大的幫助。
//第一、if語句連續使用,只執行成功的那一個,如果後面有,就不會再執行了。
//第二、不用每次都printf("x=%d,y=%d",x,y);,在最後就可以了。以上是我修改的。我還發現你的(x<0)前面沒有if保留字。
//--------------------------------如果在你的程序上邊,加幾個范圍標識符就可以{}下面是第二個程序。
#include<stdio.h>
intmain()
{
intx,y;
printf("請輸入一個X的值:");
scanf("%d",&x);
if(x==0)
{
y=x=0;
printf("x=%d,y=%d",x,y);
}
elseif(x>0)
{
y=x=1;
printf("x=%d,y=%d",x,y);
}
elseif(x<0)
{
y=x=-1;
printf("x=%d,y=%d",x,y);
}
return0;}
//還有哦,=是貶值,==是判斷,你看看你的判斷是=,呵呵,是錯誤的哦。
//2個程序的意思結果是一樣的,寫法不是很一樣,你可以和你的對比對比,充分理解這2個程序。那麼就證明你掌握啦。
㈣ 用C語言中的if語句怎麼編譯一個分段函數
因為分段函數需要對定義域范圍進行判定,所以需要用到級聯式if else語句。
標准格式:
if (條件1)
{語句組1}
else if (條件2)
{語句組2}
... ...
else //這里包括了所有不在前面提到的條件中的情況,不需要單獨說明。
{}
流程圖如下:
再寫一個簡單的例子吧,x>0 --> f(x) = x & x<0 --> f(x) =-x ;
if (x > 0)
f = x;
else
f = -x;
㈤ 編程:求下列分段函數的值:當x≥0時,y=2x+1; 當x<0時,y=2x-1
#include<stdio.h>
void main()
{
float x,y;
printf("請輸入x的值:");
scanf("%f",&x);
if(x<0)
y=2*x-1;
else
y=2*x+1;
printf("x=%f,y=%.2f\n",x,y);
}
㈥ C語言:如何使用switch語句編寫圖中的分段函數
C語言使用switch語句,編寫圖中的分段函數:
#include<stdio.h>
voidmain()
intx,y,flag;
printf("請輸入x:");
scanf("%d",&x);
flag=x<0?-1:(x<10?1:2);
switch(flag)
case-1:y=x;break;
case1:y=2*x-1;break;
case2:y=3*x-1;
printf("y=%d ",y);
簡介
C語言是一門面向過程的計算機編程語言,與C++、C#、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
C語言描述問題比匯編語言迅速、工作量小、可讀性好、易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編語言代碼生成的目標程序效率低10%-20%。因此,C語言可以編寫系統軟體。