![](https://img-blog.csdnimg.cn/20210814183015833.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言杂项
文章平均质量分 55
C语言编程中的细节
.阿Q.
干净 · 温暖 · 自律 · 专注 · 情绪稳定 · 坚持 · 乐观 · 谦逊
展开
-
单身狗(异或运算)
问题描述:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个只出现一次的数字,编程实现。问题分析:1.先从数组遍历异或的结果开始(1)两个相同的数异或的结果是0;(2)所有不为0的数和0异或的结果是本身。综上两点,一个整型数组中,若只有两个数字只出现一次,其他数字都出现了两次,那么把数组中的所有遍历异或一遍的结果就是只出现一次的两个数字相异或的结果。先定义一个上述的数组。int arr[] = { 1, 2, 3, 3, 2, 1, 4, 5 };可以..转载 2021-09-27 20:09:20 · 322 阅读 · 0 评论 -
while(scanf(“%d“,&n) != EOF)
EOF(end of file)就是文件的结束,通常来判断文件的操作是否结束的标志。EOF不是特殊字符,而是定义在头文件<stdio.h>的常量,一般等于-1;#include <stdio.h>int main(){ int n;while(scanf("%d",&n) != EOF){ //在黑框中手动输入时,系统并不知道什么时候到达了所谓的“文件末尾“,因此需要用< Ctrl + Z >组合键,然后按< Enter >键的方式来告原创 2021-07-16 12:08:25 · 774 阅读 · 1 评论 -
C语言实现通讯录管理系统(结构体、枚举、联合体应用)
利用C语言进阶知识中的结构体、枚举、联合体来制作通讯录管理系统工程。相比于以往写三子棋游戏的笼统,该文章更加详细的解释每一步、每个函数创建后的测试,逐层分析代码。日后,看懂的基础上还需多加敲写,不断完善自己的逻辑!????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????目录想要实现的功能描原创 2021-09-23 12:25:59 · 6788 阅读 · 16 评论 -
isalpha()函数~tolower()函数
isalpha():判断一个字符是否是字母。语法:int isalpha ( int c );在默认情况下,字母包括:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y标准 ASCII 编码共包含了 128 个字符,不同的字符属于不同的分类,我们在 <ctype.h> 头文件中给出了详细的列表。????参数 c原创 2021-09-05 12:29:10 · 565 阅读 · 0 评论 -
<ctype.h>头文件详解(~ 勤看~)
<ctype.h> 是一个与字符处理有关的头文件,它包含了一系列用于检测和转换单个字符的函数。<ctype.h> 中的函数都只有一个参数,就是要检测或者要转换的字符,并且这个参数的类型是 int,它可以表示一个有效字符,或者一个EOF(无效字符)。<ctype.h> 中的函数的返回值也都是 int 类型,它可以表示一个有效字符,或者一个EOF(无效字符),或者一个布尔值(0 值表示“假”,非 0 值表示“真”)。<ctype.h> 包含了两种类型的函数:原创 2021-09-05 11:36:42 · 532 阅读 · 0 评论 -
指针进阶:qsort函数(回调函数)
回调函数回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。如上述代码1就是回调函数:int Add(int x, int y)//int (*)(int , int)类型{ return x + y;}int Sub(int x, int y)//int (*)(in.原创 2021-09-02 09:07:48 · 247 阅读 · 0 评论 -
字符串左旋
实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDABAC代码1:传值#include<stdio.h>void Left_circle(char* a, int n){ int i = 0; int len = strlen(a); char ret; n %= len; while (n--)//控制次数 { ret = a[0]; for (i = 0; i < len; i++)原创 2021-08-23 11:58:55 · 119 阅读 · 1 评论 -
assert()断言函数,用于在调试过程中捕捉程序错误
断言函数,用于在调试过程中捕捉程序的错误。“断言”在语文中的意思是“断定”、“十分肯定地说”,在编程中是指对某种假设条件进行检测,如果条件成立就不进行任何操作,如果条件不成立就捕捉到这种错误,并打印出错误信息,终止程序执行。assert() 会对表达式expression进行检测:如果expression的结果为 0(条件不成立),那么断言失败,表明程序出错,assert() 会向标准输出设备(一般是显示器)打印一条错误信息,并调用 abort() 函数终止程序的执行。 如果expression的原创 2021-08-23 11:17:00 · 5642 阅读 · 4 评论 -
猜比赛名次
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(){ int A = 0, B = 0, C = 0, D = 0, E = 0; //首先不加条原创 2021-08-16 10:50:01 · 101 阅读 · 0 评论 -
日本谋杀案
前言提示:今天遇到一道很有意思的题目:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。一、解题思路示例:我们首先由题干得知3个人说了真话,1个人说的假话,那么我们可以把这四个人的话看做4个已知条件,视1为真,0为假。那么这4个条件会有3个1和1个0,我们把这里作为切入口。二、解题步骤代码如下(示例):假设k代表杀手,因为A~D在AS转载 2021-08-15 23:39:17 · 170 阅读 · 3 评论 -
暑期小题&
1.能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是:(A)A.return 这二个数B.形参用数组C.形参用二个指针D.用二个全局变量讲解:A:错误,一个函数只能返回一个结果B:正确,将形参存在数组中,修改数组中内容,可以通过数组将修改结果带出去C:正确,形参如果用指针,最终指向的是外部的实参,在函数中对指向指向内容进行修改,改变的就是外部的实参D:正确,全局变量不受函数的结束而结束,在函数中改变全局变量,主调函数中可以看到改变之后的结果代码讲原创 2021-07-30 10:28:54 · 1059 阅读 · 0 评论 -
多组数据输入写法:while(scanf(“%d“,&n) != EOF)和while(~scanf(“%d“,&n) ),以及while((ch=getchar()) != EOF)
在编程中,我们经常遇到多组数据输入的情况,如下图1,其实我们无法来实现下图这种连续输入,然后最后给出结果的形式,编译器是想告诉我们要这样输入,其实我们在实际编程中是要实现,输入一列数据打印一列数据,然后再继续输入一列数据打印一列数据的效果如图2图1图21.while((ch=getchar()) != EOF)说明:字符数据读取,适用于多组数据读取2.while(scanf("%d",&n) != EOF)说明:整型数据读取,适用于多组数据读取3....原创 2021-08-07 11:02:19 · 1308 阅读 · 0 评论 -
越玩头越凉的递归小练习
编写一个函数 reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列,不是逆序打印。要求:不能使用C函数库中的字符串操作函数。比如:char arr[] = "abcdef";逆序之后数组的内容变成:fedcba#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>//编写一个函数 reverse_string(char * string)(递归实现)//实现:将参数原创 2021-07-30 13:42:46 · 137 阅读 · 0 评论 -
扫雷游戏,一雷不扫何以扫天下
TDD游戏测试部分test.c#define _CRT_SECURE_NO_WARNINGS#include"game.h"void menu(){ printf("**************************\n"); printf("****** 1.play ********\n"); printf("****** 2.exit ********\n"); printf("**************************\n");}void g原创 2021-08-02 23:59:58 · 81 阅读 · 0 评论 -
三子棋,人机博弈的鼻祖
三子棋,花里胡哨的话不多说,直接上实现步骤:我们打算分模块实现三子棋游戏的创建:1.test.c中写三子棋的大致实现过程 ————> TDD,测试游戏2.game.c中写三子棋的具体实现过程 ————> 游戏的实现3.game.h中写实现过程中运用函数所需的头文件 ————> 游戏的声明TDD,测试游戏【test.c文件】#define _CRT_SECURE_NO_WARNINGS#include"game.h"vo...原创 2021-08-01 18:37:33 · 124 阅读 · 0 评论 -
《猜数字游戏》
1.(我们采用拆分解析代码,最后得出总程序的思想方法来解决问题)《猜数游戏》:这段可以不看:我们需要用到生成随机数的函数rand( );可以从rand - C++ Reference (cplusplus.com)网址搜索查看具体应用,下面我们来操作一下(权当为以后搜索熟悉流程,下面图片内容与实际应用关系不大):点击RAND_MAX,我们可以看到rand()生成随机数的最大限度是32767代码1#define _CRT_SECURE_NO_WARNINGS#inc原创 2021-06-28 19:12:57 · 146 阅读 · 2 评论 -
getchar函数,缓冲区以及while ((ch = getchar()) != ‘\n‘)
getchar函数——>从键盘读取字符从cplusplus我们可以看到getchar函数的用法:从标准输入流里获取数据 返回值类型是int型#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>int main(){ int ch = 0; while ((ch = getchar()) != EOF) putchar(ch); return 0;}那么你可能会问,getchar函数不是从键盘获取..原创 2021-07-29 22:44:31 · 6485 阅读 · 6 评论 -
C语言几种常见头文件,再也不怕用了函数不知道他“妈”的问题了!!!
不完全统计,C语言标准库中的头文件有15个之多,所以我主要介绍常用的这四个头文件stdio.h,string.h,math.h,stdlib.h,以后用到其他的再做补充。下面上干货(记住常用的,细节可以选择性略过):1.<stdio.h>:定义了输入输出函数、类型以及宏,函数几乎占了标准库的1/3。2.<string.h>分成两组,一组str开头,一组mem开头(该组函数在<memory.h>中也有定义,不是所有编译器都有)(1)strchar * st.原创 2021-07-21 10:00:09 · 2021 阅读 · 0 评论 -
兜兜转转~~,忘不了的break!! 忘不了的continue!!!!
#include <stdio.h>int main(){ int a = 0, b = 0; // for循环将a和b的初始值均设置为1 for (a = 1, b = 1; a <= 100; a++) { if (b >= 20) break; if (b % 3 == 1) { b = b + 3; continue; } b = b-5; } printf("%d\n", a); return 0;}程序的输出结.原创 2021-07-21 19:57:36 · 98 阅读 · 0 评论 -
scanf陷阱--缓冲区引起的跳过输入问题,以及还有scanf,getchar 和gets的爱恨情仇
参照更详细的大佬文章(118条消息) C语言 getchar()原理及易错点解析_Kevin.wang-CSDN博客_c语言getchar原创 2021-07-19 22:54:17 · 118 阅读 · 0 评论 -
system(“pause”)作用
system(“pause”)是暂停的意思,等待用户信号;不然控制台程序会一闪即过,你来不及看到执行结果。需要自己添加头文件 #include <stdlib.h>原创 2021-07-18 21:01:50 · 20446 阅读 · 0 评论 -
数据类型的取值范围 和 数据类型的限定符
1.数据类型的取值范围整型:byte:-2^7 ~ 2^7-1,即-128 ~ 127。1字节。Byte。末尾加Bshort:-2^15 ~ 2^15-1,即-32768 ~ 32767。2字节。Short。末尾加S有符号int:-2^31 ~ 2^31-1,即-2147483648 ~ 2147483647。4字节。Integer。无符号int:0~2^32-1。long:-2^63 ~ 2^63-1,即-9223372036854774808 ~ 9223372036854774原创 2021-07-17 20:42:47 · 1147 阅读 · 0 评论 -
%d, %ld, %lld 区别, %s,%c区别
相信下面几个表达方式,就能说明问题吧:%d=int,%ld=long,%lld=long long;在32位编译器上,int=long=32bit;long long=64bit。%c是单个字符,也就是用' '的%s是字符串,用“ ”的。原创 2021-07-17 19:07:15 · 1781 阅读 · 0 评论 -
啥是伪代码?假的代码??是代码吗??
什么是伪代码?伪代码(Pseudocode)是一种介于自然语言与编程语言之间的算法描述语言。例如以下就是伪代码:if登陆成功then跳转到管理页else出错目的:为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。好处:使用伪代码, 可以帮助我们更好的表述算法, 不用拘泥于具体的实现。特点:伪代码必须结构清晰、代码简单、可读性好,并且类似自然语言。应用场景:当考虑算法功能(而不是其语言实现)时,伪代码常常得到应用。为什么原创 2021-07-10 19:39:29 · 8470 阅读 · 0 评论 -
include<头文件名>和include“头文件名“
在程序设计中,文件包含是很有用的。一个大的程序可以分为多个模块,由多个程序员分别编程。有些公用的符号常量或宏定义等可单独组成一个文件,在其它文件的开头用包含命令包含该文件即可使用。这样,可避免在每个文件开头都去书写那些公用量,从而节省时间,并减少出错。对文件包含命令还要说明以下几点:1. 包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来。例如以下写法都是允许的: #include"stdio.h" #include<stdio.h> 但是这两种形式是有区别的...原创 2021-07-16 16:37:45 · 1855 阅读 · 0 评论 -
sizeof的用法总结
sizeof是C语言中保留关键字,也可以认为是一种运算符,单目运算符。常见的使用方式:int a=10;int arr[]={1,2,3};char str[]="hello";int len_a = sizeof(a);int len_arr = sizeof(arr);int len_str = sizeof(str);printf("len_a=%d,len_arr=%d,len_str=%d\n",len_a,len_arr,len_str);看了上面的代码,一般会认为结果是:原创 2021-07-16 16:26:43 · 27658 阅读 · 5 评论 -
暑假C/C++作业Day1
1.数组定义为int a[4][5],则a[1]+3表示哪个元素的地址?a[1]表示a[1] [0],而a[1]+3就是a[1][3]。因为内存地址是按照a[1][0],a[1][1],a[1][2],a[1][3],a[1][4]来进行存储的,所以+3是内存地址加3。原创 2021-07-12 10:35:40 · 159 阅读 · 2 评论 -
二进制编程题
1.输入两个整数,求两个整数二进制格式有多少个位不同输入描述:两个整数输出描述:二进制不同位的个数示例:输入示例:22 33输出示例:5#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ int num1 = 0; int num2 = 0; int Temp = 0; int count = 0; scanf("%d %d", &num1, &num原创 2021-08-05 16:34:16 · 328 阅读 · 0 评论