初识C语言(三)

目录

一、选择语句

 二、循环语句

三、函数

四、数组

五、操作符(运算符)

六、常见关键字

七、总结


一、选择语句

生活中我们总会面临很多选择,比如:如果你好好学习,校招时拿一个好offer,走上人生巅峰。 如果你不学习,毕业就等于失业。这就是选择!

C语言中使用选择语句来描述现实生活中的选择。

C语言中的选择语句有:if....else 语句、if....else if....else语句(if....else的嵌套语句)、switch语句。

这里简单的说一下 if....else 语句,后期会详细的叙述选择语句。

if....else 语句:

  • 书写格式:

if(表达式){

}

else

{

}

  • 语句执行说明:

      首先判断表达式是否满足条件,满足条则为真,不满足条件则为假,表达式为真则执行if后面的语句,表达式为假则执行else后面的语句。

执行了 if 后面的语句那么 else 后面的语句就不会被执行;

执行了else 后面的语句那么 if 后面的语句就不会被执行。

注:C语言中用0表示假,非0表示真(只要不是0,不管正负都为真)!

举个例子,看一下代码的执行结果:

#include<stdio.h>
int main()
{
	int input = 0;
	printf("你要好好学习吗?(1/0):\n");
	printf("输入1表示要好好学习,输入0表示不想好好学习:");
	scanf("%d", &input);
	//C语言中一个等号是赋值操作,两个等号是判断两个数是否相等
	if (input == 1)
	{
		printf("拿一个好offer\n");
	}
	else
	{
		printf("去搬砖\n");
	}
	return 0;
}

运行结果:

输入1:

 输入0:


 二、循环语句

生活中有些事必须一直做,比如日复一日的学习。

C语言中使用循环语句来描述现实生活中的循环。

C语言中的循环语句有:while 循环、do....while循环、for循环。

这里简单的说一下while循环,后期会详细的叙述其他循环语句。

while 语句

  • 书写格式:

while(表达式)

{

}

  • 语句执行说明:
  1. 程序在进入while循环体之前先判断表达式是否满足条件。
  2. 如果满足条件则为真程序就进入循环体;程序进入循环体以后就会执行循环体中的语句,直到表达式不满足条件了就会跳出循环执行循环体后面的语句。
  3. 如果不满足条件则为假程序就跳过循环,执行循环体后面的语句。

 举个例子,看一下代码的执行结果:

#include<stdio.h>
int main()
{
	//判断写的代码是否大于500行
	//如果小于500行就输出继续敲代码,如果大于500行就跳出循环输出继续努力
	int line = 0;
	while (line <= 500)
	{
		printf("继续敲代码\n");
		line++;
	}
	printf("继续努力\n");
	return 0;
}

运行结果:

循环体中的递增或递减操作也可以直接写在while 后面的括号中,两种写法都可以。

int line = 0;
    while (line++ <= 500)
    {
        printf("继续敲代码\n");
    }
    printf("继续努力\n");


三、函数

看到函数第一时间肯定想到了数学中的函数;而在C语言中其实我们已将接触到了一些函数:比如main函数(也叫主函数)

数学中的函数举个例子f(x)=2*x+1,这个函数的功能就是计算(2倍的x) + 1的结果,给x不同的值就可以计算出不同的f(x);数学中有很多函数,每个函数都有自己独立的功能。(这里就不一一列举了)

在C语言中,把一些独立的功能也能够封装成一个独立的函数。C语言中有两种函数,一种是库函数(例如 scanf 这个函数就是库函数),另一种是用户自定义函数(自己写的函数)。

写一个函数体验一下:

两个数求和:

#include<stdio.h>
int main()
{
    int num1 = 0;
    int num2 = 0;
    int sum = 0;
    //输入
    scanf("%d %d", &num1, &num2);
    //求和
    sum = num1+num2;
    printf("sum=%d\n", sum);
    return 0;
}

