C语言入门篇(二)上

简介: C语言入门篇(二)

前言

  续接上一篇文章,此篇继续对C语言的基础知识点进行更新。


7. 选择语句


什么是选择?


如果你好好学习,就能月入过万

如果你不好好学习,就只能继承“五毛”家产


51821edd6f988ca04edc6289b55cfd85_e92944ab475d480ca6d1d8a4ee3e0f9a.png

用C语言表示:


#include<stdio.h>
int main()
{
  printf("好好学习输入>1,不好好学习输入>0:");
  int flag;
  scanf("%d", &flag);
  if (flag == 1)
    printf("^。^恭喜你,月入过万");
  else
    printf("|^-^|,努力吧!少年");
  return 0;
}

8. 循环语句


唧唧复唧唧,日复一日当练习。


循环语句分为三种:


  • while语句
  • for语句
  • do…while语句

唐僧取真经要经历“九九八十一难”,每打怪一次,孙悟空的神力就提高一点,直到结束。接下来用上述三种循环来表示孙悟空的神力总值。


//while语句
#include<stdio.h>
int main()
{
  int i = 10;//表示孙悟空初始神力
  int j=0;//表示孙悟空总神力
  while (j < i+81)
    j++;
  printf("%d", j);
  return 0;
}
//for语句
#include<stdio.h>
int main()
{
  int i = 10;
  int j;
  for (j = 0; j < i + 81; j++)
    ;
  printf("%d", j);
  return 0;
}
//do...while语句
#include<stdio.h>
int main()
{
  int i = 10;
  int j=0;
  do
    j++;
  while (j < i + 81);
  printf("%d", j);
  return 0;
}


9. 函数


函数是 C 语言中的重要组成部分,它可以将程序分解为模块,提高代码的可读性和可维护性。

函数由函数头和函数体组成,函数头包括函数名、返回值类型和参数列表,函数体包括函数执行的语句块。


9.1 函数的定义

返回值类型 函数名(参数列表)

返回值类型 函数名(参数列表) 
{
    // 函数体语句块
}

其中,返回值类型是函数返回值的数据类型,函数名是函数的标识符,用于在程序中调用函数,参数列表是函数接收的参数,多个参数之间用逗号分隔。

例如,下面定义了一个名为 sum 的函数,它的作用是求两个整数的和并返回结果:


int sum(int a, int b) 
{
    int c = a + b;
    return c;
}

9.2 函数的调用

在程序中调用函数时,需要提供函数名和实参列表。实参列表是实际传递给函数的参数,其数据类型和数量必须与函数定义时的参数列表一致。


例如,下面调用了 sum 函数,并输出了其返回值:

int a = 1, b = 2;
int c = sum(a, b);//调用
printf("sum(%d, %d) = %d\n", a, b, c);

……后面将会对函数做更深的介绍


10. 数组


如何存储多组数据?


10.1 数组定义

C语言中对数组的定义:一组相同类型元素的集合


int arr[5]={1,2,3,4,5};//定义一个整形数组,最多存放5个元素
char arr1[5];//定义字符数组
float arr2[5];//定义浮点类型数组


10.2 数组的下标

C语言规定:数组的每个元素都有一个下标,小标从0开始。

数组可以通过下标来访问单个元素的。

例如:


int arr[5]={1,2,3,4,5};//五个元素,下标范围是0-4

ee4cfdd53b9b8dc9595d85301ef97681_dcbe4499fb3c4c838e07d1d2c021514e.png


10.3 数组的使用

通过下标,可以对数组中的元素进行提取。

例如:将int arr[5]中的元素依次输出


#include<stdio.h>
int main()
{
  int arr[5] = { 1,2,3,4,6 };
  for (int i = 0; i < 5; i++)
  {
    printf("%d\n", arr[i]);
  }
  return 0;
}

运行结果:

6791f03b140e24b6f97b4ad7c8085d74_61a14653c14f439f8fb2e637e3aa8a4d.png


11. 操作符

  • 在C语言中:0表示假,非0表示真


算术操作符

+  -  *  /  %(取余)

d1c1a4be9633012c60e7a59d65a2cec3_1be12aeb62e7490c8de9cb855ca3df4c.png


移位操作符


>>  <<

位操作符


&  ^  |

赋值操作符

