C语言回顾学习

一、数据类型

1.常量

2.float浮点表示

3.字符型

4.char(大小写) 

#include <stdio.h>
//根据数字输出字符--int值可以直接输出为char
int main() {int value;while (1){scanf("%d",&value);if(value<65||value>122){printf("The value you entered is invalid!\n");continue;}printf("%c\n",value);break;}return 0;
}

5.字符串常量的结束标志占字节大小

 二、混合运算 printf

%0.2f  --0表示不限制字符数 仅保留俩位小数

 

四、进制转化 

如今在计算机中都是以16进制数进行存储 高位在后 低位在前所以123 表现为7b 000....

debug进行取  &ten

 

五、 scanf函数

scanf原理 :标准缓冲区

 

 

 

 混合接收

 

 总之: scanf  接收是标准缓冲区

      且接收

 浮点型变量 整型变量 字符串  因为他会忽略\n(回车) 空格等字符 所以 不管缓冲区有没有\n 都不影响f的赋值

而在接收%c 字符型变量时

   要考虑 标准缓冲区中是否有 \n 空格等字符 因为它不会忽略

六、算术运算符与算术表达式 

关系运算符的优先级小于算术运算符

关系运算符不连用  搭配逻辑运算符使用 

3<a<10  错误   ---因为 这个a  表示就是比3大  比10小  或的关系  所以表示全集R

正确写法:a>3 && a<10   这个才表示比3大并且比10小

#include <stdio.h>int main() {int a;while(scanf("%d",&a)){if(3<a<10){printf("1111");} else{printf("2222");}}printf("Hello, World!\n");return 0;
}

 

七、逻辑运算符

闰年: 能被4整除但是不能被100整除  或者  可以被400整除  

短路运算:

#include <stdio.h>
//短路运算-逻辑与  逻辑或
int main() {int a=0;//逻辑与a&&printf("you can not see me!\n");int b=1;//逻辑或b|| printf("you can not see me!\n");return 0;
}

八、赋值运算符 

左值:变量        

右值:表达式

九、求字节运算符

sizeof()--求常量 与变量 所占字节大小

十、OJ判题系统-循环运行时异常、char接收异常:

#include <stdio.h>//判断某个年份是不是闰年--这个死循环必须  有停止条件不然OJ会报运行时异常
int main() {int year;while (1) {scanf("%d", &year);if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {printf("yes\n");break;} else {printf("no\n");break;}}return 0;
}

用char来接收这个输入的数字 -这样是不可以的

因为   char是1个字节的 而int是4个字节的

#include <stdio.h>//输入数字 输出对应的字符--用int来接收输入的数字才是可以的
int main() {int year;scanf("%d",year);printf("%c\n",year);return 0;
}

 OJ题读取策略:

第一种情况:读取一行,写一个scanf即可;

第二种情况:读取多行,例如3行 for循环读取3次即可;

十一、逆序数、反置数、对称数--用简单的34换为43

 获取反置数:

while (i){number=number*10+i%10;i=i/10;
}
#include <stdio.h>
//输入一个整型数,判断是否是对称数,如果是,输出yes,否则输出no,不用考虑这个整型数过大,int类型存不下,不用考虑负值;
//例如 12321是对称数,输出yes,124421是对称数,输出yes,1231不是对称数,输出no
int main() {int i,number,old;scanf("%d",&i);//12321old=i;//核心while (1){number=number*10+i%10;i=i/10;if(i==0){break;}}
//核心printf("%d\n",number);if(number==old){printf("yes\n");} else{printf("no\n");}return 0;
}

十二、换钱 

