當前位置:首頁 » 編程語言 » c語言約會

c語言約會

發布時間: 2022-11-26 22:05:05

『壹』 怎麼給一個c語言的程序讓它自動運行 最好沒有裝VC也能運行

生成以個.exe,放到啟動中,開機就自動運行了。

『貳』 POJ 1061 青蛙的約會 (c++)

哈哈,我正好做過這個題目。 6年前了,具體的演算法記不清楚了,但源代碼還在哈,你可以對比一下,也是C語言的程序。

#include<stdio.h>
#include<stdlib.h>
__int64x,y;
intk,t,a,b,c;
intE(inta,intb){
returnb?(t=E(b,a%b),k=x,x=y,y=k-(a/b)*y,t):(x=1,y=0,a);
}
voidP(){
for(x=x*c/t%b;x<0;)x+=b;
printf("%I64d",x);
}
intmain(){
scanf("%d%d%d%d%d",&c,&k,&t,&a,&b);
a-=t;c-=k;
c%(t=E(a,b))?printf("Impossible"):(P(),1);
return0;
}

這里關鍵用了個__int64類型,相當於c++的longlong。

『叄』 初中生學C語言。

人是一個射手座女己,以致於遇到功沒有少男人一聽道那一面便看而怯步,以至該場皺眉點頭。

熟識我的人都會說:「你實是射手座女人的典型啊!」能夠由於我是屬馬+人馬座(射手座)的閉系吧,哈哈!(說到這,我想到了《活出個性》,剛剛注意星座時不明確自己為什麼與星座這么符合,學了心思教就清楚了:個性包含氣量與脾氣,氣量是先天的,性格是可以後天改革的,而我是一個比擬不容易被外界影響所以不容易被改制性格的人,因而活得「本初」,對比本汁原味!)

我想,男人懼怕無非就是因為聽說射手座女人最花心及最愛自由並且性格剛烈,自由和剛烈就不必說了(我的許多專白都說亮了這一點),對於花心這一點我也覺得沒必要否定,但至少我覺得自己是「此花心」非「那花心」,哈哈!我所說的「此花心」就是不惜花一輩子去尋尋,這個覓尋的進程就是「此花心」!

在我三十歲誕辰之際發表這篇專白感到很成心義,這是依據良多「射手座」材料降煉進去的,基礎概括出了我的特性:白章很長,了解我是需求耐煩的,但我想,除了我,也沒有幾個人願意把自己這樣分析,由於喜歡心思學的人,生成「自省智力」高,哈哈!

假如道射手座的男人常有些「唐吉訶怨」偏向的話,那麼射手座的女人就很輕易有「南丁格我」情解。射手座的女人常常會愛上一個野人皆反對的對象。由於熱忱又有正義感的她總會感到??假如人皆不了解、不支撐他,他還能置信誰呢!射手座的女子去去對世界充斥了獵奇、缺少戒心。尤其是在她們年事尚沉的時侯。她謙口真摯的尋覓著口笨符合的陪侶。

還好射手座的女孩通常都有著無邪樂觀的個性。愛情的挫合不會等閑的將她打倒。把眼淚揩做,她很速又有了再試一次的勇氣。不外,山河易改脫胎換骨,失利的經驗並不容易把她練習得世故一些。因彼,失戀的故事可能得重復演出,直到有一天,那個真的理解珍惜她的男人呈現。

因而,大概你曾經聽功射手座的女子游戲愛情、遁躲婚姻的風聞。這其實是大男人主義曲解現實的說法。射手座女子的觀思、行動,大概並不那麼傳統、保守。但是,關於情感,她們的確長短常懇切的。

如果你想要成為她的情人,你必需先成為她的好冤家,相互要有很多雷同的樂趣和見解。她的愛情往去是自友情中繁殖的。有時侯連她自己也很難分明白其中的差別。她的個性通常很獨立,不是那種事事都願意被你部署的女孩。她非常尋求自由,不喜歡他人給她太多的束?。但這毫不表現她放縱不拘。射手座是個具有賤族氣味的星座。射手座的女孩通常自律性很高,崇尚人類高貴的情操,她置信人人生來對等、自由,人與人之間應互相信任、尊沉。因而,她不喜歡任何人給她訂下什麼規則。當然她也續對會給你當有的尊敬和自由。

射手星座女子通常並不是晚輩們心綱中「尺度媳夫兒」的典範。你很難學一個射手座的女子佩服「天下無不是的女女」,或是「孝就是順」之類的道理。她當然以為對晚輩當要尊敬、要親愛。但毫不能陳腐到一昧遵從的田地。不管是什麼人,都得要道道理,長短烏白總得弄明白,不能通情達理的事,射手座的女子恕難自命。你不要寄看她由於愛你,就必需要無前提的接收你一切的親休。有時侯外表上的親昵對她來說都很難題。射手座的女子簡直都無法忍耐「偽擅」及「裝腔作勢」。她可不是個好演員,假如她不喜歡你,他確定會讓你望進去。關於有些射手座的女子來說,這基本是她當絕的任務。

看了以上這幾段,能清楚我所說的「彼花心」的露義了吧?這幾段我摘錄下來時簡直不必做任何改動,太揭切了!

射手座女性個性優雅,常表示出目中無人的立場,具有高遙的幻想,尋求自由和夢念,個性強烈。給己以如沐東風的感覺,即使是年華已逝也會披發著青春的漂亮,脾氣啟擱活潑,一直堅持著?女的純摯,但對於本人的評價或者風聞較為遲鈍。有很強的獨立精力和豐盛的想像力,正在平常的生涯中輕易覺得厭倦。自在的做派和笨光乍隱的機智常會使人們贊嘆沒有已,有時也會做出突收奇想的舉措。不願輸給別人,性情中有很強的隱秘的一里,器重隱公。

射手座屬於火象星座,遭到守護星丘比特的影響,對任何事物都充斥獵奇心,盼望永久保有普遍的學問與體驗各種經驗。這種性情,比如火普通的神聖取熱忱,不喜歡蒙就任何約束。是個相對完對主義者,具有使命感,是個視成功為人生方背的行為派,會將脫離隱真的幻想做為目的而發奮盡力。

射手座女人經常呈現在有笑聲的處所,在人群之中,射手座女人是個啟心果,和白羊座,獅子座同屬火象星座,性子一樣急,但是多了一分悠哉。最理想的結婚對象是白羊座、獅子座男性。

射手座女人本性悲觀,不怕胖不憂吃。她對人對於人皆很闊容,生性大方不算計,容易本諒他人,該然也輕易諒解本人。要認出射手座女人很輕易,假如你逢睹一位進修願望很強,興趣一同即一股腦天鑽研入來的女人,十之八九是射手座女人,她的農做即便繁忙得要命,她卻很可以樂在其中,出空埋怨。念要做良多的事,十分的有做勁和沖勁。

射手座女人很輕易崇敬一個人,可是一夕所尊崇的人失來了被她景仰的理由,他在她心綱中的位置立即一瀉千里。射手座女人對人事狂暖的口,使得她的生涯像是一場無絕的冒險。她是一個積極而又活氣茂盛的女人,確認目的後便勇往直前,一往無前,射手女人的不馴來自本性不喜約束的自在,對玩樂非常在止。

