C语言总结

2023-05-16

1.简述C

C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。

2 第一个C程序

 

#include <stdio.h>
 int main(){
    
    printf("Hello World");
    
    return 0 ;
}


 

 

 

解释:

#include <stdio.h>就是一条预处理命令,它的作用是通知C语言编译系统在对C程序进行正式编译之前需做一些预处理工作。(关于预处理后面的课程会讲)

函数就是实现代码逻辑的一个小的单元。 

3.一个C程序有且只有一个主函数,即main函数。C程序就是执行主函数里的代码,也可以说这个主函数就是C语言中的唯一入口

4.注释 C语言编译器在编译时会被自动忽略。

多行注释 /*  ..............    */

单行注释  //

5.标识符:

 

C 语言规定,标识符可以是字母(A~Z,a~z)数字(0~9)下划线_组成的字符串,并且第一个字符必须是字母或下划线。在使用标识符时还有注意以下几点:

(1)标识符的长度最好不要超过8位,因为在某些版本的C中规定标识符前8位有效,当两个标识符前8位相同时,则被认为是同一个标识符。 

(2)标识符是严格区分大小写的。例如Imooc和imooc 是两个不同的标识符。 

(3)标识符最好选择有意义的英文单词组成做到"见名知意",不要使用中文。

(4)标识符不能是C语言的关键字。想了解更多C语言关键字的知识,请查阅WIKI。

6.注意:在定义中不允许连续赋值,如int a=b=c=5;是不合法的

7 .如下小例子

 

#include<stdio.h>

int main(){

int age =19 ;

printf("我今年%d\n"+age);

return 0 ;

}


8.数据类型

 

基本类型  =======>字符型、整形、浮点类型(单、双)

 

#include<stdio.h>

int main(){

int age =19 ;

char a ='e' ;

float b  =12.12 ;

printf("今年%d岁,\n",+age);
printf("性别是%c \n",+a);
printf("%f\n",+b);
return 0 ;

}

9.格式化输出语句

 

 

#include<stdio.h>

int main(){

int age =19 ;

char a ='e' ;

float b  =12.12 ;

double c = 13.14567 ;

printf("今年%d岁,\n",age);
printf("性别是%c \n",a);
printf("%f\n",b);
printf("%f\n",c);
printf("%s\n","我是一名好孩子");
return 0 ;

}

如果要输出多个变量的并指定变量的位置时候,格式符还可以连用,变量之间需要用逗号隔开,如:

 

 

 

#include<stdio.h>

int main(){

int age = 18;
	float height = 1.85;
	char unit = 'm';
	printf("小明今年%d岁\n", age);
	printf("小明身高%f,%c\n", height, unit);
	printf("%s\n","小明现在在慕课网上学习IT技术"); 
	return 0;

}

 

10不可改变的常量

 

 

 

 

#include <stdio.h>
 #define    POCKETMONEY  10     //定义常量及常量值
 #define   I   'S'
int main()
{
  //  POCKETMONEY = 12;  //小明私自增加零花钱对吗?
    printf("小明今天又得到%d元零花钱\n", POCKETMONEY);
    printf("%c\n",'c');
    printf("%d\n",999);
    printf("%f\n",12.12);
    printf("%c",I);
    return 0;  
}

11 自动类型转换

注:字节小的可以向字节大的自动转换,但字节大的不能向字节小的自动转换

 

12强制类型转换

 

 

#include <stdio.h>
int main()
{
    double num = 2.5;      //定义浮点型变量num并赋值为2.5
    int  num2 = (int)num ;
    printf("num的整数部分是%d\n", num2);  
    return 0;
}

13 运算符号 

 

 

      ※ 算术运算符

      ※ 赋值运算符

      ※ 关系运算符

      ※ 逻辑运算符

      ※ 三目运算符



14 自增运算符

 

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

15 三木运算符

 

表达式1 ? 表达式2 : 表达式3

 

#include <stdio.h>
int main()
{
	int money  = 12 ;

	float cost  =11.5 ;  
	
	
	printf("能不能走%c",money>cost?'y':'n');


    return 0;    
}

16 分支结构  是否是闰年 

 

 

#include <stdio.h>
int main() 
{
    int year = 2014; //今年是2014年
    //补全一下代码
    //条件:能被4整除且不能被100整除或者能被400整除的年份为闰年
    if((year%4==0&&year/100!=0)||(year%400==0)){
        printf("%s\n","是闰年");
    }else{
        
        printf("%s","不是闰年");
    }
    
    return 0;
}

