函數(shù)名: abort
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、市中網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為市中等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
功 能: 異常終止一個進(jìn)程
用 法: void abort(void);
程序例:
#include stdio.h
#include stdlib.h
int main(void)
{
printf("Calling abort()\n");
abort();
return 0; /* This is never reached */
}
函數(shù)名: abs
功 能: 求整數(shù)的絕對值
用 法: int abs(int i);
程序例:
#include stdio.h
#include math.h
int main(void)
{
int number = -1234;
printf("number: %d absolute value: %d\n", number, abs(number));
return 0;
}
函數(shù)名: absread, abswirte
功 能: 絕對磁盤扇區(qū)讀、寫數(shù)據(jù)
用 法: int absread(int drive, int nsects, int sectno, void *buffer);
int abswrite(int drive, int nsects, in tsectno, void *buffer);
程序例:
/* absread example */
#include stdio.h
#include conio.h
#include process.h
#include dos.h
int main(void)
{
int i, strt, ch_out, sector;
char buf[512];
printf("Insert a diskette into drive A and press any key\n");
getch();
sector = 0;
if (absread(0, 1, sector, buf) != 0)
{
perror("Disk problem");
exit(1);
}
printf("Read OK\n");
strt = 3;
for (i=0; i80; i++)
{
ch_out = buf[strt+i];
putchar(ch_out);
}
printf("\n");
return(0);
}
函數(shù)名: access
功 能: 確定文件的訪問權(quán)限
用 法: int access(const char *filename, int amode);
程序例:
#include stdio.h
#include io.h
int file_exists(char *filename);
int main(void)
{
printf("Does NOTEXIST.FIL exist: %s\n",
file_exists("NOTEXISTS.FIL") ? "YES" : "NO");
return 0;
}
int file_exists(char *filename)
{
return (access(filename, 0) == 0);
}
函數(shù)名: acos
功 能: 反余弦函數(shù)
用 法: double acos(double x);
程序例:
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = 0.5;
result = acos(x);
printf("The arc cosine of %lf is %lf\n", x, result);
return 0;
}
函數(shù)名: allocmem
功 能: 分配DOS存儲段
用 法: int allocmem(unsigned size, unsigned *seg);
程序例:
#include dos.h
#include alloc.h
#include stdio.h
int main(void)
{
unsigned int size, segp;
int stat;
size = 64; /* (64 x 16) = 1024 bytes */
stat = allocmem(size, segp);
if (stat == -1)
printf("Allocated memory at segment: %x\n", segp);
else
printf("Failed: maximum number of paragraphs available is %u\n",
stat);
return 0;
}
函數(shù)名: arc
功 能: 畫一弧線
用 法: void far arc(int x, int y, int stangle, int endangle, int radius);
程序例:
#include graphics.h
#include stdlib.h
#include stdio.h
#include conio.h
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
int stangle = 45, endangle = 135;
int radius = 100;
/* initialize graphics and local variables */
initgraph(gdriver, gmode, "");
/* read result of initialization */
errorcode = graphresult(); /* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());
/* draw arc */
arc(midx, midy, stangle, endangle, radius);
/* clean up */
getch();
closegraph();
return 0;
}
函數(shù)名: asctime
功 能: 轉(zhuǎn)換日期和時間為ASCII碼
用 法: char *asctime(const struct tm *tblock);
程序例:
#include stdio.h
#include string.h
#include time.h
int main(void)
{
struct tm t;
char str[80];
/* sample loading of tm structure */
t.tm_sec = 1; /* Seconds */
t.tm_min = 30; /* Minutes */
t.tm_hour = 9; /* Hour */
t.tm_mday = 22; /* Day of the Month */
t.tm_mon = 11; /* Month */
t.tm_year = 56; /* Year - does not include century */
t.tm_wday = 4; /* Day of the week */
t.tm_yday = 0; /* Does not show in asctime */
t.tm_isdst = 0; /* Is Daylight SavTime; does not show in asctime */
/* converts structure to null terminated
string */
strcpy(str, asctime(t));
printf("%s\n", str);
return 0;
}
函數(shù)名: asin
功 能: 反正弦函數(shù)
用 法: double asin(double x);
程序例:
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = 0.5;
result = asin(x);
printf("The arc sin of %lf is %lf\n", x, result);
return(0);
}
函數(shù)名: assert
功 能: 測試一個條件并可能使程序終止
用 法: void assert(int test);
程序例:
#include assert.h
#include stdio.h
#include stdlib.h
struct ITEM {
int key;
int value;
};
/* add item to list, make sure list is not null */
void additem(struct ITEM *itemptr) {
assert(itemptr != NULL);
/* add item to list */
}
int main(void)
{
additem(NULL);
return 0;
}
函數(shù)名: atan
功 能: 反正切函數(shù)
用 法: double atan(double x);
程序例:
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = 0.5;
result = atan(x);
printf("The arc tangent of %lf is %lf\n", x, result);
return(0);
}
函數(shù)名: atan2
功 能: 計算Y/X的反正切值
用 法: double atan2(double y, double x);
程序例:
#include stdio.h
#include math.h
int main(void)
{
double result;
double x = 90.0, y = 45.0;
result = atan2(y, x);
printf("The arc tangent ratio of %lf is %lf\n", (y / x), result);
return 0;
}
函數(shù)名: atexit
功 能: 注冊終止函數(shù)
用 法: int atexit(atexit_t func);
程序例:
#include stdio.h
#include stdlib.h
void exit_fn1(void)
{
printf("Exit function #1 called\n");
}
void exit_fn2(void)
{
printf("Exit function #2 called\n");
}
int main(void)
{
/* post exit function #1 */
atexit(exit_fn1);
/* post exit function #2 */
atexit(exit_fn2);
return 0;
}
函數(shù)名: atof
功 能: 把字符串轉(zhuǎn)換成浮點數(shù)
用 法: double atof(const char *nptr);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
float f;
char *str = "12345.67";
f = atof(str);
printf("string = %s float = %f\n", str, f);
return 0;
}
函數(shù)名: atoi
功 能: 把字符串轉(zhuǎn)換成長整型數(shù)
用 法: int atoi(const char *nptr);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
int n;
char *str = "12345.67";
n = atoi(str);
printf("string = %s integer = %d\n", str, n);
return 0;
}
函數(shù)名: atol
功 能: 把字符串轉(zhuǎn)換成長整型數(shù)
用 法: long atol(const char *nptr);
程序例:
#include stdlib.h
#include stdio.h
int main(void)
{
long l;
char *str = "98765432";
l = atol(lstr);
printf("string = %s integer = %ld\n", str, l);
return(0);
}
解釋如下:
#include"stdio.h"http://頭文件
#include"math.h"http://數(shù)學(xué)庫函數(shù)
double pcos(double a);//聲明子函數(shù)
main()//主函數(shù)
{
double x,y;//定義x,y這兩個雙精度數(shù)據(jù)
printf("please input one number:");
//輸出please input one number:
scanf("%lf",x);//出入一個數(shù)據(jù)并賦值給x
y=pcos(x);//把x傳入pcos函數(shù),返回值賦值給y
printf("cos of %lf is %lf\n",x,y);//輸出cos of x is y
}
double pcos(double a)//定義子函數(shù)名,形式參數(shù)
{
double b;//定義雙精度數(shù)據(jù)b
b=cos(a);//計算cos(a),并賦值給b
return b;//返回b的值
}
擴(kuò)展資料:
注釋就是對代碼的解釋和說明,其目的是讓人們能夠更加輕松地了解代碼。注釋是編寫程序時,寫程序的人給一個語句、程序段、函數(shù)等的解釋或提示,能提高程序代碼的可讀性。
注釋就是對代碼的解釋和說明。目的是為了讓別人和自己很容易看懂。為了讓別人一看就知道這段代碼是做什么用的。
正確的程序注釋一般包括序言性注釋和功能性注釋。序言性注釋的主要內(nèi)容包括模塊的接口、數(shù)據(jù)的描述和模塊的功能。模塊的功能性注釋的主要內(nèi)容包括程序段的功能、語句的功能和數(shù)據(jù)的狀態(tài)。
參考資料:注釋–百度百科
你并沒有把詳細(xì)的 C 語言基礎(chǔ)代碼寫出來,別人怎么幫助你添加注釋語句啊?因為所說的 C 語言基礎(chǔ)代碼實際上并沒有一定之規(guī)。怎么樣才算是基礎(chǔ)代碼、有幾行代碼就可以、足夠了?這些都是靈活的、并不是一成不變的。例如,最、最簡單的 C 語言基礎(chǔ)代碼就是:很多 C 語言教材上的第一個程序,輸出:"Hello, World !"。該詳細(xì)的 C 語言代碼如下:
#include stdio.h /* 基本輸入輸出頭文件,包括:printf、scanf等的庫函數(shù)原型說明 */
void main( ) /* 任何一個 C 語言源代碼都必須包含主函數(shù) main( ),void 表示該函數(shù)不返回任何值 */
{ /* 在 C 語言代碼中,任何一個函數(shù)都是以 { 開始,并且以 } 結(jié)束 */
printf( "Hello, World !\n" ) ; /* 在電腦屏幕上輸出字符串:Hello, World */
}
、學(xué)代碼:前提是你的復(fù)有?個?較系統(tǒng)的學(xué)習(xí).認(rèn)真完成每?個課程中的案例.
2、讀代碼:分制兩步?:前期能讀懂??寫的代碼.2113 后期能讀懂他?寫的代碼和?致的知道底層的某些源碼的含義.多去5261看開發(fā)?檔(開發(fā)?檔建議使?官?提供的4102英?版、不要使?中???害??)
關(guān)于二十四點游戲的編程思路與基本算法
漫長的假期對于我來說總是枯燥無味的,閑來無聊便和同學(xué)玩起童年時經(jīng)常玩的二十四點牌游戲來。此游戲說來簡單,就是利用加減乘除以及括號將給出的四張牌組成一個值為24的表達(dá)式。但是其中卻不乏一些有趣的題目,這不,我們剛玩了一會兒,便遇到了一個難題——3、6、6、10(其實后來想想,這也不算是個太難的題,只是當(dāng)時我們的腦筋都沒有轉(zhuǎn)彎而已,呵呵)。
問題既然出現(xiàn)了,我們當(dāng)然要解決。冥思苦想之際,我的腦中掠過一絲念頭——何不編個程序來解決這個問題呢?文曲星中不就有這樣的程序嗎?所以這個想法應(yīng)該是可行。想到這里我立刻開始思索這個程序的算法,最先想到的自然是窮舉法(后來發(fā)現(xiàn)我再也想不到更好的方法了,悲哀呀,呵呵),因為在這學(xué)期我曾經(jīng)寫過一個小程序——計算有括號的簡單表達(dá)式。只要我能編程實現(xiàn)四個數(shù)加上運算符號所構(gòu)成的表達(dá)式的窮舉,不就可以利用這個計算程序來完成這個計算二十四點的程序嗎?確定了這個思路之后,我開始想這個問題的細(xì)節(jié)。
首先窮舉的可行性問題。我把表達(dá)式如下分成三類——
1、 無括號的簡單表達(dá)式。
2、 有一個括號的簡單表達(dá)式。
3、 有兩個括號的較復(fù)4、 雜表達(dá)式。
窮舉的開始我對給出的四個數(shù)進(jìn)行排列,其可能的種數(shù)為4*3*2*1=24。我利用一個嵌套函數(shù)實現(xiàn)四個數(shù)的排列,算法如下:
/* ans[] 用來存放各種排列組合的數(shù)組 */
/* c[] 存放四張牌的數(shù)組 */
/* k[] c[]種四張牌的代號,其中k[I]=I+1。
用它來代替c[]做處理,考慮到c[]中有可能出現(xiàn)相同數(shù)的情況 */
/* kans[] 暫存生成的排列組合 */
/* j 嵌套循環(huán)的次數(shù) */
int fans(c,k,ans,kans,j)
int j,k[],c[];char ans[],kans[];
{ int i,p,q,r,h,flag,s[4],t[4][4];
for(p=0,q=0;p4;p++)
{ for(r=0,flag=0;r if(k[p]!=kans[r]) flag++;
if(flag==j) t[j][q++]=k[p];
}
for(s[j]=0;s[j]4-j;s[j]++)
{ kans[j]=t[j][s[j;
if(j==3) { for(h=0;h4;h++)
ans[2*h]=c[kans[h]-1]; /* 調(diào)整生成的排列組合在最終的表
達(dá)式中的位置 */
for(h=0;h3;h++)
symbol(ans,h); /* 在表達(dá)式中添加運算符號 */
}
else { j++;
fans(c,k,ans,kans,j);
j--;
}
}
}
正如上面函數(shù)中提到的,在完成四張牌的排列之后,在表達(dá)式中添加運算符號。由于只有四張牌,所以只要添加三個運算符號就可以了。由于每一個運算符號可重復(fù),所以計算出其可能的種數(shù)為4*4*4=64種。仍然利用嵌套函數(shù)實現(xiàn)添加運算符號的窮舉,算法如下:
/* ans[],j同上。sy[]存放四個運算符號。h為表達(dá)式形式。*/
int sans(ans,sy,j,h)
char ans[],sy[];int j,h;
{ int i,p,k[3],m,n; char ktans[20];
for(k[j]=0;k[j]4;k[j]++)
{ ans[2*j+1]=sy[k[j; /* 剛才的四個數(shù)分別存放在0、2、4、6位
這里的三個運算符號分別存放在1、3、5位*/
if(j==2)
{ ans[5]=sy[k[j;
/* 此處根據(jù)不同的表達(dá)式形式再進(jìn)行相應(yīng)的處理 */
}
else
}
}
好了,接下來我再考慮不同表達(dá)式的處理。剛才我已經(jīng)將表達(dá)式分為三類,是因為添加三個括號對于四張牌來說肯定是重復(fù)的。對于第一種,無括號自然不用另行處理;而第二種情況由以下代碼可以得出其可能性有六種,其中還有一種是多余的。
for(m=0;m=4;m+=2)
for(n=m+4;n=8;n+=2)
這個for循環(huán)給出了添加一個括號的可能性的種數(shù),其中m、n分別為添加在表達(dá)式中的左右括號的位置。我所說的多余的是指m=0,n=8,也就是放在表達(dá)式的兩端。這真是多此一舉,呵呵!最后一種情況是添加兩個括號,我分析了一下,發(fā)現(xiàn)只可能是這種形式才不會是重復(fù)的——(a b)(c d)。為什么不會出現(xiàn)嵌套括號的情況呢?因為如果是嵌套括號,那么外面的括號肯定是包含三個數(shù)字的(四個沒有必要),也就是說這個括號里面包含了兩個運算符號,而這兩個運算符號是被另外一個括號隔開的。那么如果這兩個運算符號是同一優(yōu)先級的,則肯定可以通過一些轉(zhuǎn)換去掉括號(你不妨舉一些例子來試試),也就是說這一個括號沒有必要;如果這兩個運算符號不是同一優(yōu)先級,也必然是這種形式((a+-b)*/c)。而*和/在這幾個運算符號中優(yōu)先級最高,自然就沒有必要在它的外面添加括號了。
綜上所述,所有可能的表達(dá)式的種數(shù)為24*64*(1+6+1)=12288種。哈哈,只有一萬多種可能性(這其中還有重復(fù)),這對于電腦來說可是小case喲!所以,對于窮舉的可行性分析和實現(xiàn)也就完成了。
接下來的問題就是如何對有符號的簡單表達(dá)式進(jìn)行處理。這是棧的一個著名應(yīng)用,那么什么是棧呢?棧的概念是從日常生活中貨物在貨棧種的存取過程抽象出來的,即最后存放入棧的貨物(堆在靠出口處)先被提取出去,符合“先進(jìn)后出,后進(jìn)先出”的原則。這種結(jié)構(gòu)猶如子彈夾。
在棧中,元素的插入稱為壓入(push)或入棧,元素的刪除稱為彈出(pop)或退棧。
棧的基本運算有三種,其中包括入棧運算、退棧運算以及讀棧頂元素,這些請參考相關(guān)數(shù)據(jù)結(jié)構(gòu)資料。根據(jù)這些基本運算就可以用數(shù)組模擬出棧來。
那么作為棧的著名應(yīng)用,表達(dá)式的計算可以有兩種方法。
第一種方法——
首先建立兩個棧,操作數(shù)棧OVS和運算符棧OPS。其中,操作數(shù)棧用來記憶表達(dá)式中的操作數(shù),其棧頂指針為topv,初始時為空,即topv=0;運算符棧用來記憶表達(dá)式中的運算符,其棧頂指針為topp,初始時,棧中只有一個表達(dá)式結(jié)束符,即topp=1,且OPS(1)=‘;’。此處的‘;’即表達(dá)式結(jié)束符。
然后自左至右的掃描待處理的表達(dá)式,并假設(shè)當(dāng)前掃描到的符號為W,根據(jù)不同的符號W做如下不同的處理:
1、 若W為操作數(shù)
2、 則將W壓入操作數(shù)棧OVS
3、 且繼續(xù)掃描下一個字符
4、 若W為運算符
5、 則根據(jù)運算符的性質(zhì)做相應(yīng)的處理:
(1)、若運算符為左括號或者運算符的優(yōu)先級大于運算符棧棧頂?shù)倪\算符(即OPS(top)),則將運算符W壓入運算符棧OPS,并繼續(xù)掃描下一個字符。
(2)、若運算符W為表達(dá)式結(jié)束符‘;’且運算符棧棧頂?shù)倪\算符也為表達(dá)式結(jié)束符(即OPS(topp)=’;’),則處理過程結(jié)束,此時,操作數(shù)棧棧頂元素(即OVS(topv))即為表達(dá)式的值。
(3)、若運算符W為右括號且運算符棧棧頂?shù)倪\算符為左括號(即OPS(topp)=’(‘),則將左括號從運算符棧談出,且繼續(xù)掃描下一個符號。
(4)、若運算符的右不大于運算符棧棧頂?shù)倪\算符(即OPS(topp)),則從操作數(shù)棧OVS中彈出兩個操作數(shù),設(shè)先后彈出的操作數(shù)為a、b,再從運算符棧OPS中彈出一個運算符,設(shè)為+,然后作運算a+b,并將運算結(jié)果壓入操作數(shù)棧OVS。本次的運算符下次將重新考慮。
第二種方法——
首先對表達(dá)式進(jìn)行線性化,然后將線性表達(dá)式轉(zhuǎn)換成機(jī)器指令序列以便進(jìn)行求值。
那么什么是表達(dá)式的線性化呢?人們所習(xí)慣的表達(dá)式的表達(dá)方法稱為中綴表示。中綴表示的特點是運算符位于運算對象的中間。但這種表示方式,有時必須借助括號才能將運算順序表達(dá)清楚,而且處理也比較復(fù)雜。
1929年,波蘭邏輯學(xué)家Lukasiewicz提出一種不用括號的邏輯符號體系,后來人們稱之為波蘭表示法(Polish notation)。波蘭表達(dá)式的特點是運算符位于運算對象的后面,因此稱為后綴表示。在對波蘭表達(dá)式進(jìn)行運算,嚴(yán)格按照自左至右的順序進(jìn)行。下面給出一些表達(dá)式及其相應(yīng)的波蘭表達(dá)式。
表達(dá)式 波蘭表達(dá)式
A-B AB-
(A-B)*C+D AB-C*D+
A*(B+C/D)-E*F ABCD/+*EF*-
(B+C)/(A-D) BC+AD-/
OK,所謂表達(dá)式的線性化是指將中綴表達(dá)的表達(dá)式轉(zhuǎn)化為波蘭表達(dá)式。對于每一個表達(dá)式,利用??梢园驯磉_(dá)式變換成波蘭表達(dá)式,也可以利用棧來計算波蘭表達(dá)式的值。
至于轉(zhuǎn)換和計算的過程和第一種方法大同小異,這里就不再贅述了。
下面給出轉(zhuǎn)換和計算的具體實現(xiàn)程序——
/* first函數(shù)給出各個運算符的優(yōu)先級,其中=為表達(dá)式結(jié)束符 */
int first(char c)
{ int p;
switch(c)
{ case '*': p=2; break;
case '/': p=2; break;
case '+': p=1; break;
case '-': p=1; break;
case '(': p=0; break;
case '=': p=-1; break;
}
return(p);
}
/* 此函數(shù)實現(xiàn)中綴到后綴的轉(zhuǎn)換 */
/* M的值宏定義為20 */
/* sp[]為表達(dá)式數(shù)組 */
int mid_last()
{ int i=0,j=0; char c,sm[M];
c=s[0]; sm[0]='='; top=0;
while(c!='\0')
{ if(islower(c)) sp[j++]=c;
else switch(c)
{ case '+':
case '-':
case '*':
case '/': while(first(c)=first(sm[top]))
sp[j++]=sm[top--];
sm[++top]=c; break;
case '(': sm[++top]=c; break;
case ')': while(sm[top]!='(')
sp[j++]=sm[top--];
top--; break;
default :return(1);
}
c=s[++i];
}
while(top0) sp[j++]=sm[top--];
sp[j]='\0'; return(0);
}
/* 由后綴表達(dá)式來計算表達(dá)式的值 */
int calc()
{ int i=0,sm[M],tr; char c;
c=sp[0]; top=-1;
while(c!='\0')
{ if(islower(c)) sm[++top]=ver[c-'a'];/*在轉(zhuǎn)換過程中用abcd等來代替數(shù),
這樣才可以更方便的處理非一位數(shù),
ver數(shù)組中存放著這些字母所代替的數(shù)*/
else switch(c)
{ case '+': tr=sm[top--]; sm[top]+=tr; break;
case '-': tr=sm[top--]; sm[top]-=tr; break;
case '*': tr=sm[top--]; sm[top]*=tr; break;
case '/': tr=sm[top--];sm[top]/=tr;break;
default : return(1);
}
c=sp[++i];
}
if(top0) return(1);
else
}
這樣這個程序基本上就算解決了,回過頭來拿這個程序來算一算文章開始的那個問題。哈哈,算出來了,原來如此簡單——(6-3)*10-6=24。
最后我總結(jié)了一下這其中容易出錯的地方——
1、 排列的時候由于一個數(shù)只能出現(xiàn)一次, 所以必然有一個判斷語句。但是用什么來判斷,用大小顯然不行,因為有可能這四個數(shù)中有兩個或者以上的數(shù)是相同的。我的方法是給每一個數(shù)設(shè)置一個代號,在排列結(jié)束時,通過這個代號找到這個數(shù)。
2、在應(yīng)用嵌套函數(shù)時,需仔細(xì)分析程序的執(zhí)行過程,并對個別變量進(jìn)行適當(dāng)?shù)恼{(diào)整(如j的值),程序才能正確的執(zhí)行。
3、在分析括號問題的時候要認(rèn)真仔細(xì),不要錯過任何一個可能的機(jī)會,也要盡量使程序變得簡單一些。不過我的分析可能也有問題,還請高手指點。
4、在用函數(shù)對一個數(shù)組進(jìn)行處理的時候,一定要注意如果這個數(shù)組還需要再應(yīng)用,就必須將它先保存起來,否則會出錯,而且是很嚴(yán)重的錯誤。
5、在處理用戶輸入的表達(dá)式時,由于一個十位數(shù)或者更高位數(shù)是被分解成各位數(shù)存放在數(shù)組中,所以需對它們進(jìn)行處理,將它們轉(zhuǎn)化成實際的整型變量。另外,在轉(zhuǎn)化過程中,用一個字母來代替這個數(shù),并將這個數(shù)存在一個數(shù)組中,且它在數(shù)組中的位置和代替它的這個字母有一定的聯(lián)系,這樣才能取回這個數(shù)。
6、由于在窮舉過程難免會出現(xiàn)計算過程中有除以0的計算,所以我們必須對calc函數(shù)種對于除的運算加以處理,否則程序會因為出錯而退出(Divide by 0)。
7、最后一個問題,本程序尚未解決。對于一些比較著名的題目,本程序無法解答。比如說5、5、5、1或者8、8、3、3。這是由于這些題目在計算的過程用到了小數(shù),而本程序并沒有考慮到小數(shù)。
#include stdio.h
#include stdlib.h
int isPrime(int m)
{
int flag,i;
flag=1;//默認(rèn)標(biāo)記為1,是素數(shù)
for(i=2;im;i++)//從2開始到m
{
if(m%i==0){flag=0;}//對比自身小的數(shù)字進(jìn)行求余。如果能求余就不是素數(shù),標(biāo)記為0
}
return flag;//返回標(biāo)記
}
int main()
{
int n,prime;
int count=0;//計數(shù)器從0開始
for(n=3;n200;n=n+2)//奇數(shù)有可能會成為素數(shù)
{
prime=isPrime(n);//調(diào)用isPrime函數(shù)
if(prime==1)//如果返回值為1,則說明他是素數(shù)
{
count++;//計數(shù),用來換行
printf("%5d",n);
if(count%5==0){printf("\n");}//每5個換行
}
}
system("pause");//暫停
return 0;
}