• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C语言基础

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
概论:
  • \'/*\'注释内容的开始,\'*/\'注释内容的结束
  • 预处理指令
# 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

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# RGB和HSB相互转换发布时间:2022-07-13
下一篇:
C#加密-密钥容器发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap