C语言
程序设计语言C语言
孙宇航_
舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少努力,撑的累不累,摔得痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷。
展开
-
C语言——初识C语言
1. 什么是C语言? C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易 的方式编译、处理低级存储器、产 生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的 C语言程序可在许多电脑平台上进 行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语原创 2021-12-11 10:40:51 · 865 阅读 · 3 评论 -
【C语言】C语言复合类型经典题目(内容全,有深度)
C语言复合类型经典题目(内容全,有深度)原创 2022-05-09 20:06:32 · 978 阅读 · 14 评论 -
【C语言】C语言入门经典题目(范围广,内容多)
✨作者:@小孙的代码分享✨专栏:《C语言入门》✨送给各位的一句话:空杯心态 才能学到新知✨希望大家看完这些题目有所收获,别忘了,点赞+评论!目录前言 😄字符转ASCII码🔥判断闰年🔥简单计算器🔥包含数字9的数🔥十六进制转十进制🔥获得月份天数🔥求质数个数🔥水仙花数🔥变种水仙花🔥公务员面试🔥关机程序🔥结束语前言 😄学了好久的C语言,最近也刷了200多到题,下面和大家分享一下我直接的一些入门的经典...原创 2022-04-26 18:20:22 · 8087 阅读 · 33 评论 -
深入理解计算机的大段存储和小段存储
目录1.什么是大端和小端2.为什么会有大小端模式的区分3.例题如下百度2015笔试题在今天的学习之前先给大家讲一个小故事有两个特别强大的国家在过去进行了36个月的战争,在这期间发生了件事情,就是吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可那时皇帝的祖父由于小时候吃鸡蛋,按照这种方法把手指弄破了,因此他的父亲就下令,命令所有子民吃鸡蛋的时候,必须先打破鸡蛋较小的一端,违令者重罚。然后老百姓对此法令及为反感,期间发生了多次叛乱,其中一个皇帝因此送命,另外一个丢了王位,产生叛乱的.原创 2022-04-18 17:38:38 · 2963 阅读 · 3 评论 -
【剑指offer】——面试题精选2道 (替换空格)
目录[编程题]替换空格[编程题]Fibonacci数列[编程题]替换空格请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。接口类型编程题,只需要按照提示代码实现该功能;思路如下:首先计算出字符串中空格的个数,由空格个数确定字符串转换后的长度。每一个 空格 变成 %20就是 碰见一个空格字符串长度+2该字符串有两个空格,所以字符串长度加4。为e...原创 2022-04-13 18:43:45 · 835 阅读 · 11 评论 -
逻辑C语言
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词:A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。int main(){ int killer = 0; for (killer = 'a'; killer <= 'd'; killer++) { if ((killer!='a') + (killer=='c') + (k原创 2022-03-08 21:06:10 · 138 阅读 · 0 评论 -
递归实现n的k次方
编写一个函数实现n的k次方,使用递归实现。#include<stdio.h>int power(int n, int k){ if (k <= 0) return 1; else return n * power(n, k - 1);}int main() { int n = 0; int k = 0; scanf("%d%d", &n, &k); int ret = power(n, k); printf("%d\n", ret);原创 2022-01-23 19:48:21 · 232 阅读 · 0 评论 -
模拟实现atoi——C语言
目录1.atoi函数1.1 atoi函数的实现2. atoi函数的模拟实现1.atoi函数头文件 #include<stdlib.h>atoi函数的声明 int atoi(const char *str)atoi函数是将参数str所指向的字符串转换为一个整数(int型)。1.1 atoi函数的实现#include <stdlib.h>int main(){ int a = 0;...原创 2022-04-09 15:38:47 · 1097 阅读 · 3 评论 -
程序环境和预处理(1)——C语言
目录1.程序的两种环境2.编译+链接2.1 翻译环境2.2编译本身也分为几个阶段2.3运行环境3.预处理3.1预处理指令3.2预定义符号1.程序的两种环境在c语言的标准实现中,存在两个不同的环境1)翻译环境 源代码被转换为可执行的机器命令。2)执行环境 用于实际执行的代码。2.编译+链接2.1 翻译环境2.2编译本身也分为几个阶段2.3运行环境程序执行过程中1.程序必须载入内存中。有操作系统环...原创 2022-04-09 12:59:25 · 554 阅读 · 4 评论 -
计算一个数的每位之和(递归实现)
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19输入:1729,输出:19原创 2022-01-23 19:34:54 · 463 阅读 · 0 评论 -
输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。
#include<stdio.h>int main(){ int n = 0; int m = 0; int arr1[1000] = {0}; int arr2[1000] = {0}; scanf("%d %d",&n,&m); int i = 0; int j = 0; for(i=0; i<n; i++) { scanf("%d",&arr1[i]); ...原创 2022-03-22 11:30:46 · 1246 阅读 · 0 评论 -
猜数字小游戏
#include<stdio.h>#include<time.h>#include<stdlib.h>void menu() { printf("********************************\n"); printf("******* 1. play *******\n"); printf("******* 0. exit *******\n"); printf("*******************.原创 2022-01-17 08:44:15 · 2300 阅读 · 0 评论 -
宏定义的使用——C语言
目录1.写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。2.写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明2.1offsetof函数2.1offsetof 计算变量相当于首地址原理2.3offsetof模拟实现1.写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。#define _CRT_SECURE_NO_WARNINGS1#include<stdio.h>//写一个宏,可以将一个整数的二进制位的奇数位和偶数位交...原创 2022-04-09 15:17:39 · 794 阅读 · 4 评论 -
自定义类型:结构体,枚举,联合
结构的声明 struct tag{member-list;}variable-list;例如描述一个学生: struct Stu{char name[20];//名字int age;//年龄char sex[5];//性别char id[20];//学号}; //分号不能丢//匿名结构体类型struct{ int a; char b; float c; }x;struct{ int a; char b; float c; }a[20],原创 2022-03-26 12:51:23 · 88 阅读 · 0 评论 -
实现一个函数,可以左旋字符串中的k个字符。
例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB#define _CRT_SECURE_NO_WARNINGS 1#include <string.h>#include<stdio.h>void left_move(char arr[], int k){ int len = strlen(arr); int j = 0; for (j = 0; j < k%len; j++) { char tmp = arr[0];原创 2022-03-22 11:26:40 · 154 阅读 · 0 评论 -
程序环境与预处理(2)——C语言
本篇博客接上篇《程序环境与预处理(1)》目录1.#define1.1#define定义标识符1.2 #define定义宏1.3 #和## (了解)1.4带副作用的宏参数1.5 宏和参数的对比1.6 命名约定2.#undef3. 命令行定义4.条件编译5. 文件包含5.1头文件被包含的方式5.2 嵌套文件包含1.#define1.1#define定义标识符#define name stuff举栗如下:宏所表...原创 2022-04-10 09:45:44 · 170 阅读 · 0 评论 -
rand()与rand()%100+1的函数释义
rand函数可以得到一个0~32767的随机数,如:int i;i=rand();而我们想要一个1~100之间的随机数需要这样:int i;i=rand()%100+1;注意:rand()%100+1并不要理解为死板的公式,其中rand()还是输出0~32767,只是了运用求余算符,除以100的余数在0至99,再加1就使数值在1至100。srand((unsigned int)time(NULL))当srand()的参数值固定的时候,rand()获得的数也是固定的,所以一原创 2022-01-17 08:55:27 · 4019 阅读 · 9 评论 -
空心三角形图案
#include<stdio.h>int main(){ int num; while(scanf("%d",&num) != EOF){ { int i,j; for(i = 0; i < num; i++) { for(j = 0; j < num; j++) { if(j == 0 || j == i || i == num - 1) ...原创 2022-03-22 11:32:26 · 153 阅读 · 0 评论 -
开始补作业了 使用指针打印数组内容
递归和非递归分别实现求第n个斐波那契数例如:输入:5输出:5输入:10, 输出:55输入:2, 输出:1原创 2022-02-14 09:46:41 · 338 阅读 · 0 评论 -
有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。
要求:时间复杂度小于O(N)void find_k(int arr[3][3], int k, int r, int c){ int x = 0; int y = c - 1; while (x<r && y>=0) { if (arr[x][y] < k) { x++; } else if (arr[x][y] > k) { y--; } else { printf("找到了,下标是:%d %d\n原创 2022-03-22 11:27:58 · 1157 阅读 · 0 评论 -
C语言函数模拟实现
1.模拟实现strncat在系统库函数中,存在strncat函数,它用于字符串的追加,就是在一个字符串后面追加一个字符串,它的函数原型为:char *strncat(char *strDest,const *strSource,size_t count);*strDest 为目标字符串 *strSource为源字符串,count为需要追加的字符串个数。2.模拟实现strncpy3.找单身狗...原创 2022-04-09 16:13:08 · 1041 阅读 · 0 评论 -
C语言文件操作
原创 2022-04-07 12:47:41 · 963 阅读 · 0 评论 -
memcpy()和memmove()函数的模拟实现
在模拟实现之前我们先了解一下这两个库函数。memcpy()描述C 库函数void *memcpy(void *str1, const void *str2, size_t n)从存储区str2复制n个字节到存储区str1。声明下面是 memcpy() 函数的声明。void *memcpy(void *str1, const void *str2, size_t n)参数str1-- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。 st...原创 2022-04-05 10:40:41 · 340 阅读 · 9 评论 -
C语言经典题目 实现输出1~100000之间所有的水仙花数
水仙花数的介绍:“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。该题难点:1.确定每个数字的位数;2.分离每个数字的各个位数;3.将每个数字的各个位数按照总位数进行次方相乘解决方案 :1.定义一个函数来判断每个数字的位数函数代码如下:int Digit(int n){ int digit = 0;//digit用来记录数字的位数 while (n > 0) { di原创 2022-02-14 10:21:50 · 477 阅读 · 0 评论 -
打印100~200之间的素数(c语言)
#include<stdio.h>int main(){ int i, j; for (i = 100; i <= 200; i++) { for (j = 2; j <= i; j++) { if (i % j == 0) { break; } } if (i == j) { printf("%d,", i).原创 2022-01-16 11:20:06 · 96 阅读 · 0 评论 -
break和continue在for循环中的区别
break和continue都是用来控制循环结构的,主要是停止循环。break 有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。 这时我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句。continue continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。 可以理解为continue是跳过当次循环中剩下的语句,执行下一次原创 2022-01-15 14:34:46 · 492 阅读 · 0 评论 -
(c语言)打印1-100之间所有3的倍数的数字
#include<stdio.h>int main() { int i = 0; for (i = 1; i <= 100; i++) { if (i % 3 == 0) { printf("%d ", i); } }原创 2022-01-16 10:54:53 · 1268 阅读 · 0 评论 -
scanf输入注意事项
因为scanf是以空白符(空格、制表符、换行等等)为结束标志的,当遇到空白符是就会结束一次输入,如果你需要读取空格的话可以使用gets或者getchar。原创 2022-01-15 14:36:43 · 2108 阅读 · 0 评论 -
在VS中编译C语言时scanf报错的处理办法
大家用微软的VS2022学习C语言的过程中一定遇到了scanf报错的情况吧这是由于,在使用VS的情况下,认为C语言scanf不安全所做出的提醒scnaf会进行一些不安全操作,所以才会报错。譬如给定一个长度为5的数字,在scanf的过程中给它大于5个元素,它会完全将这些元素塞进数组中,导致下标越界。根据报错提示可以看出,它的建议是将scanf 改为scanf_s,但是这种方法修改过后会使这段程序失去了跨平台性 。下面我将给大家讲一个简单的操作来解决这个问题这边提供一种最简单的的方法就是在.原创 2021-12-11 11:09:56 · 1874 阅读 · 4 评论