精华内容
下载资源
问答
  • C进阶

    2020-05-27 10:07:29
    e++) { if (((b == 2) + (a == 3)) == 1 && \ ((b == 2) + (e == 4)) == 1 && \ ((c == 1) + (d == 2)) == 1 && \ ((c == 5) + (d == 3)) == 1 && \ ((e == 4) + (a == 1)) == 1) { unsigned char flag = 0;...
    /*
    #include<stdio.h>
    #include<Windows.h>
    
    unsigned char i = 0;
    int main()
    {
    	for (i = 0; i <= 255; i++)
    	{
    		printf("hello world\n");
    	}
    	system("pause");
    	return 0;
    }死循环
    */
    
    /*
    #include<stdio.h>
    #include<Windows.h>
    
    int main()
    {
    	char a[1000];
    	int i;
    	for (i = 0; i < 1000; i++)
    	{
    		a[i] = -1 - i;
    	}
    	printf("%d\n",strlen(a));
    	system("pause");
    	return 0;
    }255
    */
    
    /*凶手问题:
    #include<stdio.h>
    #include<Windows.h>
    
    void FindKiller()
    {
    	char killer = 'A';
    	for (; killer <= 'D'; killer++){
    		if (((killer != 'A') + (killer == 'C') + (killer == 'D') + (killer != 'D')) == 3){
    			printf("found you! : %c\n", killer);
    		}
    	}
    }
    int main()
    {
    	FindKiller();
    	system("pause");
    	return 0;
    }*/
    
    /*名次问题:
    #include<stdio.h>
    #include<Windows.h>
    
    void Game()
    {
    	int a = 1;
    	for (; a <= 5; a++)
    	{
    		int b = 1;
    		for (; b <= 5; b++)
    		{
    			int c = 1;
    			for (; c <= 5; c++)
    			{
    				int d = 1;
    				for (; d <= 5; d++)
    				{
    					int e = 1;
    					for (; e <= 5; e++)
    					{
    						if (((b == 2) + (a == 3)) == 1 && \
    							((b == 2) + (e == 4)) == 1 && \
    							((c == 1) + (d == 2)) == 1 && \
    							((c == 5) + (d == 3)) == 1 && \
    							((e == 4) + (a == 1)) == 1)
    						{
    							unsigned char flag = 0; 
    							flag |= (1 << (a - 1));
    							flag |= (1 << (b - 1));
    							flag |= (1 << (c - 1));
    							flag |= (1 << (d - 1));
    							flag |= (1 << (e - 1));
    							if (flag == 0x1F)
    							{
    								printf("a: %d, b: %d, c: %d, d: %d, e: %d\n", a, b, c, d, e);
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    }
    
    int main()
    {
    	Game();
    	system("pause");
    	return 0;
    }*/
    
    
    /*杨辉三角
    #include<stdio.h>
    #include<Windows.h>
    
    #pragma warning(disable:4996)
    void ShowYang(int n)
    {
    	int arr[10][10];
    	int i = 0;
    	int j = 0;
    	for (; i < n; i++)
    	{
    		for (j = 0; j <= i; j++)
    		{
    			arr[i][j] = 1;
    		}
    	}
    
    	for (i = 2; i < n; i++)
    	{
    		for (j = 1; j < i; j++)
    		{
    			arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
    		}
    	}
    
    
    	for (i = 0; i < n; i++)
    	{
    		for (j = 0; j <= i; j++)
    		{
    			printf("%d ", arr[i][j]);
    		}
    		printf("\n");
    	}
    }
    
    int main()
    {
    	int n ;
    	scanf("%d",&n);
    	ShowYang(n);
    	system("pause");
    	return 0;
    }*/

     

    展开全文
  • C 进阶笔记

    2021-02-28 20:11:51
  • C进阶习题一

    2020-03-24 12:58:43
    C进阶习题一 码字不易,对你有帮助 点赞/转发/关注 支持一下作者 微信搜公众号:不会编程的程序圆 看更多干货,获取第一时间更新 答案已上传至我的 Github 上,地址在文末,欢迎 star 1.打印杨辉三角 1 1 1 1 2 1 ...

    C进阶习题一

    码字不易,对你有帮助 点赞/转发/关注 支持一下作者
    微信搜公众号:不会编程的程序圆
    看更多干货,获取第一时间更新

    答案已上传至我的 Github 上,地址在文末,欢迎 star

    1.打印杨辉三角

    1
    1    1
    1    2    1
    1    3    3    1
    1    4    6    4    1
        ...
    

    2. 字符串旋转

    写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。

    例如:给定s1 =AABCD和s2 = BCDAA,返回1
    给定s1=abcd和s2=ACBD,返回0.

    AABCD左旋一个字符得到ABCDA
    AABCD左旋两个字符得到BCDAA
    AABCD右旋一个字符得到DAABC

    3. 字符串左旋

    实现一个函数,可以左旋字符串中的k个字符。
    
    例如:
    ABCD左旋一个字符得到BCDA
    ABCD左旋两个字符得到CDAB
    

    4. 杨氏矩阵

    有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。

    要求:时间复杂度小于O(N);

    可以先不去管复杂度问题,这里给出一种方便理解的算法。参考文章

    5. qsort 实现

    6. 猜凶手日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。

    以下为4个嫌疑犯的供词:

    A说:不是我。

    B说:是C。

    C说:是D。

    D说:C在胡说

    已知3个人说了真话,1个人说的是假话。

    现在请根据这些信息,写一个程序来确定到底谁是凶手。

    7. 猜名次

    5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:

    A选手说:B第二,我第三;

    B选手说:我第二,E第四;

    C选手说:我第一,D第二;

    D选手说:C最后,我第三;

    E选手说:我第四,A第一;

    比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

    在 Github 上看更全的目录:https://github.com/hairrrrr/C-CrashCourse

    代码已上传到 Github 上对应的目录下。


    以上就是本次的内容。

    如果文章有错误欢迎指正和补充,感谢!

    最后,如果你还有什么问题或者想知道到的,可以在评论区告诉我呦,我可以在后面的文章加上你们的真知灼见​​。

    关注我,看更多干货!

    我是程序圆,我们下次再见。

    展开全文
  • C进阶 指针进阶习题

    2020-03-09 22:19:46
    指针进阶习题 问题1. #include <stdio.h> #include <stdlib.h> int main(){ int a[5] = { 1, 2, 3, 4, 5 }; int* Ptr = (int*)(&a+1); // 数组指针+1跳过整个数组(int(*)[5]类型) printf("%d...

    指针进阶习题
    问题1.

    #include <stdio.h>
    #include <stdlib.h>
    
    
    int main(){
    
    	int a[5] = { 1, 2, 3, 4, 5 };
    	int* Ptr = (int*)(&a+1); //  数组指针+1跳过整个数组(int(*)[5]类型)
    
    	printf("%d,%d\n",*(a+1),*(Ptr-1));// a+1 指首元素的地址+1,然后在进行解引用
    	system("pause");
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    问题2.

    #include <stdio.h>
    #include <stdlib.h>
    
    struct Test {
    	int Num;
    	char* pcName;
    	char cha[3];
    	short Sba[4];
    };
    
    int main(){
    	struct Test* p = (struct Test*)0x100000;
    
    	printf("%d\n",sizeof(struct Test));// 20个字节
    	printf("%p\n",p + 0x1);//0x100014
    
    	printf("%p\n",(unsigned long)p+0x1);//0x100001 (unsigned long)p强制转换整型,相当于整数+1
    	printf("%p\n", (unsigned int*)p + 0x1);//0x100004
     
    	printf("%d",sizeof(unsigned long ));
    	system("pause");
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    问题3.

    #include <stdlib.h>
    #include <stdlib.h>
    
    int main(){
    	int a[4] = { 1, 2, 3, 4 };
    	int* Ptr1 = (int*)(&a+1);
    	int* Ptr2 = (int*)((int)a + 1);
    
    	printf("%x,%x\n",Ptr1[-1],*Ptr2);
    
    
    
    	system("pause");
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    问题4.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
    
    	//长度为3个元素的一维数组,每一个元素的长度是2
    	//逗号表达式,其值等于最后一个元素的长度int a=(1,2,3,4,5) a的值为5
    	int a[3][2] = { (0,1), (2,3), (4,5) };
    	int* p;
    	p = a[0];
    	printf("%d\n", p[0]);
    	printf("%d\n",a[0][0]);
    
    	system("pause");
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    问题5.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
    
    	int a[5][5];//二维数组
    	int(*p)[4];//数组指针  p指向长度为4的一维数组int[4]
    	p = a;
    	printf("%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);
    	system("pause");
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    二维数组在调用的时候可以使用数组指针的形式进行调用表示.
    二维数组的表示:

    int a[5][5];
    int a[][5];
    int(*p)[5];

    问题6.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
    	//二维数组,长度为2个元素的一维数组,每一个元素的长度为5
    	int aa[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    	int* Ptr1 = (int*)(&aa+1);//数组指针 +1 跳过整个数组 指向10后面的地址
    	int* Ptr2 = (int*)(*(aa+1));// 首元素的地址+1 aa[0]+1指向aa[1]的地址(即6后面的地址)
    	//*(aa+1)=aa[1]
    	printf("%d,%d\n",*(Ptr1-1),*(Ptr2-1));//10 5
    
    	system("pause");
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    问题7.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
    	char* a[] = { "work", "at", "alibaba" };
    	char** pa = a;
    	pa++;//pa=pa+1
    
    	printf("%s\n",*pa);
    	//%s的含义就是从0x200开始往后打印,一直打印到\0的结束
    	system("pause");
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    问题8.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(){
    
    	char* c[] = { "ENTER", "NEW", "POINT", "FIRST" };
    	char**cp[] = { c + 3, c + 2, c + 1, c };
    	char*** cpp = cp;
    
    
    	printf("%s\n", **++cpp);//从右到左依次计算
    	printf("%s\n", *--*++cpp + 3);//
    	printf("%s\n",*cpp[-2]+3);//*cpp[-2]=* *(cpp-2)
    
    	printf("%s\n",cpp[-1][-1]+1);//cpp[-1]=*(cpp-1)   *(x-1)
    
    
    	
    	system("pause");
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    写一个函数打印arr数组的内容,不使用数组下标,使用指针

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    	//在这里完成代码a
    	int size = sizeof(arr)/sizeof(arr[0]);
    	//int* p = &arr[0];
    	int* p = arr;
    	for (int i = 0; i < size;i++){
    		printf("%d\n",*(p+i));
    	}
    	system("pause");
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述

    #include <stdlib.h>
    #include <stdio.h>
    
    int main(){
    	int arr[] = { 1, 2, 3, 4, 5 };
    	short* p = (short*)&arr[0];
    
    	for (int i = 0; i<4; i++){
    		*(p + i) = 0;
    	}
    
    	for (int i = 0; i<5; i++){
    		printf("%d ", arr[i]);//0  0  3  4  5 
    	}
    	system("pause");
    	return 0;
    }
    

    运行结果:

    在这里插入图片描述

    #include <stdlib.h>
    #include <stdio.h>
    
    int main(){
    	int arr[] = { 1, 2, 3, 4, 5 };
    	char* p = (char*)&arr[0];
    
    	for (int i = 0; i<4; i++){
    		*(p + i) = 0;
    	}
    	for (int i = 0; i<5; i++){
    		printf("%d ", arr[i]);//0  2  3  4  5
    	}
    	printf ("\n");
    	system("pause");
    	return 0;
    }
    

    根据类型解引用所占的字节数来进行判定.
    运行结果:
    在这里插入图片描述

    展开全文
  • C 进阶: Var Args 可变参数 文章目录C 进阶: Var Args 可变参数简介参考正文固定参数函数标准库 简介 学习过 C 语言肯定写过 printf("Hello Wolrd!"); 这句,其中使用的 printf 便是一种接受可变长参数的函数。我们...
  • 码字不易,对你有帮助 点赞/转发/关注 支持一下作者 微信搜公众号:不会编程的程序圆看更多干货,获取第一时间更新想看更好的排版可以阅读原文C进阶习题一​mp.weixin.qq.com答案已上传至我的 Github 上,地址在文末...
  • C 进阶数组

    2021-03-09 21:38:08
    #include <malloc.h> #include <string.h> #include <ctype.h> #include "stdio.h" ... * c是数组首元素的地址c+1 步长4个字节 &c 是整个数组的地址&+1 步长200个字节 * @r.
  • C 进阶结构体

    2021-03-09 22:13:07
    #include #include #include #include "stdio.h" /** * * 结构体 * */ //定义了一个数据类型 固定大小内存块的别名 还没有分配内存 struct Teacher3{ char name[64]; int age;... } C 进阶学习笔记汇总
  • C进阶 联合体

    2020-03-27 23:06:39
    联合体的应用 联合体中的各个成员共用一块内存空间 应用1.大小端字节序的的判定 #include <stdio.h>... char c; }; typedef union Un Un; int IsLittleEnd(){ Un un; un.i = 0x11223344; if...
  • C 进阶常量const

    2021-03-08 22:33:46
    #include <malloc.h> #include <string.h> #include <ctype.h> #include "stdio.h" /** * const 常量只读 * 只读的指针 只读的内存空间 ... const char *c; char *const d; const char *con.
  • C 进阶多维数组

    2021-03-09 21:56:38
    #include #include #include #include "stdio.h" /** * * 多维数组 : * @return */ int main1() { char a[3][4]={"111","1sf"}; for(int i=0;i;i++){ for(int j=0;j;j++){ printf("%c",a[i][j]...i C 进阶学习笔记汇总
  • c进阶-attribute

    2020-09-14 14:51:26
    c++:_attribute_ 使用: https://blog.csdn.net/qq_30968657/article/details/55049341
  • C进阶-pragma

    2020-09-13 19:29:40
    C语言#pragma使用方法 https://blog.csdn.net/liuchunjie11/article/details/80502529
  • C进阶习题二

    2020-03-24 13:10:41
    求两数平均值 在 Github 上看更全的目录:https://github.com/hairrrrr/C-CrashCourse 代码已上传到 Github 上对应的目录下。 以上就是本次的内容。 如果文章有错误欢迎指正和补充,感谢! 最后,如果你还有什么...
  • C进阶作业一

    2019-05-15 10:47:47
    1.实现一个函数,可以左旋字符串中的k个字符。 void Left(char a[], int n, int k){ int i = 0; while (n){ char tmp = a[0]; for (i = 0; i < k; ++i){ a[i] = a[i + 1]; } ... ...
  • #include #include #include #include "stdio.h" /** * * 结构体作为函数参数输入 * */ typedef struct Teacher{ char name[64]; int age; int id; } Teacher; //打印 void printTeacherAge...i C 进阶学习笔记汇总
  • c进阶代码练习

    2017-11-02 20:57:37
    调整数组使奇数全部位于偶数前面 杨氏矩阵中寻找目标数字
  • C进阶——宏定义

    2020-09-13 15:38:26
    宏定义 #define是预处理器处理的单元实体之一 #define定义的宏可以出现在程序的任意位置 #define定义之后的代码都可以使用这个宏 宏定义宏常量 #define定义的宏常量可以直接使用 ...#define定义的宏常量本质为字面...
  • C进阶--struct相关

    2019-11-19 18:23:58
    最近主要是在看C语言进阶方面的书籍,这里记录一下里面的实例。这些内容一般在面试或者有的公司中编程规范中会涉及。 二、实例 #include <stdio.h> typedef struct { char a; int b; char c; }...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,180
精华内容 3,272
关键字:

c进阶