1. 程式人生 > >小學生都看得懂的C語言入門(1): 基礎/判別/循環

小學生都看得懂的C語言入門(1): 基礎/判別/循環

while 關系運算符 交換 -s clu tdi stand str ctrl+s

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); //輸入一個數 & 與指針有關 若不是輸入整數,則默認為初值0 
int 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>
int
main() { 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): 基礎/判別/循環