1、1 .第一个C程序: # include "stdio. h"/*该行是文件包含命令*/niain() { printf ("test") ;/*函数调用:printf将内容输出到显示器*/} 注:C语言区分大小写;程序中必须含有一个且只有一个名字为main的主函数; 每行程序必须以〃;“结尾;/* ... */是注释内容。 2.引申例题:计算任意半径圆的面积和周长。 ftinclude "stdio. h"mciinO { float r, 1, area;/*定义 float 类型变量*/scanf (飞f",&r);/*调用获取键盘输入函数*/ 1 = 2*3.14*r;
2、area = 3.14*r*r; printf C\n l=%f, area=%f\n,z, 1, area);) 注:r, 1, area是float类型的变量,程序运行中可改变,float是c语言中的一种 数据类型。 3求两个数的和。 ttinclude "sldio. h"mciinO { int i, j, sum; int Add(int m, int n) ;/*声明函数*/ 0,01,0,0 0, 1,0逻辑或运算符例子代码: ttinclude “stdio. h"main() { int m, n; int k; k=(m=0)||(m=l);或运算的
3、计算规那么*/ printf ("%d, %d\n”, in, k); k=(m=l) | | (m=0); printf (“为d, %d\n”, m, k); k=(m=2)||(m=l)||(m=0);算的规那么测试*/ printf ("与d,与d\n”, m, k); m=0, k=0; n=++m||++k; printf ("%d, %d, %d\n”, k, m, n); m=0, k=0; n=++k||++m; printf (*%d, %d, %d\n*, k, m, n);++m||++k+*/ }程序运行结果: /*逻辑/*多层逻辑或运 /
4、测试表达式++k |++m与1, 1 1,12,1 0, 1, 11,0, 1 逻辑与和逻辑或混合运算例子代码: #include “sldio. h" mainO { int m, k; /*表达式理解为(m=0) I I ((m=l )&&(m=2))*/ printf (,z%d, %d\n,,, rn, k); k=(m=2)||(m=0);(m=2)| ((m=l)&&(m=0))*/ printf ("%d, %d\n”, m, k); k=(m=2)&&(m=l)
5、 | (m=0); ((m=2)&&(m=l))||(m=0)*/ printf (“为d, %d\n”, m, k); k=(m=0)&&(m=l) | | (m=2);((m=0)&&(m=1))||(m=2)*/ printf (“为d, %d\nz,, m, k); /*表达式理解为 /*表达式理解为 /*表达式理解为 程序运行结果: 2,12,1 1,12, 1 4条件运算符和条件表达式4.1条件运算符〃?「是C语言中唯一的的三目运算符,优先级高于赋值运算 表达式语法:表达式1?表达式2:表达式3其执行顺序是:先求解
6、表达式1,假设为1那么执行表达式2,否那么执行表达式3。 例子代码: ttinclude "stdio. h"main() { charch; scanf ("枇",&ch);/*输入一个字符,赋给变量ch*/ ch=(ch>= AJ &&ch<=, Z') ? (ch+, a'」A'): ch;/* 当字符为大写字母时,将其变为小写字母*/ printf (,/\n%c,,» ch);) 5sizcof运算符5. Isizeof是C语言的一种单目运算符,运算对象是变量名、表达式或数据类型标 示符。功能是以字节形式给出操作数的存储大小。 5. 2语法格式:sizeof (表达式
7、或sizeof表达式 或sizeof (数据类型)6取地址运算符 6.1取地址运算符的运算对象只能是变量,运算结果为变量的存储地址。 7几种运算混合运用例子代码: ttinclude "stdio. h"main() { int x, y=l, z; x= ((9+6)%5>=9%5+6%5) ?l:0;/*((9+6)%5> =9%5+6%5)等价于(((9+6) %5)>=(9%5 + 6%5))其值为 0*/ printf(* x=%d\n”,x); y+=z=x+3;/* y+=z=x+3 等价z=x+3, y=y+z*/ printf(* y=%d\t z=%d\n
8、 y, z); x=y=z=l; -xa&++y| |z++;/*混合的逻辑与和逻辑或运算*/ printf C x=%d\t y=%d\t z=%d\n”, x,y,z);} 程序运行结果: x=0 y=4z=3 x=0 y=l z=2摘自letthinking的专栏 c语言学习笔记(五)一顺序程序设计 1语句概述L1普通表达式语句:表达式后加分号就是•个表达式语句,语句与表达式不同, 是无值的,而表达式是有值的。 1.2流程控制语句:流程控制语句主要用来控制程序执行走向,以实现程序的各种 结构方式,它有特定的关键字等,主要分为分支和循环两种。 分支流程控制语句:i
9、f、switch0循环流程控制语句:for、while、do while。 1. 3跳转语句:跳转语句的作用主要是让程序从止常执行的走向中跳转到其它局部, 常见跳转语句如下间断语句:break、continue。 转向语句:goto。 Return 语句:return。 L4复合语句:由一些语句组成,放在一个大括号中形成一个整体,句型如下: (语句1; 语句2: 语句n: C语言语法规定,复合语句作为•条语句来处理。 例子代码: ttinclude "stdio. h"main() { int a=I1, b=21, c=31; printf ("a=与d\tbKd\t
10、c=%d\n”, a, b, c); /*复合语句开始*/ /*复合语句结束*/ (int b=22; float c=3. 3; printf (,/a=%d\tb=%d\tc=%f\n/,, a, b, c); a二 b; } printf (,/a=%d\tb=%d\tc=%d\n/,, a, b, c);) 输出结果如下: a=l1 b=21 c=31a=ll b=22 c=3. 300000 a=22 b=21 c=31上面的代码可以和下面的代码比照运行: ftinclude "stdio. h"ma in() { int a=ll, b=21, c=31;
11、 printf (/,a=%d\tb=%d\tc=%d\n,/, a, b, c); { int a=l;int b=22; int b=22; /*复合语句开始*/ float c=3. 3; printf("a=%d\tb=%d\tc=%f\n”,a,b,c); a=b; /*复合语句结束*/ printf (,/a=%d\tb=%d\tc=%d\n,,, a, b, c);程序运行结果: a=ll b=21 c=31a=l b=22 c=3. 300000 a=ll b=21 c=31可以看到,在复合语句中声明的变量只在复合语句中起作用。 1.5 空语句:
12、空语句一般指只有一个分号占位,一般用在程序设计初期,表示待编 写的函数或代码。 1.6 各种语句整体介绍: ttincludc "stdio. h"/*声明语句*/ /*控制语 /*复合 /*表达式语 /*声明语句*/ /*控制语 /*复合 /*表达式语 main() { int a=10, b=20, c; if (b>a)句 */ {;语句 */ c=a+b;;句 */ /*函数调用语 printf (飞d”, c); ) else ;/*空语句*/ }2库函数的调用与输入输出的关系 2.1 标准的库函数是存放在函数库中的,因此使用时必须要告知计
13、算机,说明函数 库属于哪个库,此过程为函数的声明,例如: ft include "math, h" /*标准数学函数的声明*/Main() { y=sin(x); /*库函数的调用*/ )Include是C语言中的特定字,是包含的意思,包含的文件一般为.h,称头文件。 2. 2在C语言中提供了一些输入输出的标准库函数,例如printf和scanf,使用时 必须将函数库的头文件stdio.h包含进程序中。 3格式化输出Iprintf函数:它的作用是向终端输出数据。 函数格式:printf ("格式控制语句:输出项1,输出项2);例如:printf("%f”,j);输出浮点类型的变量j,
14、 %f为控制符。 常见的格式控制符:: 刎一十进制整型,%o一-八进制无符号整型,%f输出实数,%s一字符串,猊一输出 单个字符等。 4字符输出1字符输出可以利用putchar函数,在stdio. h中已经定义。 例子代码: ftinclude "stdio. h"mciinO { char a, b, c; a=' C'; b=' A'; c='T'; putchar(a); putchar(b); putchar(c); putchar (? \n ); putchar (J \10T ); putchar (* B'); putchar (J c );}
15、
注:该函数不能输出两个或两个以I:的字符数据。
5格式化输入
5. Iscanf函数:作用是从键盘获取数据,格式化后再赋值给变量。
调用形式:scanf (格式控制语句,输入项);/*********************************************************************
6字符输入6. IgetchO和getcheO函数:功能都是读入一个字符。
两者的区别是:getch()函数不将读入的字符回显到屏幕上,getcheO却显示。
例子代码:
#include
16、h(); /*从键盘上读入一个字符不回显送给字符变量c*/ ch=getche();/*从键盘上带回显的读入一个字 符送给字符变量ch*/putchar(c); /*输出该字符*/putchar(ch); 6. 2getchar()函数:作用是从终端输入一个字符。getchar函数将空格符、制表符、和换行符都作为有效字符录入。 例子代码: ftinclude "stdio. h" scanf(*%d sum = Add(i, j);/*调用函数*/ printf (^Xn sum=%
17、d \n,,» sum);} int Add(int m, int n) {/*函数*/ return m + n;} 注:scanf C%d %d", &i,&j);中的&是取地址运算符。 通过以上三个例子的总结: 1. 一个c语言源程序可以由一个或多个源文件组成,每个源文件可以由一个或多个 函数组成,一个源程序无论有多少个源文件或函数,都只能有一个且只能有一个 mian函数。 由引入的指令为预处理指令。 4常见语法规范。 标示符:程序中的变量名、函数名、标号等统称为标示符。C语言规定标示符只能 由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。 1常见数据类型I
18、nt、short、long^ unsigned% float、double、char、enum、void、指针类型、数 组类型、struct、union 等。 基本数据类型:Int> short^ long、unsigned、float、double、char^ enum 都属 于基本类型。特点是其值不可再分。 2常量。 常量定义方式:fidofino标示符常量main () { char cl,c2; cl=getchar(); c2=getchar(); putchar(cl); putchar(c2);} ********************************
19、/7顺序程序设计 例一:计算一元二次方程的根。 代码: #include "math, h” main() ( double a, b, c; double xl,x2,p; printf (z,pleaseinputa, b, c:"); scanfr%lf%lf%ir, &a, &b, &c); printf('\n"); p=b*b-4*a*c; */ xl=(-b+sqrt (p))/(2*a); x2=(-b-sqrt(p))/(2*a); printf("xl=%f, x2=
20、f\n”, xl, x2);
}
例二:两位整数倒序。
/*声明系数*/
/*输入系数*/
/*P存放判别式的值
/*计算方程的根方
/*输出结果*/
代码:
ftinclude
21、分支if语句。 1. 1单条件单分支的if语句一般语法: If (表达式A){语句B; 语句执行流程:首先执行表达式A,如果表达式A的值非0,那么执行语句序列B,然 后流程继续往下执行。 例子代码: ft include “stdio. h"mainO { double score;printf("input the score:"); scanf&score);i f (score〉=60) /*成绩开始判断*/ printf (,/\npass!\n,/);printf (''programming is over!\n") ;/*和判断语句并列的下一条语句*/ }1.2
22、单条件双分支的语法格式: If (表达式A) {语句B; }else{语句C; )语句执行流程:首先执行表达式A的运算,如果表达式A的值非0,那么执行语句B, 条件不成立那么执行Co 例子代码: i nclude "stdio. h"mainO (double score; printf(,zinput the score:");scanf (“机f”, &score); if (score>=60) /*成绩开始判断*/printf ("\npass!\n") ;/*及格说明分支*/ elseprintf (*fail! \n"); printf (,zprogrammi
23、ng is over!\n") ;/*和判断语句并列的下一条语句*/ }2嵌套的if语句 2. 1嵌套常用格式: 第一种: If(表达式){语句} else if(表达式){语句} 第二种: If(表达式){语句} else if(表达式)语句 else语句 例子代码: #include stdio. h#include "math, h” void main(){int a; scanf("%d", &a); if(abs(a)<10) printf (线dis one bit. \n",a); else if(abs(a)<100)printf (",%dis
24、 two bit. \nz,, a); else if(abs(a)<1000)printf(,z%dis three bit. \n",a); else if(abs(a)<10000)printf (z,%d is four bit. \n", a); else if(abs(a)<32767) printf(w%dis five bit. \n",a);else printf (,/thenumberistoolarge\n,z);3.用switch分支设计选择程序 3. 1语法形式: Switch(表达式){case整型常量表达式1:语句;[break;] case整型
25、常量表达式1:语句;[break;]case整型常量表达式1:语句;[break;] Ldefaul t]:语句;注:口里是可省略的。 3.2语句的执行流程:根据switch表达式的值,确定语句的执行入口,自上而下用 表达式的值与case的值比拟,相等就执行case后面的语句,如果语句结尾含有 break,就中断switch,否那么就继续执行下一个case,如果没有与表达式相匹配的 值,就执行default后的语句。 switch的表达式可以为任意类型,但运算结果必须是整型或字符型。 例子代码: ttinclude "stdio. h"main() {int score; pri
26、ntf("score="); scanf("兆d”, &scorc);switch((int) (score/10))/*整型量之间的除法,结果 仍为整型*/( case 10: case 9:printf (^YourgradeisA\n,/);break; case 8:printf (/,YourgradeisB\n,/);break; case 7:printf (/,YourgradeisC\n,/);break; case 6:printf (z,YourgradeisD\n,z);break; default:printf("YourgradeisE'n");sw
27、itch语句也可以嵌套,break只能让程序跳出它所在的switch分支。 例如: switch(nl) { switch(n2) {; )case 2:; )4.分支程序设计实例 4.1 判断年份是否为闰年。 用include "stdio.h"mainO { int year;printf(,zinput the year:"); scanf&year);if((year%4 == 0) && (year%100 != 0)) printf ("该年是闰年\n"); else if(year%400 == 0)printf ("该年是闰年\n"); elseprint
28、f ("该年是平年\n"); }4. 2计算天数: ftinclude,zstdio. h" main()( int day, month, year, sum, leap; printf ('Anplease input year, month, day\n,z); scanf (,/%d%d%d,,> &year, &month, &day); switch(month)/*先计算某月以前月份的总天数*/ ( case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;brea
29、k; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;brcak; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("data error");break; ) sum=sum+day; /*再加上某天的天数*/ if (year%400==01 I (year%4==0&&year%l00!
30、0))/*判断是不是闰年*/ leap=l; else leap=0; if (leap-l&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ sum++; printf (,zIt is the %dth day. ”, sum);} 1循环语句1循环语句主要包括三种:while、do-while> for。 2while语句处理循环Iwhi le语句基本形式: While (表达式){循环体语句} 2. 2执行流程:首先计算while表达式的值,当非零时执行循环体内的语句,执行 完之后继续判断while表达式的值,如果非零,继续执行循环体,直到表达式
31、值为 零时,跳出循环,执行后续的语句。 例子代码: 注:使用sum和i时一定要赋初始值。 2. 3while语句使用注意: 循环体要是多条语句必须使用符合语句形式;在循环体表达式中一定要有控制循环趋向结束的语句,否那
32、么循环将无限进行;循环体可为空; 2. 4whilc 实例:a+aa+aaa+.... 代码: 思考问题:求阶乘。 3do while语句处理循环常量分为:直
33、接常量和符号常量。 例题:求任意圆的周长和面积,使用常量定义:n。 ttinclude "stdio. h"ftdefine PI 3.1415926 ma in() {float r,1,area; scanf ("%f", &r);1 = 2*PI*r; area = Pl*r*r;printf(*Xn l=%f area=%f \n”, 1, area); )注:常量值不能被修改;习惯上常量名大写,变量名小写: 整型常量(整型): 1 .十进制整常数:0~9数字,无前缀等,也就是整常数。例如:237、-783、65535;.八进制正常数:以0为前缀,数值为0、7,八进制通
34、常是无符号数。例如:023;
2 .十六进制整常数:前缀为0X或Ox,由0〜9, a~f或A~F组成(不区分大小写), 例如:0X23A、OXAA、OxFFFO;
3 .长整型常量:使用L或小写1作为后缀,例如:123L (十进制123)、0121 (八 进制10) > 0xl5L (十六进制 21)。
3. Ido while语句基本形式: do (循环体语句}while(表达式);
3. 2执行流程:先执行do后面的循环体,然后计算while里的表达式值,当值非零 时继续执行do的循环体,当值为零时,跳出循环。
例子代码:
35、x;include "stdio. h"main ()(
int i, sum;
i=2;
sum=0;
do
/*先执行循环*/
(
sum+=i;
i+=2;
)while(i<=100);/*判断条件*/
printf ("sum=/d\n”, sum );}
36、or是C语言关键字,括号里的3个表达式可以是任意的表达式,当循环体内 有多条语句时,注意使用复合语句。
4. 2先计算表达式1,表达式1只执行一次,一般是赋值语句,用于初始化变量;然 后求解表达式2,假设值为零,那么退出循环,假设非零,那么执行循环体;接着执行表达 式3,然后继续判断表达式2,再执行循环体,直到表达式2不成立。
例子代码:
37、);
} 38、"math, h”
mainO
(int n, m, flag;
flag=l;
为素数,否那么不是素数。初值为1*/
printf(,z\n enter n:");
scanf &n);
for(m=2;m 39、量,值为1那么n
/*输入n*/
/*判断n能否被2〜n-1之间的数整
/*n不
/*假设flag的值
4思考问题:
1 .求阶乘。
2 .输出斐波那契数歹h.输出水仙花数。
3 .输出如下列图形:
*****
***
**
*5流程控制语句
有时我们在执行循环的过程中,可能需要在中途中断循环或者跳过本次循环,这时 我们就需要使用流程控制语句。
4. 1 break:在switch语句中我们常使用break用来跳出switch分支,其实break 同样也可以使用在循环语句中用来跳出循环。在循环中使用break让循环语句可以 有多个出口,使程序变的更加灵活。
bre 40、ak语句可以使循环在未到达结束条件时提前跳出循环。
例子代码:
for(i=0;i<10;i++){printfi);
if(i—O) break;}
思考问题:使用break语句修改判断素数问题。
5. 2continue:在循环过程中使用continue可以根据条件判断是否执行本次循环, 使用continue之后,后面的代码就不再执行,直接执行下次循环。但是不像break 既可以用在分支也可以用在循环中,continue只能用在循环结构中。
例子代码:
for(i=0;i<10;i++){
if (i==0) continue; /*当 i=0 时不执行循环*/
prin 41、tfi);
)
思考练习:使用continue实现求1000内能被3、5、7整除的数。
,********************************************************************
6. 3goto:也叫无条件转向语句.
它的一般格式为:goto标号;
例子代码:
#include 42、oop;printf("1+2+3+…100=%d\n”, s);
}
43、include
44、符串形式的字转化为vector数组 vector
45、int> A,vector
46、vector
47、
string SHAl::num_into_mcssage(vector
48、
vector
49、vector
50、ctor