射手座女人悲觀、活躍、坦白、自尊心強、多才少藝、有很高的智慧,頗富直覺與飽舞別人的力氣,思惟開通、順應力強,有很好的斷定力,有處置緊迫事務的能力,善於哲教念考,富高尚的正義感,儲油罐防腐,十分遲鈍而聰明,喜愛自由、懇切、正派、可靠、穩重。但有時會有些偏偏激!

射手座的眼睛機動活潑而有神,鼻子具有希臘鼻直而長的特徵,唇型精美,下巴較尖,五民精巧,氣量高尚非凡,。思惟開通且能兼容並蓄,但有時則不夠油滑,充足表示出極不傳統的射手座性情。

彼星座的人即便出有機遇遭到較精深的學育,仍然具有強烈的求知慾,他們會在失教之後,繼承入建。(准)

富有藝術細胞,可自跳舞之中失掉相稱的樂趣。他們喜歡大天然、戶外運動,故而暖中於活動及悠遠冒險的游覽。(太准)

自由是她最愛,你只是其次,不能給她自由和信賴,她遲早會飛越瘋人院;

傷感只是她的臨時,她須要一直的快活;

她喜歡在玩樂中縱情享用,不要抱怨她的孩子氣,在那快活中你會覺得她的愛戀;

詐騙者死,你可以緘默,她不會答你,但你只要扯謊就是死罪,你有一次辯護機遇,別把她當愚子;

她是大意的,但她是女人,只要是女人就是細膩的,她忽詳的事情並非不知道,只是「不想」往介意; (太准了)

不要強求她做家事,如果射手肯做家事,那她必定脫線了;

不要強求她化裝,射手最崇尚天然,葷里晨天同時以實心待人; (連這都能這么准,服了)

不要妒忌她身邊的男人,射手天生異性緣好(說亮一下,踩上社會前異性緣太好了,踩上社會後就普通般了,職業閉系,不太接觸異性),但射手向來不喜歡介入三角愛情,相疑她你就能取得她的心;

天下最沒耐煩的是射手,不要像唐尼一樣嘮叨,告知她你須要的,立下來跟她道;

寒降是對她最大的損害,你能夠和她爭辯也能夠和她競賽,但便是不要寒降她,否則原來就愛自在的她必定會跑沒影兒;

她愛運動這屬於本性,如果在出一身暖汗後直交對她表達,機遇大大的;(連這都這么准,哈哈)

要警惕她的不穩固性,讓你體驗一半兒火焰一半兒海水的感覺;

要得到她就要失掉她的冤家們認可,射手永久把友朋擱在愛情前面; (准啊,好准)

她懷抱著高尚的理想,不要直交挨打她,你可以伴她發發夢,但現真總在催人奮入;

射手最愛旅逛,有前提每年旅遊兩次的話最佳,射手對外邦景緻沒有任何抵禦力;

愛情背後人人懵懂,她容易墮入一段愛情卻不等閑承諾,她會為自人的許諾加一講桎梏;

收脾氣前請三念,射手相對不會不道講理,一泣兩鬧三上吊大約只要你會死翹翹;

背著幻想斗爭時,以及固然是了無趣味的話題,但只需是取愛人一同議論就會有幸福感。

戀愛對象一訂要自己挑選。但是絕對於浪漫的愛情,更喜歡從友情開展而來的知心摯友式的愛情。以為眼神的交換非常主要。

性命在於活動,儲油罐防腐,便使你不善於什麼也不能擾了她的雅興,只需擱她來玩,她的耐性相對會在你寂寞之前歸到你身邊;

她喜歡給你欣喜,像性命充斥謎團,在小巷上忽然抱住你來個KISS你可千萬別詫異,這是她最善於的; (這面闡明一下,我只會對那個愛的他,不夠愛,我續做不出)

她不需要大鑽石也不需要毫宅(連這都能這么准,服了),她需求別人的認可,在她看來信賴感就是最大的財富,你能索取這些,一訂要做;

不要阻遏她往上班,便使你很可能已經家財萬貫,事業支撐著她的精力,讓她覺得性命的活氣;

在看書方面射手有著超乎覓常的檔次,千萬不要等閑送書給她,先跟她討論興味很亮智,通常射手對犯法,心思,戰役,實著都有興致。(我不斷最喜歡立功心理學,喜歡看戰役片)

人非聖賢必定會出錯,最好的補償方式是請她吃頓好的或許送些禮物,特地跟她致豐,如因她說諒解你了就不要空話,沒諒解你之前她會給你神色瞅,千萬不要唧唧歪歪。

射手最不吃回頭草,千萬不要妒忌她以前的男朋,置信我,她盡不會回頭,便使回頭也不外是在那段停止的感情上再澆一盆寒水;

射手生成涇渭分明,對情感她不會拖疲塌推,她也不會等你拖沓,假如你不立即決議你能夠再也睹不到她;

她很冷視學條禮規,如因她肯去見你的家人並表現乖拙,那闡明她真的很在乎你;

你不需求伴她去瘋往闖盪(該然假如能去更佳),但當她歸到野時她須要一個暖和的懷抱和激勵的行語,那個時分嘮叨她,你會失去她;

她願意接收他人的看法,只需你中肯的說進去,儲油罐防腐,不但不會惹毛她,或許還失掉一個吻;

要贏得她久長的芳心你必須理解當呈現和消散的時機,控制不好就會讓她膩煩,多察行觀色對你沒有壞處,因為她什麼都寫在臉上; (這一點應當這么說,厭惡粘人的男人)

射手輕易心軟,但她不會愛上比她弱的男生,讓她望到你的力氣,但要適可而止;

射手還愛出威嚴頭,適時讓她表示,或者正在她表隱後誇贊幾句,她會對於您刮目相看;

在方向上她可能是個白痴,你們出門最好由你領路,至少你要帶著輿圖,如果你也是良牙的話; (連這都能這么准,服)

大度的人最煩警惕眼兒,你的表現不像個男人,下次你就見不到她了;

做事武斷堅定最得她歡心,她通常都不斟酌效果,適時給她倡議指引方向,她就會依好上你的思惟;

射手最大的長處就是闊容和獨立,如果你想覓個小鳥依人勸你趕緊看瞅別處,她是續對不會假冒雙魚的;

射手被己冤枉時最郁悶,被人負叛時最痛甘,你最佳不要那樣做,否則您野被炸平人可沒有負責;

她有不少毛病,調皮得讓你頭痛,但她的心愛你又放不下,不要逼迫她去幼稚止來,她的雙雜自然天成,到中年也能頗得人心;

愛她就大聲的講出來,畏畏縮縮得不到她的愛,只要你自動了一分,她天然會表現兩分熱情;

都說射手生成克蠍子,因為陰霾碰到了陽光,如果你想做007偵查她的行跡,警惕她發明後把你cancel掉;

射手女人很喜歡享用自由的肉體世界,勇敢啟放,同時披發著寧靜的淑女氣質。她很可能會覺得年青的男性幼稚遲鈍,從而與年長的男人來往。戀愛時喜歡浪漫的氛圍。很早就了解性,喜愛各種約會方法。期望同時品嘗性愛和粗神上的愛,熱衷於戶外情事(必需說明一下,到綱前為止尚屬觀賞階段,與《荊棘鳥》同名的電視劇中那場黃晨沙灘邊的情事,令我有「死而無憾」的感覺),偏偏愛俊秀智慧的男性。

