C语言基础知识(上)

#C语言基础知识

一、简单程序的的一般形式  #include//标准输入输出文件,让当前文件有文件的功能

//main函数是程序的入口,一个程序有且只有一个main函数

二、基本数据类型

1、整型

(1)short 短整数类型,占两个字节,取值范围,五位数

1)无符号类型(不包含负整数)

2)有符号类型(包含负整数)

(2)int 整数类型,占四个字节,取值范围,十位数

(3)long 长整型,32位的系统占四个字节,64位的系统占八个字节,取值范围,超过十位数

2、浮点型

(1)float 单精度浮点数类型,占四个字节,6位有效数字

(2)double 双精度浮点类型,占八个字节,15位有效数字

注:系统默认类型是double类型,在使用float类型时,需要在数字后面加f

3、字符型

(1)char占一个字节,单引号括起来

(2)用以存储字符或标点等字符

(3)字符在计算机中采用二进制的ASCII码存储,字符可以通过对应的ASCII码值来比较大小

4、总结

(1)整型有四种类型,short两个字节,五位数 int四个字节,十位数 long超过十位数

(2)浮点型有两种,float四个字节,6位有效数字 double8个字节,15位有效数字(系统默认的是double类型)

(3)char用于存储字符及标点

三、常量、变量

1. 常量:程序运行期间值不能被改变的值

比如:

3

5

2.3

'R'

2. 变量:程序运行期间值能被改变的值

1) 变量代表一个存储区域

2) 存储区域内存储的内容就是变量的值

3) 变量的值可以在程序运行期间改变

3. 变量的定义

1) 变量定义

格式

数据类型 变量名 = 初始值;

int age = 25;

int 指整数类型

age 指变量名

=  指将后面的初始值赋给变量

25  指初始值

;  指语句结束

2) 变量、常量命名规则

1. 只能由数字、字母、下划线组成,并且不能以数字开头

2. 不可以与系统保留字同名

3. 见名知意

4. 不能使用重复的变量名

5. 驼峰命名法(myTom)

四、运算符

1. 赋值运算符

用于给变量赋值,将等号右边的值赋给等号左边的变量

练习:如何交换两个int型变量的值

int a=1,b=2,c;

c=a;

a=b;

b=c;

2. 算术运算符

+  -  *  /  %

1) 除号右边的数字不能为0

2) 取余运算符两边必须都是整数

3) 两个整数相除,得到的是整数

4) 小数和整数相除,得到的小数

++  --

1) ++或--在前,先执行++或--,后运算(先加后用)

2) --或++在后,先运算,后执行++或--(先用后加)

3. 复合运算符

+=  -=  *=  /=  %=

1) a += b; ==> a = a+b;

2) a -= b; ==> a = a-b;

....

4. 条件运算符

格式: 条件表达式 ? 真结果表达式 : 假结果表达式

比如:

int a = 3;

int b = 5;

int c = 0;

c = a > b ? a : b;

附加:

int a=1; (char result;)

(char)result =a == 1 ? 'b' : 'c';

printf("%c\n",result+a);

5. 总结:必须掌握的内容

1) =    +=

2) ++  --

3) 条件运算符

4) == 两个等号是判断

五. 表达式

1. 常量、变量、运算符的组合

2. 每个表达式都会有运算结果

3. 例如: 3+5, a+b

4. 语句,用结束处的一个分号表示,语句是程序执行的最小单位

六. 输入、输出函数

1. 输出函数 printf()

1) printf函数被设计用于显示格式串,并在该串中的指定位置插入可能的值

2) 格式:

printf("格式串",表达式1,表达式2,...);

3) 格式串中包含普通字符和转换说明

1. 转换说明以字符%开头。是用来表示打印过程中待填充的占位符,如果后面跟的是d,表明打印时要在这个位置打印出一个整形数据。

2. 普通字符,会将普通字符完整的打印出来

4) 转换说明符

%d 整型

%hd 短整型

%ld 长整形

%f 单、双精度浮点数

%c 字符

5) 格式转换控制

printf("%04d",12) 最小字段占四个位置,不足用0补齐,如果不加0试试效果

printf("%-4d",112);最小字段宽度占四个位置,左对齐

printf("%4.2f",1.2345);

最小字段宽度占四个位置,保留小数点后两位

注:

\n换行 %与d之间的数字,表明打印的这个数字要占相应的位数

int a=1;    char result;

result = a == 1 ? 'b' : 'c';

printf("%-3c\n",result);

//在float类型中,%与d之间的数字,整数部分代表总共占的位数,小数点后面的代表小数所占得位数

float a = 1.6f;

printf("%4.1f\n",a);

6) 转义序列

\n  回车符

\\  打印\

%%  打印%

\‘  打印’

2. 输入函数 scanf()

1) scanf以回车确定输入结束,并且只接受大键盘的回车,不接受小键盘的回车

2) scanf("%d,%d",&num1,&num2); 输入的时候两个整型数之间必须有『,』,格式串中除了转换说明的其他字符都要从控制台输入

3) 不要在格式串后面加『\n』字符,会抵消掉人工输入的回车

#分支语句(布尔类型、关系运算符、逻辑运算符、if语句分支、switch语句、枚举)

一.布尔类型         

1.只有两种真和假    

 2.赋值true和非0的值 为真    

 3.赋值0 为假 (只有0和false为假)    

4.Xcode默认没有布尔类型,需要导入文件,需要导入<stdboll.h>头文件

例:

//    bool k = false;

//    printf("k = %d\n",k);

二.关系运算符

> >= < <= == !=

他们最终结果一般使用布尔类型的变量来接收

例:

//    bool result = 5==6;

//    printf("result = %d\n",result);

三.逻辑运算符

逻辑与 && (全真为真)

逻辑或 || (一真为真)

逻辑非 !  (取反值)

例:

//    bool result = 8>6 && 6>3;

//    printf("result = %d\n",result);

//

//    bool result1 = true;

//    result1 = !result1;

//    printf("result1 = %d\n",result1);

四.if语句分支

if(判断条件){

执行语句;(条件为真时执行语句)

}

else if(判断条件){

执行语句;

}

else

执行语句;

例:

char a = ' ';

printf("输入一个字符:");

scanf("%c",&a);

if (48 <= a && a <= 57) {

printf("This is a number\n");

}

else if (97 <= a && a <= 122) {

printf("This is a lower\n");

}

else if (65 <= a && a <= 90) {

printf("This is a upper\n");

}

else{

printf("no know\n");

}

switch语句

