码迷,mamicode.com
首页 > 编程语言 > 详细

C语言学习

时间:2016-07-03 19:48:00      阅读:1120      评论:0      收藏:0      [点我收藏+]

标签:

C语言简要概述

简单来说一个C程序就是由若干头文件和函数组成。
简单示例:

#include <stdio.h>//头文件
int main() //主函数
{
printf("I love C");
return 0;
  }

一个C程序,有且只有一个主函数,即main函数,C程序就是执行主函数种的代码。

良好的代码规范

在写C语言程序的时候为了书写清晰、便于阅读、便于理解、便于维护,在编写程序时应遵循以下规则:
1、一个说明或一个语句占一行,例如:包含头文件、一个可执行语句结束都需要换行;
2、函数体内的语句要有明显缩进,通常以按一下Tab键为一个缩进;
3、括号要成对写,如果需要删除的话也要成对删除;
4、当一句可执行语句结束的时候末尾需要有分号;
5、代码中所有符号均为英文半角符号。

#include <stdio.h>
int main()
{
    printf("一个说明或者一个语句占一行\n");
    printf("函数体内的语句要有明显缩进\n");
    printf("括号要成对写,成对删除\n");
    printf("当一句可执行语句结束的时候末尾需要有分号\n");
    printf("代码中所有符号均为英文半角符号")        
    return 0;
            }

c语言的注释:

C语言注释方法有两种:
多行注释: /* 注释内容 */
单行注释: //注释一行

//C语言的注释
/*多行注释
   与单行注释
*/
#include<stdio.h>
int main()
{
    printf("C语言的注释");
    printf("/*这是多行注释*/");
    printf("//这是单行注释");

}

标识符

标识符
编程时给变量或者函数起的名字
C 语言规定,标识符可以是字母(A~Z,a~z)、数字(0~9)、下划线_组成的字符串,并且第一个字符必须是字母或下划线。在使用标识符时还有注意以下几点:
(1)标识符的长度最好不要超过8位,因为在某些版本的C中规定标识符前8位有效,当两个标识符前8位相同时,则被认为是同一个标识符。
(2)标识符是严格区分大小写的。例如Imooc和imooc 是两个不同的标识符。
(3)标识符最好选择有意义的英文单词组成做到”见名知意”,不要使用中文。
(4)标识符不能是C语言的关键字。想了解更多C语言关键字的知识

#include<stdio.h>
int main()
{
    //这个是错的 int 3myAge = 18; 
    int myAge = 18;
    printf("我的年龄是18");
    return 0;
}

变量及赋值

变量 就是可以变化的量,而每个变量都会有一个名字(标识符)。变量占据内存中一定的存储单元。使用变量之前必须先定义变量,要区分变量名和变量值是两个不同的概念。就好比:住在房间里的客人与房间号是两个不同的概念。
变量名和标识符的命名规范完全相同

int age = 18;
int a,b,c;//同时赋值多个变量,然后再分别赋值
a = 18;
b = 19;
c = 20;

基本数据类型:

在C语言中数据类型可以分为:
1.基本数据类型
2.构造数据类型
3.指针类型
4.空类型
技术分享
基本数据类型中最简单最常用的是:整型,实型,字符型

技术分享

整型数据是指不带小数的数字

技术分享

浮点数据是指带小数的数字

技术分享

#include <stdio.h>
int main()
{
       int age = 15;
       int height = 162;
       float weight = 82.5;
       char isfat = ‘y‘;
    printf("年龄:%d 岁\n", age);
    printf("身高:%d CM\n", height);
    printf("体重:%f KG\n", weight);
    printf("是否属于肥胖儿童:%c\n", isfat); 
    return 0;    
}

格式化输出语句

格式化输出语句,也可以说是占位输出,是将各种类型的数据按照格式化后的类型及指定的位置从计算机上显示。
格式:
printf(“输出格式符”,输出项);
%d(带符号十进制整数)
%c(单个字符)
%s(字符串)
%f(6位小数)

