當前位置:首頁 » 編程軟體 » 編程格子布

編程格子布

發布時間: 2022-03-15 05:40:12

『壹』 怎麼編程

學編程,決不可心浮氣燥。任何實踐都是……

我認為有些人的觀點錯了。錯得一塌糊塗。
對於這個問題,我的基本觀點是:任何實踐都是理論的載體或表現形式。而理論也是由實踐上升而來
的。兩者是辨證的。今天,我們只關注它的前一部分:任何實踐都是理論的載體和表現形式。
我不是想故弄玄虛,但真理的外表看上去往往就是這么奇形怪狀、難以理解。讓我來給你解釋一下
吧。
比如:戰爭是軍事理論的實踐,也是它的表現形式。戰爭的勝負取決於指揮者軍事理論的掌握程度(別
給我舉趙括這類「紙上談兵」的反例,他們根本算不上掌握了軍事理論,充其量只算是「背」下了軍事
理論。「掌握」和「倒背如流」這是兩個概念。)

1、VC、VB、Delphi …… ,你該學哪個?
具體到編程而言,我要告訴你:任何一種計算機語言,都是計算機科學理論的載體或表現形式。C++很
神嗎?Java很酷嗎?它們差距很遠嗎?是的。但從理論的層面上講,它們沒有區別,都是「面向對象」
理論的一個具體形式而已。
現在的程序員們被發行編譯軟體(通常我們將其稱為「系統軟體」)的商家不斷推出的產品搞得眼花繚
亂,頭痛欲裂。不斷地跟在新語言後面跑,這條路還沒跑到頭,那邊的「新路」又鳴鑼開張了,於是再
跟著跑……漸漸地有些人開始感嘆:學海無涯、學無止境,或什麼「程序員是青春飯,過了三十別想
干」……
在此我不得不嘆息:中國的教育真是一種「形而上學」的教育。早在高中時代我們就學過「辨證唯物主
義」的基本理論:做事情要抓主要矛盾。這一條恐怕誰都知道,卻鮮見誰能在實踐中把這一理論運用得
「爐火純青」的。把這一理論運用到編程上來講就是:
理論是主要矛盾,語言是次要矛盾,學會了理論,再具體到學一種語言時,你只不過是在進行某種消遣
而已。
現在學VC的普遍看不起學VB的或學Delphi的。但如果一個用Delphi的人,在需要寫web程序時,用
TCP/IP做了一個構架,嵌入到應用程序中;而另一個用VC的人卻只會把一個又一個的組件拖來拉去的做
些個「例子程序」的翻版。你說他們兩個誰歷害?Delphi和VC誰歷害?
真應了這樣一段話,問:紐約好還是上海好?答:有錢哪兒都好,沒錢哪兒都不好。上海的富人並不比
紐約的富人少多少的優越感,而紐約的乞丐也不比上海的乞丐多多少幸福感。
現在你還會說學VC的人就一定比學Delphi的人水平高、「錢景」好嗎?

2、「淺薄」絕不該是中國程序員的性格特徵!!!
想問一句:中國程序員這么多,你們真地把基礎理論學好了嗎?別用你現有的編程經歷告訴我:編程不
需要數學,不需要數據結構,不需要編譯原理…… ……說話得負責任,您知道嗎?我之所以發表這篇
文章,就是因為再也看不下去這種在中國編程界漫延的歪理邪說了!邪教害死的是人的個體,你們害死
的是中國軟體業的未來!如果再讓這種理論繼續毒害編程新手的思想,中國將在計算機領域失去民族的
尊嚴!!!
請問,操作系統、編譯軟體、資料庫系統…… 這些被稱為「系統軟體」的東東,中國有幾樣拿得出手
的產品?也許是我孤陋寡聞,據我所知:我們國家一件像樣的也沒有。
不錯,我們是有一些網站的股票在西方上市了,我們是有一些人被國外公司請去做高級職員了,我們也
有一些人把西方的官方網站給黑了……但是,我們用的編譯工具是誰的產品?我們微機里裝得是誰做出
的操作系統?我們的程序跑在誰的晶元上?
愛之深,恨之切。我愛的是中國,但我痛恨不是中國,而是在中國編程界普遍流行的「淺薄」和「自以
為是」,這是我們民族軟體業的一顆毒瘤!
是的,現在編程方面快速入門的書滿天飛,讓程序員的門檻越來越低。我這個外行就得益於這個「低門
檻」,跑了進來。但進來後,我們就不能再這樣淺薄下去了——我的兄弟們!
用他國提供的工具做幾個網站,寫幾個應用程序,弄出幾個病毒…… 是振興不了民族軟體業的。順便
說一句:我尊敬求伯君,但我不認為金山公司和其系列產品配得上被稱為「民族軟體業」的大旗,相對
這個稱號,它差得太遠了。
…… ……
寫flash軟體的人會認為用flash做動畫的人比他歷害嗎?Adobe公司真的認為考取Adobe證書的人是「人
才」嗎?MSCE、MSCD…… 通過這類考試得到微軟徽章的人,在微軟眼裡是「人才」還是「義務推銷
員」?持這類證書以及其他一些大軟體公司認證的人,你們還在以為自己是「中國軟體業的精英」而感
嘆「懷才不遇」、工資太少嗎?
醒醒吧,朋友。別再用編程不需要理論的話來自欺欺人了,別再用自己的淺薄來教導別人像自己一樣淺
薄了。我想問問那些稱數學、數據結構等基礎課程對編程沒用的人:
請你們搞清一個概念:是這些理論「沒用」,還是你們「沒用到」;是你們「沒用到」,還是你們的水
平根本「用不到」;是你們「不需要用」,還是你們根本「不會用」?
舉個例子,操作系統中的工作調度,若工作優先權相同,用什麼方法進行調度?當然是「先到先做」—
—這就是數據結構中「隊列」的應用。你們說「用不到」,只怕是因為到目前為止還沒機會接觸這類
「高端編程」的挑戰吧?這樣的話,那就算了,掙你的錢去,但別再來這里誤人子弟,吹噓什麼優秀的
程序員不需要理論。
是誰說系統軟體發展的黃金時代已經過去了?Linux不就是在MS操作系統雄霸多年的情況下一舉成名的
嗎?中國難道就找不到這樣一個機會? 不,如果我們的程序員克服了現在的浮燥與急功近利,我們一
樣可以在「系統軟體」這一軟體業的「高端」樹立自己的品牌!所以請看下面——