运行结果:

将上面求和的功能封装成一个函数:

#include<stdio.h>
//定义函数
// Add为函数名,Add前面的int是函数返回类型
//变量x用来接收num1,变量y用来接收num2
int Add(int x, int y)
{
    int z = x + y;
    //向主函数中返回计算的结果
    return z;
}
int main()
{
    int num1 = 0;
    int num2 = 0;
    int sum = 0;
    //输入
    scanf("%d %d", &num1, &num2);
    //实现函数来求和
    //sum接收函数返回的值
    sum = Add(num1, num2);
    printf("sum=%d\n", sum);
    return 0;
}

运行结果:

 根据运行结果可以看到使用函数封装两个数求和可以得到相同的结果。

看到这里如果对函数还是不理解,你可以把函数想象成一个汽车工厂,一个用户给一个汽车工厂一些原材料,汽车工厂就可以对这些原材料进行加工(加工成一些汽车零件),加工完以后再对这些零件进行组装,然后组装成一辆汽车返回给用户。

这里写的函数也是一样的,给Add函数传两个参数,Add函数负责对这个两个参数求和,然后将结果返回给主函数(main函数)最后输出。

 

 有些学习C语言的朋友可能在一些书中看到将自定义函数(例如Add函数)放到main函数后面,如果将自定义函数放到main函数后面就要在main函数前面对这个进行声明,否则会报警告(可以运行)。

为什么将自定义函数放在main函数后面使用时编译器会报错?

编译器在扫描代码的时候是从上往下进行扫描,当编译器扫描到sum = Add(num1, num2);这句时,编译发现这里使用了一个Add函数,但是在这之前并没有Add函数,这个时候编译器就会报警告。所以函数必须先在前面声明才能在后面使用所以一般都是将自定义函数写在main函数之前。

 如果将自定义函数放在了main函数后面一定要在main函数前面对自定义函数进行声明。
#include<stdio.h>
//函数的声明
int Add(int x, int y);

int main()
{
    int num1 = 0;
    int num2 = 0;
    int sum = 0;
    //输入
    scanf("%d %d", &num1, &num2);
    //实现函数来求和
    //sum接收函数返回的值
    sum = Add(num1, num2);
    printf("sum=%d\n", sum);
    return 0;
}
int Add(int x, int y)
{
    int z = x + y;
    //向主函数中返回计算的结果
    return z;
}

函数除了将某个功能封装之外,还有一个作用就是简化代码,看到这里可能有的朋友就会想,上面的代码中,没有用函数写的代码比用函数写的代码要少的多,用函数写的代码反而更多了,怎么能说函数使代码简化了呢!

其实并不是这样的,当我们用一个函数来实现一个功能,未来在写代码的时候如果有人想实现这个功能,就可以直接让他来调用这个函数,不用再重新去写。其实这在一定程度上完成了代码的封装,后期想实现这个功能的时候直接拿来用,不用再考虑这个功能是怎样实现的。

这里只是简单的认识一下函数,让大家知道C语言中的函数怎样写,后期会更详细的叙述C语言中的函数 。


四、数组

数组是一组相同类型元素的集合。

数组的由来:我们想在计算机中存放一个数可以直接定义一个变量,存放两个数可以定义两个变量,但是如果我们想要存放一百个或者一千个数,那我们就要定义一百个或一千个变量,这样就太麻烦了。这个时候有人就想,如果只定义一个变量就可以将这些数全部存放起来,这样就会简单很多。

数组是为了方便存放一组相同类型的数据。

1、数组定义格式:

(1)整型数组

     int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

  •     int 是数组类型,表示这个数组只能存放整型数据
  •    arr是数组名
  •    [10]表示这个数组最多织能存放10个数据
  •    后面的{}是对数组进行初始化,将1~9存放到arr数组中

         arr就是10个元素的整型数组