#include <stdio.h>
int main(){
    int age = 18;
    float height = 1.85;
    char unit = ‘m‘;
    printf("小明今年%d岁\n", age);
    printf("小明身高%f%c\n", height, unit);
    printf("小明现在学习IT技术"); 
    return 0;
}

不可改变的常量

常量:
在程序执行过程中,值不发生改变的量称为常量。
C语言中,常量分为两种:
1.直接常量
2.符号常量
直接常量:
直接常量也叫字面量,可以直接拿来使用,不需要说明。
例如:
* 整型常量:12, 0, -12;
* 实型常量:23.4,12.9;
* 字符常量:”a”,”M”;
* 字符串常量:”String”,”state”;

#include <stdio.h>
int main()
{
    printf("%d\n",100);//整型常量
    printf("%f\n",12.55);//实型常量
    printf("%c\n","N");//字符常量
    printf("%s","I love coding");//字符串常量
    return 0;
    }

符号常量:
C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义
格式: #define 标识符 常量值

#include <stdio.h>
#define POCKETMONEY 10     //定义常量及常量值
int main()
{
    printf("今天得到%d元零花钱\n", POCKETMONEY);
    return 0;  
}

自动转换类型

数据类型存在自动转换的情况

char c ="A";
int  b ;
double g ;
b = c;(字符串可以转换为整型)
g = b;(整型可以转换为浮点类型)

自动类型转换发生在不同数据类型运算时,在编译期间自动完成。
遵行的规则:
好比大盒子里放小盒子

#include <stdio.h>
int main()
{
    char c = ‘a‘;
    int n = c;        //将c赋值给n
    float f = c;       //将c赋值给f
    double d = c;     //将c赋值给d
    printf("%d\n",n);
    printf("%f\n",f);
    printf("%lf\n",d);
    return 0;    
}

强制类型转换

强制类型转换:
通过定义类型转换运算来实现的,
作用是把表达式的运算结果强制转换成类型说明符所表示的类型
格式:
(数据类型) (表达式)
在使用强制转换时应注意以下问题:
1.数据类型和表达式都必须加括号,如把(int)(x/2+y)写成(int)x/2+y则成了把x转换成int型之后再除2再与y相加了。
2.转换后不会改变原数据的类型及变量值,只在本次运算中临时性转换。
3.强制转换后的运算结果不遵循四舍五入原则。

#include <stdio.h>
int main()
{
    double num = 2.5; //定义浮点型变量num并赋值为2.5
    printf("num的整数部分是%d\n", (int)num ); 
    return 0;
}

C中的运算符:

C语言中的运算就是对数据进行操作、处理的过程。
运算符就是指定该运算的处理方式。

C语言中的运算符:
* 算术运算符
* 赋值运算符
* 关系运算符
* 逻辑运算符
* 三目运算符

#include <stdio.h>
int main()
{
    int a,b,c,d;
    double result;
    a = 1;
    b = 2;
    c = 3;
    d = 4;
    result = a + b + c + d;   
    printf("%f\n", result);
    return 0;
}

基本算术运算符:

技术分享
除法运算中注意:
如果相除的两个数都是整数的话,则结果也为整数,小数部分省略,如8/3 = 2;而两数中有一个为小数,结果则为小数,如:9.0/2 = 4.500000。
取余运算中注意:
该运算只适合用两个整数进行取余运算,如:10%3 = 1;而10.0%3则是错误的;运算后的符号取决于被模数的符号,如(-10)%3 = -1;而10%(-3) = 1。

#include <stdio.h>
int main()
{
    int x,y;
    x = 10;
    y = -3;
    printf("x+y=%d\n",  7   );  
    printf("x-y=%d\n",  13   );
    printf("x*y=%d\n",  -30   );
    printf("x/y=%d\n",  -3   );
    printf("x%y=%d\n",  1   );  
    return 0;    
}

自增与自增运算符

