C,C++,C#
17个主题在此版块
-
- 1 篇回复
- 226 次查看
三元运算符格式: Exp1 ? Exp2 : Exp3; ? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个表达式的值。 示例代码: #include<stdio.h> int main() { /*三元运算符*/ int num; printf("输入一个整数: "); scanf("%d",&num);//获取用户输入的信息 (num%2==0) ? printf("%d是偶数",num) : printf("%d是奇数",num); return 0; } 运行结果: 输入一个整数: 6 6是偶数 例子: #include <stdio.h> int main() { int A=10; int B=20; char buy; int sum,number; printf("商品清单:\n A 商品10元/个 \n B 商品20元/个 \n"); printf("请输入要购买的商品(A 或 B):"); scanf("%c",&buy); printf("请输入购买数量:"); scanf("%d",&number); sum=((buy=='A') ? (A*num…
Pcasd的最后回复, -
必须清楚 1.程序结构是3种:顺序结构、循环结构(三种循环结构)、选择结构(if和switch)。 2.读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3.计算机的数据在电脑中保存是以二进制的形式,数据存放的位置就是它的地址。 4.bit是位,是指为0或者为1,byte是指字节,一个字节=八个位。 5.常考概念: (1)编译预处理不是c语言的一部分,不占运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 (2)每个C语言程序中main函数是有且只有一个。 (3)在函数中不可以再定义函数,但可以调用函数(嵌套调用、递归调用)。 (4)算法是一定要有输出的,他可以没有输入。 (5)break可用于循环结构和switch语句。 (6)逗号运算符的级别最低。 第一章 1.合法的用户标识符考查: (1)合法的要求是由字母、数字、下划线组成,有其它元素就错了。 (2)并且第一个必须为字母或者是下划线,第一个为数字就错了。 (3)关键字不可以作为用户标识符号。main define scanf printf都不是关键字。 (4)迷惑你的地方:If是可以作为用户标识符,因为If中的第一个字母大写了,所以不是关键字。 2.字符数据的合法形式: ‘1’是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 ASCII数值 ‘0’ …
Pcasd的最后回复, -
- 0 篇回复
- 210 次查看
1.变量和常量的定义与使用方法 (1).常量:值不发生变化的量 字面常量:直接常量(常数) 包括:整型常量>>>>>>>>>12、0 实型常量>>>>>>>>>4.6、1.23 字符常量>>>>>>>>>"a" 符号常量:标识符、符号常量 标识符:程序中使用的各种名称(变量名、数组名、函数名、符号常量名) 标识符由字母、数字和下划线组成的一串符号,但是必须以英文字母或下划线开头。不允许使用关键字作为用户 标识符的名称。 c语言的标识符可分为关键字、预定义标识符、用户标识符 关键字>>>c语言规定的具有固定含义的标识符,也称保留字,均为小写字母int、while 预定义标识符>>>在c语言中有特定的含义,如printf、include 用户标识符>>>由用户根据需要定义的标识符,一般用来给变量、函数、数组等命名 符号常量:也称宏常量,由c语言中的宏定义预处理命令来定义 #define 符号常量 常量 习惯上用大写字母作为符号常量的标识符 (2).变量:值可以变化的量(先定义、后使用) 类型标识符 变量名1,变量名2,.....; 在定义变量的同…
NedK7的最后回复, -
- 0 篇回复
- 133 次查看
一、前言 这篇文章作为基础知识点,总结C语言的基本数据类型有哪些,浮点数的精度,整数变量的空间范围,变量定义语法,变量命名规则,浮点数打印格式,基本数据类型printf对应的打印、位运算的知识点。 二、变量的定义语法与数据类型 <数据类型> <变量名称>; 例如: int a; 数据类型可以填哪些? int、char、float、double、long、short 每个数据类型有什么区别? int 用来存放整型数据。比如: 123、456、-678 char 用来字符和整型数据。比如:123、2、5、'A'、'K' float 用来浮点数类型的数据(单精度)。比如: 12.34 、12.0 、 56.789 double 用来浮点数类型的数据(双精度)。 long 用来存放整型数据。 short 用来存放整型数据。 int、char、short..都可以存放整型,具体有什么区别? 每个数据类型所占用的空间大小不一样。 int 类型 占4个字节 char类型 占1个字节 short类型占2个字节 int、char、short..都可以存放整型,具体能存放多大的数据? 因为整数的有负数的,所以程序里数据类型分为有符号和无符号。 无符号的关键字: unsigned 比如: int类型定义就有以下方式 unsigned int a; //表示不存放符号位,4个字节=32位,全部存放有效数据。 最大值: 0~4294967295 int a; //表示存放符号位,4个字节=32位,除了最高位…
NedK7的最后回复, -
系列文章目录 文章目录 系列文章目录 前言 一、定义函数 1.定义无参函数 2.定义有参函数 3.定义空函数 二、调用函数 1.函数调用的形式 2. 前言 函数就是用来完成一定的功能,函数就是功能,每一个函数用来实现一个特定的功能。 常见的就是主函数 ,main函数。 提示:以下是本篇文章正文内容,下面案例可供参考 一、定义函数 在C程序中用到的函数,必须先定义后使用 对于C提供的库函数,无需自己定义,只需要用#include指令把有关头文件包含到本文件模块中,在有关头文件中包含了对函数的声明。 #include<stdio.h> 1.定义无参函数 类型名 函数名() { 函数体 } 或者 类型名 函数名(void) { 函数体 } void表示空,即没有参数。 函数体包含声明部分和语句部分。 2.定义有参函数 以下定义的max函数是有参函数: int max(int x,int y) {int z; z=x>y?x:y; //执行语句部分 return(z); } 定义有…
NedK7的最后回复, -
- 0 篇回复
- 149 次查看
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符,这些运算只能用于整型操作数,即只能用于带符号或无符号的char、short、int与long类型。浮点数因为浮点型和整型在计算机内的存储方式大相径庭,同样是32位。但是浮点数是1位表示符号位,23位表示数值部分,8位其他表示指数部分。而整型只是单纯32位补码形式存放的,这就是位运算不能用于浮点数的原因。 1、“按位与”运算符(&) 按位与是指:参加运算的两个数据,按二进制进行“与”运算。如果两个相应的二进制位都位1,则该位的结果为1;否则为0。这里的1的可以理解为逻辑中的true,0可以理解为逻辑的false。按位与其实与逻辑上“与”的运算规则一致。逻辑上的“与”,要求运算数全真,结果才为真。若A=true, B=true,则A∩B=true 例如:3&5, 3的二进制编码是11(2)。(为了区分十进制和其他进制,本文规定,凡是非十进制的数据均在数据后面加上括号,括号中注明其进制,二进制则标记为2,内存储存数据的基本单位是字节(Byte),一个字节由8个位(bit)所组成。位是用以描述电脑数据量的最小单位。二进制系统中,每个0或1就是一个位。将11(2)补足成一个字节,则是00000011(2)。5的二进制编码是101(2),将其补足称一个字节,则00000101(2)。 按位与运算: 0000 0011(2) & 000000101(2) = 00000001(2) 由此可知3&5 =…
NedK7的最后回复, -
基础知识 C语言中所有输入输出都用流(stream)完成。流按行组织字符序列,每一行用一个换行符结束。至少3种流与程序连接:stdin,stdout,stderr。一个流是内存中的一个缓冲区,程序运行中输入输出数据都被收集在相应缓冲区中。 字符数据的输入 1.输入单字符函数getchar:从标准输入流stdin中当前读入位置读入一个字符(包括空格、\n、Tab),读取成功返回该字符编码,出错或遇到EOF则返回-1。成功读入后stdin当前读入位置自动后移一个字符。 2.getchar是带参数的类函数宏定义: #define getchar() getc(stdin) 字符数据的输出 1.输出单字符函数putchar:将程序中的一个字符的编码不加处理地送到标准输出流stdout的当前输出位置,并把对应的符号显示在屏幕上。正确时返回送出的字符编码,出错时返回-1。成功后将stdout当前位置后移一个字符。 2.putchar是带参数的类函数宏定义: #define putchar(c) putc(c,stdout) 3.参数总是按无符号整数解释。在0~255之外的值按256取模。 //输出换行符 putchar('\n'); putchar('\12'); putchar('\xa'); 格式化输出 1.格式化输出函数printf:将调用时给出的输出项按指定的格式转换为字符序列送到stdout并在屏幕上显示。返…
NedK7的最后回复, -
auto 变量的作用域: 变量可以作用的范围。一般都是花括号里面。 变量的生命周期: 变量从被创建到销毁所经历的时间。 可以认为局部变量都默认是auto的,但是你不写编译器也知道。该关键字几乎不用了。 register 当你使用register去修饰一个变量时,编译器会尽可能将该变量放在CPU的寄存器中而非内存中,所以CPU访问该变量的速度是很快的。 几点注意: 1,register修饰的最好是局部变量。因为全局变量会一直占用寄存器。 2,不会被写入。写入就要写回内存。那么该变量设为register就没有意义。 最好是高频读写的。 无法被&符号取地址。 不要被大量使用,因为寄存器有限。 为什么要有头文件 很多时候我们有这样的需求:在一个源文件中使用另一个源文件的函数或者变量。那么能不能直接使用呢? 函数可以,但是会警告,函数只要链接找到就可以。(只限于自己写的函数,想要使用库函数或者别的函数必须包含声明)。 而变量必须声明过才可以使用,且不能在声明的时候赋值。因为声明不开辟空间。 但是如果我有100个源文件,每个源文件都要使用同一个全局变量,那么怎么办呢?我难道要写100遍声明吗? 所以,一个好的处理方法就是,将这些声明提取到1个共用的文件中,以便于项目的维护。而这个文件就是头文件。而每个想要使用其中变量或者函数的源文件,只需要包含该头…
NedK7的最后回复, -
- 0 篇回复
- 147 次查看
.不考虑内存重叠的strncpy 网上很多博客也写了这个函数,面试也常常会遇到,但是,我发现网上的很多代码都是有问题的,我们先看下大部分网上博客的实现: char *strncpy(char *dst, const char *src, size_t len) { assert(dst != NULL && src != NULL); char *res = dst; while (len--) { *dst++ = *src++; } return res; } 看着好像没啥问题,但是,当src的长度小于len呢?这份代码没有处理这个问题。当src的长度小于len时,应该如何处理?《C和指针》p179给出的答案是: “ 和strcpy一样,strncpy把源字符串的字符复制到目标数组。然而,它总是正好向dst写入len个字符。如果strlen(src)的值小于len,dst数组就用 额外的NUL字节填充到len长度,如果strlen(src)的值大于或等于len,那么只有len个字符被复制到dst中。” 注意!它的结果将不会以NUL字节结尾。(NUL即‘\0’). 由此可见,我们还需要判断strlen(src)是否小于len,如果是,还需要在dst后面添加NUL,因此,正确的代码应该如下: char *strncpy(char *dest, const char *src, size_t len) { assert(dest != NULL &&a…
NedK7的最后回复, -
- 0 篇回复
- 139 次查看
一、基本概念 1、定义: printf() 是 C 语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。使用 printf() 时 要加头文件 stdio.h。 2、函数原型: int printf ( const char * format, ... ); 3、返回值: 正确返回输出的字符总数,错误返回负值。与此同时,输入输出流错误标志将被置值,可由指示器函数 ferror(FILE *stream) 来检查输入输出流的错误标志,如果 ferror() 返回一个非零值,表示出错。 4、调用格式: printf("格式化字符串", 输出表列) 5、格式化字符串包含三种对象,分别为: 1)字符串常量; 2)格式控制字符串; 3)转义字符。 字符串常量原样输出,在显示中起提示作用。输出表列中给出了各个输出项,要求格式控制字符串和各输出项在数量和类型上应该一一对应。其中格式控制字符串是以 % 开头的字符串,在 % 后面跟有各种格式控制符,以说明输出数据的类型、宽度、精度等。 二、格式控制字符串 1、printf() 的格式控制字符串组成如下: %[flags][width][.prec][length]type 分别为: %[标志][最小宽度][.精度][类型长度]类型。 2、类型(type) 3、标志 flags 规定输出样式,取值和含义如下…
NedK7的最后回复, -
- 0 篇回复
- 132 次查看
C语言中使用正则表达式一般分为三步: 编译正则表达式 regcomp() 匹配正则表达式 regexec() 释放正则表达式 regfree() 下边是对三个函数的详细解释: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include < #include <netdb.h> #define SERVER_PORT 80 #define SERVER_DOMAIN_NAME "api.help.bj.cn" void sys_err(const char *str) { perror(str); exit(1); } int main(int argc, char *argv[]) { struct hostent *host_info; host_info = gethostbyname(SERVER_DOMAIN_NAME); if(host_info == NULL){ sys_err("hostInfo is NULL\r\n"); return -1; } printf("host name:%s\r\n", host_info->h_na…
NedK7的最后回复, -
- 0 篇回复
- 143 次查看
前言: 当我们学习完了标识符,常量和变量以后,这一章再学习完运算符及表达式,就基本把C语言中的“单词”这块完成了。 运算符分类: 算术运算符(+、-、*、/、%、++、--) 赋值运算符(=、复合赋值运算符) 关系运算符(>、<、==、>=、<=、!=) 逻辑运算符(!、&&、||) 条件运算符(? :) 逗号运算符(,) 移位运算符(<<、>>) 位运算符(~、|、^、&) 指针运算符(*,&) 求字节运算符(sizeof) 强制类型转换运算符((类型)) 分量运算符(.、->) 下标运算符(【】) 其他 1,按照运算符在表达式中与链接运算对象的个数可分为: (1)单目运算符 (2)双目运算符 (3)三目运算符 (4)其他 2,运算符的优先级: 优先级指一个表达式中不同运算符进行操作的先后顺序。通常所以单目运算符的优先级高于双目运算符 3,运算符的结合性: 结合性是指表达式中各种运算符优先级相同时,由运算符的结合性来确定表达式的运算顺序。 第一类:右结合性(运算符的结合性从右向左)单目,三目和赋值运算符 …
NedK7的最后回复, -
内存函数 在 C 语言中,当一个程序被加载到内存中运行,系统会为该程序分配一块独立的内存空间,并且这块内存空间又可以再被细分为很多区域,比如:栈区、堆区、静态区、全局区等 栈区:保存局部变量。存储在栈区的变量,在函数执行结束后,会被系统自动释放。 堆区:由 malloc、calloc、realloc……等函数分配内存。其生命周期由 free 函数控制,在没有被释放之前一直存在,直到程序运行结束。 栈内存 定义在函数内部的局部变量,都保存在栈区。栈区的特点是:函数执行结束后,由系统 “自动回收”局部变量所对应的内存空间。所谓的“自动回收”其实是操作系统将这块栈内存又分配给其他函数中的局部变量使用。 当定义局部变量时,系统会在栈区为其分配一块内存空间,当函数执行结束后系统负责回收这块内存,又分配给其他局部变量使用。 以下代码执行后,会发现输出的a,b变量内存地址是一样的。可以说明局部变量对应的内存在函数执行结束后,会被系统回收分配给其他函数中的局部变量使用。因此,在C语言中,不能将局部变量的地址作为函数返回值返回,否则可能出现问题 #include<stdio.h> void showA() { int a; printf("&a=%p\n",&a); } void showB() { int b; printf("&b=%p\n",&b); } int main(void) { showA(); showB(…
NedK7的最后回复, -
在实际开发中,程序员很少用单个字符来表示一个完整的数据,字符的意义主要作为数组的时候可以形成一个字符串。在本章节中,我们更关心字符与整数之间的关系和ASCII码的相关知识。 字符类型char,只能用单引号' '来包围,不能用双引号" "包围。而字符串只能用双引号" "包围,不能用单引号' '包围。 输出字符使用 %c,输出字符串使用 %s。 ASCII码表 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的电脑编码系统,用于显示现代英语和其他西欧语言,它是现今最通用的单字节编码系统。 ASCII码规范于1967年第一次发布,它包含了33个控制字符(具有某些特殊功能但是无法显示的字符)和95个可显示字符。 1、ASCII 控制字符 (字符编码: 0-31) 在ASCII码表中,前32个字符是不能用于显示的编码,而是用于控制外围设备。 十进制 DEC 符号 Symbol 中文解释 Description 0 NULL 空字符 1 …
NedK7的最后回复, -
数据类型 Day1 0、 计算机只是一个工具,计算的工具,通过计算来帮我们解决问题 计算机保存问题中数据? 先保存问题的抽象数据,然后再对抽象数据进行某一种运算 运算后就能得到一个结果,数据应该怎么去保存? 数据有什么属性: 大小 整数/小数 .... 这些属性我们就是通过数据类型来体现。 1、C语言的数据类型 有四大数据类型: (1)基本数据类型 C语言已经帮我们定义好了,我们就能直接拿过来使用 整型数据:用来保存整数 short [int] //短整型 int //整型 long [int] //长整型 long long [int] //长长整型 为什么非要分这么多类? 表示的数据大小范围不一样 1字节 = 8bit short “一般”来讲 占2字节 int “一般”来讲 占4字节 long “一般”来讲 占4字节 long long “一般”来讲 占8字节 “一般” 是指不一定就是这么多,和所用使用的机器有关 “一般” 是指32位机器下 如果记不住怎么办? 提供了一个关键字 ---> sizeof 求一个对象的所占字节数 unsigned / signed 表示 无符号 / 有符号(默…
NedK7的最后回复, -
- 0 篇回复
- 143 次查看
本篇文章是对学习C语言程序设计的基础,以及容易难理解,和一些控制语句的同学进行详细的分析介绍,需要的朋友点个赞再走哦,绝不做白嫖党! 一、数据的输入与输出 1、格式化输入输出(printf函数,scanf函数) printf函数<格式化输出函数>,它是向输出设备是(显示器)输出一定的数据。 其格式为printf(格式串,输出项列表); scanf函数<格式化输入函数>,它是能够根据指定格式由输入设备(键盘)进行数据的输入。 其格式为scanf(格式串,输入项列表); 常用格式说明符如下: %d——用来输出十进制整数; %f——用来输出实数(包括单,双精度),以小数形式输出,默认情况下保留小数点6位; %c——用来输出一个字符; %s——用来输出一个字符串 2、字符输入输出函数(putchar函数,getchar函数) putchar函数<字符输出函数>,它是向终端(显示器)输出非指定格式的单个字符。 其格式putchar(输出项); getchar函数<字符输入函数>,它是从终端(键盘)输入单个字符。 其格式为 变量名=getchar() 以上两个是在C中,拓展一下:在c语言中,因为在输入数据的同时还要说明数据的类型,如果输入数据较多,那就很麻烦了,所以我们的C++搞了两个更爽的东西cout和cin,来替换它们.首先我们先了解一下这两个东西的来…
NedK7的最后回复, -
- 0 篇回复
- 146 次查看
在进行阐述之前,我们必须得先明白一个问题,就是C语言是什么。它是一门高级语言,这使得我们不必再用数字码表示指令,使得我们的指令可以更好的体现我们的想法,然后也不需要去考虑机器它怎么执行我们的代码的,我们要做的,仅仅是让计算机得出我们想要的结果。然后,它是一门面向过程的语言,也就是说它是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用。 我们使用C语言,那么它有那些特点呢?它具有: 1、语言简洁、紧凑、使用方便、灵活 2、运算符丰富 3、数据类型丰富 4、具有结构化控制语句 5、语法限制不太严格,程序设计自由度大 6、C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件操作 7、可移植性好 8、生成目标代码质量高,程序执行效率高等. 上面说明了C语言的八个特性。我们对其进行相应的阐述, 较之于之前的语言,其的可读性有了较大的提升,对于运算符方面,可以直接参考这个网站中说明的,也就是说包含了算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、杂项运算符。这里不再赘述: C 运算符 | 菜鸟教程 (runoob.com) 其中需要进行说明的是位运算符中的取反运算、左移、右移。取反运算是说我们输入一个数字,将它的二进制进行取反,也就是1变成0. 数据类型丰富, 它目前拥有的数据类型可以概括为:基本类型…
NedK7的最后回复,