Time of Update: 2017-01-19
這是一個簡單的猜拳遊戲(剪子包子錘),讓你與電腦對決。你出的拳頭由你自己決定,電腦則隨機出拳,最後判斷勝負。下面的代碼會實現一個猜拳遊戲,讓你與電腦對決。你出的拳頭由你自己決定,電腦則隨機出拳,最後判斷勝負。啟動程式後,讓使用者出拳,截圖:使用者出拳,顯示對決結果:截圖:代碼實現:#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){ char gamer; // 玩家出拳
Time of Update: 2017-01-19
我們知道,C語言中的數組大小是固定的,定義的時候必須要給一個常量值,不能是變數。這帶來了很大的不便,如果數組過小,不能容下所有數組,如果過大,浪費資源。請實現一個簡單的動態數組,能夠隨時改變大小,不會溢出,也不會浪費記憶體空間。下面的代碼實現了簡單的動態數組:#include <stdio.h>#include <stdlib.h>int main(){ //從控制台擷取初始數組大小 int N; int *a; int i; printf("Input
Time of Update: 2017-01-19
我國古代數學家張丘建在《算經》一書中曾提出過著名的“百錢買百雞”問題,該問題敘述如下:雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,則翁、母、雛各幾何?翻譯過來,意思是公雞一個五塊錢,母雞一個三塊錢,小雞三個一塊錢,現在要用一百塊錢買一百隻雞,問公雞、母雞、小雞各多少只?題目分析如果用數學的方法解決百錢買百雞問題,可將該問題抽象成方程式組。設公雞x只,母雞y只,小雞z只,得到以下方程式組:A:5x+3y+1/3z = 100B:x+y+z = 100C:0 <= x <
Time of Update: 2017-01-19
楊輝三角是我們從初中就知道的,現在,讓我們用C語言將它在電腦上顯示出來。在初中,我們就知道,楊輝三角的兩個腰邊的數都是1,其它位置的數都是上頂上兩個數之和。這就是我們用C語言寫楊輝三角的關鍵之一。在高中的時候我們又知道,楊輝三角的任意一行都是的二項式係數,n為行數減1。也就是說任何一個數等於這個是高中的組合數。n代表行數減1,不代表列數減1。如:第五行的第三個數就為=6。現在我們按第一種思路來寫:先定義一個二維數組:a[N][N],略大於要列印的行數。再令兩邊的數為1,即當每行的第一個數和最後一
Time of Update: 2017-01-19
昨晚看了一下win32api編程的知識,我在網上搜尋了許多教程,一個美化版的windows編程,代碼錯漏百出,缺字,翻譯難懂生硬,術語不專業,一個windows.c編程,模糊,而且用的是VC++6.0,由於我的電腦裝不上vc++6.0,只能用vs2008,許多操作和函數都不太一樣了。在網上找到一篇部落格園的win32api編程的文章,照抄下來,結果編譯下來幾十個錯誤……暈死了。後來還是參照以下四個步驟,自己查MSDN用C語言寫出來了,暈死,英文不好,話說,金山詞霸對MSDN的整句翻譯很專業啊。步
Time of Update: 2017-01-19
代碼很簡單,功能也很單一,這裡就不多廢話了,大家直接看代碼吧。#include <stdio.h>#include <string.h> int main(int argc,char**argv){ char *token = argv[1]; FILE *fp = fopen("./test.txt","a+"); char buf[1024]; char *p; int s=-1,len=strlen(token),line=0,pos=-1;
Time of Update: 2017-01-19
1.const和引用可以把引用綁定在常量上,稱之為,對常量的引用。不能對那個引用賦值。如:const int ci = 1024;const int &ri = ci;解讀:ri是對ci的引用。ri的const意思是視ci為變數。對於常量,只能使用“對常量的引用”這個引用方式 int &ri = ci;是錯誤的,因為ci不能賦值,但是可能會對ri賦值從而影響const限定。所以,他們(制定標準的人)創造了 對常量的引用 的
Time of Update: 2017-01-19
在這個C的變成世界裡,有許多實用的庫,其中最有名的且最通用(跨多個平台的實現包括Windows,要知道很多實用的編程庫都不提供Windows的實現)就是GLib這個庫,其中就有實現線程的部分。glib庫是Linux平台下最常用的C語言函數庫,它具有很好的可移植性和實用性。glib是Gtk
Time of Update: 2017-01-19
題目:一個台階總共有 n 級,如果一次可以跳 1 級,也可以跳 2 級。求總共有多少總跳法?分析:也是比較基礎的題目,通過遞迴可以方便的求解。用Fib(n)表示青蛙跳上n階台階的跳法數,青蛙一次性跳上n階台階的跳法數1(n階跳),設定Fib(0) = 1; 當n = 1 時, 只有一種跳法,即1階跳:Fib(1) = 1; 當n = 2 時,
Time of Update: 2017-01-19
題目一: 輸入一顆二元樹,從上往下按層列印樹的每個節點,同一層按照從左往右的順序列印。輸入範例: 8 / / 6 10/ / / /5 7 9 11輸出範例:複製代碼 代碼如下:8 6 10 5 7 9 11思路分析: 把一顆二叉樹抽象成三個節點:根節點、左節點、右節點。 先序遍曆即可得到按行輸出的效果。
Time of Update: 2017-01-19
在從 1 到 n 的正數中 1 出現的次數題目:輸入一個整數 n,求從 1 到 n 這 n 個整數的十進位表示中 1 出現的次數。例如輸入 12,從 1 到 12 這些整數中包含 1 的數字有 1, 10, 1 1 和 12, 1 一共出現了 5 次代碼實現(GCC編譯通過):#include "stdio.h"#include "stdlib.h" int count1(int n);int count2(int n); int main(void){ int x;
Time of Update: 2017-01-19
本文執行個體總結了C語言遞迴操作用法。分享給大家供大家參考,具體如下:用歸納法來理解遞迴步進運算式:問題蛻變成子問題的運算式結束條件:什麼時候可以不再是用步進運算式直接求解運算式:在結束條件下能夠直接計算傳回值的運算式邏輯歸納項:適用於一切非適用於結束條件的子問題的處理,當然上面的步進運算式其實就是包含在這裡面了。遞迴演算法的一般形式:void func( mode){ if(endCondition) { constExpression //基本項 } else {
Time of Update: 2017-01-19
本文執行個體介紹了C++模仿華容道小遊戲實現代碼,分享給大家供大家參考,具體內容如下#include <stdio.h>#include <stdlib.h>#include <time.h>#include <stdbool.h> #define maxnum 16#define colnum 4 bool numexists(int *numbers, int length, int num);int getnumber(int
Time of Update: 2017-01-19
左旋轉字串題目:定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部。如把字串 abcdef 左旋轉 2 位得到字串 cdefab。請實現字串左旋轉的函數。要求時間對長度為 n 的字串操作的複雜度為 O(n),輔助記憶體為 O(1)。分析:網上看到解法很多種,就不詳細說明了。我採用的是數組不對稱的交換時間複雜度應該是O(n)。代碼實現(GCC編譯通過):#include "stdio.h"#include "stdlib.h" void
Time of Update: 2017-01-19
跳台階問題題目:一個台階總共有 n 級,如果一次可以跳 1 級,也可以跳 2 級。求總共有多少總跳法,並分析演算法的時間複雜度。分析:也是比較基礎的題目,通過遞迴可以方便的求解代碼實現如下(GCC編譯通過):#include "stdio.h"#include "stdlib.h" int function(int n); int main(void){ int tmp; tmp = function(5); printf("%3d\n",tmp); return 0;}
Time of Update: 2017-01-19
預先處理最大的標誌便是大寫,雖然這不是標準,但請你在使用的時候大寫,為了自己,也為了後人。前置處理器在一般看來,用得最多的還是宏,這裡總結一下前置處理器的用法。 #include <stdio.h> #define MACRO_OF_MINE #ifdef MACRO_OF_MINE #else
Time of Update: 2017-01-19
大概所有學習C語言的初學者,都被前輩說過,C語言是世界上接近最速的程式設計語言,當然這並不是吹牛,也並不是貶低其他語言,誠然非C語言能寫出高速度的代碼,但是C語言更容易寫出高速的程式(高速不代表高效),然而再好的工具,在外行人手中也只能是黯淡沒落。對於現代編譯器,現代CPU而言,我們要盡量迎合CPU的設計(比如架構和處理指示的方式等),雖然編譯器是為程式員服務,並且在盡它最大的能力來最佳化程式員寫出的代碼,但是畢竟它還沒有脫離電子的範疇,如果我們的代碼不能讓編譯器理解,編譯器無法幫我們最佳化代碼
Time of Update: 2017-01-19
這似乎是一個很凝重的話題,但是它真的很有趣。1. 指標是指向某一類型的東西,任何一個整體,只要能稱為整體就能擁有它自己的獨一無二的指標類型,所以指標的類型其實是近似無窮無盡的2. 函數名在運算式中總是以函數指標的身份呈現,除了取地址運算子以及sizeof3. C語言最晦澀難明的就是它複雜的聲明: void (*signal(int sig, void (*func)(int)))(int),試試著把它改寫成容易理解的形式4.
Time of Update: 2017-01-19
C語言在明面上將數的變數分為兩類,整型變數以及浮點數,對應著現實世界的整數和小數。首先是整數,使用了這麼多的C語言之後,每當在使用整數之時都會將其想象成二進位的存在,而不是十進位。原因在於,這是程式的本質所在,稍有研究編譯器工作原理的都會發現,在編譯器處理乘法乃至除法的時候,優秀的編譯器總會想方設法的加快程式的速度,毫無疑問在所有運算中移位元運算是最快速的"乘法"以及"除法": 1<<2 == 4 ,8>>2 ==
Time of Update: 2017-01-19
C代碼:#include <stdio.h>int main(void){ printf("That is Right Style\n"); return