自增运算符为“++”,其功能是使变量的值自增1;自减运算符为“–”,其功能是使变量值自减1。它们经常使用在循环中。
自增自减运算符有以下几种形式:
技术分享
无论是a++还是++a都等同于a=a+1,在表达式执行完毕后a的值都自增了1,无论是a–还是–a都等同于a=a-1,在表达式执行完毕后a的值都自减少1。

#include <stdio.h>
int main()
{
    int x = 0;
    printf("x=%d\n",x++);
    printf("x=%d\n",++x);
    return 0;
}

练习题:
int a = 3; b = 4;
计算a+b%(a+b)/a+a*b-b该算式的运算结果?
答案:12

赋值运算符:

C语言中赋值运算符:
1.简单赋值运算符
简单赋值运算符“=”
2.复合赋值运算符
复合运算符就是在简单赋值符“=”之前加上其它运算符构成,
例如+=、-=、*=、/=、%=。

#include <stdio.h>
int main()
{
    int x = 10;
    int y = 10;
    //简单赋值语句实现x乘以2x = x*2;
    //复合赋值语句实现y乘以2y*=2;
    printf("x=%d\n", x);
    printf("y=%d\n", y);
    return 0;
}

关系运算符:

C语言中的关系运算符:
技术分享

关系表达式的值是“真”和“假”,在C程序用整数1和0表示

#include <stdio.h>
int main()
{
    int x=5;
    int y=5;
    int z=10;
    printf("x是否大于y:%d\n",    x>y        ); //x是否大于y
    printf("y是否大于等于x:%d\n",  y>=x       ); //y是否大于等于x
    printf("y是否小于z:%d\n",       y<z     ); //y是否小于z
    printf("z是否小于等于x:%d\n",   z<=x     ); //z是否小于等于x
    printf("z是否等于x+y:%d\n",     z==x+y    ); //z是否等于x+y
    return 0;
}
结果为:
x是否大于y:0
y是否大于等于x:1
y是否小于z:1
z是否小于等于x:0
z是否等于x+y:1

逻辑与算符:

C语言中的逻辑运算符:
技术分享
逻辑运算的值也是有两种分别为“真”和“假”,C语言中用整型的1和0来表示。求值规则如下:
1. 与运算(&&)
参与运算的两个变量都为真时,结果才为真,否则为假。例如:5>=5 && 7>5 ,运算结果为真;
2. 或运算(||)
参与运算的两个变量只要有一个为真,结果就为真。 两个量都为假时,结果为假。例如:5>=5||5>8,运算结果为真;
3. 非运算(!)
参与运算的变量为真时,结果为假;参与运算量为假时,结果为真。例如:!(5>8),运算结果为真。
例题:
某女招男盆友,给出的条件是身高不能低于180CM且银行存款不少于100万。
现某男身高175CM,银行存款150万来应征,用C语言中的运算来看一下他满足条件吗?

#include <stdio.h>
int main()
{
    int height = 175;   //身高为175cm
    double money = 1500000;  //银行存款为150万
    printf("是否符合条件:%d\n", height>=180 && money>=1000000
    );  
    return 0;    
}

例题2:
int a = 5; int b = 9;
在以下算式中,选出运算结果为真,即结果为1的算式
A: b++>=a*2 && b-a<=a
B: b++>=a*2 || b-a<=a
C: !(a*2-b)
D: ++b-a*2
结果为B

三目运算符:

C语言中的三目运算符:“?:”,
格式
表达式1 ? 表达式2 : 表达式3;
执行过程是
先判断表达式1的值是否为真,如果是真的话执行表达式2;如果是假的话执行表达式3。
例题:
小明下班回家兜里有12元钱,打车回家需要花费11.5元,请用三目运算符写一个算式,计算一下小明能不能打车回家?

#include <stdio.h>
int main()
{
    //定义小明兜里的钱
    double money = 12     ; 
    //定义打车回家的费用
    double cost =    11.5   ;  
    printf("小明能不能打车回家呢:"); 
    //输出y小明就打车回家了,输出n小编就不能打车回家
    printf("%c\n",money>=cost ? ‘y‘ : ‘n‘ );
    return 0;
}
结果:
小编能不能打车回家呢:y

