星期三, 5月 20, 2009

C語言入門 20090519 上課小記

************************20090519 陳惠堂 **************************

以後上課基本的 source code 內容

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"

//進入主程式
int main()
{

system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}

*printf(字串 [,引數1,...]);


*
逸出字元(Escaps)

  • \n new line

  • \t table(8bytes

    • 文字介面 寬度為 80 bytes, 每一個Tab 長度為8bytes. 使用\t 是移動到下一個8 bytes, 不是向後退8space

  • \b back(回到前一個)

  • \f 換頁

  • \r Return

  • \ddd 8進位內碼

  • \xdd 16進位內碼



*
格式符號

  • %形別

    • %d or %i 有號10進位整數

    • %o 有號 8 進位整數

    • %x 有號 16進位整數

    • %u 無號的 10 進位整數

    • %f 顯示6位小數

    • %e 以指數顯示

    • %g 一般顯示

    • %s 字串

    • %c 字元

*scanf(字串,位址1[,位址2,...]);

  • 是少數在function 語法內要指定位址的

Lab:

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"

//進入主程式
int main()
{
printf(
"Hello ...\n" );
printf(
"Welcome to Dev C+...\n" );

printf(
"a\taa\taaa\n"); // \t
Tab鍵 移到下一個8 bytes
printf(
"aa\taa\taaa\n");// \t
Tab鍵 並不是移動8space
printf(
"aaa\taa\taaa\n");


printf(
"Back\b\n"); //
觀察 \b的影響
printf(
"Back\ba\n"); //
觀察 \b的影響 \b 向前一個byte 然後a取代

printf(
"\1\2\3\4\5\6\7\n"); // \7
是聲響

int a,b ;
a=1;
b=2;

printf("%d+%d=%d\n",a,b,a+b); // %d 會從後面抓一個資料, 有三個 %d 就會抓三個

printf("a=%d\n",a);
printf("b=%d\n",b);
printf("a+b=%d\n",a+b); // %d
會從後面抓一個資料, 有三個 %d 就會抓三個

printf("-----------------------------------------------------------------\n");
double c;
c=10.123456;
printf(
"c=%f\n",c); //
顯示 6位小數(預設)
printf(
"c=%e\n",c); //
以指數顯示
printf(
"c=%g\n",c); //
一般方式顯示
printf(
"c=%.2f\n",c); //
顯示 2位小數,會四捨五入
printf(
"c=%.12f\n",c); //
顯示 2位小數


system("pause"); //
執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}

& 位址運算元

  • 用法: & 變數名稱

Lab:scanf

// include 引入 .h (標頭檔)
// header .h
要放在程式的最前面
//
引入 stdio.h stdlib.h
#include "stdio.h"
#include "stdlib.h"

//進入主程式
int main()
{

int n; //定義一個整數 n
printf("Please input your number:\n");
//
利用scan 來等待使用者輸入, 結束用 Enter. %d 10 進位整數
//scanf
後面要輸入位址 &n 而不能輸入變數 n 所以要特別注意
scanf("%d",&n); // n
前面要加上 & 符號, 為位址運算元符號, 只輸入 n 會當機(變數)
printf("n=%d\n",n);

//定義 字元陣列 name 內容為20個字
char name[20];
printf(
"Enter your Name:\n");
//
利用scan 來輸入 name
//
C 裡面 陣列名稱 跟 變數名稱 是不同的, 陣列名稱代表是位址
scanf("%s",name);
printf(
"Hello %s\n",name);

//定義兩個 字元陣列 fname lname
char fname[10],lname[10];
printf("Enter your First Name:\n");
scanf("%s",fname);
printf("Enter your Last Name:\n");
scanf("%s",lname);
//
這樣就可以列出 First name + Last name 剛剛的範例只會列出第一個
printf("Hello %s %s\n",fname,lname);

system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}

Lab: 使用C++的方式來處理

//使用 C++ 的方式, C的方式
// iostream
必須配合 namespace
#include "iostream"
using namespace std;
#include "stdlib.h"

int main()
{

char name[20];
//cout
是一個物件, 不是指令, 代表螢幕. 利用 << 導向螢幕
cout << "Enter your name:\n";

//
利用cin 代表鍵盤
cin >> name;
//
一個 << 只能送一個資料 ,

cout <<
"Hello " <<>"\n";
//
也可以使用 endl 代表 \n
cout << "Welcome to Dev C++ ..." <<>

system("pause"); //執行系統內的 pause指令 暫停 宣告被寫在 stdlib.h
return 0;
}

***************************************************************

沒有留言: