第3章 最簡單的C程序設計
順序程序設計
數據的表現形式及其運算
常量、變量、常變量、標識符
數據類型
整型、浮點型
-
整型數據的分類
最基本的整型類型
基本整型(int型):占2個或4個字節
短整型(short int):VC++6.0中占2個字節
長整型(long int):VC++6.0中占4個字節
雙長整型(long long int):C99新增的 -
整型變量的符號屬性
整型變量的值的范圍包括負數到正數
可以將變量定義為“無符號”類型
擴充的整形類型:有符號基本整型 [signed] int;
無符號基本整型 unsigned int;
有符號短整型 [signed] short [int];
無符號短整型 unsigned short [int];
有符號長整型 [signed] long [int];
無符號長整型 unsigned long [int]
有符號雙長整型 [signed] long long [int];
無符號雙長整型 unsigned long long [int]
字符型數據
- 字符與字符代碼
大多數系統采用ASCII字符集
字母:A ~Z,a ~z
數字:0~9
專門符號:29個:! ” # & ‘ ( ) *等
空格符:空格、水平制表符、換行等
不能顯示的字符:空(null)字符(以‘\0’表示)、警告(以‘\a’表示)、退格(以‘\b’表示)、回車(以‘\r’表示)等
字符’1’和整數1是不同的概念:
字符’1’只是代表一個形狀為’1’的符號,在需要時按原樣輸出,在內存中以ASCII碼形式存儲,占1個字節
整數1是以整數存儲方式(二進制補碼方式)存儲的,占2個或4個字節
- 字符變量
用類型符char定義字符變量
浮點型數據
浮點型數據是用來表示具有小數點的實數
float型(單精度浮點型)
編譯系統為float型變量分配4個字節
數值以規范化的二進制數指數形式存放
double型(雙精度浮點型)
編譯系統為double型變量分配8個字節
15位有效數字
long double(長雙精度)型
運算符和表達式
1、基本的算術運算符
2、自增、自減運算符
3、算術表達式和運算符的優先級與結合性
4、不同類型數據間的混合運算
%c、%d
5、強制類型轉換運算符
系統自動進行的類型轉換
強制類型轉換
6、C運算符
算術運算符 (+ - * / % ++ --)
關系運算符 (> < == >= <= !=)
邏輯運算符 (!&& ||)
位運算符 (<< >> ~ | ∧ &)
賦值運算符 (=及其擴展賦值運算符)
條件運算符 (?:)
逗號運算符 (,)
指針運算符 (*和&)
求字節數運算符 (sizeof)
強制類型轉換運算符 ( (類型) )
成員運算符 (. 和 ->)
下標運算符 ([ ])
其他 (如函數調用運算符())
C語言的作用和分類
C語句分為以下5類:
控制語句: if、switch、for、while、do…while、continue、break、return、goto等
函數調用語句
表達式語句
空語句
復合語句
and 賦值語句(賦值運算符、復合的賦值運算符、賦值表達式、賦值過程中的類型轉換、變量賦初值)、輸入輸出語句
//給出三角形的三邊長,求三角形面積。
#include <stdio.h>
#include <math.h>
int main ( )
{ double a,b,c,s,area;
a=3.67;
b=5.43;
c=6.21;
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%f\tb=%f\t%f\n",a,b,c);
printf("area=%f\n",area);
return 0;
}
求a*x^2+b*x+c = 0方程的根
▲>0
#include <stdio.h>
#include <math.h>
int main ( )
{double a,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q; x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
return 0;
}
有關數據輸入輸出的概念
(1) 所謂輸入輸出是以計算機主機為主體而言的
從計算機向輸出設備(如顯示器、打印機等)輸出數據稱為輸出
從輸入設備(如鍵盤、磁盤、光盤、掃描儀等)向計算機輸入數據稱為輸入
(2) C語言本身不提供輸入輸出語句
輸入和輸出操作是由C標准函數庫中的函數來實現的
printf和scanf不是C語言的關鍵字,而只是庫函數的名字
putchar、getchar、puts、gets
(3) 在使用輸入輸出函數時,要在程序文件的開頭用預編譯指令
#include <stdio.h> 或 #include ″stdio.h″
用printf函數輸出數據:
printf(格式控制,輸出表列)
例如:
printf(”i=%d,c=%c\n”,i,c);
%d輸出int型數據、%ld輸出long型數據、%c輸出一個字符、%s輸出一個字符串、
%f輸出實數用小數形式輸出
不指定數據寬度和小數位數,用%f
指定數據寬度和小數位數。用%m.nf
輸出的數據向左對齊,用%-m.nf
%s輸出以指數形式輸出實數
printf(”%e”,123.456);//1.234560 e+002
%m.ne
printf(”%13.2e”,123.456);// 1.23 e+002(前面有4個空格)
用scanf函數輸入數據
scanf(格式控制,地址表列)
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
scanf(”%f%f%f”,a,b,c); 錯
scanf(”%f%f%f”,&a,&b,&c); 對
對於scanf("a=%f,b=%f,c=%f",&a,&b,&c);
1 3 2↙ 錯
a=1,b=3,c=2↙ 對
a=1 b=3 c=2↙ 錯
對於scanf(”%c%c%c”,&c1,&c2,&c3);
abc↙ 對
a b c↙ 錯
字符數據的輸入輸出
用putchar函數輸出一個字符
putchar(c)
putchar(’\101’) (輸出字符A)
putchar(’\’’) (輸出單撇號字符’)
用getchar函數輸入一個字符
getchar( )
從鍵盤輸入BOY三個字符,然后把它們輸出到屏幕。
#include <stdio.h>
int main ( )
{ char a,b,c;
a=getchar();
b=getchar();
c=getchar();
putchar(a); putchar(b); putchar(c);
putchar('\n');
return 0;
}
#include <stdio.h>
int main ( )
{ putchar(getchar());
putchar(getchar());
putchar(getchar());
putchar('\n');
return 0;
}