3、年輕人應該有宏偉的志向。
用別人的產品做自己的東西,你永遠只是個「高級客戶」,成不了真正的開發者。不管你用他國的系統
軟體開發出多少好的產品,掙了多少錢,只要人家一升級、或一推出新產品,你口袋裡的銀子連同最後
一條小褲叉也會被剝奪得一干二凈。你,只不過是一個高級打工仔。
我希望打算進入編程界的朋友們,特別是現在還很年輕的朋友,能有一個比較高的志向。更希望已經進
到這行的朋友們能有以「振興民族軟體業」為己任,力爭成為中國軟體業的「旗手」。
我不贊同方東興把微軟罵得一無是處。更不贊同年輕人學他那樣,一賭氣而拒絕用微軟的產品,拒絕
Windows、拒絕VC 、拒絕IE ……
我認為方東興只是個狹隘的民族主義者。他看到了中國軟體業民族的一面,卻不願承認我們落後的一
面。毫無根據的「自尊」等於自取滅亡。清朝末年,我們的科技並不落後於西方多少,但我們過分「自
尊」的「大國思想」卻使我們失去了向其他國家學習的機會。當我們嘲笑西方人的藍眼睛、大鼻子的時
候,他們的堅船利炮,卻把我們「央央大國」的皇帝、太後打得滿世界逃難。慈禧太後被打得滿地找牙
的時候,不得不說出「量中華之物力,博與國之歡欣」的齷齪話,此時,她「大國皇太後」的自尊何在
呢?前面自尊過了頭,事後必遭報應。這報應一持續,就是幾百年,直到現在。難道我們還要繼續閉門
造車,再走老路嗎?
我們現在承認微軟比我們強,向微軟學習,並不等於我們永遠要跟在他後面跑!在我們低下頭的時候,
我們就應該想到,何時能再抬起這顆高貴的頭顱!!!而且是「一定」!!!!!自尊不是錯,錯是錯
在「太盲目」——妄自尊大,你就要和慈禧一樣被打得滿地找牙。做為一個大國,一個明智的民族,我
們不能諱疾忌醫。
年輕人,志當存高遠。相信我,當你以民族振興為己任的時候,封王稱帝、富貴榮華,都只不過是千秋
偉業的一個副產品。在這個尊重知識、崇尚科學的年代,志向高遠的人,永遠不必擔心自己的「錢
途」。
不必諱言,我承認我當初進入編程領域不完全出於興趣,也有「錢途」方面的考慮。但就好像當年參加
八路的戰士當中,有些只是報著能吃上軍糧或打鬼子報家仇的思想入伍的,但後來卻學習了馬列,提高
了覺悟,轉為以興國救民為目標一樣,當我一步步深入到這行以後,當我決定考研並慢慢提高了認識以
後,我的目的變了。我覺得應該有個更高的人生目標,更高志向和追求來支持我的行動。這個目標就
是:為民族軟體業盡一把自己的力。
真心希望你與我同行。

4、幾點建議:
建議大家耐下心來先學好理論,然後再選擇具體的工具或語言。不過,在所有這一切開始以前,先打好
c語言和匯編基礎。
能不能得道,就看你在見到別人做出一些花里胡哨的東西時,是不是能堅定信心、耐住寂寞、抵禦誘惑
了。
一個和我一起學習C語言的人,學完就直接開始玩VC,而我則潛下心來學了些C++和理論方面的東西。早
早地,他就能仿照書上用VC做些界面似的東西在我面前炫耀,可後來,當我基礎理論的學習告一段落,
做個圖書管理程序賣了800大洋時,他還只是停留在做「例子程序」的水平上。現在我們談論起編程,
深度早已不可同日而語了。他起跑領先,卻落在了後面。
我不敢自以為是,只是想用這個親身經歷告訴大家:學編程,決不可心浮氣燥。
5、結束語
我的話觸到許多人的痛處,而且由於寫時心中氣憤難平,有些出言不遜,可能要遭人罵了。不過,既然
寫了,就不怕罵。因為:以上所言全是忠告,識不識貨,就看您的眼光了

『貳』 C語言編程

貌似我在200行以內完成了.... 45行.
本來不準備寫的. 一樓的那句話讓我想嘗試下...
樓主最好加個QQ群, 去一樓說的群里轉轉,有問題就問,有好處
雖然說原水不解近渴,但有了水源以後就不怕沒水喝,樓主加油吧

#include <stdio.h>
/*按你給的數組定義了一個M*N矩陣即:4*4矩陣*/
#define M 4 /*當輸入的矩陣行列數M,N改變時*/
#define N 4 /*將此處的M,N值改成所需要的*/
void sort(int a[],int n);
int main()
{
int i,j,a[M][N];
int sum=0,sumM[M]={0},sumN[N]={0};
printf("輸入二維矩陣:\n"); /*需要你輸入矩陣元素,即數組元素*/
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
scanf("%d",&a[i][j]);
sum+=a[i][j];
sumM[i]+=a[i][j]; /*所有求和運算循環內完成了*/
sumN[j]+=a[i][j];
}
printf("\n輸入矩陣各元素總和為:%d\n\n",sum);
sort(sumM,M);
sort(sumN,N);
printf("各行元素之和升序輸出:");
for(i=0;i<M;i++) printf("%d ",sumM[i]);
printf("\n\n各列元素之和升序輸出:");
for(i=0;i<N;i++) printf("%d ",sumN[i]);
printf("\n\n");
return 0;
}
/*數組升序排序函數*/
void sort(int a[],int n)
{
int i,j,min,pos;
for(i=0;i<n-1;i++)
{
min=a[i],pos=i;
for(j=i+1;j<n;j++)
if(a[j]<min)
{
min=a[j];
pos=j;
}
a[pos]=a[i];
a[i]=min;
}
}