一千隻紙鶴還不如一個街頭的狂吻(哈哈,就連送花我都不會覺得浪漫,後者那才鳴浪漫),她喜歡的不是小溪而是浩大大海,不要讓她感覺負乏,她就是你的了;

在射手背後拚命表現沒用,仍是自然點兒好;

錢是用來享用的,如果你介意她的大手大足可要提早挨召喚,保住你的荷容納易,但是她自己的那份兒你別想干涉;

假如有幸你娶到她了,恭喜你,婚後的射手通常會慎重很多,成為同輩尊重的夫女,她會偶然想要玩樂,我想知足她並不難題;

不交蒙她的觀念她可能會憂傷一陣子,最好的措施是給她說明明白,她樂於接收你的觀念和坦誠,下一分鍾你就會在別的處所看見快活的她了;

通常射手疑命,但是她們又是不服輸的一群,在准繩答題上不要取她們辯論,她們很習性求同存異的生活方法。

看似遲鈍,實踐上控制著高水準的學問,特殊喜歡哲學。(這一點我做個解釋,良久很暫以前是沒有心理學的,只要哲學,所以如今的心理學是哲學的分支)

運動神經非常收達。不管是何類活動都能夠緊張完成,身姿輕巧優雅。

背來盼望依照本人的設法主意無拘無束天生涯。「規矩是為了突破而具有的!」是射手座女性高舉的旗號。

有嚴峻的健忘症。說完一件事只要行出3步通常就會將內容忘得一塵不染。(解釋一下,我是有拾三推四的缺點,有些事也是永遙忘不住,但有些事永久忘不了)

有很強的正義感,所以不愛扯謊。喜歡以自己的設法主意施展效勞肉體。

即使是在茶館里也不能悠哉逛哉地立下來歇息,喝茶後要立即分開。厭倦長時光呆在統一個場合。

射手座女人喜歡遭到維護,但她不願意被命令做這做那。不外她有一個怪癖,固然她不喜歡別人安排她,但如果她想考驗你能否強硬,你就要對她強硬一點。她是不能忍耐那些脆弱的、猶豫不決的男人的。射手座女人毫不會為了取得一個男人而廢棄她的獨立性,但她願意你把她當做一個姑娘看待。

射手座的年青太太對男人會非常坦誠,她不會跟你玩「猜猜我有什麼感覺」或者「猜猜我在想什麼」的無談逛戲。她感覺如何,她念些什麼,和她如何行為和她道些什麼是互相分歧的,儲油罐防腐。

她在同男人的來往中十分活躍豁達,不拘於傳統習俗。既然她以為她和你是平等的人,她就會模擬你的秉性、習俗。如果她還喜歡體育和戶外運動,那你就很難把她和男孩子區離開了。但她究竟是女孩子,她可以是最溫存、最富有女性特性的女性。

因為她老實坦白、光明磊落,所以她對自人的名望絕不在乎,對社會所請求的那類虛假非常鄙夷。你假如答她這方里的問題,她會直抒己見地答復你。她或許會告知你,唱歌頌到中午三更並不解釋她是在鬼混,相反,你按平凡的時光歸家也並不闡明你就渾白。她曉得她的操行是無可抉剔的,而這才是至閉緊要的。

她有面蠢手蠢足。當她像一匹雜種馬一樣大踩步行在小巷上時,你會感到她是你平生睹功的最優雅的女人,但不一會兒你會發明她在人止講的裂痕處絆了一下,笨手蠢足地捉住中間生果攤上的篷布以復原均衡,成果把兩籃柑橘挨翻在地。(哈哈,太准了)

射手座姑娘不喜歡老待在家裡揩桌子、掃除衛生,她極端膩煩這類家務活。但是,當她有了一個家以後,她對家務事就不那麼膩煩了,她會把家整理得整整潔全。這一點連她媽媽看了也會不相疑。

她的烹調技術如何?哦,這很難說。也許周終你們最好到外面去吃。大少數射手座女人不會對下廚房入迷,但當她想意外埠讓你愉快的時分,她會為你做一個獨出機杼的餐後點心。

她的情感能夠是恐怖的,但這種情形很少,而且連續不了少長時光,有時以至你基本注意不到。假如你實正損害了她的情感,她會向你說一些尖刻、奚落的話,但她可能話還沒完,就早把自己說的話忘得做清潔潔了,她不清楚為什麼你要在這件事情上若無其事。這種女人不合適與脾氣愁悶的男人生活在一同,現實上,憂傷和哀觀會使她的身材染病的。

她會成為一個心愛的主夫,出有人能像她那樣有禮貌天接待主人,在她活躍豁達的性格和友愛的立場中有某類西西使主人(不論是掃渣滓的仍是您的上司)有門庭若市的感覺。一個射手座姑娘即便正在碰到最辣手的事情時也會很速突破僵局,固然她難免也會揚幾下眉毛表現吃驚。

只要你讓她的笨魂取得充足的自由,只要你不必繩索把她拴住,你那逢事悲觀的射手座夫子就會向你違獻三個禮物:她的虔誠、她的信賴和她的感情(關於這一點我擴充一下,良多年前我就愛上世界實著《荊棘鳥》,並望了N少遍同實電視劇,因為覺得女配角似乎就是自己,愛了??那就是一輩子的事!感興致的冤家可以去瞅一下,十分棒!)。這三者是稀不可分的,由於當她向你貢獻愛時,她同時也就把友情貢獻給你了。

以下這幾段是不分男女的,泛指射手座的人:

這個星座誕生的人崇尚自由、自由自在及尋求快度的感覺,生性樂觀、熱忱,是個吃苦主義派。射手座的守護星是希臘神話中的宙斯-宇宙的主殺和齊知齊能的眾神之王。所以是個神聖的完善主義者,有陽剛剛的氣味、廣大體恤的精力,器重公理與正義的伸張。

他們風趣、剛剛直爽真、對人生的見解富露哲學性,也期望能將本身所披發的火熱生命力及速感,沾染到別人,所以人緣通常都很好。他們外向、健道、喜歡新的經驗與嘗試,尤其是運動及游覽。是個永遙無法被約束、不肯讓步、同時又具有人道與家性、精神抖擻且運動力強,有著弘遠的理想,任何時地都不會廢棄希看和理想。

他們一直在追求一個能完整屬於自己的生活環境,有著開朗的人生觀。射手座一生可能只關懷一件事,只要他把這件事搞透闢了,這一生就無憾了。射手座有潛力成為特立獨行者,但是因為「凸起」形成「被凝視」的壓力,跟別人不一樣,就得付出絕對的代價。但凡射手,簡直都熱愛自由,不自由毋寧死也。特立獨行者看似自由,但射手座又期望被人接蒙,因此仍是會覺得不自由。這個沖突很攪擾他。

他喜歡機智、華麗的接道,以及理性和充溢盼望的解論。如因你道止話來很富有哲學的意味,射手座會很高興,儲油罐防腐,他會非常當真與你認論生命的意義,而且很在乎能否有一個詳細的結論。這里指的解論不是實踐的解決計劃或可止的謎底,或許只是籠統的概思。有時分,你以至會覺得只要形而上的意義能力壓服一匹馬,由於形而上,才耐人覓味,才有無窮的可能性,能力讓他的想像力去馳騁。

相關的主題文章:

?

關於射手座

黑井古鎮位於雲南省楚雄彝族自治州的

今天在朋友空間讀了新東方老總俞敏洪在北大開學典禮上的講話,感

白羊座-十二星座網

『肆』 c語言1.4編程基礎之邏輯表達式與條件分支晶晶赴約會怎麼做

/*
函數功能說明:

判斷時間是否到晶晶約會時間,如果時間到晶晶則去約會
否則繼續等待
*/

functionDayMeeting(timet)
{
start:if(time()>=t)
{
print("時間到,晶晶去約會 ");
}
else
{
print("時間未到 ");
sleep(100);
goto:start;
}
}

『伍』 有一個痴迷於編程的男朋友是種怎樣的體驗

那就是天天都是自己一個人吃飯逛街看電影,明明有男朋友卻過著孤獨的生活。整天被朋友嘲笑我這是有男朋友還是被甩了呢,我的那顆心啊拔涼拔涼的,看見他我就生氣都想分手了,既然那麼喜歡編程那你就和電腦在一起吧,你的電腦就是你的下一任女朋友,你倆雙宿雙飛吧。豈不快哉。

我不止一次的和他談這個問題了,可是他呢總是一副我無理取鬧的樣子。我還能怎麼辦呢,堅持吧實在心傷了那就散了吧。太辛苦心累了我想歇歇。我給他的機會他並沒有珍惜還是和以前一樣,把我當做空氣,高興了給你一個棗,不開心了你就自己玩吧。我總是一個人也會很孤獨需要有人陪伴,他並不在乎這些。

『陸』 c語言程序設計 TXT分類版

是TXT分割嗎,我自己編了一個C程序:

#include<stdio.h>

//#include<lib.h>

#include<conio.h>

#include<string.h>

intpart_num[9999]={0};

charnewname[8]="";

charp[8]={0,0,0,0,0,0,0,0};

voidtxt_wrte();

voidint2str(intx);

voidnum2str(intx,intn,charp[8]);

main()

{

FILE*fp;//文件指針fp

intBytenum=0,Bytenum2=0;

intpnum=0;

intpnum_p_part;

inttemp,i;

charch,key;

//charstr[65536];

charffilename;

char*filename;//="sq3.txt";

char*pachname=".\";

char*endname=".txt";

charfhead[32]="";

charfullname[32]="";

charfiletemp[17]="";

intszname;

printf("輸入文件名 ");

printf("Inputfilename: ");

//scanf("%s",&filename);//輸入文件名

for(temp=0;temp<16;temp++)

{

key=getchar();

if(key==' ')

{break;}

filetemp[temp]=key;

//filename++;

}

printf("---------- ");

filename=&filetemp;

printf("---------- ");

strcpy(fullname,pachname);//路徑以及文件名拼接

strcat(fullname,filename);

strcpy(fhead,fullname);

strcat(fullname,endname);

printf("%s ",fullname);

//fullname=strcat(pachname,filename);

if((fp=fopen(fullname,"rt"))==NULL)

{

printf("can'topen");

getch();

exit(1);

}

else

{

printf("opensucsessfuly! ");

}

//---------------------------------

ch=fgetc(fp);

while(ch!=EOF)

{

//putch(ch);

ch=fgetc(fp);

if(ch==' ')

{

pnum++;

}

//pnum*20000/(Bytenum)

Bytenum++;

}

printf(" 該文件一共有%dB(位元組),%d個段落. ",Bytenum,pnum);

//printf("大約每%d段有20KB. ",pnum/(Bytenum/20000));//must>=20kB

printf("大約每%d段有20KB. ",pnum*20000/(Bytenum));

printf("分割成每個文件的段落數為:");

scanf("%d",&pnum_p_part);

printf("大約會有%d個文件生成. ",pnum/pnum_p_part);

//----------------------------

rewind(fp);

ch=fgetc(fp);

temp=0;i=0;

Bytenum2=0;

while(ch!=EOF)

{

ch=fgetc(fp);

if(ch==' ')

{

temp++;//' '的個數

if(temp%pnum_p_part==0)

{

part_num[i+1]=Bytenum2;//記錄 的位置

//printf(" enter:%d ",part_num[i]);

i++;

}

}

Bytenum2++;

if(ch==EOF)part_num[i]=Bytenum2;

}

//---------------------------------------

//for(i=0;i<(pnum/pnum_p_part+1);i++)

//{

//printf(" enter:%d ",part_num[i]);

//}

//-----------------------------------------

printf("---------- ");

printf("---------- ");

txt_wrte(filename,pnum/pnum_p_part,fp,part_num);

//fgets(str,i,fp);

fclose(fp);

while(!kbhit());

}

voidtxt_wrte(char*filename,inttotalpartnum,FILE*fp,intpart_num[9999])