17 while循环

 

 

#include <stdio.h>
int main()
{
    int i,sum=0;
    i=1;
    while(i<=100)  //循环条件应该是什么呢?
    {
        sum=sum+i;
         i++ ;         //这里是不是应该改变循环变量的值
    }
    printf("100以内所有整数之和为:%d\n", sum);
    return 0;
}

18  do-while 

 

 

#include <stdio.h>
int main()
{
    int number=200;
    int year=2014;
	do{
		year++ ;
		number=number*1.2 ;
	
	}while(number<1000);
	

    printf("到%d年招工规模突破1000人\n", year);
    return 0;
}


19  for循环

 

 

#include <stdio.h>
int main()
{
    // 定义变量sum, num
    int sum, num;  
    sum = 0;
    for(num = 0; num<=10  ; num++ ) //for循环条件与num的变化值
    {  
       sum=sum+num ;
    }
    printf("10以内数的和为:%d", sum);
    return 0;
}

20 for注意

 



for循环里面的东西必须先定义好!!!!



21.使用循环计算1-2+3-4+5-6+…-100的值

22  输出一个正三角形

23 打印9*9 乘法口诀

24请使用for循环,倒序打印9*9乘法表。打印结果如下图所示 

25找出0-50之间的所有素数,所谓素数就是只能被1和它本身整除的数字,比如:7,13,23等

26计算1到20之间不能被3整除的数字之和

27.

小明参加期末考试,分数等级分为A-D,等级划分方式如下:

90<=分数<=100 ,等级为A。

80<=分数<90 ,等级为B。

60<=分数<80 ,等级为C。

分数<60 ,等级为D。

28自定义方法 (最好放在main方法之前)

 

#include <stdio.h>

/* 自定义整型函数 sayLove() */
int sayLove()
{
    //在这里输入输出语句printf,输出内容为I Love imooc 
   printf("I love Learning");
    return 0;
}

/* 自定义整型函数 dividLine() */
int dividLine()
{
    printf("%s\n", "*************");
    return 0;
}

/* 主函数 */
int main()
{    
    sayLove();
    dividLine();
    return 0;
}

29  有参和无参 函数调用

 

 

#include <stdio.h>
/* 考虑一下哪个输出该用无参函数哪个输出该用有参函数呢? */
int  learn(){
    
    printf("小明在学习\n");
    return 0 ;
}
int learnnum(int num){
    
    printf("小明学习了%d课了",num);
    
}

int main()
{
    learn();
    learnnum(3);
    return 0;
}

30.计算三角形的周长

 

 

#include <stdio.h>
int getGirth(int a,int b,int c)
{
    if( (a+b)<=c || (a+c)<=b || (b+c)<=a )   //判断是否为三角形
    {
        printf("不构成三角形\n");
        return 0;                                
    }
    else
    {
      int cirf = a+b+c ;     //计算三角形周长
      return cirf;
    }
       
}

int main()
{
    /* 定义三角形三边长 */
    int a, b, c;
    a = 3;
    b = 4;
    c = 5;
    printf("三角形的周长是:%d\n",getGirth(a,b,c) );  //调用周长函数
    return 0;
}

注意:void函数中可以有执行代码块,但是不能有返回值,另void函数中如果有return语句,该语句只能起到结束函数运行的功能。其格式为:return;
32 递归调用函数

 

计算n的阶乘

小明为了学好英语,需要每天记单词,第一天记1个,第二天记2个依次类推,到第10天的时候小明一共记了多少个单词?

请用代码完成,算出小明第10天开始的时候会了多少个单词?

#include <stdio.h>
/* 定义获取单词数量的函数 */
int getWordNumber(int n)
{   
    if(n == 1)
    {
        return 1;    //第一天只会1个单词
    }
    else{
        return getWordNumber(n-1)+n ;       //到第天会的单词数量
    }
}
int main()
{
    int num = getWordNumber(10);     //获取会了的单词数量
    printf("小明第10天记了:%d个单词。\n", num);
    return 0;
}

33. 变量  (如何引用外部变量)

 

#include <stdio.h>
void fn()
{
    static int x = 1;   //定义静态局部变量
    x*=2;
    printf("x=%d\n",x);     
}

int main()
{
    int i;
    for(i=0;i<5;i++)
    {
        fn();
    }
    extern int x;      //调用外部变量
    printf("x=%d\n",x);
    return 0;
}
int x=100;

34.内部函数与外部函数

 

 

#include <stdio.h>
#include "test.c"   //引用test.c文件
extern  void printLine()     //这里定义的方法对吗?
{
   printf("**************\n");   
}
int main()
{
    say();
    return 0;
}
#include <stdio.h>
void say(){
    printLine();
    printf("I love imooc\n");
    printf("good good study!\n");
    printf("day day up!\n");
    printLine();
}

35 数组

 

 

#include <stdio.h>
int main()
{
    //第一种形式
    int arrFirst[3] = {1,2,3};
    //第二种形式
    int arrSecond[] = {1,2,3};
    //第三种形式
    int arrThird[3];
    //给arrThird数组每个元素初始化
    arrThird[0]=1 ;
    arrThird[1]=2 ;
    arrThird[2]=3 ;
    //输出第一个数组中的第二个元素
    printf("%d\n", arrFirst[1]);
    //输出第二个数组中的第二个元素
    printf("%d\n", arrSecond[1]);
    //输出第三个数组中的第二个元素
    printf("%d\n", arrThird[1]);
    return 0;
}

36 遍历数组

 

 

#include <stdio.h>
int main()
{
    int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    
   int i  ;   //必须先声明变量i
   for(i=0;i<=9;i++){
       printf("%d\n",arr[i]);
       
   }

    return 0;
}

37 传递数组

 

#include<stdio.h>

void temp(int arr[]){
int i ;
for(i=0;i<=4;i++){

printf("%d",arr[i]);

}
}
int main(){

int arr[5]={1,2,3,4,5};
//传递数组
temp(arr);
return 0  ;
}

38. 经典冒泡排序

 


另一种写法

 

#include <stdio.h>  
  
void swap(int *a, int *b); //交换两个数  
  
int main()  
{  
    int     str[10];  
    int     i, j;  
    //初始化数组为10 9 8 7 6 5 4 3 2 1  
    for (i = 0; i < 10; i++)  
    {  
        str[i] = 10 - i;  
    }  
    //排序,从a[0]开始排,从小到大  
    for (i = 0; i < 10; i++)  
    {  
        for (j = i + 1; j < 10; j++)  
        {  
            if (str[i] > str[j])  
            {  
                swap(&str[i], &str[j]);  
            }  
        }  
    }  
        //将十个数输出  
    for (i = 0; i < 10; i++)  
        printf("%d\n", str[i]);  
    return    0;  
}  
void swap(int *a, int *b)  
{  
    int   c;  
     c = *a;  
    *a = *b;  
    *b =  c;  
}  

39.查询数组中某个元素

 


40 字符串

 

在C语言中,是没有办法直接定义字符串数据类型的,但是我们可以使用数组来定义我们所要的字符串。一般有以下两种格式:

1、char 字符串名称[长度] = "字符串值";

2、char 字符串名称[长度] = {'字符1','字符2',...,'字符n','\0'};

注意:

1、[]中的长度是可以省略不写的;

2、采用第2种方式的时候最后一个元素必须是'\0','\0'表示字符串的结束标志;

3、采用第2种方式的时候在数组中不能写中文

在输出字符串的时候要使用:printf(“%s”,字符数组名字);或者puts(字符数组名字);。例如:



.

 

41. 声明二维数组

 

 

#include <stdio.h>
int main()
{
    //使用第一种方式初始化方式声明并初始化二维数组arr1
    int arr1[2][2]={{10,20},{30,40}};
    int arr3[][2]={{20,30},{40,50}};
    //使用第二种方式初始化方式声明并初始化二维数组arr2
    int arr2[2][2];
    arr2[0][0]=10;
    arr2[0][1]=20;
    arr2[1][0]=30;
    arr2[1][1]=40;
    return 0;    
}

二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量

 

 

我是可爱的小尾巴~~   某慕视频 Q32138446038  

 



 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言总结 的相关文章

  • S.M.A.R.T. 参数(smartctl)计算硬盘精确健康值

    参考 xff1a Acronis Drive Monitor Disk Health Calculation 文章目录 1 背景2 smartctl a dev sda3 计算健康值3 1 关键参数3 1 1 公式说明3 2 2 计算举例
  • python脚本——通过telnet连接设备

    文章目录 一 说明二 代码三 用法总结 一 说明 通过telnetlib库 xff0c telnet到设备上并做一些测试 包括重启设备 等待重启完成 其它测试操作等 二 代码 span class token comment usr bin
  • lspci 命令详解及常用命令

    文章目录 一 说明二 参数说明三 用法举例 一 说明 lspci是查看设备上pcie设备信息的命令 该命令的不同参数配合 xff0c 在查看pcie设备和定位pcie问题时很有用 包括查看pcie设备中断号 查看配置空间内容 修改配置空间寄
  • 中断模式和polling模式 && 硬件中断和软件中断

    文章目录 一 总结在前二 中断2 1 硬件中断与软件中断2 1 1 对比2 1 2 硬件中断2 1 3 软件中断 三 polling 一 总结在前 S NOInterruptPolling1中断模式下 xff0c 设备通知CPU有业务需要被
  • dma_alloc_coherent 申请内存用法和问题总结

    文章目录 1 dma alloc coherent用法2 问题3 解决方法方法一 xff0c 走CMA空间配置3 1 内核配置 96 96 CONFIG CMA 96 96 3 2 修改cma起始地址3 3 设置cma空间 xff08 大小
  • hadoop之HDFS:通过Java API访问HDFS

    HDFS是一个分布式文件系统 xff0c 可以通过Java API接口对HDFS进行操作 xff0c 下面记录实现Java API的过程和出现的一些问题及解决方案 环境搭建 导入jar包 common包中的jar文件导入 hadoop 2
  • sonic开发——修改内核配置

    参考 xff1a https github com Azure sonic linux kernel sonic 中的内核配置修改不需要编译menuconfig xff0c 而是直接修改 patch kconfig exclusions和p
  • 计算机内存管理之内存访问

    文章目录 一 设备I O内存访问ioremap amp ioremap nocacheioremap cachedioremap wc amp ioremap wtI O内存访问流程 二 设备地址映射到用户空间mmap过程 三 devmem
  • 内存管理之预留内存

    文章目录 一 memblock二 cmdline 有时候 xff0c 我们需要预留一段内存不受内核直接管理分配 xff0c 有什么办法 xff1f 一 memblock mmeblock是内存的一种管理机制 xff0c 主要管理这两种内存
  • 远程工作的一些命令

    文章目录 git配置ssh免密登录sshfs映射远程目录linux远程控制其它主机vscode ssh失败 git配置 git config global user name usrname git config global user e
  • 机器视觉-相机标定及畸变矫正

    摘要 xff1a 本文首先介绍了针孔相机模型 xff08 线性模型 xff09 xff0c 然后推导四个坐标轴变换的关系 xff0c 引出R T K D中包含相机的5个内参 xff0c 6个外参 然后介绍相机畸变的原因以及畸变模型 xff0

随机推荐

  • STM32的寄存器操作

    STM32最基本的 xff0c 最底层的 xff0c 就是对寄存器的直接操作 通过操作特定寄存器的特定位 xff0c 来实现相对应的功能 本文通过GPIO点亮LED来演示 GPIO 查阅数据手册 xff0c 了解相关内容 启动代码 旧版的k
  • STM32之RTOS:uCOS和FreeRTOS

    RTOS全称是 Real Time Operating System xff0c 中文就是实时操作系统 RTOS是指一类系统 xff0c 如 uC OS xff0c FreeRTOS xff0c RTX xff0c RT Thread 等
  • 树莓派3b系统Ubuntumate16下的tightvnc或xrdp远程控制开机启动

    本文主要是树莓派3b系统Ubuntumate16下 xff0c tightvnc开机自启动的爬坑经验 xff0c 这一技术极大便利了我们在手机 电脑端 xff0c 远程控制树莓派等基于liux系统的移动开发硬件 实现的过程从0到1 xff0
  • 关于spring-boot-maven-plugin插件爆红问题

    关于spirngboot打包插件爆红 xff0c 也就是 Plugin org springframework boot spring boot maven plugin not found错误问题 网上找了一大堆方法试了还是爆红 xff0
  • 198个经典C#WinForm实例源码(超赞)

    198个经典C WinForm实例源码 1 窗体 2 控件 3 图像 4 报表 5 系统 6 文件 7 网络 8 数据库 9 加密 解密 10 硬件读写 01 窗体技巧02 控件操作03 图像操作04 报表打印06 系统操作07 文件处理0
  • MySQL8.0.12重置root密码

    在安装完数据库后 xff0c 由于自己不小心直接关闭了安装窗口 xff0c 或者长时间没有使用root用户登录系统 xff0c 导致忘记了root密码 xff0c 这时就需要重置MySQL的root密码 当然 xff0c 最简单方式自然是删
  • 解决方法集合CondaHTTPError:HTTP 000 CONNECTION FAILED for url<https://mirrors.tuna.tsinghua.edu.cn/anaco

    目录 背景 解决方案 主要原因 xff1a 配置没配对 方法A xff1a 在cmd输入 方法B xff1a 修改 condarc xff08 运行期配置文件 xff09 其他原因 原因A xff1a 开了代理或者VPN 原因B xff1a
  • c# TCP通信编程

    目录 协议类JSON协议类XML协议类 通信信息适配 协议类 span class token keyword public span span class token keyword abstract span span class to
  • 【银河麒麟V10】【桌面】ssh连接问题

    1 xshell secureCRT ssh连接V10 2107报 服务器发送了一个意外的数据包 如下 xff1a 解决方式 xff1a 方式1 使用mobaxterm连接无问题 方式2 sudo vim etc ssh sshd conf
  • 【su问题】su: warning: cannot change directory to /home/oracle: Permission denied

    发现问题 su warning cannot change directory to home oracle Permission denied 解决方法 基本上是根目录 或者是 home oracle目录权限的问题 root 64 myo
  • Nginx安装及配置

    Nginx 安装简介 xff1a 有两个版本 Mainline版 包含最新的特性和bug修改 xff0c 并且总是保持更新 可靠 xff0c 但可能会包含实验性的模块 xff0c 以及一定数量的新 bugStable版 不包含新特性 xff
  • HAL库禁用JTAG,使用PB3、PB4、PA15作为普通IO

    void HAL GPIO Init GPIO TypeDef GPIOx GPIO InitTypeDef GPIO Init HAL RCC AFIO CLK ENABLE HAL AFIO REMAP SWJ NOJTAG 禁用JTA
  • 【FreeRTOS 应用开发笔记】FreeRTOS 的启动流程(三)

    在RTOS中 xff0c 常用的启动方式有两种 xff1a 1 在 main 函数中将硬件初始化 xff0c RTOS 系统初始化 xff0c 所有任务的创建这些都弄好 xff0c 这个我称之为万事都已经准备好 最后 启动 RTOS 的调度
  • Ubuntu下使用命令安装配置中文环境

    1 查看当前语言环境 执行 echo LANG 若输出结果为en US UTF 8 xff0c 则表示当前语言环境为英文 2 安装中文语言包 执行命令 xff1a apt get update amp amp apt get install
  • nvm安装详解,nvm控制node npm版本修改(windows环境)

    一 前言 为什么要用 nvm node升到14 2 npm升到6 14后 运行旧配置需求低版本npm项目时候 就会报错 node sass 等等版本不支持的错误 xff0c 类似 xff1a Module build failed Erro
  • Java中a++与++a的理解

    在编程中我们都熟知 a 43 43 和 43 43 a 两者都是原来的值自身 43 1 xff0c 只不过是前者先进行值得使用再 43 1 xff0c 后者先进行 43 1再使用新的值 xff0c 如下 xff1a int a 61 1 i
  • 面试那些事(一)

    最近裸辞了 xff0c 就觉得解脱了好嗨哦 xff01 终于不要再看到领导丑恶的嘴脸 xff01 终于可以不要再逼着加班啦 xff01 终于周末可以好好的睡一觉了 xff01 本来计划的是找好之后再离职 可是发现根本就没时间去准备 xff0
  • 能ping通,不能ssh登录

    宿主机 ping VMware Linux虚拟机能通 xff0c 但是不能ssh登录 当你试了所有方法都不行时 xff0c linux主机网卡改一个IP地址就好了 xff0c 例如10 0 0 1 10 0 0 2 原因是 Linux网卡
  • docker安装软件时出现:报错:E: You don‘t have enough free space in /var/cache/apt/archives/.

    背景 xff1a 在linux系统下安装了一个docker容器 xff0c 拉取一个debian系统后在系统里使用apt get install进行安装文件 问题 xff1a 报错 xff1a E You don 39 t have eno
  • C语言总结

    1 简述C C语言不但执行效率高而且可移植性好 xff0c 可以用来开发应用软件 驱动 操作系统等 2 第一个C程序 include lt stdio h gt int main printf 34 Hello World 34 retur