Ⅰ c語言代碼解析(詳細點的,答辯用的。)
初看, 打開c:\book.data,讀取裡面數據,在輸出出來 就是書名,書價 作者, 按格式輸出吧
輸出出來的應該是
書名 書價 作者
。。 。。。。。 x.x xxx
。。。。。 y.y yyy
... ... ...
完事後,隨便輸入一個字元,回主菜單了, 回主函數了吧。。。。
Ⅱ C語言深度剖析裡面的一個靜態變數的問題
賦值和初始化是兩回事。靜態變數只初始化一次,但因此就誤以為靜態變數不能賦值完全是錯誤的想法
直觀地看,初始化的格式是
類型變數名=初始值
(由於C語言的聲明比較惡心,實際上也可能是int (*p)()=初始值;這種形式)
Ⅲ C語言 二叉樹深度,解釋一下
葉子節點就是度為0的結點,比度為2的結點多一個,即度2的沒有,這樣度為1的結點就是11個,故深度為12(1度就是結點連著1個子樹,二叉樹最多倆子樹,即左右子樹)
Ⅳ C語言解析,解釋一下執行步驟
switch(x)
---------x=1
所以執行
case
1:後面的語句
接著switch(y)
-----------y=0
所以執行
case
0:後面的語句
a++
-----------即a=a+1,這時a=0+1=1
執行break跳出switch語句
因為
switch(x)的
case
1
沒有break所以繼續執行case2
case2:a++;b++
;-----------a=a+1=1+1=2;b=b+1=0+1=1;
case2後面有break語句所以
跳出switch語句
執行
printf("a=%d,b=%d\n",a,b);
這條語句會在屏幕上列印a=2,b=1【換行】
Ⅳ C語言程序解析
#include<stdio.h>
#include<math.h>
int main()
{
int a[5][5]={0};
int i,j;
//給出租初始化為0
for(i=0;i<5;i++){
for(j=0;j<5;j++){
a[i][j]=1;
}
}
//生成數組矩陣
for(i=0;i<5;i++){
for(j=0;j<i+1;j++){
a[i][j]=i+1-j;
}
}
//把數組顯示出來
for(i=0;i<5;i++){
for(j=0;j<5;j++){
printf("%d ",a[i][j]);
}
printf(" ");
}
return 0;
}
Ⅵ 學習C語言
舉個例子來說把,3 和 5
邏輯運算符返回真或假(c語言里用0表示假,非0表示真)
3||5 他的值是 真(非0)
3&&0 的值為假(0)
一般用在條件判斷中 if(!3),3是真(非0),!3就是假。
位運算符
按位與 3&7,
先轉換成二進制 011 & 111
都為1的位結果是1,否則是0,運算後的結果是 011(3).也就是說按位運算的結果仍是一個數字,一般不用在條件判斷中。
Ⅶ c語言程序解讀
先從主函數main開始,i初始值為0,調用func1,將i值0作為參數傳入
在func1中,首先列印st[i],即st[0],即字元串的第一個字元h,向下執行到if條件句,當前i小於3,則執行i+=2, 相當於i=i+2 => i=0+2 => i=2,接著調用func2函數,此時i為2,作為參數傳入
在func2中,先列印st[2],即字元串中的第三個字元l,接下來判斷if條件,當前i為2小於3滿足條件,執行i+=2得到i為4,接著調用func1,將4作為參數傳入
在func1中,首先列印st[i],即st[4],即字元串的第5個字元o, 判斷if條件,發現此時i大於3不滿足條件,不再執行下面的語句。
回到主函數main中,列印換行符後程序結束
最後結果為hlo
Ⅷ C語言基礎的幾個難點解析
一、整型數據的范圍
不同類型的數據在內存中佔用的存儲單元長度不同,以VC++6.0的編譯環境為例,基本整型(int)數據分配4個位元組,短整型(short int)數據分配2個位元組。我們以short int為例。1個位元組為8個二進制位,每個短整型數據分配2個位元組,即16位。對於有符號位的短整型(signed short int,默認的),最左面一位作為符號位,0表示正,1表示負。即能存儲的最大數為0111111111111111,第一位是0,表示正數,後邊15位都是1,轉換為十進制為32767;最小數為1000000000000000,轉換為十進制為-32768。超出此范圍,即為「溢出」。例如:
short int a,b,c,d; a=32767;b=a+1; c=-32768;d=b-1;
printf("b=%d\t",b); printf("d=%d\n",d); 輸出結果為b=-32768 d=32767
對於無符號的短整型(unsigned short int),最小為0000000000000000,最大為1111111111111111,范圍0~65535。例如:
unsigned short int e=65535,f; f=e+1;
printf("f=%d\n",f); 輸出結果為f=0
二、運算符
算術運算符有+,-,*,/,%,++,--。其中,*號在表達式中不可以省略,如b2-4ac,寫成表達式為b*b-4*a*c。/和%要區分好,/為商,%為余。如a可以被b整除,表示為a%b==0。++,--的使用方法有兩種:一種i++,i--,先使用i原值,再使i的值加或減1;第二種++i,--i,先使i的值加或減1,再使用i的新值。例如:
int i=11; printf("%d\n",i++ * 1/3); 輸出結果為3。
int i=11; printf("%d\n",++i * 1/3); 輸出結果為4。
自加自減運算符在後邊的學習中會經常用到,要好好理解。
邏輯運算符有&&,||,!。在邏輯表達式中,不是所有的邏輯運算符都執行,只在必須執行下一個邏輯運算符才能求出表達式的解的時候,才執行該運算符。a && b只有a為真時,才判斷b的值。換句話說,a如果為假,b就不執行。同理,a || b,a如果為真,b就不用執行。例如:
int m=1,n=1,a=1,b=1;
printf(「表達式=%d\t」,(m=a>b)&&(n=a>b)); printf("m=%d,n=%d\n",m,n);
輸出結果為 表達式=0 m=0,n=1
常用的運算符的優先順序別從高到低排序為:!,算術運算符(++,--高於*,/,%高於+,-),關系運算符(>,>=,<,<=高於==,!=),&&,||,賦值運算符,逗號運算符。
三、比較數的大小
例如:編寫程序,輸出三個整數的最大值。剛接觸C語言的學生,大部分學生上機實踐都可以完成這個程序,但是思路不太好。調整演算法思路,便於以後程序的編寫。
main( )
{ int a,b,c,max; max=a;
if(b>max) max=b; if(c>max) max=c; printf("max=%d\n",max);}
同理,編寫程序,輸出10個整數的最大值。
main( )
{ int a[10],max,i; for(i=0;i<=9;i++) scanf("%d",&a[i]);
max=a[0]; for(i=1;i<=9;i++) if(a[i]>max) max=a[i];
printf("max=%d",max); }
四、switch語句
處理選擇結構有if語句和switch語句。switch語句用於處理多分支選擇結構,在使用時有多個注意點,這里強調兩點。
1.case後邊的常量,不能寫成表達式。
例如:編寫程序,評判學生成績score的等級grade,90~100為A,80~90為B,70~80為C,60~70為D,60以下為E。