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

C语言基础

时间:2019-03-04 09:53:15      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:格式化输出   ati   执行   整型   其他   表达式   二进制   err   强制类型转换   

概论:
  • ‘/*‘注释内容的开始,‘*/‘注释内容的结束
  • 预处理指令
# include "studio.h"
  • “studio.h”文件定义了很多输入输出功能
  • *.h 头文件
  • *.c c源程序文件
  • main 函数
            
void mian()
        void代表函数不需要返回值,不需要将结果递交给上一级程序
  •    每个C语言程序中必须只能有一个命名为main的函数,这是唯一的起点,是所有函数的上级函数
  • C语言中规定每条语句都必须以“;”作为结束标志
  • “\n”换行
  • C语言编译过程: 编译预处理,编译,优化,汇编,链接并生成可执行的机器语言程序文件
  • 运行和调试:1, 程序文档读入内存,分配内存空间
                               2,操作系统为此程序创建进程
                               3,操作系统执行进程
                               4,完毕,释放内存空间等资源
 
  • 一般错误;
    • 语法错误
    • 逻辑错误
    • 运行错误
 
数据:
  • 基本数据类型:
  • 整形
    • 有无符号
      • 无符号整数(保存形式:二进制原码)
      • 有符号整数(保存形似:最高位为符号位,0+,1-, 正数以原码保存,负数以补码保存)
    • 范围大小
      • 字符型     (1字节 )
      • 短整型     (2字节)
      • 标准整型
      • 长整型     (4字节)
  • 浮点型
    • 有无符号
      • 有符号浮点数
      • 无符号浮点数
    • 精度
      • 单精度浮点型 float
      • 双精度浮点型 double
      • 高精度浮点型 long double
  • 指针型
  • 常量
    • 字面常量
      • 整型常量
        • 十进制
        • 八进制    (整数开头假0)
        • 十六进制  (整数开头加0x或0X)
      • 实型常量
        • 十进制小数
        • 指数形式  0.5e3
      • 字符常量(单引号  char型)
        • 普通字符常量  ‘a’  ‘b‘
        • 转义字符常量 ‘\’
      • 字符串常量 (双引号)      remark: C语言中存储的字符串常量都以‘\0‘作为字符串的结束标志:  ‘A’占一个字节“A”占两个字节
    • 符号常量   用符号对常量命名:
                    # define 符号常量名(大写字母)   常量
 
\n
换行
\t
水平制表,跳到下一个tab
\v
垂直制表
\b
退格,当前位置移到前一列
\r
回车,将当前位置移到本行开头
\f
换页,将当前位置移到下一页开头
\a
响铃报警
\0
空字符,字符串结束符
\\
代表反斜杠
\‘
字符‘‘‘
\"
字符“
\ddd
1~3位八进制数字
\xhh
‘hh’1~2位十六进制数字
 
  • 变量
    • 标志符(字母,数字下划线组成,并且第一个字母不能由数字组成,大小写有别,不建议长度超过8个字符)
      • 关键字(if...)
      • 预定义标志符:define
      • 用户标识符:day..
    • 规则:类型名 变量1,变量2;
void main()
{    
    int a,b;
    char ch1,ch2;
}
    • 变量的初始化
      • int a=12,b-3;
      • char *p=0; 将指针变量初始化为0是一个好习惯?
    • 变量的引用
      • & 对应存储单元的地址
      • 赋值运算
  • 输入输出
    • 需要有预编译命令:
#include <stdio.h>
  •    基本输出
    • 单个字符输出 putchar()
    • 格式化输出函数 printf()   printf(格式控制,输出表列)
        • c 字符
        • d 整数
        • u 无符号十进制
        • x 无符号十六进制
        • f 小数
        • e 指数
        • s 字符串
        • % %
      • 附加修饰符
        • - 左对齐标志,默认为右对齐
        • + 正数输出带有正号
        • 数字 输出宽度
        • .数字 小数位数
        • H 短整数
        • l 或者L 长整数或者浮点数
  • 基本输入
    • 单个字符输入getchar() getchar();
  • 格式化输入scanf();
运算与表达式
  • 单双目运算
  • 优先级与结合性
  • 数据类型转换
  • 强制类型转换
  • 自增,自减运算: ++a: 变量先自增,然后将值传给表达式
                                        a++:先将值传给表达式,然后进行自增
  •   关系运算:
    • 优先级较高: >, >=,<=,<
    • 优先级较低:==,!=
  • 逻辑运算
    • !非
    • &&与
    • || 或
  • 位运算
    • 按位逻辑运算
    • 移位运算
      • x = x>>2
      • 左移一位相当于乘以2,右移一位相当于除以2
    • 指针运算
      • 取地址计算
        • 通过指针变量或地址常量获得地址
        • 通过标准函数获得地址值
        • 不允许给一个指针变量直接赋给一个整数值   int *p    p=2009 (错)     int *p  p= NULL, p为空指针
        • (NULL是stdio.h头文件中定义的符号常量,值为0)
      • 操作指针变量
        • 指针变量的使用必须是先赋值后使用
        • “&”和“*”优先级相同,右结合
      • 移动指针
      • 比较指针
  • 其他运算
    • sizeof运算
      • 代表长度,右结合,结果是一个无符号的整形
      • 指针型占空间为4字节
    • 逗号运算
      • 左结合,自左向右
    • 条件运算
      • 三目运算:max=(x>y)?x:y;
      • 表达式一?表达式二:表达式三;
      • 表达式为非0,则结果为表达式二,如果,表达式一为0,则结果是表达式三
