C语言基础
XZD_Fitz
我觉得人在不断前进的过程当中要经常停下来回头看一看,看一看自己最初的想法,看一看自己的起点,看一下最初的方向。
展开
-
C语言中用宏动态命名变量名及函数名以及宏字符 # 和 ## 的解释
宏# 和 ## 的解释1.在一个预处理器宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组。2 #是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串3.关于记号粘贴操作符(token paste operator): ## 简单的说,“##”是一种分隔连接方式,它的作用是先分隔,然后进行强制连接。4.其他相关 -- 单独的一个 # : 至于单独一个#,则表示对这个变量替换后,再加双引号引起来。5.#(stringizing)字符串化操作符。其作用是:将宏定义.原创 2021-08-06 16:26:06 · 13122 阅读 · 0 评论 -
找到数组中第二大的数
int FindSec( int *p, int len ) { assert( nullptr != p ); int maxv = p[ 0 ]; int secv = p[ 0 ]; for( int i = 1; i < len; ++i ) { if( maxv < p[ i ] ) { secv = maxv; maxv = p[ .原创 2021-03-07 22:54:10 · 314 阅读 · 0 评论 -
C语言打印1到1000之间所有素数
void PrintfPrime() { //1不是素数 //2是最小非奇数素数 //直接从3开始 printf( "2\n" ); bool b = false; for( int i = 3; i <= 1000; ++i ) { b = true; for( int j = 2; j <= i / 2; ++j ) { .原创 2021-03-07 22:51:21 · 4374 阅读 · 0 评论 -
C语言删除链表中值为value的所有元素
void DeleteFromList( Node *pHead, int Value ) { Node *pPrev = pHead; Node *pNext = pHead->mpNext; while( nullptr != pNext ) { if( pNext->mData != Value ) { pPrev = pNext; pNext.原创 2021-03-07 22:49:24 · 395 阅读 · 0 评论 -
C语言将字符串中所有字母转换为大写
char* MyUpper( char *pDest ) { assert( nullptr != pDest ); //assert()是断言函数,判断是否是空串 for( char *i = pDest; *i != '\0'; ++i ) { if( *i < 'a' || *i > 'z' ) { continue; .原创 2021-03-07 22:47:36 · 2764 阅读 · 0 评论 -
C语言实现在链表某个位置插入元素
void InsertFromList( Node *pHead, int Index, int Value ) { Node *pIter = pHead; for( int i = 0; i < Index && nullptr != pIter; ++i, pIter = pIter->mpNext ); assert( nullptr != pIter ); Node *pNew = new Node; ..原创 2021-03-07 22:44:11 · 2212 阅读 · 0 评论 -
C语言判断日期是本年的第几天
int GetDay( int Year, int Month, int Day ) { int MonthDays[ 13 ] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if( ( Year % 4 == 0 && Year % 100 != 0 ) || ( Year % 400 == 0 ) ) { ++MonthDays[ 2 .原创 2021-03-07 22:41:52 · 570 阅读 · 0 评论 -
C语言实现链表逆序
Node* InvertedFromList( Node *pHead ) { //A->B->C Node *pPrev = pHead; //A Node *pNext = pHead->mpNext; //B Node *pNextNext = nullptr; //C while( nullptr != pNext ) { ...原创 2021-03-07 22:38:35 · 308 阅读 · 0 评论 -
C语言实现一个整数转换成ASCII字符
C语言实现把一个数转换成其对应的 ASCII 字符。/* itoa 把整型转换成字符串 */itoa(int i,char* string) { int power, j; j=i; for(power=1;j>=10;j/=10) power*=10; for(;power>0;power/=10) { *string++=’0’+i/power; i%=power; }原创 2021-03-06 12:01:36 · 12981 阅读 · 2 评论 -
指针与引用的区别
指针和引用在功能上的相似,很容易混淆这两个概念,现在总结以下二者的区别,希望大家能彻底弄清这两个概念根本性的差别: 引用,一个变量的别名,为什么引入别名呢?原因是我们想定义一个变量,他共享另一个变量的内存空间,使用别名无疑是一个好的选择。变量是什么?是一个内存空间的名字,如果我们给这个内存空间在起另外一个名字,那就是能够共享这个内存了,引用(别名)的由此而来。 指针,指向另一个内存空间的变量,我们可以通过它来索引另一个内存空间的内容,本身有自己的内存空间。...原创 2020-05-17 09:06:44 · 199 阅读 · 0 评论 -
C语言打印菱形
打印菱形和心形图案1. 菱形源代码#include <stdio.h>int main() { int i, j; for (i = 1; i <= 5; i++) { //上半部分 for (j = 1; j <= 5 - i; j++) { printf(" "); } for (j = 1; j <= i; j++...原创 2020-04-28 12:21:40 · 1100 阅读 · 0 评论 -
打印九九乘法表
源代码#include <stdio.h>int main() { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { printf("%d*%d=%d\t", j, i, i*j); } printf("\n"); } return 0;}运行结果...原创 2020-04-28 12:13:58 · 280 阅读 · 0 评论 -
C语言逆序输出整数
在很多编程练习中都会遇到关于数字方面的题目,其中比较常见的一种是逆序输出整数。下面我给出一个最简单的例子。#include <stdio.h>int main(){ int x; int i; int sum=0; printf("请输入一个整数:"); scanf("%d",&x); while(x!=0) ...原创 2018-12-15 17:48:36 · 112638 阅读 · 52 评论 -
C语言交换两个数
很多人C语言初学者都会疑惑为什么交换两个数结果却不变。下面我就给大家详细介绍一下。首先贴出源代码,为了详细说明,我已经稍作修改了,并且添加了注释。#include <stdio.h>void swap(int a, int b){ int temp; //临时变量 temp = a; a = b; b = temp; prin...原创 2018-11-18 11:28:02 · 672 阅读 · 0 评论 -
《C语言变量》
1.1 变量我先举一个例子,如果我有一个仓库,我想把一些东西放进去,比如苹果、西瓜等等。1、首先,我是不是应该要知道我要放的东西体积多大,还有就是 需要找多大的空间能放得下它。计算机的存储空间就相当于这里的仓库。2、对仓库来说它并不知道是苹果还是西瓜,它只知道存放的是体积不一样大的物体,因为名字是我们人类命名的。计算机的存储空间就是用来存放数据的,同上面一样道理,它只知道里面存...原创 2018-08-10 08:39:55 · 157 阅读 · 0 评论