一、基础操作 本文包括C语言的基础操作,如果您已经学过其他语言,建议跳过或者迅速浏览即可
起手式Hello World 1 2 3 4 5 6 7 8 9 10 #include <stdio.h> int main () { printf ("Hello \nWorld!" ) ; return 0 ; }
所有语言开始的仪式 在C里面,利用printf打印/输出我们想要的东西
基础运算和输入输出 运算 加减乘除和小学数学没什么两样。这里主要讲讲新东西。
1 2 3 4 5 6 7 8 9 10 11 12 ```%```:取余,这家伙得到的就是余数了,比如5%2=1 ```c #include <stdio.h> int main() { printf("7/5=%d",7/5) //%d代表输入“”,后面的运算。符号+-*/是加减乘除 %是取余 ()是括号 //%取余表示取两个数相除之后的余数,且只会显示余数 ; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ```A+= 5``` 实质上是和 ```A= A+5```是相同的,注意前者的+=之间是不能有空格的 同理,```A*= B+12``` 实质等同于 ```A= A*(B+12)``` 常用的是++和--,```a++```就是```a+=1```也就是```a=a+1``,减法同理 a++和++a有细微的差别 ```c #include <stdio.h> int main() { int a; a = 10; printf(" 这个是a++的式子 %d \n", a++); printf("而结果是 a= %d \n",a); printf(" 这个是++a的式子 %d \n", ++a); printf("而结果是 a= %d \n",a); ;return 0; }
用scanf进行输入 scanf("%d",&price);
我们使用 scanf 把一些东西输入,这里表示把""
中的结果赋值给price变量,注意变量前的&要打
至于&是什么呢,这个要到指针部分我们再细说 可以同时定义多个输入量,每一个%d和之后所写的变量的一一对应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 #include <stdio.h> int main () { int price=0 ; printf ("请输入金额" ); scanf ("%d" ,&price); int change=100 -price; printf ("找您%d 元" ,change) ;return 0 ; } ``` ### 变量、赋值、初始化 变量定义的一般形式是 ```<变量类型><变量名称>;``` 如```int price;``` 每一个变量都有一个唯一的标识符,只能由字母、数字、下划线组成,且数字不能在第一个位置。 > 标识符,通俗的说就是变量的名字。关键字不能作为标识符,比如你不能int int = 1 ) 所有变量必须有确定的数据类型,表示变量中可以存放什么类型的数据,运行过程中不能改变类型 >C99可以在变量使用前定义它都可以,而传统的ANSI C只能在代码开头定义变量 ```C #include <stdio.h> int main(){ int price=0 ; printf ("请输入金额" ); scanf ("%d" ,&price); int change=100 -price; printf ("找您%d 元" ,change) ;return 0 ; }
浮点数 我们使用整型int进行运算时,结果只会是整数 想要得到小数部分,我们需要浮点数
这里先介绍两种浮点数已经符号: float:单精度浮点数,使用float时,用%f double:双精度浮点数,使用double时,用%lf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <stdio.h> int main () { printf ("第一行整数的测试%d " ,10 /3 ); printf ("第二行浮点数的测试%f" ,10.0 /3 ); ;return 0 ; }
double可表示的范围比float更大,吃的内存也比它多 各个变量范围的区别和用法之后再提
小结:一个使用输入框和结果的例子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 #include <stdio.h> int main () { int hour1,minute1;int hour2,minute2;printf ("请输入“第一个小时的时分”如一点三十为 1 30 " ); scanf (" %d %d" ,&hour1,&minute1);printf ("请输入“第二个小时的时分”如三点三十为 3 30 " ); scanf (" %d %d" ,&hour2,&minute2); int time1=hour1*60 +minute1;int time2=hour2*60 +minute2;int t=time2-time1;printf ("时间差是%d小时%d分钟。" ,t/60 ,t%60 ); ;return 0 ; } ``` ## 判断语句与循环语句 了解了判断语句和循环语句,再加上输入输出,差不多已经完成最最基础的入门了 ### 判断语句 #### 基础 我们利用if 语句进行判断 if 语句的标准写法: ```C if (条件成立) { ... } ``` 判断条件: 判断的条件的符号如下: == 相等 !=不相等 > 大于 >= 大于或等于 <小于 <= 小于或等于 注意,在C里面,判断的结果并不是布尔值(true ,false ),而是1 和0 我们使用```else 语句```,表示除了if 条件之外的情况下所做的操作 **代码实例**: ```C #include <stdio.h> int main(){ int price=0 ;int bill =0 ;printf ("请输入金额 " );scanf ("%d" ,&price); printf ("请输入票面 " );scanf ("%d" ,&bill); if (bill>=price) { printf ("应该找您: %d \n" , bill-price); } else { printf ("你的钱不够 \n" ); } printf ("执行结束" ); ; return 0 ; } ``` if 和else 有另外一种不用大括号的写法,但是为了可读性一般不建议使用 ```C if (hours>STANDARD) pay=STANDARD*RATE+(hours-STANDARD)*(RATE*1.5 ); else pay=hours*RATE;
嵌套 不管是if语句还是if-else语句,我们都可以进行嵌套 什么是嵌套呢,见到来说就是一个判断语句中再次使用判断语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include <stdio.h> int main () { int a,b,c; printf ("请输入三个数字" ) ; scanf ("%d %d %d" ,&a,&b,&c) ; int max=0 ; if (a>b) { if (a>c){ max=a; }else { max=c; } }else { if (b>c){ max=b; } else { max=c; } } printf ("The max is %d \n" ,max); ; return 0 ; }
级联 if 后的else语句可以直接再接if语句,就是else if语句
if()```表示,在第一句条件不成立的情况下,再次进行判断 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ```C #include <stdio.h> int main(void) { int x ; int f = 0; scanf("%d",&x); if(x<0) { f = -1; }else if (x==0){ f = 0; }else if (x>5){ f=2*x; }else { f=3*x; } printf("%d",f) ;return 0 ; } ``` #### switch case 多路分支 可以使用swtich case 来减少一些if else的工作量 这里的工作量指的是你复制粘贴的工作量 在很多时候,```switch case```开销略大,且有很多要注意的细节,因此反而比```if-else```少用 ```C switch( type ){ ... }
type表示的是当前判断的变量的值
1 2 3 case <常量> : 常量可以是常数,也可以是只含常数运算的表达式) 语句...(一般以break 结尾) break ;
利用case来对各种情况进行分析
一个switch-case的使用实例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include <stdio.h> int main (void ) { int type; scanf ("%d" ,&type); switch ( type ){ case 1 : printf ("这是case 1" ); break ; case 2 : printf ("这是case 2" ); break ; case 3 : printf ("这是case 3" ); case 4 : printf ("这是case 4" ); break ; default : printf ("阿这,这不是case1234" ); } ;return 0 ; }
case只是一个路标,并不会自动停止。甚至会运行到下一条case里面去执行句子(按排序的顺序) 这个动作会直到遇到一个break或者到达switch结束,才会停止下来。
循环语句 while循环 最最基本的循环,生动形象地表现了“当…时,一直…”的思想
在执行语句中要有改变条件的语句,不然就是死循环
do-while 循环 和上面那位没什么区别,主要在于: while是先判断条件,在决定要不要执行语句 do-while是无论怎样先执行一次 ,执行完再判断
1 2 3 do { 循环体语句 }while (循环条件);
for循环 for循环和while循环是等价互通的
1 2 3 for (初始条件;继续循环的条件;参数更新){ 执行语句 }
比如:
1 2 3 for (i=1 ;i<=10 ;i++){ printf ("123" ); }
循环嵌套 和判断语句一样,循环是可以嵌套使用的
小结与实例 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> int main (void ) { int count = 100 ;while (count > 0 ) { printf ("%d \n" ,count); count--; } printf ("发射!\n" ); ;return 0 ; }
循环中的break与continue 这是两个可以表示结束循环的句子break :表示结束循环,直接结束循环跳出循环continue :结束本次循环,不执行接下来的语句直接进行下一次循环
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include <stdio.h> int main (void ) { int x ; scanf ("%d" ,&x) ; int i ; int k =0 ; if (x ==1 ){ printf ("1就是1" ); }else if (x<1 ){ printf ("EOORO" ); }else { for (i=2 ;i<x;i++){ if (x%i == 0 ) { k =1 ; break ; } printf ("%d \n" ,i); } if (k==1 ) printf ("不是素数" ); else printf ("是素数" ) ; } ;return 0 ; }