class 1 踏出 c 語言的第一步
DESCRIPTION
Class 1 踏出 C 語言的第一步. 編譯器 (Compiler). Dev-C++ ( * 請各位回家下載並安裝* ) 下載 : http://bloodshed.net/devcpp.html 免費 , 中文界面 其他常見的編譯器 Visual Studio 2005 Visual Studio 2003 Visual C++ 6.0. 1. 英文轉中文 Tool -> Environment Options ->Interface-> Language. 2. 插入預設的程式碼 - PowerPoint PPT PresentationTRANSCRIPT
Class 1Class 1踏出踏出 CC語言的第一步語言的第一步
編譯器 (Compiler)
Dev-C++ (*請各位回家下載並安裝 *) 下載 : http://bloodshed.net/devcpp.html 免費 , 中文界面
其他常見的編譯器 Visual Studio 2005 Visual Studio 2003 Visual C++ 6.0
1. 英文轉中文
Tool -> Environment Options ->Interface-> Language
2. 插入預設的程式碼 工具 -> 編輯器選項 -> 程式碼 -> ( 打入程式 ) -> 勾選下面的勾勾 -> 按確定
3. 開啟一個新的程式
檔案 -> 開新檔案 -> 原始碼
4. 如果編輯區域的右邊沒有顯示行號
工具 -> 編輯器選項 -> 顯示 -> 勾選顯
示行號
第一個程式 - Hello World
#include<stdio.h> 引入一個叫做 stdio 的標頭檔 , 沒有它 , 第 4 行的 printf() 就不能用了
#include<stdlib.h> 引入一個叫做 stdlib 的標頭檔 , 沒有它 , 第 5 行的 system() 就不能用了
main() 主函式 , 程式會從這裡開始執行
printf() 函式 , 功能是印出字串到銀幕上
第一個程式 - Hello World
system(“Pause”) 函式 , 功能是讓程式不要馬上結束
return 0 主函式結束
儲存後 , 按下 Ctrl + F9 編譯 按下 Ctrl + F10 執行
什麼是前端處理程式?
在 C 語言中,只要前端有『 # 』符號者,皆可稱為前端處理程式
在 C 程式編譯前,這些前端處理程式會先被前置處理器轉換成 C 的程式碼
前端處理程式 意 義#include 引入標頭檔#define 定義巨集
#include 對於程式外的標頭檔的引含指令 輸出入相關的函式( printf() 、 scanf()… )都被定義在 stdio.h 標頭檔內 必須在程式最前面加上 #include <stdio.h>
#include: 常用到的標頭檔標頭檔名稱 功能說明
stdio.h輸出入庫存函式:getc, putchar, gets, puts, fclose, feof, fgets, fputs, fread, fopen, fwrite, scanf, printf, getchar
stdlib.h轉換庫存函式:atof, atoi, atoll, rand, srand, system
ctype.h字元庫存函式:isalnum, isalpha, isdigit, ispunct, isspace
string.h字串庫存函式:strcat, strcmp, strcpy, strlen, strtok
math.h數學庫存函式:acos, asin, atan, exp, cos, sin, sqrt
io.h輸出入庫存函式:eof, open, close, write, read
conio.h本文視窗顯示庫存函式:clrscr, getch, getche
time.h時間日期庫存函式:time, gettime, getdate, setdate, settime
更多有關函式的資訊
可參考的網站 1 http://www.cplusplus.com/reference/clibrary/
Google 輸入函式名稱 + C Ex. “scanf c++”
#define
使用者定義常數、數學運算式、字元或字串 語法
#define 名稱 常數 #define 名稱 數學運算式 #define 名稱 字元或字串
如 : #define PI 3.1415 如 : #define PAUSE system(“Pause”)
資料型態與變數宣告 變數
程式中用來儲存資料空間的名字 要使用變數之前,要先加以宣告
語法:資料型態 變數名稱 如: int a;
資料型態會影響該變數的儲存方式、儲存空間、數值範圍與運算方式
資料型態 英文名稱 儲存空間 數值範圍
數值
短整數 short 2 Bytes -32768~32767 (-215~215-1)整數 int 4 Bytes -231~231-1長整數 long 4 Bytes -231~231-1
浮點數 float 4 Bytes 1.175494351e-38~3.402823466e+38
倍精度浮點數
double 8 Bytes 2.2250738585072014e-308~1.7976931348623158e+308
字元 char 1 Bytes -128~127布林 bool 1 Bytes true( 真 ) 或 false( 假 )
a
變數的宣告 變數初始值設定的語法為
資料型態 變數名稱 = 初始值 ; int a=2;
宣告變數 a 的資料型態為整數,初始值為 2 。 char c =’A’;
宣告變數 c 的資料型別為字元,初始值為’ A’ 。 int a, b=3, c;
多個變數定義只須以逗號 (,) 隔開每一個變數。 變數名稱命名規則
必須以英文字開頭 可以包含英文字、數字和底線 (_) 英文字母的大小寫將視為不同。
基本數值運算子
+ , - , * , / 運算子 如: var1+var2;
% 運算子 取餘數運算子,只有整數可以用 如: 7%4 的結果為 3
= 運算子 指定運算子,將右邊的運算式結果指定給左邊的變數 如: a=3*b-c+11; x=x+3;
3 6x
3+3
x
6
基本輸出輸入函式
輸出函式 printf() 輸入函式 scanf() 都定義在 stdio.h 標頭檔內,因此使用前先
用 include #include <stdio.h>
輸出函式 printf()
語法 printf( 格式字串 , 變數 1, 變數 2,..., 變數 n); “變數 1, 變數 2,..., 變數 n” 是在需要將變數之值印出
時才須給定 格式字串
一個以兩個雙括號包起來的字串 告訴 printf() 它負責印出的資料 printf(“Hello World!\n”); // 將會印出 Hello World!
格式字串中常用的符號
轉換字元的種類種 類 表 示 法 功 能 敘 述
整數 (integer)
%d 以十進位方式印出 %o 以八進位方式印出%x 以十六進位方式印出%u
以不帶符號的十進位方式印出
%l 以長整數 (long) 方式印出
浮點數 (float) %f
以 xxx.xxxxxxx 方式印出
%e 以指數的方式印出字元 (char)
%c 以字元方式印出%s 以字串方式印出
其他 (other) - 向左邊靠齊印出
*.* 指定浮點數之精確度
int year=2008;
printf(“Hello World %d \n\n”, year);
輸出函式 printf()
印出宣告好的變數或常數內容 在格式字串上以 % 符號跟隨資料型態的對應字元,後面並用逗號將所有變數內容傳給 printf() 函式
int num=123;printf(“ 變數 num 的值為 %d”,num);printf(“ 變數 num 的值為 %d, num+3 的值為 %d”,num,num+3);
// 印出:變數 num 的值為 123
// 印出:變數 num 的值為 123, num+3 的值為 126 課堂練習:參考上面範例,練習印出變數 num 的值,
及 num+3 、 num+5 的值。 ( num 的初始值請自行於宣告變數時給定)
再談 printf()
% 後接數字再接輸出的型別 %3d 、 %4d表示將數字填入 3 格和 4 格大小的格子裡 ( 向右對齊 )不過不會限制總長度 ( 可以超過 )
printf(“a%3d”, 12); 輸出 printf(“a%4d”, 12); 輸出
%6f 表示將小數填入 6 格中 ( 包含小數點 ) printf(“a%6f\n”, 2.345) ); 輸出
%.2f 表示小數後只印出 2 位 ( 會四捨五入 ) printf(“a%.2f\n”, 2.345) ); 輸出
%6.2f 表示小數後印 2 位,並且全部填入 6 格中 printf(“a%6.2f\n”, 2.345) ); 輸出
特殊控制碼特殊控制碼
種 類 功 能 敘 述 \n newline 新行\r carriage return 回歸鍵\t tab 跳格\b backspace 退位\f form feed 跳頁\\ backslash 反斜線\' single quote 單引號\" double quote 雙引號
範例練習
自行宣告一個變數存放全班人數,並以換行( \n )的方式列印出班上同學名字。(避免複雜,請虛構 5 個同學即可)
中文顯示的問題
如果有下面的情況
執行視窗上案右鍵 -> 預設值 -> 預設字碼選950
輸入函式 scanf()
傳遞變數的位址 使用取址運算子 (&) 取得變數的位址 如:
int num;printf(“ 請輸入一個數字 : ”);scanf(“%d”,&num);
以 scanf() 函式來取得資料時 在鍵入資料項之後,要以 Enter作為結束 每一個資料項之間要以空白、 enter 或 tab 隔開 如: scanf(“num=%d”,&num);
// 使用者在輸入時,必須輸入: num=10//10 才會被存入 num 變數中
範例練習
請撰寫程式讓使用者輸入出生年月日並輸出。
作業一
請撰寫一個程式,使用者可以輸入身高與體重,程式會輸出該使用者的 BMI 資訊提示: BMI = 體重 (公斤 ) / 身高 2(公尺 2) 。
( BMI_○○.cpp )
補充 清除輸入緩衝區,讓 scanf()正確執行
fflush(stdin);
如果單純只想印出 %d 用 %% 來代替%
含有中文變數名稱 Dev C++ 不允許 常數的另一種宣告方法
const double pi = 3.14159265897932384;
補充─型別轉換
用在運算元素型別不同時 通常是將定義較”狹小”的轉成較”寛大”的
例:整數和實數相加的話,相加的整數先轉成實數 沒意義的運算式是不准許的
例:將浮點實數當作陣列索引 轉換後會失去一些訊息
編譯器可能會出現警告,不過仍然可以作 例 1 :將較長型的整數指派給較小型的整數 例 2 :將浮點實數指派給整數變數
型別轉換 2 執行指定敘述時轉換也會發生
此時不分高低,等號右邊的值會被轉成等號左邊變數相同的型別
指定敘述可能將 long 轉成較短的 int 或 short 甚至 char ,此時只是將較高階的位元捨棄
下例中的結果 c 的值不會變 int i;
char c;i = c;c = i;
如果改寫成下面這樣, i 的值就有可能改變 c = i;
i = c;