#include <stdio.h>//某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问:有几种换法?这是我写的代码 请问哪里不对
int main() {int count=100,sum=0;for (int i = 1; i <=40 ; i++) {for (int j = 1; j <=40 ; ++j) {for (int k = 1; k <= 40; ++k) {for (int l = 1; l <=40 ; ++l) {
//注意判断的限制条件有俩个if(i*10+5*j+2*k+l==count&&i+j+k+l==40){sum++;printf("10=%d 5=%d 2=%d 1=%d\n",i,j,k,l);}}}}}printf("%d\n",sum);return 0;
}

十三、一维数组 

 注意: 

        数组不能传递长度  

        因为它传递给函数的是起始地址  

        数组越界--(覆盖其他变量)

         字符数组初始化:

                 char c[6]=“hello”;  因为最后有个结束符\n  用%c来输出

 

字符串的接收:

char c[100];

scanf("%s",c);//会自动往字符串中放入结束符 因为c本身就含有起始地址所以可以省略&

如果 c[100]="123";  那么  接收的时候  会把012三个位置进行覆盖了

%s 会忽略空格

Win下 使用VS集成开发环境不能使用gets:

char c[100];

gets等价于fgets(c,sizeof(c),stdin);

 

str: 

# include <string.h>

char c[100], d[50];

strlen(c);//获取长度

strcat(c,d);//拼接d到c

strcpy(c,d);//把d复制到c

strcmp(c,d);//比较字符串大小  c>d  正值  c=d 0 c<d 负值

十四、数组OJ 

#include <stdio.h>
//输入N个数(N小于等于100),输出数字2的出现次数;int main() {int a[100];int count=0,len;scanf("%d",&len);for (int i = 0; i < len; ++i) {scanf("%d",&a[i]);if(a[i]==2){count++;}}printf("%d\n",count);return 0;
}

十五、指针 

注意:

        32位中 指针占4个字节  其他占8个字节

        指针的初始化 (某个相同类型的变量取地址)  int i; int *p=&i;   *-取值

1.指针传递 

值传递:形参的改变不会影响实参

change(int j)  change(i)    

值传递中的地址传递:

change(int *j) change(&i)

 2.指针偏移(指针的加减)

*(p+1) --本质上偏移的是 同类型的sizeof(int)  即四个字节---指针遍历数组

因此 --接收数组的值其实就是地址

char c[100];  change(char *d);--  *d 不管什么 因为传过来是指针那么sizeof(d) 一定是8个字节

                                                        因为是指针

3.动态内存申请 

#include <stdio.h>
#include <stdlib.h> //malloc所需头文件
#include <string.h> //string所需头文件
//内存空间申请
int main() {int size=10;char *p,*q;//要申请的是一片存储char的内存空间//void* 无类型指针--- malloc返回//无类型指针不可进行偏移  因此申请下这片堆内存中的空间后 我们需要把他强转为我们需要的指针来存储这片空间起始地址p=(char*)malloc(size);//申请10strcpy(p,"hello");puts(p);//还给操作系统申请的空间free(p);//这里p不可进行偏移 如果要进行偏移我们可以定义一个 *q指针来代替   不可以free(p+1);return 0;
}

4.堆和栈的差异 

#include <stdio.h>
#include <stdlib.h>//函数栈 在函数结束后 的内存空间被收回了
//因此返回的a的内存空间 主函数是接收不到的
char* return_stack(){char a[100]="hello stack";puts(a);return a;
}//函数栈 向内存堆申请空间
// 在函数结束后 只是函数栈被收回了
// 但是 堆申请的空间还在因此主函数可以接收到申请的内存空间地址 并且可以得到空间中的值
//堆空间  一直可以存活到 释放或 进程结束为止
char* return_heap(){char *p= malloc(20);p="hello heap";puts(p);return p;
}//堆栈差异
int main() {char *b;b=return_stack();puts(b);char *c;c=return_heap();puts(c);free(c);return 0;
}

十六、OJ指针

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//输入一个整型数,然后申请对应大小空间内存,然后读取一个字符串(测试用例的字符串中含有空格),
// 字符串的输入长度小于最初输入的整型数大小,最后输出输入的字符串即可(无需考虑输入的字符串过长,超过了内存大小);
int main() {int i;char *p,*q,c;scanf("%d",&i);p=(char*)malloc(i);//然后申请对应大小空间内存q=p;scanf("%c",&c);//去重回车\nfgets(q,i,stdin);//这里注意字符数量  因为还要存储结束符\0 那么它肯定存储的数量为i-1// 所以字符串的输入长度小于最初输入的整型数大小  存储i个字节的字符大小  空间大小为iputs(p);free(p);return 0;
}

十七、函数 


1.递归 

关键:找公式  f(n)  f(n-1)  f(n-2)  ....

          退出条件

#include <stdio.h>
//假如有n个台阶,一次只能上1个台阶或2个台阶,
// 请问走到第n个台阶有几种走法?为便于读者理解题意,这里举例说明如下:假如有3个台阶,那么总计就有3种走法:第一种为每次上1个台阶,
// 上3次;第二种为先上2个台阶,再上1个台阶;第三种为先上1个台阶,再上2个台阶。输入为n,输出为走到第n个台阶有几种走法int step(int n){if(n==1||n==2){return n;}return step(n-1)+ step(n-2);
}int main() {int n;scanf("%d",&n);printf("%d\n", step(n));return 0;
}

2.全局变量与局部变量

全局变量与局部变量重名---就近原则

局部变量仅在离自己距离最近的大括号中进行使用

十八、结构体 

注意:

        结构体声明最后大括号必须加分号 ;

        使用  struct student s={...};  s.sum....

        结构体的大小必须是最大成员(存储字节大小)的整数倍--如果不是 那就要对齐

        为了方便CPU进行读取

如果其他的成员变量存储字节之和要比最大成员变量的存储字节要小那么就会存储在一起

1.指针与结构体 

struct student s={...};

*p=&s;

p->sum  p->name  p->sex;指针访问结构体成员变量

struct student arr[3]={...};//结构体数组

*p=&arr;   

赋值string

strcpy(p->name,"Bob");

2.typedef 别名

typedef struct student{} stu, *pstu; 

stu:等价于 struct student 

pstu:等价于 struct student*;

typedef int  INTEGER;  //也可以给int起别名  方便 替换 使用INTEGER的类型    

3.C++的引用 

void change(int &b){}

int a=10;

change(a)

void changePointer(int * &p,*q){

        p=q;

}

int i=10;

q=&i;

changePointer(p,q);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/720262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# OpenCvSharp DNN 部署yolov3目标检测

目录 效果 yolov3.cfg 项目 代码 下载 C# OpenCvSharp DNN 部署yolov3目标检测 效果 yolov3.cfg [net] # Testing #batch1 #subdivisions1 # Training batch16 subdivisions1 width416 height416 channels3 momentum0.9 decay0.0005 angle0 saturation 1.5 exposure 1…

[linux] 使用 kprobe 观察 tcp 拥塞窗口的变化

tcp 中拥塞窗口用来做拥塞控制。 在发送侧&#xff0c;要发送数据的时候会基于拥塞窗口进行判断&#xff0c;当前这个包还能不能发送出去。 tcp 发包函数是 tcp_write_xmit()&#xff0c;在这个函数中调用 tcp_cwnd_test() 来判断当前拥塞窗口让不让发包。从 tcp_cwnd_test() 函…

「滚雪球学Java」:多线程(章节汇总)

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

个人安全团队官方引导单页

一款简洁大气得个人团队引导html单页,非常不错,背景图和LOGO支持自行更改替换,可以拿来做为团队官网,只是单页没有后台,感兴趣得小伙伴可以下载体验一下! 下载地址 https://www.qqmu.com/2380.html

【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &#x1f680; 本…

tomcat优化、nginx +tomcat 部署 (三)

在目前流行的互联网架构中&#xff0c;Tomcat在目前的网络编程中是举足轻重的&#xff0c;由于Tomcat的运行依赖于JVM&#xff0c;从虚拟机的角度把Tomcat的调整分为外部环境调优 JVM 和 Tomcat 自身调优两部分 Tomcat 是一个流行的开源 Java 服务器&#xff0c;用于托管 Java …

滤波和卷积的区别

本文主要介绍滤波和卷积的区别&#xff0c;以供读者能够理解该技术的定义、原理、应用。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;计算机杂记 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&…

java010 - Java面向对象基础

1、类和对象 1.1 什么是对象 万物皆对象&#xff0c;客观存在的事物皆为对象。 1.2 什么是面向对象 1.3 什么是类 类是对现实生活中一类具有共同属性和行为的事物抽象。 特点&#xff1a; 类是对象的数据类型类是具有相同属性和行为的一组对象的集合 1.4 什么是对象的属…

k8s 1.28.x node资源预留

当前NOde的配置 默认位置如下: vim /var/lib/kubelet/config.yaml #再最后添加如下&#xff0c;参加应该大家一看就明白什么意思&#xff0c;不做多解释了 #max-pods: 230 evictionHard:memory.available: 100Minodefs.available: 10%nodefs.inodesFree: 5% kubeReserved:cpu:…

多多关键字API php java Python

多多关键字API接口广泛应用于商家进行市场分析、竞品分析、关键词优化等场景。商家可以通过分析关键词数据&#xff0c;了解用户需求&#xff0c;制定针对性的营销策略&#xff0c;提高产品的曝光率和转化率。 多多-item_seach-通过关键字搜索商品列表 公共参数 获取key和秘钥…

rtt的io设备框架面向对象学习-电阻屏LCD设备

目录 1.8080通信的电阻屏LCD设备1.1 构造流程1.2 使用2.i2c和spi通信的电阻屏LCD 电阻屏LCD通信接口有支持I2c、SPI和8080通信接口的。 1.8080通信的电阻屏LCD设备 rtt没有实现的设备驱动框架层&#xff0c;那么是在驱动层直接实现的&#xff0c;以stm32f407-atk-explorer为例…

centos7安装kafka、zookeeper

安装jdk 安装jdk8 安装zookeeper 在指定目录执行下载命令 我是在/newdisk/zookeeper目录下 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz --no-check-certificate下载好后并解压 tar -zxvf apache-zookeeper-3.5…

【Maven】Maven 基础教程(四):搭建 Maven 私服 Nexus

《Maven 基础教程》系列&#xff0c;包含以下 4 篇文章&#xff1a; Maven 基础教程&#xff08;一&#xff09;&#xff1a;基础介绍、开发环境配置Maven 基础教程&#xff08;二&#xff09;&#xff1a;Maven 的使用Maven 基础教程&#xff08;三&#xff09;&#xff1a;b…

我的NPI项目之Android 安全系列 -- Keymaster到底是个什么

最近因为一直在调研独立secure element集成的工作&#xff0c;不巧的是目前使用的高通平台只有NFC-eSE的方案。高通目前也并不支持独立的eSE集成&#xff0c;codebase中并无相对应的代码。举个例子&#xff0c;目前使用的STM的一款eSE&#xff0c;但是这款eSE的开发STM还没有完…

HarmonyOS—HAP唯一性校验逻辑

HAP是应用安装的基本单位&#xff0c;在DevEco Studio工程目录中&#xff0c;一个HAP对应一个Module。应用打包时&#xff0c;每个Module生成一个.hap文件。 应用如果包含多个Module&#xff0c;在应用市场上架时&#xff0c;会将多个.hap文件打包成一个.app文件&#xff08;称…

matlab 提取分割位于多边形区域边缘内部或边缘上的点

[in,on] = inpolygon(xq,yq,xv,yv) xv 和 yv 为定义的多边形区域的,如xv = [1 4 4 1 1 ];yv = [1 1 4 4 1 ];注意最后一个数字与第一个重复,保证多边形闭合; xq 和 yq 为待查询的点in:在多边形内部和边缘的点序号on:仅在多边形边缘的点序号 提取分割方法: matrix=[xq yq…

大数据技术学习笔记(五)—— MapReduce(1)

目录 1 MapReduce 概述1.1 MapReduce 定义1.2 MapReduce 优缺点1.3 MapReduce 核心思想1.4 MapReduce 进程1.5 Hadoop 序列化类型1.6 MapReduce 编程规范1.7 WordCount 案例实操1.7.1 案例需求1.7.2 环境准备1.7.3 编写程序1.7.4 测试 2 MapReduce 序列化2.1 序列化概述2.2 自定…

浅析volatile关键字

浅析volatile关键字 文章目录 浅析volatile关键字1. volatile关键字的意义2.volatile应用3. volatile常见问题总结 1. volatile关键字的意义 ​ 被 volatile 修饰的变量&#xff0c;在对其进行读写操作时&#xff0c;会引发一些可观测的副作用。而这些可观测的副作用&#xff…

sql单表运用11.3

一、进入数据库操作界面 1、mysql -u root -p 敲回车 &#xff0c;输入密码 &#xff0c;进入数据库操作界面 2、show databases 查看所有的数据&#xff08;如果没有数据库&#xff1a;创建数据库 create database 库名称&#xff09; 3、use 数据库名 使…

软件工程顶会——ICSE '24 论文清单、摘要

1、A Comprehensive Study of Learning-based Android Malware Detectors under Challenging Environments 近年来&#xff0c;学习型Android恶意软件检测器不断增多。这些检测器可以分为三种类型&#xff1a;基于字符串、基于图像和基于图形。它们大多在理想情况下取得了良好的…