小學生都看得懂的C語言入門(1): 基礎/判別/循環
c基礎入門, 小學生也可以都看得懂!!!!
安裝一個編譯器, 這方面我不太懂, 安裝了DEV-C++ ,體積不大,30M左右吧, 感覺挺好用,初學者夠了.
介紹下DEV 的快鍵鍵:
恢復 Ctrl+Z 重做 Ctrl+Y 剪切 Ctrl+X 拷貝 Ctrl+C 粘貼 Ctrl+V 搜索替換內容 Ctrl+F
編譯 F9 運行 F10 編譯運行 F11 設置註釋 Ctrl+/ 取消註釋再重復一次即可 (keep it in heart!)
復制行 Ctrl+E 刪除行 Ctrl+D
整體左移一個tab位置 shift+tab 整體右移一個tab位置 tab
整體代碼縮進對齊 Ctrl+Shift+A
1. hello world
C基礎框架
#include <stdio.h> int main() { printf("hello world"); return 0; }
#include <stdio.h> int main() { printf("23+32=%d\n",23+32); int price=0; //定義變量類型與初始值 可以定義兩個變量int price1,price2 printf("please input the price:"); scanf("%d",&price); //輸入一個數 & 與指針有關 若不是輸入整數,則默認為初值0int change=100-price; printf("找您%d元",change); return 0; }
#include <stdio.h> int main() { int a=0; int b=0; scanf("%d %d",&a,&b); //也可以是逗號,那麽輸入也是1,3 輸入要遵循"%d %d"形式 printf("%d %d\n",a,b); return 0; }
2.數據類型, int類型的數據之間的運算得到的還是int 1/10=0, 但是1.0/10=0.1了
#include <stdio.h> intmain() { int foot=5; int inch=7; //整數的運算結果還是整數,會導致結果不準確,只需要將/12 改成12.0!! 10/3=3,10.0/3=3.333333 //scanf("%d %d",&foot,&inch) ; printf("身高是%f米\n",((foot+inch/12)*0.3048)); printf("身高是%f米\n",((foot+inch/12.0)*0.3048)); //也可以定義變量中修改 double foot1=5; //雙精度浮點數 double inch1=7; //scanf("%lf %lf",&foot1,&inch)1 ; //改成lf格式 printf("身高是%f米\n",((foot1+inch1/12)*0.3048)); return 0; }
得到:
身高是1.524000米
身高是1.701800米
身高是1.701800米
3. 計算時間差:
#include <stdio.h> int main() { int h1,m1; int h2,m2; scanf("%d %d",&h1,&m1); scanf("%d %d",&h2,&m2); int t1=h1*60+m1; int t2=h2*60+m2; int t=t2-t1; printf("the diff of the time is %d小時%d分鐘",t/60,t%60); return 0; }
輸入:
2 40
3 12
the diff of the time is 0小時32分鐘
用if 語句計算時間差修改
#include <stdio.h> int main() { int h1,m1; int h2,m2; scanf("%d %d",&h1,&m1); scanf("%d %d",&h2,&m2); int ih=h2-h1; int im=m2-m1; if (im<0) { im=60+im; ih--; } printf("the diff of time is %d hours %d minutes",ih ,im); return 0; }
2 15
3 40
the diff of time is 1 hours 25 minutes
4.交換兩個數
#include <stdio.h> int main() { // 運算順序 * / % + - =賦值 a=b=6 表示,a=(b=6)賦值是從右向左!! // int a=5; int b=6; int t; t=a; a=b; b=t; printf("a is %d,b is %d",a,b); return 0; }
a is 6,b is 5
5. n++ \++n區別
#include <stdio.h> int main() { // 調試之前一定要先編譯!!!很重要 // 復合賦值 s+=1, s*=a+b n++ n-- 分別加1 減1 也有++n,--n, //結果不同,n++ 表示+1之前的值,++n 是加一之後的值 , int a; a=10; printf("a++=%d\n",a++); //10 printf("a=%d\n",a);//11 printf("++a=%d\n",++a); //12 printf("a=%d\n",a); //12 return 0; }
a++=10
a=11
++a=12
a=12
6.關系運算符
#include <stdio.h> int main() { //關系運算符 printf("%d \n",5>3); //1 printf("%d \n",5<=3); //0 printf("%d \n",5<=3+4); //1 加法優先 //關系運算符的優先級 大於 賦值 int x=a>0 就是先判別a>0 再賦值 // 6>5>4 從左向右判別, 最後等於0 // /* */ 多行註釋 return 0; }
7. if else語句
#include <stdio.h> int main() { // 語法 if(){}else{} int a,b; printf("please input two integers:"); scanf("%d %d",&a,&b); int max=0; if(a>b){ max=a; }else{ max=b; } printf("%d",max); return 0; }
另一種:
#include <stdio.h> int main() { // 語法 if(){}else{} int a,b; printf("please input two integers:"); scanf("%d %d",&a,&b); int max=b; if(a>b){ max=a; } printf("%d",max); return 0; }
註意: if 要是沒有{} 時, 緊跟著if() 後面的語句作為條件成立時的執行語句!
8.應用實例-計算工資
#include <stdio.h> int main() { const double rate=8.25; const int standard=40; double pay=0.0; int hours; printf("please input working hours:"); scanf("%d",&hours); printf("\n"); if (hours>standard) pay=standard*rate+(hours-standard)*rate*1.5; else pay=hours*rate; printf("salaty is %f:\n",pay); }
please input working hours:100
salaty is 1072.500000:
9.循環語句
實例1
#include <stdio.h> int main() { //循環 while(條件判斷){循環體} 循環體中要有改變條件的程序,否則為死循環 //判斷一個數字是幾位數 int x; int n=0; scanf("%d",&x); n++;//一定有一位數了 x/=10; while(x>0){ n++; x/=10; } printf("%d\n",n); return 0; }
對比以下
#include <stdio.h> int main() { int x; int n=0; scanf("%d",&x); while(x>0){ n++; x/=10; } printf("%d\n",n); return 0; } //這個方法不能數0 .輸入0 得到的是0 不是1
可以增加if 判別進行修正
#include <stdio.h> int main() { int x; int n=0; scanf("%d",&x); if(x>0) { while(x>0){ n++; x/=10; } }else{ n=1; } printf("%d\n",n); return 0; }
也可以用 do while 修正
#include <stdio.h> int main() { //do-while 循環 do{循環體語句} while(循環條件); 第一次進入不用判別條件 int x; int n=0; scanf("%d",&x); do{ n++; x/=10; //這兩行可以交換位置 } while(x>0); printf("%d\n",n); return 0; } // 輸入0 得到1
實例2--階乘
#include <stdio.h> int main() { //階乘 int i=1; int n; scanf("%d",&n); int f=1; while(i<=n){ f*=i; i++; } printf("%d!=%d\n",n,f) ; return 0; }
10
10!=3628800
用for 修改上述
#include <stdio.h> int main() { //for 循環 for(初值;終值;步長變化){} int i=1; int n=4; //scanf("%d",&n); int f=1; for (i=1;i<=n;i++){ f*=i; } printf("%d!=%d\n",n,f) ; return 0; }
4!=24
進一步改進:
#include <stdio.h> int main() { //改進 i可以從2開始,省去一輪循環,並且當n=1時,循環不被執行,正確!! int i=1; int n=4; int f=1; for (i=2;i<=n;i++){ f*=i; } printf("%d!=%d\n",n,f) ; return 0; }
再次改進 從n開始乘
#include <stdio.h> int main() { //改進 從n開始乘 int i=1; int n=4; int f=1; for (i=n;i>1;i--){ f*=i; } printf("%d!=%d\n",n,f) ; return 0; }
最後改進, 不用引入變量i, 讓n自己變小
#include <stdio.h> int main() { //改進 讓n自己變小 ,不用變量i int n=4; int f=1; int n0=n; for (n=n;n>1;n--){ f*=n; } //或者 //for (;n>1;n--){ // f*=n; //} printf("%d!=%d\n",n0,f) ; return 0; }
註意for 的初始值 終值.
//int i; //for(i=0;i<5;i++) { // printf("i=%d",i); //0 1 2 3 4 //} //printf("\n最後i=%d",i); //循環結束之後i=5 for(i=1;i<=5;i++) { printf("i=%d",i); //12345 } printf("\n最後i=%d",i); //循環結束之後i=6 //上述兩個循環同樣走5次,但是結果不同 int i; //for(初始條件;條件;每輪動作)
最後提一個問題....
提問待解決??
#include <stdio.h> int main() { //int i=1;//定義可以放在for 循環裏面,因為只有在循環中才用到了i, for 之外沒有用到 int n=4; int f=1; for (int i=1;i<=n;i++){ f*=i; } 22 printf("%d!=%d\n",n,f) ; //這個出錯了 只有在C99 中才可以在for中定義變量 ,如何修正??? return 0; }
小學生都看得懂的C語言入門(1): 基礎/判別/循環