(2)存字符--字符数组

        char ch[5] = { 'a','b','c','d','e' };

        char ch1[6] = "hello";

  • hello 虽然是5个字符,但是字符串末尾隐藏了一个字符'\0',所以数组大小要定义成6

数组名是由自己来命名的,但同一个函数中不能有相同的数组名。

数组也可以不初始化(int arr[10];),但不初始化有些编译器可能会报警告,所以当你不想初始化很多数时,可以将数组初始化成0(int arr[10] = { 0 };这种初始化是不完全初始化)这里只是将数组中第一数初始化为0,其他数会默认被初始化为0,如果初始化写成:int arr[10] = { 1 };这里只是将数组中第一数初始化为1,其他数会默认被初始化为0。

2、数组的下标

当我们创建好数组后该怎样去访问它呢?---这个时候就有数组的下标。

我们可以通过每个数组中的下标访问数组中的每个元素。

数组的下标是从0开始的。

 通过下标来访问数组a中下标为3的数据:下标为3的数据是60

 也可以将数组中的所有数据全部打印出来,可以使用0~9的下标来访问数组中所有的数,可以使用循环来产生0~9这个10个数。

使用while循环打印数组中的10个数:

#include<stdio.h>
int main()
{
    int a[10] = { 10,90,50,60,77,81,99,100,66,36 };
    int i = 0;
    while (i < 10)
    {
        printf("%d ", a[i]);
        i = i + 1;
    }
    return 0;
}

运行结果:

 访问数组的时候,如果访问的下标不在定义的数组范围内,那样就会造成数据越界!


五、操作符(运算符)

C语言中包含了丰富的操作符,所以有人说:C语言是非常灵活的。

C语言甚至可以直接操作内存的数据,可以直接操作二进制位。

1、算术操作符:

 这里说一下 / 和 %

/ :除法运算

#include<stdio.h>
int main()
{
    int n = 7 / 2;
    printf("%d", n);
    return 0;
}

两边都是整型数据,所以最后得到的结果也会是一个整型数据。C语言中的整型数据会直接截断小数后的数据,只取小数点前面的数。

运行结果:

那么怎样才能输出3.5这个值呢?

这里可能有些朋友会想到将变量n定义为double类型,输出使用%lf,那么这样真的可以吗?来看一下代码执行结果:

可以看出结果并不是我们想要的。

我们就要使用另一种办法来求出3.5这个结果:将 / 两边其中的一个数写成浮点数,那么计算出来的结果就是3.5。

此时的结果就是3.5,至于3.5后面为什么会有5个0,这是因为使用 %lf 打印的数小数点默认保存了6位小数。

 % --取模(取余)

取模操作符得到的是余数

#include<stdio.h>
int main()
{
    int  n = 7 % 2; //商3 余1
    printf("%d", n);
    return 0;
}

运行结果:

取模操作符只能作用于整型,%两边必须是整数。

取模操作符的使用:

判断一个数是奇数还是偶数:

#include<stdio.h>
int main()
{
    int  n = 0;
    scanf("%d", &n);
    if (n % 2 == 1)
    {
        printf("奇数\n");
    }
    else
    {
        printf("偶数\n");
    }
    return 0;
}

运行结果:

2、移位操作符:

 移位操作符作用于一个数的二进制位!

<< 左移:

#include<stdio.h>
int main()
{
    int a = 3;
    int b = a << 1;
    printf("%d", b);
    return 0;
}

a的二进制位:0000 0000 0000 0000 0000 0000 0000 0011

<< 1为:         0000 0000 0000 0000 0000 0000 0000 0110 ---》1*2^2+2*2^1+0*2^0=6

运行结果:

3、位操作符:

这里的位指的也是二进制位

1.& 按位与对应的二进制位:有0则为0,全1才为1

#include<stdio.h>
int main()
{
    int a = 3;
    int b = 5;
    int c = a & b;
    printf("%d", c);
    return 0;
}

3的二进制位:0000 0000 0000 0000 0000 0000 0000 0011

5的二进制位:0000 0000 0000 0000 0000 0000 0000 0101

进行&运算:   0000 0000 0000 0000 0000 0000 0000 0001 ---十进制的1

程序执行结果为:1

运行结果:

2.| 按位或对应的二进制位:有1则为,1,全0才为0

#include<stdio.h>
int main()
{
    int a = 3;
    int b = 5;
    int c = a | b;
    printf("%d", c);
    return 0;
}

3的二进制位:0000 0000 0000 0000 0000 0000 0000 0011

5的二进制位:0000 0000 0000 0000 0000 0000 0000 0101

进行 | 运算:   0000 0000 0000 0000 0000 0000 0000 0111 ---十进制的7

程序执行结果为:7

运行结果:

3.^按位异或对应的二进制位:相同为0,相异为1

#include<stdio.h>
int main()
{
    int a = 3;
    int b = 5;
    int c = a ^ b;
    printf("%d", c);
    return 0;
}

3的二进制位:0000 0000 0000 0000 0000 0000 0000 0011

5的二进制位:0000 0000 0000 0000 0000 0000 0000 0101

进行^运算:    0000 0000 0000 0000 0000 0000 0000 0110 ---十进制的6

程序执行结果为:6

运行结果:

 4、赋值操作符:

赋值操作符也叫做--复合赋值操作符

 #include<stdio.h>
int main()
{
    int a = 10;
    a = a + 4;//= 赋值
    a += 4;//+= 复合赋值符
    
    a = a - 1;
    a -= 1;
    
    a = a >> 1;
    a >>= 1;
    return 0;
}

 5、单目操作符:

在了解这几个操作符之前先来了解一下什么是单目操作符!

a+b ---有两个操作数a 和 b ,所以 + ----就是一个双目操作符;

单目操作符 ------只有一个操作数称为单目操作符。

1. !:逻辑反操作,!真--》假;!假--》真

#include<stdio.h>
int main()
{
    int a = 10;
    printf("%d", !a);
    return 0;
}

这里a为10,所以为真,那么printf语句中(!a)就为假,所以输出的结果为 0

运行结果:

2.sizeof :是一个操作符

计算的是变量或者类型所创建变量占据内存的大小,单位是字节

#include<stdio.h>
int main()
{
    int a = 10;
    //计算a变量所占内存的大小
    printf("%d\n", sizeof(a));
    printf("%d\n", sizeof(int));
    return 0;
}

因为变量a的类型是int,int占4个字节,所以两个打印出来的结果都为4

运行结果:

3. ~ 按位取反:对二进制位按位取反:原来为0的变为1,原来为1的变为0。

按位取反是对内存中的补码进行取反的。

#include<stdio.h>
int main()
{
    int a = -1;
    int b = ~a;
    printf("%d\n", b);
    return 0;
}

  •     -1 是负整数
  •     负整数的二进制有原码、反码、补码、
  •     内存中存储的是二进制的补码
  •     二进制位中最高位为0表示正数,最高位为1表示负数

-1的原码:1000 0000 0000 0000 0000 0000 0000 0001

-1的反码: 1111 1111  1111  1111 1111 1111  1111  1110

-1的补码:1111 1111  1111  1111 1111 1111  1111  1111

补码按位取反:0000 0000 0000 0000 0000 0000 0000 0000

按位取反时符号位也要改变!

程序执行结果为:0

运行结果:

4.++、--

(1)前置++

#include<stdio.h>
int main()
{
    int a = 10;
    int b = ++a;//前置++,先++,后使用
    printf("a=%d b=%d\n",a, b);
    return 0;
}

先将a的值加1,然后再将a的值赋给b

运行结果:

(2)后置++

#include<stdio.h>
int main()
{
    int a = 10;
    int b = a++;//后置++,先使用,后++
    printf("a=%d b=%d\n", a, b);
    return 0;
}

先将a的值赋给b,然后再将a的值加1

运行结果:

(3)前置--

#include<stdio.h>
int main()
{
    int a = 10;
    int b = --a;//前置--,先--,后使用
    printf("a=%d b=%d\n",a, b);
    return 0;
}

先将a的值减1,然后再将a的值赋给b

运行结果:

(4)后置--

#include<stdio.h>
int main()
{
    int a = 10;
    int b = a--;//后置--,先使用,后--
    printf("a=%d b=%d\n", a, b);
    return 0;
}

先将a的值赋给b,然后再将a的值减1

运行结果:

5.(类型)--强制类型转换

把一个浮点型数据转换为整型,如果直接定义为整型编译器会报警告:

为了避免编译器报错,可是使用强制类型转换将浮点型转换为整型:

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

运行结果:

6、关系操作符

这里强调一点:C语言中 = 是赋值,==是用于判断是否相等

7、逻辑操作符

(1)&& 逻辑与---并且

#include<stdio.h>
int main()
{
    int a = 3;
    int b = 5;
    if ((a == 3) && (b == 3))
    {
        printf("hehe\n");
    }
    return 0;
}

&& 两边的条件同时为真时才会进入if语句,所以程序运行以后不会打印任何东西

运行结果:

(2) ||   逻辑或---或者

#include<stdio.h>
int main()
{
    int a = 3;
    int b = 5;
    if ((a == 3) || (b == 3))
    {
        printf("hehe\n");
    }
    return 0;
}

|| 两边的条件只要有一个为真就会进入if语句,所以程序运行以后会打印hehe。

运行结果:

8、条件操作符(三目操作符):

 条件操作符可以简化 if 语句

exp---表达式

表达式1的结果为真,就是表达式2,表达式2为整个表达式的结果(不用计算表达式3);

表达式1的结果为假,就是表达式3,表达式3为整个表达式的结果(不用计算表达式2);

  • 使用 if....else 语句

  • 使用条件操作符:

 #include<stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    int max = 0;
    scanf("%d %d", &a, &b);
    max = a > b ? a : b;
    //打印
    printf("%d\n", max);
    return 0;
}

运行结果:

9、逗号表达式:

逗号表达式会从左向右依次计算,整个逗号表达式的结果是最后一个表达式的结果

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

a+2 这个表达式没有产生任何效果,所以这个表达式没什么用。再计算 b = a - 3 = 3 - 3 = 0 ,再计算 c = b + 4 = 0 + 4 = 4,所以程序执行的结果为:4

运行结果:

10、下标引用、函数调用和结构体成员

(1) [ ] ----下标引用操作符

 int arr[10] = {1,2,3,4,5,6,7};

对于[ ]它有两个操作数,分别为arr数组名和方括号中的10。

(2)() -----函数调用操作符

因为函数的参数是不确定的,一个函数可以没有参数,也可以有多个参数,所以函数调用操作符至少有一个操作数。

这里只是简单的讲述了一些操作符让大家对操作符有一个了解,有些操作符也没有讲到,后期会更详细的讲解这些操作符。


六、常见关键字

 atuo 关键字

auto只能用来修饰局部变量;所有的局部变量默认都是auto修饰的。

因为使用auto关键字修饰的变量会自动创建自动销毁,而局部变量本身就有这样的特点,进入局部变量的范围它就开始创建,出了局部变量的范围它就自动销毁了。所以auto关键字一般省略不写(写不写效果都一样)。

register关键字:

register修饰变量是将所修饰的变量放入CPU寄存区中从而达到提高效率的目的;

CPU实际在读取数据时不考虑CPU内的寄存器或其他暂时的情况,CPU能够直接访问内存,若数据没有加载到内存中,直接将数据或程序都存放在硬盘中,当CPU想访问数据时必须访问外设,而外设速度很慢。

离CPU越近的存储单元,效率越高;离CPU越远的存储单元,效率越低;