『叄』 編程模擬「地雷游戲」在9x9方格中隨機布上10個地雷按9行9列輸出各格子的數,(有雷為9,無雷為0),在有相

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
int map[11][11];
const int N = 9;
void init()
{
memset(map,0,sizeof(map));
int c = 10;
int i,j;
int r;
while(c--)
{
do
{
r = rand()%81;
i = r/9;
j = r%9;
}while(map[i][j]!=0);
map[i][j]=9;
}
}
void print()
{
for(int i=0;i<N;++i)
{
for(int j=0;j<N;++j)
printf("%d",map[i][j]);
printf("\n");
}
}
int main()
{
srand(time(NULL));
init();
print();

return 0;
}
這個每次執行一次 就是隨機一個地雷陣
還有什麼問題再問我 用G++ 編譯

『肆』 c語言編程

程序設計語言的預處理的概念:在編譯之前進行的處理。
C語言的預處理主要有三個方面的內容: 1.宏定義; 2.文件包含; 3.條件編譯。 預處理命令以符號「#」開頭。
1宏定義
1.不帶參數的宏定義:
宏定義又稱為宏代換、宏替換,簡稱「宏」。
格式:
#define標識符文本
其中的標識符就是所謂的符號常量,也稱為「宏名」。
預處理(預編譯)工作也叫做宏展開:將宏名替換為文本(這個文本可以是字元串、可以是代碼等)。
掌握"宏"概念的關鍵是「換」。一切以換為前提、做任何事情之前先要換,准確理解之前就要「換」。
即在對相關命令或語句的含義和功能作具體分析之前就要換:
例:
#define PI3.1415926
把程序中全部的標識符PI換成3.1415926
說明:
(1)宏名一般用大寫
(2)使用宏可提高程序的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如:數組大小常用宏定義
(3)可以用#undef命令終止宏定義的作用域
(4)宏定義可以嵌套
2.帶參數的宏:
除了一般的字元串替換,還要做參數代換
格式:
#define 宏名(參數表)文本
例如:#define S(a,b) a*b
area=S(3,2);第一步被換為area=a*b; ,第二步被換為area=3*2;
類似於函數調用,有一個啞實結合的過程:
(1)實參如果是表達式容易出問題
#define S(r) r*r
area=S(a+b);第一步換為area=r*r;,第二步被換為area=a+b*a+b;
正確的宏定義是#define S(r) ((r)*(r))
(2)宏名和參數的括弧間不能有空格
(3)宏替換只作替換,不做計算,不做表達式求解
(4)函數調用在編譯後程序運行時進行,並且分配內存。宏替換在編譯前進行,不分配內存
(5)宏的啞實結合不存在類型,也沒有類型轉換。
(6)宏展開使源程序變長,函數調用不會
(7)宏展開不佔運行時間,只佔編譯時間,函數調用占運行時間(分配內存、保留現場、值傳遞、返回值)
2文件包含
一個文件包含另一個文件的內容
格式:
#include "文件名"

#include <文件名>
編譯時以包含處理以後的文件為編譯單位,被包含的文件是源文件的一部分。
編譯以後只得到一個目標文件.obj
被包含的文件又被稱為「標題文件」或「頭部文件」、「頭文件」,並且常用.h作擴展名。
修改頭文件後所有包含該文件的文件都要重新編譯
頭文件的內容除了函數原型和宏定義外,還可以有結構體定義,全局變數定義:
(1)一個#include命令指定一個頭文件;
(2)文件1包含文件2,文件2用到文件3,則文件3的包含命令#include應放在文件1的頭部第一行;
(3)包含可以嵌套;
(4)<文件名>稱為標准方式,系統到頭文件目錄查找文件,
"文件名"則先在當前目錄查找,而後到頭文件目錄查找;
(5)被包含文件中的靜態全局變數不用在包含文件中聲明。
3條件編譯
有些語句希望在條件滿足時才編譯。
格式:(1)
#ifdef 標識符
程序段1
#else
程序段2
#endif

#ifdef
程序段1
#endif
當標識符已經定義時,程序段1才參加編譯。
格式:(2)
#ifndef 標識符
格式:(3)
#if 表達式1
程序段1
#elif 表達式2
程序段2
……
#elif 表達式n
程序段n
#else
程序段n+1
#endif
當表達式1成立時,編譯程序段1,當不成立時,編譯程序段2。
使用條件編譯可以使目標程序變小,運行時間變短。
預編譯使問題或演算法的解決方案增多,有助於我們選擇合適的解決方案。
此外,還有布局控制:#pragma,這也是我們應用預處理的一個重要方面,主要功能是為編譯程序提供非常規的控制流信息。

『伍』 用C語言編程

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

void FunctionTest( double **a , int row)
{
int i=0, k=0, j=0;
double dMinDistance=0, dt=0, t=0;

for ( i=2; i < row-1; i++ )
{
k=i;
for ( j=i+1; j < row; j++ )
{
if ( sqrt(pow(a[k][0], 2) + pow(a[k][1], 2)) > sqrt( pow(a[j][0], 2) + pow(a[j][1], 2) ) )
{
k=j;
}
}
if ( k!= i)
{
t=a[i][0];a[i][0]=a[k][0];a[k][0]=t;
t=a[i][1];a[i][1]=a[k][1];a[k][1]=t;
}
}

dMinDistance = sqrt( pow( a[0][0]-a[2][0], 2) + pow(a[0][1]-a[2][1],2) );

for ( i=2; i<row-1; i++ )
{
dt= sqrt( pow( a[i][0]-a[i+1][0],2) + pow( a[i][1]-a[i+1][1], 2 ) );
if ( dMinDistance < dt )
{
dMinDistance = dt;
}
}

dt = sqrt( pow( a[1][0]-a[row-1][0], 2) + pow(a[1][1]-a[row-1][1],2) );
dMinDistance = ( dMinDistance < dt ) ? dt : dMinDistance;

printf( "\n小羊最小的跨越距離為: %lf\n", dMinDistance );

}
int main()
{

int n=0, i=0;
double **a;
printf( "請輸入整數n:");
scanf( "%d", &n );
if ( n >0 )
{

a = (double **) malloc( sizeof(double*) * n );
}
for ( i=0; i < n; i++ )
{
a[i] = (double*)malloc( sizeof(double) * 2);
switch ( i )
{
case 0:
printf( "\n請輸入小羊的坐標X Y(空格分隔):");
break;
case 1:
printf( "\n請輸入娃娃坐標X Y(空格分隔):");
break;
default:
printf( "\n請輸入石頭坐標X Y(空格分隔):");
break;
}
scanf( "%lf%lf", &a[i][0], &a[i][1]);
printf( "\n");

}

FunctionTest(a, n );

for ( i=0; i <n; i++ )
{
free(a[i]);
}
free(a);

return 0 ;
}

『陸』 程序員為什麼都喜歡穿格子襯衫

這個應該是對程序員的一種誤解吧,我估計大部分的人是看國外的電視劇或者電影,造成對這個職業的人群的印象就是喜歡穿格子襯衫,其實不是這樣的,或者直接說我們國內的程序員就不是這樣的,我個人就是程序員,身邊的大部分也是程序員,但是基本上是沒看過有人穿格子襯衫的。