/*

多重选择,比if-else判断条件多

格式:switch(表达式){

case 可能的值:{

执行语句:

}break;

case 可能的值:{

执行语句:

}break;

default:{

}break;

}

五.switch语句

多重选择,比if-else判断条件多

格式:switch(表达式){

case 可能的值:{

执行语句:

}break;

case 可能的值:{

执行语句:

}break;

default:{

}break;

}

六.枚举

1.枚举目的:提高程序的可读性

2.枚举一般放在头文件下面,属于全局常量

3.enum 枚举名{ 枚举值 = 0/a,枚举值(默认1或b),枚举值(默认2或c),枚举值(默认3或d),}

例:

enum season{ sp=1, su, au, wi};

int a = 0;

printf("输入一个数字:");

scanf("%d",&a);

switch (a) {

case sp :

printf("spring 春天\n");

break;

case su :

printf("summer 夏天\n");

break;

case au :

printf("autumn 秋天\n");

break;

case wi :

printf("winter 冬天\n");

break;

default:

printf("不知道是哪天\n");

break;

#.循环语句(while循环、do...while循环、break,continue、for循环)

循环:满足条件时,反复执行的某一动作

while(较常用)

do..while (不常用)

for (最常用)

1.while循环

格式:

while(判断条件){

循环语句;

}

只要条件成立,循环体会一直执行

循环体执行结束,会重新判断条件是否成立

例:

int a = 0;

scanf("%d",&a);

while (a > 6) {

printf("never give up");

}

2.do...while循环 (直到型循环)

先执行一次循环体,再进行判断,成立会继续执行

格式:

do{

循环体;

}while(判断条件);

例:

输出1到100

int i = 1;

do {

printf("%3d",i);

i++;

} while (i<=100);

3.break,continue

break: 跳出while循环 (结束的是整个循环,不再往下执行)

continue: 结束本次循环 (结束的是这次循环,continue下面未执行的循环语句也结束,重新判断条件)

例:

int i = 0;

while (1) {

if (i==100) {

break;//结束整个循环

} i++;

if (i==9) {

continue;//结束的是本次循环,及i=9时这次循环

}

printf("%d\n",i);

}

4.for循环

for(初始值;判断条件;让初始值自加或自减)

{

循环语句;

}

1.首先确定初始值,确定循环的起始点

2.看判断条件,条件成立,执行循环体;不成立,直接跳出for循环

3.循环体结束后,看自加或自减

4.自加或自减后,判断条件是否成立;成立,执行循环体,不成立,跳出循环

例:

打印9x9乘法表

外层循环i表示要打印多少行,内层循环j表示每行要打印多少个

for (int i = 1; i<10; i++) {

for (int j = 1; j<=i; j++) {

printf("%d*%d=%-3d ",j,i,i*j);

}

printf("\n");

}

例:S(n)=a+aa+aaa+aaaa+...+aaaa..(n个a)

int  a = 0, n = 0,S = 0,b = 0;

printf("输入n和a的值:");

scanf("%d,%d",&n,&a);

for (int i = 1; i <=n;i++)

{

b = 10*b + a;

S +=b;

}

printf("%d",S);

printf("\n");

#一维数组,随机数,宏定义,冒泡排序

1.一维数组

数组:能够存放多个同类型的数值,相当于一个存放数值的容器

格式:int list[4] = {1,2,3,4};

数据类型 数组名 [数组容量] = {赋初值};

例:

通过for循环改变下标,从而有顺序的输出数组中的值

  int ageOfAll[6] = {1,2,3,4,5,6};

// int ageOfAll002 = ageOfAll[1];

ageOfAll[1] = 9;

//  printf("年龄是:%d\n",ageOfAll[1]);

for (int i =0; i<6; i++) {

int temp =ageOfAll[i];

printf("%d",temp);

}

例:

//创建一个数组,存放班里所有人的工号

   int number[12]={0};

printf("工号是:");

for (int i=0;i<12;i++) {

number [i]=i+1;

}

for (int i=0;i<12;i++) {

printf("%03d ",number[i]);

}

printf("\n");

2.宏定义

编译时,系统会将宏定义的新值给宏定义的名字

格式:

#define 宏定义名字 宏定义要替代的内容

例:

#define NUMBER 9 (NUMBER 指代的内容就是9)

无参数的宏定义:

#define NUMBER 9

有参数的宏定义:

#define ADD(A,B) A+B

例:

#define TEST 90

#define  ADD(A,B) A+B

int a = TEST;

int sum = ADD(1,2);

printf("%d %d\n",a,sum);

3.随机数        

#define A 3    

int a[A] = {};    

printf("输入数组a中的第一个值:");    

scanf("%d",&a[0]);    

printf("数组a中的第一个值是%d\n",a[0]);            

printf("输入数组a中的第二个值:");    

scanf("%d",&a[1]);    

printf("数组a中的第二个值是%d\n",a[1]);        

printf("输入数组a中的第三个值:");    

scanf("%d",&a[2]);    

printf("数组a中的第三个值是%d\n",a[2]); 


//通过for循环改变下标,往数组里面依次输入值          

#define A 3  //(宏定义)

int a[A] ={};

for (int index =0; index<A;index++){

printf("输入第%d个值:",index+1);

scanf("%d",&a[index]);

}

//依次输出数组里面的值

for (int index =0; index<A;index++) {

printf("第%d个值是:%d\n",index+1,a[index]);

}

#include<stdlib.h>//随机数头文件

例:

在数组a中放10个0-9的随机数

产生10随机数,并打印出最大值

#define A 10  //(宏定义)

int a[A] ={};

//往数组里面放随机值

for (int i=0; i<A;i++){

a[i] = arc4random()%10;

}

//找到数组中的最大值

int max =0;   

 for (int i =0; i<A;i++){

if (a[i]>max){

max=a[i];

}

}

//打印出数组

for (int i =0; i<A;i++){

printf("%4d",a[i]);

}

printf("\n最大值是:%d\n",max);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,577评论 3 71
  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 3,882评论 2 13
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,422评论 3 44
  • C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的 算法 题目:...
    Poison_19ce阅读 1,117评论 0 0
  • 一、框架 1、Mac系统及常用工具、进制;C数据类型、常量变量、运算符、表达式、格式化输入输出 2、关系运算符、逻...
    师景福阅读 675评论 0 1