前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言算法及常量变量相关知识【C语言学习笔记】

C语言算法及常量变量相关知识【C语言学习笔记】

作者头像
岳泽以
发布2022-10-26 15:41:53
1.1K0
发布2022-10-26 15:41:53
举报
文章被收录于专栏:岳泽以博客

这篇文章也是一些基础知识,本来准备与上一篇文章一起写的,但是想想还是有点区别的,这个已经走入C语言世界了,所以就另起一文来写咯!

算法相关知识

程序=算法+数据结构

算法:指为解决某个特定问题而采取的确定且有限的步骤和方法。

数据结构:数据的类型(int double long 等)数据的组织形式(结构体)。

算法的5个特性:

1.有穷性:一个算法包含的操作步骤应该是有限的

2.确定性:算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必须能得到相同的执行结果。

3.可行性:算法中指定的操作,都可以通过已经验证过可以实现的基本运算执行有限次后实现。

4.有零个或多个输入:在计算机上实现的算法是用来处理数据对象的,在大多数情况下这些数据对象需要通过输入来得到。

5.有一个或多个输出:算法的目的是为了求解,这些解只有通过输出才能得到,但是不论是否有解,即使失败,算法最少都会有一个输出。

如何描述一个算法

1.用自然语言描述

2.用程序流程图描述

3.用N-S流程图描述

4.用伪代码描述

5.用计算机语言描述

C语言的三种基本结构

1.顺序结构

2.选择结构(if和switch)

3.循环结构(while和for)

数据相关知识

数据的表现形式:常量和变量

常量:整型常量、实型常量、字符常量、字符串常量、符号常量

变量:整型变量、浮点型变量

五个常量:

整型常量(int):整数常量是指直接实用的整形常数,又称整形常数或者整数,例如,1,-9等。

例:100 200 0b1010 0104 0xff

实型常量:实型常量又称浮点型,由整数和小数部分组成,其中用十进制的小数点隔开。

例:12.4 12.4e3 12.4e-3 12.4+3

字符常量(char):字符常量分为一般字符常量和特殊字符常量,使用单撇号括起一个字符的形式即字符常量,字符常量是区分大小写的,且只能包括一个字符,不能是字符串。

例:‘a’ '\n' '\101\' '\x41'

这里需要了解一下转义字符:特殊字符常量就是转义字符,转义字符是C语言中表示字符的一种特殊形式,其含义是将反斜杠后面的字符转换成另外的意义,转义字符只能使用小写字母,每个转义字符只能看成一个字符。

字符串常量:字符串常量是一对用双引号括起来的若干字符序列。字符串中字符的个数称为字符的长度,长度为0的字符串称为空串。

例:”hello“ "aaa\"t\n\b”

符号常量:在C语言中,通常将程序中的常量定义为一个标识符,这个常量就叫做符号常量。在使用符号常量之前必须先进行定义,大多数情况下,符号常量用大写英文字母表示。

例:#define 其中 #:符号常量名 define常量值

变量相关

整型变量:整型变量表示的是整数类型的数据,在C语言中,整型变量的值可以是十进制,八进制,十六进制,但在内存中存储着是二进制数。(关于进制数的转换方法请参考:https://www.php.cn/faq/417579.html)整型变量只能存储整型数据,不能类型的变量类型存储数值的范围不同,整型变量的存储类型主要有:短整型short,基本整型int,长整型long等;

实型变量(float、double):C语言中浮点型变量指的就是实数变量(存放可以带小数的数据的变量),并且实型变量分为两类:单精度型(float)和双精度型(double)。

float:通常占用4个字节(32位)存储空间,其数值范围为-3.4E38~3.4E38,单精度浮点数最多有7位十进制有效数字,单精度浮点数的指数用“E”或“e”表示。如果某个数的有效数字位数超过7位,当把它定义为单精度变量时,超出的部分会自动四舍五入。

double:通常占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308。双精度完全保证的有效数字是15位,16位只是部分数值有保证。

C语言中变量遵循“先定义后使用”的原则

变量的使用方法:先定义(在内存中分配空间),然后赋值使用。

*内存:正在执行程序的数据 硬盘:长期保存未使用的数据*

1.先定义变量的格式:数据类型 变量名 例:int i;double price

数据类型:表示想要存储什么类型的数据就定义什么类型的变量。

变量名:就是你想给这个变量起个什么名字,通常都是用字母、数字与下划线组合而成。

2.变量定义完了之后接下来就是使用变量,为变量赋值。

赋值:将一个值放到一个变量中,这个动作叫“赋值”。通俗点讲,“给变量赋值”意思就是将一个值传给一个变量。

赋值的格式:变量名 = 要赋的值。 (从右往左赋值 )例:int a = 5

C语言里若没给变量赋初值,变量的值一定是未知的。

代码语言:javascript
复制
#include<stdio.h>
int main(){
//    int a,b,c;
//    a = b = c = 10;
//int a = b = c = 10;错误
    int a,b,c=10;  //正确
    int a=10,b=10,c=100;//正确
    printf("a = %d\n",a);//
    printf("b = %d\n",b);
    printf("c = %d\n",c);
    return 0;
}

算术运算符:+(加号)-(减号)*(乘号) /(除号)%(求余数)+(正号)-(负号)

自增运算符:++

自减运算符:--

++和--的优先级高于算术运算符

代码语言:javascript
复制
#include<stdio.h>
int main(){
    int a  =10;
    int b;
//    b = a++;//1.++   2.赋值 
//    //1. 先将a的值赋值给b
//    //2.再将a的值+1 
    //a++:先使用a的值,然后再将a的值加1。 
    //++a:先将a的值加1,再使用a的值。 
    b = ++a; 
    printf("a = %d\n",a);
    printf("b = %d\n",b); 
    return 0;
} 

)