{

FILE*fp_pic;

inti,j;

intstr_len;

charch_temp;

rewind(fp);

//fseek(fp,part_num[i],0);

mkdir(".\new");

//num2str(totalpartnum,4,p);

int2str(p,totalpartnum);

printf("%s ",p);

strcpy(newname,".\new\");

strcat(newname,filename);

strcat(newname,"_");

strcat(newname,p);

//strcat(newname,".txt");

//printf("%s ",newname);

str_len=strlen(newname);

for(i=0;i<totalpartnum;i++)//批量生成文件

{

//printf("%s ",p);

//strcpy(newname,".\new\");

strcat(newname,filename);

strcat(newname,"_");

for(j=0;j<8;j++)p[j]=0;

//for(j=0;j<8;j++)newname[j]=0;//clearspace

strcpy(newname,"");

int2str(p,i);

strcpy(newname,".\new\");

//strcat(newname,filename);

strcat(newname,p);

strcat(newname,".txt");

printf("%s ",newname);

if((fp_pic=fopen(newname,"wt"))==NULL)

{

printf("can'topen");

getch();

exit(1);

}

else

{

printf("opensucsessfuly! ");

for(j=0;j<(part_num[i+1]-part_num[i]);j++)//writebyte

{

ch_temp=fgetc(fp);

fputc(ch_temp,fp_pic);

}

}

fclose(fp_pic);

}

}

/*voidnum2str(intx,intn,charp[8])

{

//char*pp=p[0];

staticcharnum_str[11]={"0123456789"};

if(n==1)

{p[0]=num_str[x%10];}

elseif(n==2)

{

p[0]=num_str[(x%100)/10];

p[1]=num_str[x%10];

}

elseif(n==3)

{

p[0]=num_str[(x%1000)/100];

p[1]=num_str[(x%100)/10];

p[2]=num_str[x%10];

}

elseif(n==4)

{

p[0]=num_str[(x%10000)/1000];

p[1]=num_str[(x%1000)/100];

p[2]=num_str[(x%100)/10];

p[3]=num_str[x%10];

}

else

exit(1);

//printf("%c%c%c%c ",p[0],p[1],p[2],p[3]);

//returnpp;

}*/

voidint2str(charp[8],intx)

{

//static

//chartempre[5]="";

p[0]=(x%10000)/1000+48;

p[1]=(x%1000)/100+48;

p[2]=(x%100)/10+48;

p[3]=x%10+48;

p[4]='';

//p=tempre;

//returntempre;

}

『柒』 請問兩個互有好感的人約會,第幾次會牽手呢我們已經出去了兩次。但是每天都聊天。他前天才開始給我發k

你知道C語言或Java或C + +語言啊什麼嗎?黑客並非如此簡單!否則,我們就可以盜號!但真正想成為一個合格的黑客,那麼它必須知道C或Java語言或C + +語言,哦!大膽試試吧!因為我們的軟體黑客們更加優秀!

『捌』 求青蛙的約會的程序(c,c++程序)

# include <stdio.h>
__int64 gcd(__int64 a,__int64 b)
{ if(b==0)
return a;
return gcd(b,a%b);
}void exgcd(__int64 a,__int64 b,__int64 &m,__int64 &n)
{ if(b==0)
{
m=1;
n=0;
return ;
}
exgcd(b,a%b,m,n);
__int64 t;
t=m;
m=n;
n=t-a/b*n;}
int main()
{ __int64 x,y,m,n,l,a,b,c,k1,k2,r,t;
while(scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&m,&n,&l)!=EOF)
{
a=n-m;
b=l;
c=x-y;
r=gcd(a,b);
if(c%r)
{
printf("Impossible\n");
continue;
}
a/=r;
b/=r;
c/=r;
exgcd(a,b,k1,k2);
t=c*k1/b;
k1=c*k1-t*b;
if(k1<0)
k1+=b;
printf("%I64d\n",k1);
}
return 0;
} 其實就是擴展歐幾里德演算法-求解不定方程,線性同餘方程。設過s步後兩青蛙相遇,則必滿足以下等式:(x+m*s)-(y+n*s)=k*l(k=0,1,2....)稍微變一下形得:(n-m)*s+k*l=x-y 令n-m=a,k=b,x-y=c,即a*s+b*l=c只要上式存在整數解,則兩青蛙能相遇,否則不能。首先想到的一個方法是用兩次for循環來枚舉s,l的值,看是否存在s,l的整數解,若存在則輸入最小的s,但顯然這種方法是不可取的,誰也不知道最小的s是多大,如果最小的s很大的話,超時是明顯的。其實這題用歐幾里德擴展原理可以很快的解決,先來看下什麼是歐幾里德擴展原理:歐幾里德演算法又稱輾轉相除法,用於計算兩個整數a,b的最大公約數。其計算原理依賴於下面的定理:定理:gcd(a,b) = gcd(b,a mod b)證明:a可以表示成a = kb + r,則r = a mod b假設d是a,b的一個公約數,則有d|a, d|b,而r = a - kb,因此d|r因此d是(b,a mod b)的公約數假設d 是(b,a mod b)的公約數,則d | b , d |r ,但是a = kb +r因此d也是(a,b)的公約數因此(a,b)和(b,a mod b)的公約數是一樣的,其最大公約數也必然相等,得證歐幾里德演算法就是根據這個原理來做的,其演算法用C++語言描述為:int Gcd(int a, int b)
{
if(b == 0)
return a;
return Gcd(b, a % b);
}當然你也可以寫成迭代形式:int Gcd(int a, int b)
{
while(b != 0)
{
int r = b;
b = a % b;
a = r;
}
return a;
}本質上都是用的上面那個原理。補充: 擴展歐幾里德演算法是用來在已知a, b求解一組x,y使得a*x+b*y=Gcd(a,b)(解一定存在,根據數論中的相關定理)。擴展歐幾里德常用在求解模線性方程及方程組中。下面是一個使用C++的實現:int exGcd(int a, int b, int &x, int &y)
{
if(b == 0)
{
x = 1;
y = 0;
return a;
}
int r = exGcd(b, a % b, x, y);
int t = x;
x = y;
y = t - a / b * y;
return r;
}把這個實現和Gcd的遞歸實現相比,發現多了下面的x,y賦值過程,這就是擴展歐幾里德演算法的精髓。可以這樣思考:對於a' = b, b' = a % b 而言,我們求得 x, y使得 a'x + b'y = Gcd(a', b')由於b' = a % b = a - a / b * b (註:這里的/是程序設計語言中的除法)那麼可以得到:a'x + b'y = Gcd(a', b') ===>
bx + (a - a / b * b)y = Gcd(a', b') = Gcd(a, b) ===>
ay +b(x - a / b*y) = Gcd(a, b)因此對於a和b而言,他們的相對應的p,q分別是 y和(x-a/b*y).在網上看了很多關於不定方程方程求解的問題,可都沒有說全,都只說了一部分,看了好多之後才真正弄清楚不定方程的求解全過程,步驟如下:求a * x + b * y = n的整數解。1、先計算Gcd(a,b),若n不能被Gcd(a,b)整除,則方程無整數解;否則,在方程兩邊同時除以Gcd(a,b),得到新的不定方程a' * x + b' * y = n',此時Gcd(a',b')=1; 2、利用上面所說的歐幾里德演算法求出方程a' * x + b' * y = 1的一組整數解x0,y0,則n' * x0,n' * y0是方程a' * x + b' * y = n'的一組整數解;3、根據數論中的相關定理,可得方程a' * x + b' * y = n'的所有整數解為: x = n' * x0 + b' * t
y = n' * y0 - a' * t
(t為整數) 上面的解也就是a * x + b * y = n 的全部整數解。

『玖』 c語言在哪裡運行,怎麼保存,後綴名是什麼。

C 是一種在 UNIX 操作系統的早期就被廣泛使用的通用編程語言. 它最早是由貝爾實驗室的 Dennis Ritchie 為了 UNIX 的輔助開發而寫的, 開始時 UNIX 是用匯編語言和一種叫 B 的語言編寫的. 從那時候起, C 就成為世界上使用最廣泛計算機語言.

C 能在編程領域里得到如此廣泛支持的原因有以下一些:
它是一種非常通用的語言. 幾乎你所能想到的任何一種計算機上都有至少一種能用的 C 編譯器. 並且它的語法和函數庫在不同的平台上都是統一的, 這個特性對開發者來說很有吸引力.
用 C 寫的程序執行速度很快.
C 是所有版本的UNIX上的系統語言.
C 在過去的二十年中有了很大的發展. 在80年代末期美國國家標准協會(American National Standards Institute)發布了一個被稱為 ANSI C 的 C 語言標准.這更加保證了將來在不同平台上的 C 的一致性. 在80年代還出現了一種 C 的面向對象的擴展稱為 C++. C++ 將在另一篇文章 "C++ 編程"中描述.
linux 上可用的 C 編譯器是 GNU C 編譯器, 它建立在自由軟體基金會的編程許可證的基礎上, 因此可以自由發布. 你能在 Linux 的發行光碟上找到它.

GNU C 編譯器
隨 Slackware Linux 發行的 GNU C 編譯器(GCC)是一個全功能的 ANSI C 兼容編譯器. 如果你熟悉其他操作系統或硬體平台上的一種 C 編譯器, 你將能很快地掌握 GCC. 本節將介紹如何使用 GCC 和一些 GCC 編譯器最常用的選項.

使用 GCC
通常後跟一些選項和文件名來使用 GCC 編譯器. gcc 命令的基本用法如下:
gcc [options] [filenames]
命令行選項指定的操作將在命令行上每個給出的文件上執行. 下一小節將敘述一些你會最常用到的選項.

GCC 選項
GCC 有超過100個的編譯選項可用. 這些選項中的許多你可能永遠都不會用到, 但一些主要的選項將會頻繁用到. 很多的 GCC 選項包括一個以上的字元. 因此你必須為每個選項指定各自的連字元, 並且就象大多數 Linux 命令一樣你不能在一個單獨的連字元後跟一組選項. 例如, 下面的兩個命令是不同的:
gcc -p -g test.c

gcc -pg test.c
第一條命令告訴 GCC 編譯 test.c 時為 prof 命令建立剖析(profile)信息並且把調試信息加入到可執行的文件里. 第二條命令只告訴 GCC 為 gprof 命令建立剖析信息.

當你不用任何選項編譯一個程序時, GCC 將會建立(假定編譯成功)一個名為 a.out 的可執行文件. 例如, 下面的命令將在當前目錄下產生一個叫 a.out 的文件:
gcc test.c
你能用 -o 編譯選項來為將產生的可執行文件指定一個文件名來代替 a.out. 例如, 將一個叫 count.c 的 C 程序編譯為名叫 count 的可執行文件, 你將輸入下面的命令:
gcc -o count count.c

--------------------------------------------------------------------------------
注意: 當你使用 -o 選項時, -o 後面必須跟一個文件名.
--------------------------------------------------------------------------------

GCC 同樣有指定編譯器處理多少的編譯選項. -c 選項告訴 GCC 僅把源代碼編譯為目標代碼而跳過匯編和連接的步驟. 這個選項使用的非常頻繁因為它使得編譯多個 C 程序時速度更快並且更易於管理. 預設時 GCC 建立的目標代碼文件有一個 .o 的擴展名.
-S 編譯選項告訴 GCC 在為 C 代碼產生了匯編語言文件後停止編譯. GCC 產生的匯編語言文件的預設擴展名是 .s . -E 選項指示編譯器僅對輸入文件進行預處理. 當這個選項被使用時, 預處理器的輸出被送到標准輸出而不是儲存在文件里.

優 化 選 項
當你用 GCC 編譯 C 代碼時, 它會試著用最少的時間完成編譯並且使編譯後的代碼易於調試. 易於調試意味著編譯後的代碼與源代碼有同樣的執行次序, 編譯後的代碼沒有經過優化. 有很多選項可用於告訴 GCC 在耗費更多編譯時間和犧牲易調試性的基礎上產生更小更快的可執行文件. 這些選項中最典型的是-O 和 -O2 選項.
-O 選項告訴 GCC 對源代碼進行基本優化. 這些優化在大多數情況下都會使程序執行的更快. -O2 選項告訴 GCC 產生盡可能小和盡可能快的代碼. -O2 選項將使編譯的速度比使用 -O 時慢. 但通常產生的代碼執行速度會更快.

除了 -O 和 -O2 優化選項外, 還有一些低級選項用於產生更快的代碼. 這些選項非常的特殊, 而且最好只有當你完全理解這些選項將會對編譯後的代碼產生什麼樣的效果時再去使用. 這些選項的詳細描述, 請參考 GCC 的指南頁, 在命令行上鍵入 man gcc .

調試和剖析選項
GCC 支持數種調試和剖析選項. 在這些選項里你會最常用到的是 -g 和 -pg 選項.
-g 選項告訴 GCC 產生能被 GNU 調試器使用的調試信息以便調試你的程序. GCC 提供了一個很多其他 C 編譯器里沒有的特性, 在 GCC 里你能使 -g 和 -O (產生優化代碼)聯用. 這一點非常有用因為你能在與最終產品盡可能相近的情況下調試你的代碼. 在你同時使用這兩個選項時你必須清楚你所寫的某些代碼已經在優化時被 GCC 作了改動. 關於調試 C 程序的更多信息請看下一節"用 gdb 調試 C 程序" .
-pg 選項告訴 GCC 在你的程序里加入額外的代碼, 執行時, 產生 gprof 用的剖析信息以顯示你的程序的耗時情況. 關於 gprof 的更多信息請參考 "gprof" 一節.

用 gdb 調試 GCC 程序
Linux 包含了一個叫 gdb 的 GNU 調試程序. gdb 是一個用來調試 C 和 C++ 程序的強力調試器. 它使你能在程序運行時觀察程序的內部結構和內存的使用情況. 以下是 gdb 所提供的一些功能:
它使你能監視你程序中變數的值.
它使你能設置斷點以使程序在指定的代碼行上停止執行.
它使你能一行行的執行你的代碼.

在命令行上鍵入 gdb 並按回車鍵就可以運行 gdb 了, 如果一切正常的話, gdb 將被啟動並且你將在屏幕上看到類似的內容:
GDB is free software and you are welcome to distribute copies of it

under certain conditions; type "show ing" to see the conditions.

There is absolutely no warranty for GDB; type "show warranty" for details.

GDB 4.14 (i486-slakware-linux), Copyright 1995 Free Software Foundation, Inc.

(gdb)
當你啟動 gdb 後, 你能在命令行上指定很多的選項. 你也可以以下面的方式來運行 gdb :
gdb <fname>
當你用這種方式運行 gdb , 你能直接指定想要調試的程序. 這將告訴gdb 裝入名為 fname 的可執行文件. 你也可以用 gdb 去檢查一個因程序異常終止而產生的 core 文件, 或者與一個正在運行的程序相連. 你可以參考 gdb 指南頁或在命令行上鍵入 gdb -h 得到一個有關這些選項的說明的簡單列表.

為調試編譯代碼(Compiling Code for Debugging)
為了使 gdb 正常工作, 你必須使你的程序在編譯時包含調試信息. 調試信息包含你程序里的每個變數的類型和在可執行文件里的地址映射以及源代碼的行號. gdb 利用這些信息使源代碼和機器碼相關聯.
在編譯時用 -g 選項打開調試選項.

gdb 基本命令
gdb 支持很多的命令使你能實現不同的功能. 這些命令從簡單的文件裝入到允許你檢查所調用的堆棧內容的復雜命令, 表27.1列出了你在用 gdb 調試時會用到的一些命令. 想了解 gdb 的詳細使用請參考 gdb 的指南頁.

表 27.1. 基本 gdb 命令.

命 令 描 述
file 裝入想要調試的可執行文件.
kill 終止正在調試的程序.
list 列出產生執行文件的源代碼的一部分.
next 執行一行源代碼但不進入函數內部.
step 執行一行源代碼而且進入函數內部.
run 執行當前被調試的程序
quit 終止 gdb
watch 使你能監視一個變數的值而不管它何時被改變.
break 在代碼里設置斷點, 這將使程序執行到這里時被掛起.
make 使你能不退出 gdb 就可以重新產生可執行文件.
shell 使你能不離開 gdb 就執行 UNIX shell 命令.

gdb 支持很多與 UNIX shell 程序一樣的命令編輯特徵. 你能象在 bash 或 tcsh里那樣按 Tab 鍵讓 gdb 幫你補齊一個唯一的命令, 如果不唯一的話 gdb 會列出所有匹配的命令. 你也能用游標鍵上下翻動歷史命令.

gdb 應用舉例
本節用一個實例教你一步步的用 gdb 調試程序. 被調試的程序相當的簡單, 但它展示了 gdb 的典型應用.

下面列出了將被調試的程序. 這個程序被稱為 greeting , 它顯示一個簡單的問候, 再用反序將它列出.
#include <stdio.h>

main ()

{

char my_string[] = "hello there";

my_print (my_string);

my_print2 (my_string);

}

void my_print (char *string)

{

printf ("The string is %s\n", string);

}

void my_print2 (char *string)

{

char *string2;

int size, i;

size = strlen (string);

string2 = (char *) malloc (size + 1);

for (i = 0; i < size; i++)

string2[size - i] = string[i];

string2[size+1] = `\0';

printf ("The string printed backward is %s\n", string2);

}
用下面的命令編譯它:

gcc -o test test.c
這個程序執行時顯示如下結果:
The string is hello there

The string printed backward is
輸出的第一行是正確的, 但第二行列印出的東西並不是我們所期望的. 我們所設想的輸出應該是:
The string printed backward is ereht olleh
由於某些原因, my_print2 函數沒有正常工作. 讓我們用 gdb 看看問題究竟出在哪兒, 先鍵入如下命令:

gdb greeting

--------------------------------------------------------------------------------
注意: 記得在編譯 greeting 程序時把調試選項打開.
--------------------------------------------------------------------------------

如果你在輸入命令時忘了把要調試的程序作為參數傳給 gdb , 你可以在 gdb 提示符下用 file 命令來載入它:

(gdb) file greeting
這個命令將載入 greeting 可執行文件就象你在 gdb 命令行里裝入它一樣.
這時你能用 gdb 的 run 命令來運行 greeting 了. 當它在 gdb 里被運行後結果大約會象這樣:

(gdb) run

Starting program: /root/greeting

The string is hello there

The string printed backward is

Program exited with code 041
這個輸出和在 gdb 外面運行的結果一樣. 問題是, 為什麼反序列印沒有工作? 為了找出症結所在, 我們可以在 my_print2 函數的 for 語句後設一個斷點, 具體的做法是在 gdb 提示符下鍵入 list 命令三次, 列出源代碼:
(gdb) list

(gdb) list

(gdb) list

--------------------------------------------------------------------------------
技巧: 在 gdb 提示符下按回車健將重復上一個命令.
--------------------------------------------------------------------------------

第一次鍵入 list 命令的輸出如下:

1 #include <stdio.h>

2

3 main ()

4 {

5 char my_string[] = "hello there";

6

7 my_print (my_string);

8 my_print2 (my_string);

9 }

10
如果按下回車, gdb 將再執行一次 list 命令, 給出下列輸出:

11 my_print (char *string)

12 {

13 printf ("The string is %s\n", string);

14 }

15

16 my_print2 (char *string)

17 {

18 char *string2;

19 int size, i;

20
再按一次回車將列出 greeting 程序的剩餘部分:
21 size = strlen (string);

22 string2 = (char *) malloc (size + 1);

23 for (i = 0; i < size; i++)

24 string2[size - i] = string[i];

25 string2[size+1] = `\0';

26 printf ("The string printed backward is %s\n", string2);

27 }
根據列出的源程序, 你能看到要設斷點的地方在第24行, 在 gdb 命令行提示符下鍵入如下命令設置斷點:
(gdb) break 24
gdb 將作出如下的響應:
Breakpoint 1 at 0x139: file greeting.c, line 24

(gdb)

現在再鍵入 run 命令, 將產生如下的輸出:

Starting program: /root/greeting

The string is hello there

Breakpoint 1, my_print2 (string = 0xbfffdc4 "hello there") at greeting.c :24

24 string2[size-i]=string[i]
你能通過設置一個觀察 string2[size - i] 變數的值的觀察點來看出錯誤是怎樣產生的, 做法是鍵入:

(gdb) watch string2[size - i]
gdb 將作出如下回應:
Watchpoint 2: string2[size - i]
現在可以用 next 命令來一步步的執行 for 循環了:

(gdb) next
經過第一次循環後, gdb 告訴我們 string2[size - i] 的值是 `h`. gdb 用如下的顯示來告訴你這個信息:

Watchpoint 2, string2[size - i]

Old value = 0 `\000'

New value = 104 `h'

my_print2(string = 0xbfffdc4 "hello there") at greeting.c:23

23 for (i=0; i<size; i++)
這個值正是期望的. 後來的數次循環的結果都是正確的. 當 i=10 時, 表達式 string2[size - i] 的值等於 `e`, size - i 的值等於 1, 最後一個字元已經拷到新串里了.
如果你再把循環執行下去, 你會看到已經沒有值分配給 string2[0] 了, 而它是新串的第一個字元, 因為 malloc 函數在分配內存時把它們初始化為空(null)字元. 所以 string2 的第一個字元是空字元. 這解釋了為什麼在列印 string2 時沒有任何輸出了.

現在找出了問題出在哪裡, 修正這個錯誤是很容易的. 你得把代碼里寫入 string2 的第一個字元的的偏移量改為 size - 1 而不是 size. 這是因為 string2 的大小為 12, 但起始偏移量是 0, 串內的字元從偏移量 0 到 偏移量 10, 偏移量 11 為空字元保留.

為了使代碼正常工作有很多種修改辦法. 一種是另設一個比串的實際大小小 1 的變數. 這是這種解決辦法的代碼:

#include <stdio.h>

main ()

{

char my_string[] = "hello there";

my_print (my_string);

my_print2 (my_string);

}

my_print (char *string)

{

printf ("The string is %s\n", string);

}

my_print2 (char *string)

{

char *string2;

int size, size2, i;

size = strlen (string);

size2 = size -1;

string2 = (char *) malloc (size + 1);

for (i = 0; i < size; i++)

string2[size2 - i] = string[i];

string2[size] = `\0';

printf ("The string printed backward is %s\n", string2);

}
另外的 C 編程工具
Slackware Linux 的發行版中還包括一些我們尚未提到的 C 開發工具. 本節將介紹這些工具和它們的典型用法.
xxgdb
xxgdb 是 gdb 的一個基於 X Window 系統的圖形界面. xxgdb 包括了命令行版的 gdb 上的所有特性. xxgdb 使你能通過按按鈕來執行常用的命令. 設置了斷點的地方也用圖形來顯示.

你能在一個 Xterm 窗口裡鍵入下面的命令來運行它:
xxgdb
你能用 gdb 里任何有效的命令行選項來初始化 xxgdb . 此外 xxgdb 也有一些特有的命令行選項, 表 27.2 列出了這些選項.

表 27.2. xxgdb 命令行選項.

選 項 描 述
db_name 指定所用調試器的名字, 預設是 gdb.
db_prompt 指定調試器提示符, 預設為 gdb.
gdbinit 指定初始化 gdb 的命令文件的文件名, 預設為 .gdbinit.
nx 告訴 xxgdb 不執行 .gdbinit 文件.
bigicon 使用大圖標.

calls
你可以在 sunsite.unc.e FTP 站點用下面的路徑:
/pub/Linux/devel/lang/c/calls.tar.Z

來取得 calls , 一些舊版本的 Linux CD-ROM 發行版里也附帶有. 因為它是一個有用的工具, 我們在這里也介紹一下. 如果你覺得有用的話, 從 BBS, FTP, 或另一張CD-ROM 上弄一個拷貝. calls 調用 GCC 的預處理器來處理給出的源程序文件, 然後輸出這些文件的里的函數調用樹圖.

--------------------------------------------------------------------------------
注意: 在你的系統上安裝 calls , 以超級用戶身份登錄後執行下面的步驟: 1. 解壓和 untar 文件. 2. cd 進入 calls untar 後建立的子目錄. 3. 把名叫 calls 的文件移動到 /usr/bin 目錄. 4. 把名叫 calls.1 的文件移動到目錄 /usr/man/man1 . 5. 刪除 /tmp/calls 目錄. 這些步驟將把 calls 程序和它的指南頁安裝載你的系統上.
--------------------------------------------------------------------------------

當 calls 列印出調用跟蹤結果時, 它在函數後面用中括弧給出了函數所在文件的文件名:
main [test.c]
如果函數並不是向 calls 給出的文件里的, calls 不知道所調用的函數來自哪裡, 則只顯示函數的名字:
printf
calls 不對遞歸和靜態函數輸出. 遞歸函數顯示成下面的樣子:
fact <<< recursive in factorial.c >>>
靜態函數象這樣顯示:
total [static in calculate.c]
作為一個例子, 假設用 calls 處理下面的程序:

#include <stdio.h>

main ()

{

char my_string[] = "hello there";

my_print (my_string);

my_print2(my_string);

}

my_print (char *string)

{

printf ("The string is %s\n", string);

}

my_print2 (char *string)

{

char *string2;

int size, size2, i;

size = strlen (string);

size2 = size -1;

string2 = (char *) malloc (size + 1);

for (i = 0; i < size; i++)

string2[size2 - i] = string[i];

string2[size] = `\0';

printf ("The string printed backward is %s\n", string2);

}
將產生如下的輸出:
1 main [test.c]

2 my_print [test.c]

3 printf

4 my_print2 [test.c]

5 strlen

6 malloc

7 printf
calls 有很多命令行選項來設置不同的輸出格式, 有關這些選項的更多信息請參考 calls 的指南頁. 方法是在命令行上鍵入 calls -h .

cproto
cproto 讀入 C 源程序文件並自動為每個函數產生原型申明. 用 cproto 可以在寫程序時為你節省大量用來定義函數原型的時間.
如果你讓 cproto 處理下面的代碼:
#include <stdio.h>

main ()

{

char my_string[] = "hello there";

my_print (my_string);

my_print2(my_string);

}

my_print (char *string)

{

printf ("The string is %s\n", *string);

}

my_print2 (char *string)

{

char *string2;

int size, size2, i;

size = strlen (string);

size2 = size -1;

string2 = (char *) malloc (size + 1);

for (i = 0; i < size; i++)

string2[size2 - i] = string[i];

string2[size] = `\0';

printf ("The string printed backward is %s\n", string2);

}
你將得到下面的輸出:
/* test.c */

int main(void);

int my_print(char *string);

int my_print2(char *string);
這個輸出可以重定向到一個定義函數原型的包含文件里.
indent
indent 實用程序是 Linux 里包含的另一個編程實用工具. 這個工具簡單的說就為你的代碼產生美觀的縮進的格式. indent 也有很多選項來指定如何格式化你的源代碼.這些選項的更多信息請看indent 的指南頁, 在命令行上鍵入 indent -h .

下面的例子是 indent 的預設輸出:

運行 indent 以前的 C 代碼:

#include <stdio.h>

main () {

char my_string[] = "hello there";

my_print (my_string);

my_print2(my_string); }

my_print (char *string)

{

printf ("The string is %s\n", *string);

}

my_print2 (char *string) {

char *string2;

int size, size2, i;

size = strlen (string);

size2 = size -1;

string2 = (char *) malloc (size + 1);

for (i = 0; i < size; i++)

string2[size2 - i] = string[i];

string2[size] = `\0';

printf ("The string printed backward is %s\n", string2);

}
運行 indent 後的 C 代碼:
#include <stdio.h>

main ()

{

char my_string[] = "hello there";

my_print (my_string);

my_print2 (my_string);

}

my_print (char *string)

{

printf ("The string is %s\n", *string);

}

my_print2 (char *string)

{

char *string2;

int size, size2, i;

size = strlen (string);

size2 = size -1;

string2 = (char *) malloc (size + 1);

for (i = 0; i < size; i++)

string2[size2 - i] = string[i];

string2[size] = `\0';

printf ("The string printed backward is %s\n", string2);

}
indent 並不改變代碼的實質內容, 而只是改變代碼的外觀. 使它變得更可讀, 這永遠是一件好事.
gprof
gprof 是安裝在你的 Linux 系統的 /usr/bin 目錄下的一個程序. 它使你能剖析你的程序從而知道程序的哪一個部分在執行時最費時間.
gprof 將告訴你程序里每個函數被調用的次數和每個函數執行時所佔時間的百分比. 你如果想提高你的程序性能的話這些信息非常有用.

為了在你的程序上使用 gprof, 你必須在編譯程序時加上 -pg 選項. 這將使程序在每次執行時產生一個叫 gmon.out 的文件. gprof 用這個文件產生剖析信息.

在你運行了你的程序並產生了 gmon.out 文件後你能用下面的命令獲得剖析信息:

gprof <program_name>
參數 program_name 是產生 gmon.out 文件的程序的名字.

--------------------------------------------------------------------------------
技巧: gprof 產生的剖析數據很大, 如果你想檢查這些數據的話最好把輸出重定向到一個文件里.
--------------------------------------------------------------------------------

f2c 和 p2c
f2c 和 p2c 是兩個源代碼轉換程序. f2c 把 FORTRAN 代碼轉換為 C 代碼, p2c 把 Pascal 代碼轉換為 C 代碼. 當你安裝 GCC 時這兩個程序都會被安裝上去.
如果你有一些用 FORTRAN 或 Pascal 寫的代碼要用 C 重寫的話, f2c 和 p2c 對你非常有用. 這兩個程序產生的 C 代碼一般不用修改就直接能被 GCC 編譯.

如果要轉換的 FORTRAN 或 Pascal 程序比較小的話可以直接使用 f2c 或 p2c 不用加任何選項. 如果要轉換的程序比較龐大, 包含很多文件的話你可能要用到一些命令行選項.

在一個 FORTRAN 程序上使用 f2c , 輸入下面的命令:

f2c my_fortranprog.f

--------------------------------------------------------------------------------
注意: f2c 要求被轉換的程序的擴展名為 .f 或 a .F .
--------------------------------------------------------------------------------

要把一個Pascal 程序裝換為 C 程序, 輸入下面的命令:
p2c my_pascalprogram.pas
這兩個程序產生的 C 源代碼的文件名都和原來的文件名相同, 但擴展名由 .f 或 .pas 變為 .c.

熱點內容
伺服器內網ip地址安全 發布:2025-01-17 07:33:18 瀏覽:185
華為新演算法 發布:2025-01-17 07:31:43 瀏覽:55
希沃如何存儲 發布:2025-01-17 07:31:00 瀏覽:551
演算法研讀 發布:2025-01-17 07:19:37 瀏覽:279
我的世界橙子生存之旅伺服器ip 發布:2025-01-17 07:19:27 瀏覽:617
用戶名密碼錯誤導致認證失敗是什麼意思 發布:2025-01-17 06:58:24 瀏覽:328
安卓空調遙控器在哪裡 發布:2025-01-17 06:43:54 瀏覽:195
安卓版什麼做視頻軟體好用 發布:2025-01-17 06:43:14 瀏覽:336
神超電腦配置哪個好 發布:2025-01-17 06:35:50 瀏覽:574
pythonlistsplit 發布:2025-01-17 06:31:26 瀏覽:34