运算符的优先级:

优先级?
优先级就是在运算中运算的先后顺序。
各种运算符号的顺序
优先级别为1的优先级最高,优先级别为10的优先级别最低
技术分享
示例:

#include <stdio.h>
int main()
{
    int x = 5;
    int y = 8;
    //在这里合适的位置加上括号使z的值为4
    int z = x*8/(y+2);
    printf("z=%d\n", z);
    return 0;  
}

C程序结构语句:

简单if语句
基本结构:
技术分享
语义:
如果表达式的值为真,则执行其后的语句,否则不执行该语句
例题:
学校入选篮球队的资格条件为身高必须大于等于180CM,小明身高185CM,那么小明能入选吗?

#include <stdio.h>
int main() 
{       
    int height = 185;
    if(height >= 180)
    {
        printf("%s\n","恭喜小明可以参加校篮球队");
    }
    return 0;
}

简单if-else语句

基本结构:
技术分享
语义是:
如果表达式的值为真,则执行代码块1,否则执行代码块2
例题:

#include <stdio.h>
int main() 
{
    int year = 2014; //今年是2014if(year%4==0&&year%100!=0)
    {
        printf("%s\n","今年是瑞年");
    }
    else{
        printf("%s\n","今年是平年");
    }
    return 0;
}

多重if-else语句
基本结构:
技术分享
语义:
依次判断表达式的值,当出现某个值为真时,则执行对应代码块,否则执行代码块n
例题:
某游戏对不同等级的积分的玩家赋予不同的荣誉称号,其对应关系如下:
积分>=10000分为钻石玩家
积分>=5000并且<10000为白金玩家
积分>=1000并且<5000为青铜玩家
积分<1000为普通玩家。
小明现在是有7200分,请在代码编辑器中完善代码,看一下小明是什么级别的玩家。

#include <stdio.h>
int main() 
{
    int score = 7200;
    if(score >= 10000)
    {
        printf("钻石玩家");
    }
    else if(score >= 5000 && score <10000 )
    {
        printf("白金玩家");    
    }
    else if (score >=1000 && score <5000)
    {
        printf("青铜玩家");     
    }
    else
    {
        printf("普通玩家");    
    }
    return 0;
}

嵌套if-else语句
基本结构:
技术分享
嵌套if-else语句的意思,就是在if-else语句中,再写if-else语句。
例题:
获奖条件为年销售业绩100万以上,并且入职满两年的员工。小明进入公司1年,销售业绩为120万。

#include <stdio.h>
int main() 
{
    int sale=120; //销售业绩为120int year=1; //刚刚进入公司1if(sale > 100)
    {
        if(year >= 2)
        {
            printf("%s\n","优秀员工奖");
        }
            printf("%s\n","很遗憾,期待你再接再厉");
    }
    else
    {
        printf("%s\n","很遗憾,希望你再接再厉");
    }
     return 0;
}

循环结构之while循环

基本结构:
技术分享

表达式表示循环条件执行代码块循环体
例题:
用while循环实现100以内所有整数之和。

#include <stdio.h>
int main()
{
    int i,sum=0;
    i=1;
    while( i <= 100  )  //循环条件应该是什么呢?
    {
        sum=sum+i;
         i++ ;        //这里是不是应该改变循环变量的值
    }
    printf("100以内所有整数之和为:%d\n", sum);
    return 0;
}

注意点:
1.while语句中的表达式一般是关系表达或逻辑表达式,当表达式的值为假时不执行循环体,反之则循环体一直执行。
2.一定要记着在循环体中改变循环变量的值,否则会出现死循环(无休止的执行)。
3.循环体如果包括有一个以上的语句,则必须用{}括起来,组成复合语句。

C语言学习

标签:

原文地址:http://blog.csdn.net/batmaner/article/details/51803658

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!