复合赋值运算符:+= -= *= /= %=

代码语言:javascript
复制
#include<stdio.h>
int main(){
    int a =30;
    //a+=3;则a = a + 3
    //a-=3;则a = a -3;
    //a*=3;则a = a *3;
    //a/=3;则a = a/3;
    //a%=3;则= a%3;
    printf("a = %d\n",a);
    return 0;
} 

不同类型数据间的混合运算

(1)+、-、*、/、运算符两侧中有一个为float或double型,结果都为double型数据。

(2)如果 int型与float型数据进行运算,会先把int型和和float型数据转换为double型,然后再进行运算,结果是double型

(3)字符(char)型数据与整形数据进行运算,就是把字符型数据的ASCLL代码与整形数据进行运算。如:12+'A'等效于12+65结果为77,字符型数据与实型数据进行运算,则会将字符型的ASCLL代码转换为double型数据然后再进行运算。

赋值过程中的类型转换

1.将浮点型数据赋值给整型变量时,直接舍弃小数部分。

2.将整型数据赋值给浮点型时,数值不变,以指数形式存储到浮点型变量中。

3.将一个double型数据赋值给float变量时,截取其前面7位有效数字,放到float变量的存储单元中,要注意数值范围不要溢出。

4.字符型数据赋值给整型变量,直接将字符的ASCII码赋值给整型变量。

强制类型转换

强制类型转换的格式为: (type_name) expression type_name为新类型名称,expression为表达式。

代码语言:javascript
复制
#include <stdio.h>
int main(){
    int sum = 103;  //总数
    int count = 7;  //数目
    double average;  //平均数
    average = (double) sum / count;
    printf("Average is %lf!\n", average);
    return 0;
}

运行结果为:

C语言中printf用法:常用输出控制符

下面用具体代码进行演示:

代码语言:javascript
复制
#include<stdio.h>
#define PI 3.141592653
int main(){
    //1.整型
    //int a = 100;
    //int a = 0b1010;//二进制数(0b) 0 1
    //int a = 010;//八进制数 (0) 
    int a = 0xff;//十六进制数 
    printf("a = %d\n",a);
    //2.实型
    float b = 12.4;
    printf("b = %f\n",b);
    float c = 12.4e3;//12.4乘以10的3次方 
    printf("c = %f\n",c);
    float d = 12.4e-3;
    printf("d = %f\n",d);
    //3.字符(ascii)常量----单引号中表达的是一个种含义 
    char e = 'a'; //'ab' 
    printf("e = %c\n",e);
    char f = '\n';//换行  \---》转意(义)\n 
    printf("f = %c\n",f);//\t-->tab的长度(8)
    printf("\a"); //发出警告 
    printf("\\");
    char g = '\101';//八进制数 --65A  97a 
    printf("g = %c\n",g);
    char h = '\x41';//十六 65
    printf("h = %c\n",h);
    //4.字符串常量
    char i[] = "hello";
    printf("i = %s\n",i);//"a"  'a'
    //5.符号常量
    printf("area =  %f\n",PI*4*4);
    return 0;
} 

编译运行后的结果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021 年 03 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 算法相关知识
  • 数据相关知识
    • 五个常量:
      • 变量相关
        • C语言中变量遵循“先定义后使用”的原则
        • C语言中printf用法:常用输出控制符
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档