缓存:CPU访问数据的时候,以最小的成本达到最高的效率;

寄存器的本质是在硬件层面上提高计算机的运算效率(因为不需要从内存中读取数据)。

register一般修饰局部变量(修饰全局变量会导致CPU寄存器被长时间占用);

使用register修饰的变量会高频的被读取,请不要大量使用,因为寄存器的数量是有限的;

  • register修饰的变量可以被写入

  • 使用register修饰的变量不能访问该变量的地址(因为register修饰的变量已经存放在了寄存器中,地址是内存相关的概念);

#include<stdio.h>

int main()

{

register int a = 100;

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

a = 200;

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

printf("&a=%p\n", &a);

return 0;

}

运行结果:

register关键字只是起到一个建议的作用,因为现在的编译器已经很智能了,能够进行比人更好的代码优化。 早期编译器需要人为指定register,来进行手动优化,现在不需要了。

 typedefine 关键字 ---可以使变量换个名字

#include<stdio.h>
int main()
{
    double num1= 3.14;
    //使用typedefine关键字将double改名为dou
    typedef double dou;
    dou num2 = 1.414;
    printf("%lf\n", num1);
    printf("%lf\n", num2);
    return 0;
}

运行结果:

 根据运行结果可以看出使用 typedefine 关键字改名后的变量只是改变了它的变量名,使用的时候是没什么变化的。

typedefine 关键字还可以修改函数名,结构体名。这里就不详细的说明了,之后这些用法都会详细的讲述。

这里对关键字做一些简单的介绍,后期会详细介绍剩下的关键字。


七、总结

初识C语言这个系列只是让大家先了解一下C语言,很多内容都没有详细的叙述。后面每个知识点都会详细的讲述。

编程语言的学习是一个枯燥的过程,但是在这个枯燥的过程中也会发现很多的快乐。

潇湘夜雨.
关注 关注
  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论
