❶ 求講解一道c語言編程的思路
#include<stdio.h>
#define N 50
void LeftMove(int a[],int n,int cnt) { // 循環左移cnt次。
int i,j;
for(j = 0; j < cnt;++j) {
int t = a[0];
for(i = 0;i < n - 1; ++i)
a[i] = a[i + 1];
a[n - 1] = t;
}
}
void Show(int a[],int n) {
for(int i = 0; i < n; ++i)
printf("%d ",a[i]);
printf(" ");
}
int main() {
int i,n,p;
int a[N];
while(scanf("%d%d",&n,&p) == 2) {
if(n > N) n = N;
printf("輸入%d個整數(空格隔開): ",n);
for(i = 0;i < n;i++) scanf("%d",&a[i]);
//Show(a,n);
LeftMove(a,n,p);
Show(a,n);
}
return 0;
}
❷ c語言如何編程
C語言編程如何快速實現
在我們初次學習C語言的時候,總想著快速的實現編譯過程。那麼C語言編程究竟是如何實現的呢,當然是要通過自己喜歡的編譯器來編譯完成,那麼今天就為大家介紹C語言編程是如何快速的實現。
1. 首先我們下載一款適合C語言的編譯器,今天為大家講解的C語言編譯器為CodeBlocks,該編譯器沒有太過復雜,很符合初學者,簡單上手快。
❸ c語言編程怎樣入門
第一:C語言語法結構很簡潔精妙,寫出的程序也很高效,很便於描述演算法,大多數的程序員願意使用C語言去描述演算法本身,所以,如果你想在程序設計方面有所建樹,就必須去學它。
第二:C語言能夠讓你深入系統底層,你知道的操作系統,哪一個不是C語言寫的?所有的windows,Unix,Linux,Mac,os/2,沒有一個里外的,如果你不懂C語言,怎麼可能深入到這些操作系統當中去呢?更不要說你去寫它們的內核程序了。
❹ C語言中有哪些實用的編程技巧
這篇文章主要介紹了C語言高效編程的幾招小技巧,本文講解了以空間換時間、用數學方法解決問題以及使用位操作等編輯技巧,並給出若干方法和代碼實例,需要的朋友可以參考下
引言:
編寫高效簡潔的C語言代碼,是許多軟體工程師追求的目標。本文就工作中的一些體會和經驗做相關的闡述,不對的地方請各位指教。
第1招:以空間換時間
計算機程序中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程序的效率問題,我們就有了解決問題的第1招——以空間換時間。
例如:字元串的賦值。
方法A,通常的辦法:
代碼如下:
#define LEN 32
char string1 [LEN];
memset (string1,0,LEN);
strcpy (string1,「This is a example!!」);
方法B:
代碼如下:
const char string2[LEN] =「This is a example!」;
char * cp;
cp = string2 ;
(使用的時候可以直接用指針來操作。)
從上面的例子可以看出,A和B的效率是不能比的。在同樣的存儲空間下,B直接使用指針就可以操作了,而A需要調用兩個字元函數才能完成。B的缺點在於靈 活性沒有A好。在需要頻繁更改一個字元串內容的時候,A具有更好的靈活性;如果採用方法B,則需要預存許多字元串,雖然佔用了大量的內存,但是獲得了程序 執行的高效率。
如果系統的實時性要求很高,內存還有一些,那我推薦你使用該招數。
該招數的變招——使用宏函數而不是函數。舉例如下:
方法C:
代碼如下:
#define bwMCDR2_ADDRESS 4
#define bsMCDR2_ADDRESS 17
int BIT_MASK(int __bf)
{
return ((1U << (bw ## __bf)) - 1) << (bs ## __bf);
}
void SET_BITS(int __dst, int __bf, int __val)
{
__dst = ((__dst) & ~(BIT_MASK(__bf))) | /
(((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))
}
SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);
方法D:
代碼如下:
#define bwMCDR2_ADDRESS 4
#define bsMCDR2_ADDRESS 17
#define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)
#define BIT_MASK(__bf) (((1U << (bw ## __bf)) - 1) << (bs ## __bf))
#define SET_BITS(__dst, __bf, __val) /
((__dst) = ((__dst) & ~(BIT_MASK(__bf))) | /
(((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))
SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);
函數和宏函數的區別就在於,宏函數佔用了大量的空間,而函數佔用了時間。大家要知道的是,函數調用是要使用系統的棧來保存數據的,如果編譯器里有棧檢查 選項,一般在函數的頭會嵌入一些匯編語句對當前棧進行檢查;同時,CPU也要在函數調用時保存和恢復當前的現場,進行壓棧和彈棧操作,所以,函數調用需要 一些CPU時間。而宏函數不存在這個問題。宏函數僅僅作為預先寫好的代碼嵌入到當前程序,不會產生函數調用,所以僅僅是佔用了空間,在頻繁調用同一個宏函 數的時候,該現象尤其突出。
D方法是我看到的最好的置位操作函數,是ARM公司源碼的一部分,在短短的三行內實現了很多功能,幾乎涵蓋了所有的位操作功能。C方法是其變體,其中滋味還需大家仔細體會。
第2招:數學方法解決問題
現在我們演繹高效C語言編寫的第二招——採用數學方法來解決問題。
數學是計算機之母,沒有數學的依據和基礎,就沒有計算機的發展,所以在編寫程序的時候,採用一些數學方法會對程序的執行效率有數量級的提高。
舉例如下,求 1~100的和。
方法E
代碼如下:
int I , j;
for (I = 1 ;I<=100; I ++){
j += I;
}
方法F
代碼如下:
int I;
I = (100 * (1+100)) / 2
這個例子是我印象最深的一個數學用例,是我的計算機啟蒙老師考我的。當時我只有小學三年級,可惜我當時不知道用公式 N×(N+1)/ 2 來解決這個問題。方法E循環了100次才解決問題,也就是說最少用了100個賦值,100個判斷,200個加法(I和j);而方法F僅僅用了1個加法,1 次乘法,1次除法。效果自然不言而喻。所以,現在我在編程序的時候,更多的是動腦筋找規律,最大限度地發揮數學的威力來提高程序運行的效率。
第3招:使用位操作
實現高效的C語言編寫的第三招——使用位操作,減少除法和取模的運算。
在計算機程序中,數據的位是可以操作的最小數據單位,理論上可以用「位運算」來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做數據變換使用,但是,靈活的位操作可以有效地提高程序運行的效率。舉例如下:
方法G
代碼如下:
int I,J;
I = 257 /8;
J = 456 % 32;
方法H
int I,J;
I = 257 >>3;
J = 456 - (456 >> 4 << 4);
在字面上好像H比G麻煩了好多,但是,仔細查看產生的匯編代碼就會明白,方法G調用了基本的取模函數和除法函數,既有函數調用,還有很多匯編代碼和寄存 器參與運算;而方法H則僅僅是幾句相關的匯編,代碼更簡潔,效率更高。當然,由於編譯器的不同,可能效率的差距不大,但是,以我目前遇到的MS C ,ARM C 來看,效率的差距還是不小。相關匯編代碼就不在這里列舉了。
運用這招需要注意的是,因為CPU的不同而產生的問題。比如說,在PC上用這招編寫的程序,並在PC上調試通過,在移植到一個16位機平台上的時候,可能會產生代碼隱患。所以只有在一定技術進階的基礎下才可以使用這招。
第4招:匯編嵌入
高效C語言編程的必殺技,第四招——嵌入匯編。
「在熟悉匯編語言的人眼裡,C語言編寫的程序都是垃圾」。這種說法雖然偏激了一些,但是卻有它的道理。匯編語言是效率最高的計算機語言,但是,不可能靠著它來寫一個操作系統吧?所以,為了獲得程序的高效率,我們只好採用變通的方法 ——嵌入匯編,混合編程。
舉例如下,將數組一賦值給數組二,要求每一位元組都相符。
代碼如下:
char string1[1024],string2[1024];
方法I
代碼如下:
int I;
for (I =0 ;I<1024;I++)
*(string2 + I) = *(string1 + I)
方法J
代碼如下:
#ifdef _PC_
int I;
for (I =0 ;I<1024;I++)
*(string2 + I) = *(string1 + I);
#else
#ifdef _ARM_
__asm
{
MOV R0,string1
MOV R1,string2
MOV R2,#0
loop:
LDMIA R0!, [R3-R11]
STMIA R1!, [R3-R11]
ADD R2,R2,#8
CMP R2, #400
BNE loop
}
#endif
方法I是最常見的方法,使用了1024次循環;方法J則根據平台不同做了區分,在ARM平台下,用嵌入匯編僅用128次循環就完成了同樣的操作。這里有 朋友會說,為什麼不用標準的內存拷貝函數呢?這是因為在源數據里可能含有數據為0的位元組,這樣的話,標准庫函數會提前結束而不會完成我們要求的操作。這個 常式典型應用於LCD數據的拷貝過程。根據不同的CPU,熟練使用相應的嵌入匯編,可以大大提高程序執行的效率。
雖然是必殺技,但是如果輕易使用會付出慘重的代價。這是因為,使用了嵌入匯編,便限制了程序的可移植性,使程序在不同平台移植的過程中,卧虎藏龍,險象環生!同時該招數也與現代軟體工程的思想相違背,只有在迫不得已的情況下才可以採用。切記,切記。
❺ C語言必須知道的300個問題的目錄
第1章 初識C語言 1
問題1 C語言是如何發展起來的? 2
問題2 什麼是ANSI標准? 2
問題3 C語言編寫程序的優點有哪些? 3
問題4 如何規避C語言的不足之處? 4
問題5 C語言的應用領域有哪些? 5
問題6 什麼是C99標准?與C89標准
相比,C99標准有哪些
新特性? 6
問題7 C語言是C++的子集嗎? 10
問題8 C語言程序的開發過程是
怎樣的? 11
問題9 什麼是編譯程序和解釋程序? 12
問題10 ANSI C的編譯限制有哪些? 13
第2章 一個簡單的C程序 14
問題11 C語言的入口函數是什麼? 15
問題12 C語言程序由哪些部分組成? 16
問題13 如何在Turbo C 2.0中輸入一個
程序? 16
問題14 如何在Visual C++ 6.0中運行
一個C程序? 18
問題15 如何在Visual C++ 2008中運行
一個C程序? 22
問題16 如何提高程序的可讀性? 26
問題17 什麼是關鍵字?C語言的關鍵
字有哪些? 27
問題18 什麼是標識符?使用標識符的
注意事項是什麼? 29
問題19 void關鍵字都有哪些用途? 30
問題20 什麼是匈牙利命名約定?它是否
是好的約定? 31
第3章 演算法入門 33
問題21 為什麼說演算法是程序設計的
靈魂? 34
問題22 演算法的特性有哪些? 34
問題23 如何評價一個演算法的好壞? 35
問題24 演算法的表示方法都有哪些? 36
問題25 演算法的基本結構是什麼? 40
問題26 演算法有哪幾類? 42
問題27 演算法的效率度量方法有哪些? 42
問題28 什麼是演算法的時間復雜度? 43
問題29 什麼是演算法的空間復雜度? 44
問題30 什麼是分治法演算法思想? 45
第4章 常用數據類型 46
問題31 聲明變數和定義變數的區別
是什麼? 47
問題32 在開發時如何決定使用哪種
數據類型? 48
問題33 什麼是常量?如何區分常量
和變數? 48
問題34 各種數據類型所佔的內存是
多少? 49
問題35 字元與字元串的差別有
哪些? 50
問題36 變數是否必須初始化? 51
問題37 為什麼會發生數據溢出?如何
避免數據溢出? 52
問題38 局部變數和全局變數能否
重名? 53
問題39 全局變數可不可以定義在可被
多個.C文件包含的頭文件中?
為什麼? 53
問題40 如何引用一個已經定義過的
外部變數? 54
問題41 全局變數和局部變數的存儲
方式有什麼區別? 55
問題42 整型常量的存儲形式是
怎樣的? 55
問題43 整型常量的表示形式有
哪幾種? 56
問題44 使用了沒定義的變數會有什麼
現象? 56
問題45 static關鍵字有什麼作用? 57
問題46 const關鍵字有什麼作用? 59
問題47 const與#define相比有何
優點? 60
問題48 sizeof不是函數嗎? 61
問題49 float類型數如何與0值
比較? 63
問題50 靜態變數與自動變數的區別
有哪些? 64
第5章 運算符與表達式 66
問題51 運算符的優先順序和結合性是
怎樣的? 67
問題52 如何區分「,」是運算符還是
分隔符? 68
問題53 C語言如何解釋x=a+=b+c? 69
問題54 x=x+1,x+=1,x++,哪個效率
最高? 70
問題55 什麼是運算符的目?怎樣進行
區分? 70
問題56 使用「++」和「--」運算符需要
注意些什麼? 71
問題57 如何理解i+++j? 71
問題58 賦值表達式中什麼是左值和右值?數組名作為左右值時又具有怎樣的意義? 72
問題59 如何確定條件表達式的結果的
數據類型? 73
問題60 「%」運算符是否可以對小數
進行運算? 74
問題61 「/」運算符得到的結果一定為
整數嗎? 75
問題62 在進行多種數據類型混合運算
的時候,數據類型自動轉換有
哪些規則? 76
問題63 C語言中有哪些簡化的運算
表達式? 77
問題64 使用邏輯表達式需要注意哪
幾點問題? 77
問題65 i++*i++這樣的表達式為什麼
不能得到預期的結果? 78
問題66 a[i]=i++;這樣的代碼正確嗎? 79
問題67 編寫表達式時需要注意
什麼? 79
問題68 如何理解c=a,b;? 80
問題69 為無符號類型變數賦值時,數據
類型應怎樣轉換? 81
問題70 C語言表達式的求值順序總是
按照運算符的結合性保證
「自左至右」或者「自右
至左」嗎? 81
第6章 輸入/輸出函數 83
問題71 函數printf()的基本格式
是什麼? 84
問題72 如何認識printf()函數的格式
字元? 85
問題73 函數printf()的標志有幾種?
如何使用? 91
問題74 如何控制輸出最小寬度? 91
問題75 如何控制輸出精度? 92
問題76 如何控制輸出長度? 93
問題77 如何動態設置輸出寬度和
精度? 94
問題78 printf()函數的返回值是
什麼? 95
問題79 如何理解輸出列表? 96
問題80 函數scanf()的基本格式是
什麼? 96
問題81 scanf()函數的格式字元是
什麼? 97
問題82 使用scanf()函數應注意的問題
是什麼? 100
問題83 scanf()函數的返回值是
什麼? 101
問題84 如何使用getchar()函數? 102
問題85 getch()函數如何使用? 104
問題86 如何應用gets()函數? 104
問題87 如何應用putch()函數? 105
問題88 puts()函數該如何應用? 106
問題89 如何控制多數值的輸入? 107
問題90 如何輸入字元數組? 108
第7章 選擇、分支結構程序設計 110
問題91 5>4>3為什麼不成立——談談
關系表達式的值 111
問題92 =和==如何區分? 112
問題93 什麼叫邏輯短路? 113
問題94 if語句的基本形式有哪些?
如何應用? 114
問題95 浮點數的相等比較是否可以
用==? 116
問題96 關系運算符和數學不等號有
什麼區別? 117
問題97 if語句後面一定不能寫
分號嗎? 118
問題98 這個程序為什麼多執行了好多
語句? 119
問題99 不用關系表達式和邏輯表達式
做條件 120
問題100 怎樣理解復合語句中的
變數? 122
問題101 如何進行if語句的嵌套? 123
問題102 條件運算符「? :」怎樣
應用? 124
問題103 switch語句的基本格式是
什麼? 125
問題104 if語句與switch語句的優缺
點是什麼? 127
問題105 switch語句中的default關鍵字
是否必須? 128
問題106 break關鍵字在switch語句中
應注意什麼? 128
問題107 如何正確判斷if和else的
匹配? 130
問題108 switch和case後的表達式值的
類型是否可以是浮點型? 132
問題109 區段劃分型條件有什麼
技巧? 133
問題110 default必須寫在所有case
之後嗎? 134
第8章 循環結構 136
問題111 循環結構的基本概念是
什麼? 137
問題112 while語句的基本格式是
什麼? 138
問題113 while循環應注意什麼
問題? 139
問題114 for循環語句的基本格式
是什麼? 140
問題115 for語句的三個表達式都是
必須的嗎? 142
問題116 do…while語句的基本格式
是什麼? 144
問題117 分號在循環體中的作用? 146
問題118 while與do…while的
區別? 148
問題119 什麼是循環嵌套? 149
問題120 循環嵌套的結構是
怎樣的? 151
問題121 如何正確使用循環嵌套? 153
問題122 死循環是怎樣產生的? 154
問題123 怎樣提高循環語句的
效率? 156
問題124 continue語句的基本作用
是什麼? 158
問題125 break語句的基本作用是
什麼? 159
問題126 goto語句的基本格式是什麼?
如何使用? 161
問題127 goto語句的缺陷是什麼? 163
問題128 如何選擇循環語句? 165
問題129 如何判定循環結束和提前
結束? 165
問題130 如何避免循環中的初值錯誤
問題? 167
第9章 數組 170
問題131 什麼是數組?其存儲有何
特點? 171
問題132 數組的維數該如何理解? 171
問題133 一維數組是怎樣定義的? 172
問題134 如何引用一維數組元素? 173
問題135 如何初始化一維數組? 174
問題136 如何設計數組的排序
演算法? 175
問題137 如何定義二維數組? 176
問題138 如何引用二維數組元素? 178
問題139 如何初始化二維數組? 179
問題140 如何定義字元數組? 180
問題141 如何初始化字元數組? 180
問題142 如何引用字元數組? 181
問題143 如何進行字元數組的
復制? 182
問題144 如何進行字元數組的
連接? 183
問題145 如何進行字元串的比較? 185
問題146 如何測定字元串的長度? 187
問題147 如何進行字元串大小寫的
相互轉換? 188
問題148 如何計算字元串中有多少個
單詞? 190
問題149 gets()函數和scanf()函數在輸入
字元串時有何區別? 191
問題150 puts()函數和printf()函數在輸出
字元串時有何區別? 192
問題151 數組與指針的區別是什麼? 193
問題152 為什麼作為函數形參的數組和
指針可以互換? 195
問題153 為什麼數組名作參數傳遞給子
函數時,子函數可以改變主
函數中數組的值? 196
問題154 C語言中有動態數組嗎? 197
問題155 如何實現動態二維數組? 199
問題156 strcpy()函數可以復制字元串的
一部分嗎? 201
問題157 字元串和字元數組有什麼
區別? 202
問題158 『 』和「 」有什麼區別? 203
問題159 字元數組佔用內存
怎樣算? 204
問題160 用字元數組和指針兩種方式
定義的字元串有什麼
不同? 204
第10章 函數編程基礎 206
問題161 什麼是函數?如何分類? 207
問題162 如何定義無參函數? 209
問題163 如何定義有參函數? 210
問題164 什麼是空函數?作用是
什麼? 210
問題165 什麼是形參和實參?如何
使用? 211
問題166 如何從函數返回? 213
問題167 函數返回值你了解多少? 214
問題168 如何進行函數的一般
調用? 215
問題169 函數調用的基本方式有幾種?
各是什麼? 216
問題170 函數調用應具備哪些
條件? 216
問題171 如何進行函數的嵌套
調用? 218
問題172 什麼是遞歸調用?如何
實現? 219
問題173 函數如何將數組元素作為
實參? 222
問題174 如何將數組名作為函數
參數? 224
問題175 如何將多維數組名作為函數
參數? 227
問題176 什麼是局部變數? 228
問題177 什麼是全局變數?如何
應用? 229
問題178 存儲方式有哪幾種?分別
是什麼? 232
問題179 如何使用auto關鍵字? 233
問題180 什麼是靜態變數?如何
實現? 236
問題181 什麼是寄存器變數?如何
實現? 238
問題182 如何聲明外部變數? 239
問題183 如何調用編譯後的函數? 240
問題184 如何限定外部變數的使用
范圍? 241
問題185 如何使用函數調用實現對字
符串的統計? 242
問題186 main()函數有什麼作用? 243
問題187 什麼是內部函數? 243
問題188 什麼是外部函數?
怎麼用? 244
問題189 static()函數與普通函數有什麼
區別? 245
問題190 形參和實參有什麼區別? 246
第11章 指針解析 248
問題191 什麼是指針?什麼是指針
變數? 249
問題192 如何創建指針? 250
問題193 如何初始化指針? 251
問題194 如何使用指針? 252
問題195 函數中如何傳遞指針? 254
問題196 指針、數組和地址之間的關系
是什麼? 255
問題197 如何進行指針運算? 256
問題198 如何使用指針操作數組? 258
問題199 如何用指針表示多維
數組? 260
問題200 如何使用指針操作多維
數組? 261
問題201 如何用指針為函數傳遞
數組? 263
問題202 如何用指針表示字元串? 264
問題203 如何使用字元串指針作為函數
參數? 265
問題204 字元數組和字元指針的區別
是什麼? 266
問題205 什麼是指針數組? 267
問題206 如何使用指針數組處理
字元串? 268
問題207 如何將指針數組作為函數的
參數? 269
問題208 什麼是指向指針的指針? 270
問題209 二級指針如何應用於一維
數組? 271
問題210 如何實現二級指針對二維數組
的操作? 272
問題211 二級指針如何操作字元串數組
(指針數組)? 273
問題212 如何理解返回指針的
函數? 275
問題213 什麼是指向函數的指針? 277
問題214 如何用const控制指針? 278
問題215 什麼是「野指針」? 279
問題216 main()函數的指針數組形參
是怎麼回事? 279
問題217 void指針就是空指針嗎?它
有什麼作用? 281
問題218 指針是一種特殊的變數,只能
用來保存地址。這句話
對嗎? 282
問題219 字元指針、浮點數指針以及
函數指針這三種類型的變數
哪個佔用的內存最大?
為什麼? 282
問題220 一個32位的機器,該機器的
指針是多少位? 283
第12章 常用數據結構 284
問題221 空結構體所佔的內存是
多少? 285
問題222 在C語言中,一個結構體可以
包含指向自己的指針嗎? 286
問題223 struct person{...};person a;
為什麼編譯出錯? 287
問題224 怎樣從/向數據文件讀/寫
結構? 289
問題225 枚舉與#define宏的區別有
哪些? 290
問題226 如何看待枚舉類型,枚舉類型
的優點是什麼? 291
問題227 關鍵字typedef的功能是
什麼? 292
問題228 類型定義是否允許嵌套? 294
問題229 typedef與#define宏的相似之處
與不同之處是什麼? 295
問題230 什麼是散列法? 296
問題231 大小端模式對union類型數據
有什麼影響? 297
問題232 如何為聯合體變數賦
初值? 298
問題233 如何證明聯合體變數的所有成員是共享一個內存單元的? 300
問題234 堆和棧的區別是什麼? 301
問題235 舉例說明,什麼是靜態鏈表?
什麼是動態鏈表? 302
問題236 單向鏈表、雙向鏈表和循環鏈
表有什麼區別? 304
問題237 如何在鏈表中的指定位置插入
結點? 305
問題238 如何刪除鏈表中指定位置的
結點? 306
問題239 如何創建一個動態鏈表? 308
問題240 指向結構體數組的指針如何
應用? 310
第13章 位運算操作符 312
問題241 什麼是位運算?位運算符包括
哪些? 313
問題242 移位運算中如何補位? 314
問題243 移位運算符與加減運算符的
優先順序哪個較高? 315
問題244 什麼是循環移位? 316
問題245 什麼是位段?其優點是
什麼? 317
問題246 如何正確使用位段? 318
問題247 數據在計算機中的存儲單位有
哪些?有幾種存儲形式? 320
第14章 存儲管理 322
問題248 與內存息息相關的重要概念
有哪些? 323
問題249 指針指向不合法引起了哪些
內存問題? 324
問題250 內存分配與釋放引起的常見
問題有哪些? 325
問題251 什麼是內存越界?什麼是內存
泄露?二者是如何產生的? 326
問題252 C語言提供了哪些動態內存
分配函數? 327
問題253 malloc()函數與calloc()函數有
什麼區別? 328
問題254 內存耗盡怎麼辦? 328
問題255 動態內存會被自動釋
放嗎? 330
問題256 高位優先與低位優先的不同
之處是什麼? 330
問題257 free()和delete()怎樣處理
指針? 331
問題258 怎樣利用好敏感的內存
資源? 333
第15章 預處理和函數類型 335
問題259 在頭文件中#if、_STDC_等字元
起什麼作用? 336
問題260 如何書寫多條語句宏? 337
問題261 預處理中#和##運算符是什麼
意思? 338
問題262 一個頭文件可以包含另一個頭
文件嗎? 339
問題263 #include<>和#include「」有什麼
區別? 340
問題264 什麼是無參宏定義? 341
問題265 什麼是帶參宏定義? 342
問題266 怎樣寫參數個數可變
的宏? 343
問題267 #pragma預處理的作用
是什麼? 345
問題268 條件編譯的表達形式有
哪些? 346
問題269 如何應用內部函數? 347
問題270 如何應用外部函數? 348
第16章 文件的讀寫操作 351
問題271 各個讀寫操作的區別是
什麼? 352
問題272 C語言文件有哪幾類? 354
問題273 怎樣寫數據文件,使之可以在
不同字大小、位元組順序或浮點
格式的機器上讀入? 355
問題274 能否使用fflush()函數清除多餘
的輸入? 356
問題275 fopen()函數打開文件失敗的
原因是什麼? 357
問題276 為什麼打開文件後要及時
關閉? 358
問題277 文件的打開方式有哪些? 358
問題278 如何正確使用putchar()函數和getchar()函數? 360
問題279 getchar()函數、getch()函數和getche()函數的區別是
什麼? 361
問題280 使用printf()函數和scanf()函數
需要注意什麼? 362
問題281 printf()函數有哪些參數? 363
問題282 scanf()函數的格式控制包括
哪些? 364
問題283 printf()函數和scanf()函數格式
符的修飾符「*」有什麼
作用? 366
問題284 fscanf()函數、fprintf()函數與scanf()函數和printf()函數有什麼
不同? 367
問題285 如何判斷文件的結束? 368
第17章 圖形圖像處理 371
問題286 為什麼在使用圖形函數時要
首先初始化圖形模式? 372
問題287 怎樣初始化圖形模式? 372
問題288 初始化時提示「BGI Error: Graphics not initialized
(use 'initgraph')」怎麼辦? 374
問題289 怎樣利用C語言建立獨立的
圖形運行程序? 375
問題290 TC中有幾個畫線函數?怎麼
使用? 376
問題291 TC中有幾個畫矩形函數?怎麼
使用? 377
問題292 TC中有幾個畫圓函數?怎麼
使用? 379
問題293 如何使用C語言填充封閉
圖形? 380
問題294 TC中有幾個和游標有關的
函數?怎樣使用? 382
問題295 如何在圖形模式下輸出
文本? 383
問題296 背景色、線條顏色和填充顏色
有什麼區別?何時使用? 386
問題297 怎樣記住那麼多的顏色? 387
問題298 線條樣式和填充樣式都有
哪些?怎樣設置? 388
問題299 怎樣復制圖形? 392
問題300 怎樣在C語言中製作
動畫? 394
❻ C語言簡單編程問題,求大神講解!!!!!!謝謝大神!!
struct Birthday
{
int year;
int month;
int day;
};
bool judgement(Birthday b1, Birthday b2)
{
return b1.year == b2.year && b1.month == b2.month && b1.day == b2.day;
}
函數調用就不寫了,結構體和函數實現就是這樣
❼ c語言編程怎樣入門
相對於其他編程語言,C語言還是比較難的。初學者需要注意一下幾點:
一是學習順序
先從熟悉簡單的C語言語法開始入門,然後再循序漸進,學習C++語法,WIN32、MFC、QT、網路編程,資料庫、數據結構、演算法、COM、STL等。構建一個完整的C語言知識體系。這需要一個比較漫長的學習積累的過程。語法入門部分大概2-3個月,其他部分需要學習和工作中慢慢理解和消化了。
二是學習方法
人的知識80%是通過眼睛獲取的,但是學習編程有所不同,除了看書、看視頻之外,關鍵是要勤動手,勤動腦。通過做大量的練習、項目實戰不斷積累代碼量。只有代碼量足夠多了,項目做的多了,才能算是真正學會了。項目能否完成,就是衡量是否學會的唯一標准。後期就是代碼的質量和優化問題了,這個只能在項目工作中慢慢積累經驗了。
最後強調一點,很多人學不會編程是因為掉坑裡了。就是教程或者書上的知識點之間跨越太大,作為一個初學者很難自己摸索出來,前面的知識點沒有掌握,接著學習後面的知識,肯定是學不會了。目前絕大多數編程書籍和教程或多或少都有這樣的弊端。自學能力比較強的人可以通過各種方法,參考各種網上的資料自己解決。但是大多數自學能力不是很強的人,只能依賴老師、同學、同事或者朋友幫忙指導,或者報名培訓機構,老師指導完成了。學習編程通常需要一些好的學習資料,包括紙質的書籍,視頻教程,課件,項目練習,代碼。零基礎入門的書籍推薦《明解C語言》、《C Primer Plus》,還有一本非常特別的匯編和C語言正向逆向結合的書編程達人內部教材《匯編、C語言基礎教程》也非常不錯,講解匯編和C語言的本質非常透徹,非常細致。視頻資料也是特別多了,各種視頻網站、論壇、自媒體都有,比如網易課堂、騰訊課堂、慕客網這些。還有一些論壇,比如CSDN、編程中國等。最重要的一點就是答疑服務,推薦愛達人的網站也很不錯,從零基礎入門到應用課程,配套的視頻、課件、代碼、項目、答疑服務都有,還可以兼職接單,學以致用。
❽ C語言程序設計(166-9)
1。結果,頭倆單詞後面有2個空格,最後一個單詞後面一個空格一個換行:
one two there
2。用VC的話,項目屬性->debugging->Command Arguments里把one two there加上;
或者在cmd下,到這個程序執行文件的目錄下,輸入myprog one two there
❾ 一個c語言的問題,我看了好長時間都看不懂,結果是(1)166(2)266 麻煩給詳細解釋下
這代碼考察指針和變數的作用域 記不太清楚了 大致情況是:
p=&b 說明p指向b的存儲空間,而且p、b統一,就是一個地址,兩個名字。一個值變了,另一個也變。
然後pp函數形參4和2
*p=*b+c即p指向的地址賦值為*b也就是2 ,又因為c=4
所以*p=6 同時*b=6
a=*p-c 也就是2
(2)輸出a=2 *b=6 *p=6
因為引用賦值 所以值不會變
(1)輸出b=6 *p=6
而a是整形,作用域不包括pp函數 所以值是不變的 a=1
注意:雖然pp和main都有變數a但是兩者不同