因為這個很土啊,顯的很老氣,別人看著都是會覺得會眼花,再不會打扮自己的,我想也不會去穿這個的,我現在能想到會去穿這個衣服的程序員,就除非是真的很賴,出於不想換衣服的目的,因為格子的襯衫很耐臟,一般的臟都看不出來的,可以不用常換衣服。

現在的程序員的標識,其實不是格子襯衫,而是背包,很多的程序員都是有背包的習慣的,我早先時候,也是有這個習慣的,但是後面做公交的時候,自己靠著哪些背包的人,覺得非常不舒服,自然也就不去背包了,但是現在我的很多程序員同事和朋友都還是有這個習慣的。所以在北上關深這些地方,如果看見背背包的,不是做銷售的,就是程序員,而且是絕對是程序員居多。

至於穿著的話,一般程序員都是簡單為主了,基本上都是比較簡單的一點的T恤和牛仔褲,也有些會選擇穿一些布褲之類的,甚至穿短褲上班的也有不少啊。總之就是相對會比較隨便,而且這個崗位也決定了公司對這個的穿著要求也是不高的。

『柒』 求C語言編程高手

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M 100
#define IN 1
#define OUT 0 /*標記退出程序*/
#define LEN sizeof(struct person)
#define SIZ (sizeof(struct person)-sizeof(struct person *))
struct person
{
char name[20];
char unit[20];
char tel[20];
struct person *next;
};
struct person pe;
struct person * head;
static int num;

int choice() /*控制操作的重復*/
{
char c;
printf("continue or not:Y/N\n");
getchar();
c=getchar();
if(c=='y'||c=='Y')
return (1);
else
return (0);
}

struct person * creat() /*逐一錄入聯系人的基本信息,建立先進後出的鏈表*/
{
char s[20];
struct person *pi;

head=NULL;
printf("input the names end of'0':\n"); /*標記輸入的結束*/
scanf("%s",s);
do
{
pi=(struct person *)malloc(LEN);
strcpy(pi->name,s);
printf("the units and the telephone numbers:\n");
scanf("%s%s",pi->unit,pi->tel);
pi->next=head;
head=pi;
printf("input the names end of '0':\n");
num++;
scanf("%s",s);

}
while(strcmp(s,"0"));

pi=head; /*顯示信息*/
while(pi!=NULL)
{
printf("%-20s %-20s %-20s\n",pi->name,pi->unit,pi->tel);
pi=pi->next;
}
return(head);
}

void strchange(char *s1,char * s2) /*交換字元串*/
{
char temp[20];

strcpy(temp,s1);
strcpy(s1,s2);
strcpy(s2,temp);
}

void sort(struct person *head,int n)
{
int i,j;
struct person *p1,*p2;

for(p1=head,i=0;i<n;i++,p1=p1->next)
for(p2=p1->next,j=0;j<n-i-1;j++,p2=p2->next)
if(strcmp(p1->name,p2->name)>0) /*調用strchange函數,交換姓名,單位和號碼*/
{
strchange(p1->name,p2->name);
strchange(p1->unit,p2->unit);
strchange(p1->tel,p2->tel);
}
p1=head;
while(p1!=NULL) /*輸出排序後的信息*/
{
printf("%-20s %-20s %-20s\n",p1->name,p1->unit,p1->tel);
p1=p1->next;
}
}

struct person* search(struct person *head,int n) /*查詢指定信息*/
{
int i,flag=0,state=1;
char s[20];
struct person *p;

printf("input the name you want:\n");
scanf("%s",s);
for(i=0,p=head;i<n;i++,p=p->next)
if(strcmp(p->name,s)==0)
{
flag=1;
break;
}
if(!flag)
{
printf("no such person.\n");
return(NULL);
}
else return(p);
}