黑马程序员——C语言总结之篇
Hua_san的专栏
04-25 770
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 数据类型、运算符 C语言的数据类型: char:字符类型,只能存放单个字符 int:整形,只能存放整数 float:单精度类型,可以存放小数与整数,精度没有double高 double:双精度类型,可以存放小数 struct:结构体类型,通过基本数据类类型进行组合形成的复
选择题汇总6-7(括号里填的答案都是对的,不用管下面那个答案正确与错误,因为作者懒得删了)
玖月的博客
07-01 2565
选择题汇总6-7(括号里填的答案都是对的,不用管下面那个答案正确与错误,因为作者懒得删了)
C语言
ttttsuki的博客
02-21 168
C语言) 一、函数 1.调用有参函数 开头声明: float max(floatx,floaty); 结尾解释: float max(floatx,floaty) { return(x>y?x:y); } 2.调用无参函数(与有参函数区别是不会返回值) 开头声明: void a(); 结尾解释: void a() { printf("xxx\n") } 3.函数的嵌套 4.函数的递归 二、指针 1.指针变量与普通变量 指针=&变量 *指针=指针指定的变量的值 注:
c语言int line什么意思,c语言char line[]="123456789";int i,k=strlen(line);for(i=0;i...
weixin_39981632的博客
05-19 1435
最佳答案char line[]="123456789";//初始化名为line的字符串并赋值为"123456789"int i,k=strlen(line);//定义变量i(int格式)、初始化变量k(为字符串line的长度并限定为int格式)for(i=0;i//开始一个有条件循环体但思路未完整……追答:把代码贴全的话可以继续给你追答追问:我的补充里是全的,你那边显示不出来是么,第一次用这个,不...
C语言快速上手】带你了解C语言,零基础入门②
一些普普通通的学习笔记
11-03 3802
此文章接博主上篇文章【C语言快速上手】带你了解C语言,零基础入门①,没有看过博主上一篇的文章,可以先去看一下。希望各位大佬在阅读后能及时指出其的问题,作者一定会积极采纳建议,不断改进,不断进步。本系列的内容主要是C语言的一些基础知识,在阅读后每个人都可以对C语言有一个大概的认识。当然每一个知识点就是简单认识,日后,博主会陆续按C语言学习顺序,去做详细讲解。这个C语言学习系列,我会一直做下去,请持续关注博主,你们的支持与鼓励是我更新的最大动力!!
初识C语言.pdf
03-11
初识C语言.pdf
初识C语言
11-11
对初学者来说可以先整体的了解一下C语言的知识点仅限了解有了大体印象你是不是学习就更有信心了
初识C语言 C语言概述 认识C语言.pdf
最新发布
10-16
初识C语言 C语言概述 认识C语言.pdf
初识C语言C语言进阶源码.zip
10-18
《从初识C语言C语言进阶源码》是一个针对C语言学习者的全面资源包,旨在帮助初学者从基础入门逐步提升至高级编程技能。这个压缩包包含了一个名为"c-language-master"的项目目录,我们可以从这个目录结构推测出一...
C语言之浮点数(小数)
m0_62599305的博客
01-31 9854
浮点型顾名思义就是小数点后还有数的,小数点数还有数的是什么?是小数,那么,小数在c语言怎么定义,输出和输入 浮点型的关键字有:double和float。 首先他是这样定义的:关键字 + 变量名 = 一个值.如下: float a = 12.12;//关键字为float double b = 18.18;//关键字为double 他们怎么输出? 像整形有"%d"输出,无符号的整形有"%u"输出。那么double和float又是怎么输出? float使用格式输出"%f" double就使用"%lf"
c语言取变量前几位,求提取double型变量小数点前位的算法
weixin_28826961的博客
05-18 1633
求提取double型变量小数点前位的算法如题,比如4512.215,就提取512放到一个INT型的变量里在此先谢过了~----------------解决方案--------------------------------------------------------float f = 4512.215f;int i = 0;i = (int)f % 1000;----------------...
c语言取小数函数,C / C++ 保留小数函数(setprecision(n)的一些用法总结)
weixin_34565946的博客
05-20 4280
C语言开始正式学习C++,但是一上来输出位数就懵了,查资料才知道C++需要使用 “ setprecision ”函数。自己总结一下。首先说C++代码#include //setprecision(n)函数在 iomanip 头文件//第一种写法cout<//第二种写法cout.setf(ios::fixed);cout<//第种写法cout<要保留几位小数setpre...
sizeof 类型 大小
qq_36091750的博客
04-13 225
内置类型:#include&lt;stdio.h&gt;int main(){        printf("int :%d\n",sizeof(int));        printf("short :%d\n",sizeof(short));        printf("char :%d\n",sizeof(char));        printf("unsigned int  :%d\n...
错题
z123w4的博客
12-29 1万+
1.指向数组元素的指针只可指向数组的首元素。 (F) 2.数组名就是一个指针常量,指向数组的首元素(或者说代表了数组的首地址)。(F) 3.假设有定义如下: int array[10]; 则该语句定义了一个数组array。其array的类型是整型指针(即: int *)。(F) 4.一维数组定义的一般形式如下,其的类型名指定数组变量的类型。(F) 5.一维数组定义的一般形式如下,其的类型名指...
C语言基础知识
weixin_52250795的博客
04-06 195
1.计算数组元素的个数 数组总大小/一个类型的大小 int a[3]; char b[3]; printf("a数组里面有%d个元素\n",sizeof(a)/sizeof(a[0])); printf("b数组里面有%d个元素\n",sizeof(b)/sizeof(b[0])); 2.数组名 等于数组首元素首地址 a=&a[0] 3. int *p1; int a = 10; p1= &a; ...
有关printf多个输出时的输出问题
weixin_43981425的博客
10-13 4532
vs的printf 最近有位兄弟在群里发了这样一个问题 我开始没意识过来,后来自己算了一遍,算出为“3 6”,这问题就有点大了,开始百度吧。 查了一圈,发现了第一个问题,printf的计算顺序是从右往左的(和栈有关,先入后出),于是再次计算,发现还是不对,第二次算出为“4 2”。所有又是哪里出问题了呢。 忽然想起,vs有反汇编的功能,那我直接看汇编代码看看问题出在哪 (vs的编译器是cl,不同编译器将会有不同结果) 嗯,主体部分都在这,我们一条一条看 char a = 1; 004018E8 mo
C++ inline 函数
热门推荐
Dablelv 的博客专栏。
07-31 3万+
inline 函数由 inline 关键字定义,引入 inline 函数的主要原因是用它替代 C 复杂易错、不易维护的宏函数。
浅谈C++宏定义和内联
seaeress的博客
06-23 212
宏定义和内联函数的区别 相同的目的
C语言入门教程:初识C语言与基本结构
"C语言程序学习辅导资料,涵盖了C语言的基础知识,包括初识C语言、计算机语言的分类、C程序的基本结构以及C语言的词汇种类,如标示符、关键字、运算符等,并通过实例展示了如何编写简单的C程序。" 在计算机编程的...
49
原创
561
点赞
822
收藏
2026
粉丝
关注
私信
写文章

热门文章

  • C语言——变量的定义与声明 13333
  • 【Java---数据结构】栈(Stack) 9658
  • 基于 SpringBoot + MyBatis 的网页版五子棋对战 5698
  • 基于 Spring boot + MyBatis 的在线音乐播放系统 5328
  • C语言初级篇-----循环语句详解 5231

分类专栏

  • Spring 项目 3篇
  • 软件测试专栏
  • 笔记 2篇

最新评论

  • 基于 SpringBoot + MyBatis 的网页版五子棋对战

    梦想是大毕改: 这么高质量的博客竟然不火,天理难容

  • 【Java---数据结构】栈(Stack)

    名字忘记了: 表情包表情包表情包表情包表情包表情包

  • 【Java---数据结构】顺序表

    m0_74169231: 这个MyArrayList是静态表吗

  • C语言初级篇-----分支语句详解

    康熙38bdc: 你也是小比特吗表情包

  • 基于 SpringBoot + MyBatis 的网页版五子棋对战

    我会天天向上: 家人,求源码!!!

最新文章

  • 基于 SpringBoot + MyBatis 的网页版五子棋对战
  • 在线音乐播放系统测试
  • 基于 Spring boot + MyBatis 的在线音乐播放系统
2022年32篇
2021年17篇

目录

目录

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇湘夜雨.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家精美玻璃钢卡通雕塑珠海定制玻璃钢雕塑成都专业玻璃钢雕塑厂家新密玻璃钢浮雕喷泉雕塑厂家商洛商场美陈道具广州仿铜玻璃钢雕塑定做河北玻璃钢雕塑卡通焦作火烈鸟玻璃钢雕塑安装铜仁六盘水玻璃钢雕塑报价玻上海玻璃钢雕塑厂家中山动物雕塑玻璃钢图片江夏玻璃钢雕塑厂家湖南玻璃钢雕塑灯定制黄冈玻璃钢雕塑厂电话甘南公园玻璃钢雕塑价格玻璃钢校园雕塑设计哪大连户外玻璃钢雕塑陕西动物玻璃钢雕塑永州玻璃钢花盆花器绍兴动物玻璃钢雕塑生产厂家玻璃钢雕塑内部有骨架吗韶关玻璃钢雕塑图片郑州园林玻璃钢人物雕塑制造六安卡通玻璃钢雕塑定做铜陵公园玻璃钢雕塑定做价格赵县商场美陈商场外场ip美陈商场美陈尺寸兰州玻璃钢雕塑哪里有公园玻璃钢卡通雕塑厂家现货香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化