=  +=  -=  *=  /=  &=  ^=  |=  >>=  <<=
int a=0;
a=10;
a=a+5;    a+=5;//两个语句相同
a=a-2;    a-=2;//两个语句相同
a=a*3;    a*=3;//两个语句相同

单目操作符


!       逻辑反操作
-       负值
+       正值
&       取地址
sizeof      操作数的类型长度(单位:字节)
~       对一个数的二进制按位取反
--        前置、后置--
++        前置、后置++
*       简洁访问操作符(解引用操作符)
(数据类型)    强制类型装换
// !
int main()
{
  int a=1;
  if(a)//a为真进入
    printf("1");
  if(!a)//a为假进入
    printf("2");
  return 0;
}
//sizeof
int main()
{
  int a=1;
  printf("%d\n",sizeof(a));//4
  printf("%d\n",sizeof a);//4
  printf("%d\n",sizeof(int));//4       
//错误表示:printf("%d\n",sizeof int)
  return 0;
}
//++ --
int main()
{
  int a=5; int b=++a;
  printf("%d %d\n",a,b);//6 6
  int c=5; int d=c++;
  printf("%d %d\n",c,d);//6 5
  int e=5; int f=--e;
  printf("%d %d\n",e,f);//4 4
  int p=5; int q=p--;
  printf("%d %d\n",p,q);//4 5
  return 0;
}
//强制类型转换
int main()
{
  int a=(int)3.1;
  printf("%d",a);//3
  return 0;
}

关系操作符


>
>=
<
<=
!=        用于测试“不相等”
==        用于测试“相等”

ee4ab942913d256ebeacddf6c56c8895_e066a99224d64f02b6f0dcca38769aa1.png


逻辑操作符


&&        逻辑与-两哥操作数同为真才是真,只要有一个假,则为假
||        逻辑或-两边同为假才是假,只要有一个真,则为真

7364b1cfa44c52a19055c614672acaac_d70b20954d9340659057fe7b5bba2712.png


条件操作符


exp1?exp2:exp3   //exp1为真,执行exp2,为假则执行exp3

98d98d9143a6085892121bb8d33c138d_b2173228a89c412cae435d943d64d2fd.png


逗号表达式


exp1,exp2,exp3,...expn

b9688382a3550ffdd26419cb04ea4997_bac29cf17b134e9088c5da27745f0673.png

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

[]  ()  .  ->
//结构体
struct stu
{
  char name[20];
  int num;
  float score;
};
int main()
{
  struct stu s1 = { "liming",01,89 };
  struct stu s2 = { "lihua",02,96 };
  struct stu s3 = { "lili",03,91 };
  printf("%s %d %lf", s1.name, s2.num, s3.score);//引用结构体成员
}
//liming 2 91.000000

引用结构体成员三种方式:


  • 结构体变量名.成员名
  • 结构指针变量名->成员名
  • (*指针变量名).成员名

相关文章
|
19天前
|
存储 自然语言处理 编译器
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
|
7天前
|
IDE Java 开发工具
C语言入门(前期准备工作)——超级详细的建议和教学,带你顺利跨越编程门槛
C语言入门(前期准备工作)——超级详细的建议和教学,带你顺利跨越编程门槛
|
10天前
|
C语言
【C语言入门小游戏】扫雷
【C语言入门小游戏】扫雷
16 1
|
10天前
|
编译器 C语言
【C语言入门小游戏】三子棋
【C语言入门小游戏】三子棋
15 0
【C语言入门小游戏】三子棋
|
13天前
|
编译器 C语言 C++
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr(下)
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr
19 0
|
13天前
|
存储 安全 编译器
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr(上)
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr
21 0
|
13天前
|
存储 安全 编译器
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用(下)
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用
18 0
|
13天前
|
存储 编译器 C语言
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用(中)
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用
22 0
|
13天前
|
自然语言处理 编译器 C语言
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用(上)
从C语言到C++②(第一章_C++入门_中篇)缺省参数+函数重载+引用
26 0
|
13天前
|
编译器 C语言 C++
从C语言到C++①(第一章_C++入门_上篇)C++学习介绍(命名空间和C++输入输出流)(下)
从C语言到C++①(第一章_C++入门_上篇)C++学习介绍(命名空间和C++输入输出流)
18 0