void del(struct person * *headp) /*刪除指定信息*/
{
struct person *p,*last;
char s[20];

printf("input the name to delete:\n");
scanf("%s",s);

p=*headp;
while(strcmp(p->name,s)!=0&&p->next!=NULL)
{
last=p;
p=p->next;
}
if(!strcmp(p->name,s))
{
if(p==*headp)
*headp=p->next;
else
last->next=p->next;
free(p);
}
}

struct person * add(struct person * *headp) /*添加指定信息*/
{
struct person *p1,*p2,*current;
char n[20],u[20],t[10];
printf("input the information,name,unit and telephone number:\n");
scanf("%s%s%s",n,u,t);
p2=(struct person *)malloc(LEN);
strcpy(p2->name,n);
strcpy(p2->unit,u);
strcpy(p2->tel,t);
current=*headp;
while(strcmp(current->name,n)<0&¤t->next!=NULL)
{
p1=current;
current=current->next;
}

if(strcmp(current->name,n)>=0) /*插入點不是鏈尾*/
{
if(current==*headp) /*在第一個結點之前插入*/
{
p2->next=*headp;
*headp=p2;
}
else /*在中間插入*/
{
p2->next=current;
p1->next=p2;
}
}
else
{ /*在鏈尾結點之後插入*/
p2->next=NULL;
current->next=p2;
}
return(p2);
}

void save(char *filename,int n,struct person *p) /*把信息保存到文件*/
{
FILE *fp;
int i;
struct person *pi;

if((fp=fopen(filename,"wb"))==NULL)
{
printf("Can't open the file.\n");
exit(-1);
}

for(pi=p,i=0;i<num;i++,pi=pi->next) /*從鏈頭開始逐一讀入到內存*/
fwrite(pi,SIZ,1,fp);
fclose(fp);
}

void readfile(char *filename) /*把文件讀入內存並顯示文件信息*/
{
FILE *fp;
struct person *p,*tail,*headp;
long len;
int i,n;

if((fp=fopen(filename,"rb"))==NULL)
{
printf("Can't open the file.\n");
exit(-1);
}
fseek(fp,0L,SEEK_END); /*n為文件中錄入聯系人的個數*/
len=(int)ftell(fp);
n=len/SIZ;
rewind(fp);
i=0;
headp=NULL;
p=(struct person *)malloc(LEN);
fread(p,SIZ,1,fp);
p->next=headp;
headp=p;
tail=p;
while(i<n-1)
{
p=(struct person *)malloc(LEN);
fread(p,SIZ,1,fp);
p->next=NULL;
tail->next=p;
tail=p;
i++;
}
p=headp; /*顯示從文件讀出的信息*/
while(p!=NULL)
{
printf("%-20s %-20s %-20s\n",p->name,p->unit,p->tel);
p=p->next;
}
fclose(fp);
}

void file(char *source,char *target)
{
FILE *fs,*ft;
char c;

if((fs=fopen(source,"rb"))==NULL) /*打開源文件*/
{
printf("Can't open %s.\n",source);
exit(-1);
}
if((ft=fopen(target,"wb"))==NULL) /*打開目標文件*/
{
printf("Can't open %s.\n",target);
exit(-1);
}
while(!feof(fs))
{
c=getc(fs);
putc(c,ft);
}
fclose(fs);
fclose(ft);
}