# include <stdio.h>
#include <string.h>
void main()
{
    int a,b,c,t;
    printf("please input 3 numbers:");
    scanf("%d%d%d",&a,&b,&c);
    t=(a>b)?a:b;
    t=(t>c)?t:c;
    printf("%d",t);
}
  • 赋值运算
    • = 右侧赋值给左侧
    • 复合赋值运算
      • a+=b    a=a+b
      • a-=b    a=a-b
      • a*=b    a=a*b
      • a/=b   a=a/b
      • a%=b  a=a%b。。。
      • 注意,运算时需要将运算符右侧的表达式用括号括起来如x*=y-3     应该等于X=x*(y-3)
 
程序控制结构
顺序结构、分支结构、循环结构
  • 顺序结构(正常结构)
  • 选择结构
    • if语句
      • if (a>100)     printf("hello");
      • if条件语句后面不跟随;, 在之后的语句后面跟随;
      • if (表达式)   语句一;   else    语句二;
# include <stdio.h>
#include <string.h>
void main()
{
    int a,b,c;
    printf("please input 3 numbers:");
    scanf("%d%d%d",&a,&b,&c);
    if (a>b)
    printf("a is begger than b");
    else
    printf("a is small than b");
}
switch语句
switch(grade)
(
    case A:
    printf("1");break;
    case B:
        printf("2");break;
    default:
    printf("error");break;
)
# include <stdio.h>
void main()
{
float data1,data2,result;
char op;
scanf("inpurt 2 numbers %f and %f",&data1,&data2);
scanf("inpurt operation %c", &op);
switch(op)
(
    case+:
        result = data1 + data2;
        break;
    case-:
        result = data1 - data2;
        break;
    case*:
        result = data1 * data2;
        break;
    case/:
        result = data1 / data2;
        break;
    
)
    printf("result is %f", result);
}
  
  • 循环结构
    • while 循环
    • while 和if 的唯一区别就是if在在执行完语句后直接结束,而while 在执行完后需要再进行一次判定
# include <stdio.h>
void main()
{
int i=1,total=0;
while (i<100)
{
total = total +i;
i++;
}
printf("total is %d",total);
}
 
    • do while 循环, 当进行到哪一步的时候自动退出
do 
循环体
while(表达式)
 
do
{
fact = fact +i;
i++;
}
while(i<=10);
printf("nnn")
    • for循环
      • 语法: for(i=1;i<=100;i++)
                                    sum = sum+i
      • for(表达式1;表达式2;表达式3)        计算表达式1,计算表达式二,如果非0,则执行循环语句,然后执行表达式三;  如果表达式二的结果为0,则直接跳出循环
    • 其他控制语句
      • break语句
        • break; 只能用于switch和循环语句中,终止循环
      • continue语句
        • 一般用于满足特定条件后跳出本次循环。
        • if (1%5!=0)  continue;     相当于: if(1%5==0) ...
      • goto语句:结构化程序
      • 循环的嵌套
# include <stdio.h>
void main()
{
int i,j,n;
printf("pls enter th n value");
scanf("%d", &n);
for (i=1;i<=n;i++)
    {
        for (j=1;j<=n-i;j++)
        {
            printf(" ");
        }
        for (j=1;j<=2*i-1;j++)
        {
            printf("*");
        }
        printf("\n");
    }
}
数组
  • 一维数组  int a[10];
    • 数组里面必须是常量,数组是一个指针型常量
    • 一个整形占用四个字节
    • C语言编译器不会检查数组元素下标是否越界
  • 下标法引用一维数组
            一个数组不能整体引用
  • 指针法引用数组元素
 
  • 一维数组的初始化
 
找出数组里的最大值
# include <stdio.h>
# define N 10
void main()
{
int i,max,a[N];
printf("pls key in 10 numbers");
for(i=0;i<N;i++)
    scanf("%d",&a[i]);
max=0;
for(i=1;i<N;i++)
    if(a[i]>a[max])
        max = i;
printf("%d",a[max]);
}
冒泡排序:
# include <stdio.h>
# define N 10
void main()
{
int i,a[N],j,k,t;
printf("pls key in 10 numbers");
for (i=0;i<N;i++)
    scanf("%d",&a[i]);
for (i=0;i<N-1;i++)
    for (j=0;j<N-i-1;j++)
        if (a[j]>a[j+1])
            {
            t=a[j];
            a[j]                   =a[j+1];
            a[j+1]=t;
            }
for(i=0;i<N;i++)
    printf("%d ",a[i]);
}     Z

C语言基础

标签:格式化输出   ati   执行   整型   其他   表达式   二进制   err   强制类型转换   

原文地址:https://www.cnblogs.com/joe-zhang/p/10468768.html

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