void main()
{
int op,state,flag=IN;
struct person *pi;
char fname[20],target[20],source[20];

while(flag==IN)
{
printf("menu1:Record.\n"
"menu2:Sort.\n"
"menu3:Search information of a certain person.\n"
"menu4:Delete information of a certain person.\n"
"menu5:Add new infomation.\n"
"menu6:Save.\n"
"menu7:Read file into memory and Show the information.\n"
"menu8:Backup.\n"
"menu9:Exit!\n"
"please choose an item(1~9).\n");
fflush(stdin); /*吸收回車符*/
scanf("%d",&op);
switch(op)
{
case 1:head=creat();break;
case 2:sort(head,num);break;
case 3:
state=1; /*標記多次查詢*/
while(state)
{
pi=search(head,num);
printf("%-20s %-20s %-20s\n",pi->name,pi->unit,pi->tel);
state=choice();
}
break;
case 4:
state=1; /*標記多次刪除*/
while(state){
del(&head);
state=choice();
num--;
}
break;
case 5:
state=1; /*標記多次添加*/
while(state)
{
add(&head);
state=choice();
num++;
}
break;
case 6:
printf("input the name of file:\n");
scanf("%s",fname);
save(fname,num,head);
break;
case 7:
printf("input the name of file:\n");
scanf("%s",fname);
readfile(fname);break;
case 8:
printf("input the source file's name and target file's name.\n");
scanf("%s%s",source,target);
file(source,target);
break;
case 9:
printf("Exit!");
flag=OUT;
break;
default:
flag=IN; /*標記非法命令*/
printf("illegal orders.\n");

}
}
}

『捌』 用C語言如何編寫一個石頭剪子布的程序

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

void main()

{

int com,user;

char c;

srand((unsigned)time(NULL)); //初始化隨機數,如果沒有這條語句,每次運行電腦產生的隨機數序列都是一樣的

printf("進入游戲 ");

do{

printf("請出拳(1.剪刀、2.石頭、3.布):");

scanf("%d",&user);

com=rand()%3+1; //產生1-3范圍內的隨機數

printf("電腦出%s ",com==1?"剪刀":com==2?"石頭":"布");

switch(com-user) //用電腦產生的數和用戶輸入的數的差值來判斷勝負

{

case 0:

printf("平手 ");

break;

case 1:

case -2:

printf("電腦贏了 ");

break;

case -1:

case 2:

printf("你贏了 ");

}

printf("繼續游戲按Y鍵、其它鍵退出");

getchar();

c=getchar();

}while(c=='y' || c=='Y');

printf("已經退出遊戲");

}

(8)編程格子布擴展閱讀

C++編程: 石頭剪子布

#include<cstdio>

#include<iostream>

using namespace std;

int main()

{

int n;

char a[10],b[10];

cin>>n;

int c[n+3];

for(int i=1;i<=n;i++)

{

cin>>a>>b;

if(a[0]=='R')

{

if(b[0]=='R')

{

c[i]=0;

}

if(b[0]=='S')

{

c[i]=1;

}

if(b[0]=='P')

{

c[i]=2;

}

}

else if(a[0]=='S')

{

if(b[0]=='R')

{

c[i]=2;

}

if(b[0]=='S')

{

c[i]=0;

}

if(b[0]=='P')

{

c[i]=1;

}

}

else if(a[0]=='P')

{

if(b[0]=='R')

{

c[i]=1;

}

if(b[0]=='S')

{

c[i]=2;

}

if(b[0]=='P')

{

c[i]=0;

}

}

}

for(int i=1;i<=n;i++)

switch(c[i])

{

case 0:

{

printf("Tie ");break;

}

case 1:

{

printf("Player1 ");break;

}

case 2:

{

printf("Player2 ");break;

}

}

return 0;

}

熱點內容
tomcat編譯後的文件 發布:2025-01-23 06:05:46 瀏覽:253
惠普暢遊人14是什麼配置表 發布:2025-01-23 05:57:39 瀏覽:295
簡單搭建ftp伺服器 發布:2025-01-23 05:49:41 瀏覽:227
有qq號沒密碼如何登上 發布:2025-01-23 05:34:08 瀏覽:469
javajsdes加密 發布:2025-01-23 05:33:21 瀏覽:770
qq怎麼上傳視頻到電腦上 發布:2025-01-23 05:07:27 瀏覽:972
如何申請i7伺服器地址 發布:2025-01-23 04:42:15 瀏覽:848
瀏覽器內核源碼 發布:2025-01-23 04:41:34 瀏覽:662
精英版繽智少了些什麼配置 發布:2025-01-23 04:41:30 瀏覽:359
編寫c編譯器 發布:2025-01-23 04:41:30 瀏覽:971