![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
Damn_Yang
天空电闪又雷鸣
展开
-
大小写转换(编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。)
#include<stdio.h>int main(){ int ch; printf("请输入一个字符:\n"); while ((ch = getchar()) != EOF) { if (ch >= 'a'&&ch <= 'z') printf("%c\n", ch - 32); else if (ch >= 'A...原创 2018-11-07 17:37:24 · 116506 阅读 · 0 评论 -
有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".要求:不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。#include<stdio.h>#include <string.h>#include <assert.h>void reverse_arr(char* lef...原创 2018-09-13 19:38:29 · 225 阅读 · 0 评论 -
1.不使用(a+b)/2这种方式,求两个数的平均值 2.编程实现:一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。(使用位运算)
1.不使用(a+b)/2这种方式,求两个数的平均值#include<stdio.h> int main(){ int a = 15; int b = 5; printf("%d\n", (a + b) >> 1); system("pause");}右移一位相当于除以2,所以直接右移一位就可以算出(a+b)的平均值了2.编程实现:一组数据中只...原创 2018-09-13 19:36:13 · 213 阅读 · 0 评论 -
编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回 值value的二进制位模式从左到右翻转后的值。
1.#include <stdio.h>#include <math.h>unsigned int reverse_bit(unsigned int value){ int i = 0; unsigned int sum = 0; for (i = 0; i < 32; i++) { sum += ((value >> i) &a...原创 2018-09-13 19:28:55 · 126 阅读 · 0 评论 -
写一个宏可以将一个数字的奇数位和偶数位交换。使用宏实现两个数中求较大值。
1.#include <stdio.h>#define SWAP(x) (((x&(0x55555555)) << 1) | ((x&(0xAAAAAAAA)) >> 1))//0x55555555是十六进制的10101010101010101010101010101010,int main(){ int x = 0; pri...原创 2018-09-13 17:26:20 · 216 阅读 · 0 评论 -
1.模拟实现strncpy 2.模拟实现strncat 3.模拟实现strncmp
1.模拟实现strncpy//1.模拟实现strncpy#include <stdio.h>#include <windows.h>#include <assert.h>char *my_strncpy(char *dst, const char *src, int n){ assert(dst); assert(src); assert...原创 2018-09-17 18:42:41 · 487 阅读 · 0 评论 -
模仿qsort的功能实现一个通用的冒泡排序
#include<stdio.h>//模仿qsort的功能实现一个通用的冒泡排序。#include<stdlib.h>int cmp(const void *m, const void *n){ return *(char *)m - *(char *)n;}void swap(char *p1, char *p2, int width){ int i =...原创 2018-09-17 18:39:29 · 292 阅读 · 0 评论 -
指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
指针数组指针数组是指针,是一个存放指针的数组。//int *arr1[10]数组指针数组指针是指针;我们已经知道:整形指针:int* pint; 能够指向整型数据的指针。浮点型指针:floar* pf; 能够指向浮点型的指针。而数组指针是指针,这个指针是有能力指向一个数组的。看一个简单的数组指针的定义:int (*p) [10]; 解释:p先和*结...原创 2018-09-17 18:36:38 · 202 阅读 · 0 评论 -
宏和函数的区别
宏通常被应用于执行简单的运算。比如在两个数中找出较大的一个。#define MAX(a, b) ((a)>(b)?(a):(b))那为什么不用函数来完成这个任务? 原因有二:1. 用于调用函数和从函数返回的代码可能比实际执行这个小型计算工作所需要的时间更更多。所 以宏比函数在程序的规模和速度方面更胜⼀一筹。2. 更更为重要的是函数的参数必须声明为特定的类型。所以函数只能在类型合适的表达...原创 2018-09-08 14:51:02 · 475 阅读 · 0 评论 -
数组相关计算
数组名代表数组只有两种情况sizeof(数组名) 这里的数组名表示整个数组&数组名 这里的数组名表示整个数组 1.#include <stdio.h>int main(){ int a[] = { 1, 2, 3, 4 }; printf("%d\n", sizeof(a)); //16 整个数组大小 printf("%d\n", ...原创 2018-09-05 20:23:15 · 243 阅读 · 0 评论 -
数组相关知识
一维数组的创建和初始化创建:int arr[10]; [ ]内要给一个常量,不能使用变量初始化:int arr1[10] = {1,2,3}; int arr2[] = {1,2,3,4}; int arr3[5] = {1,2,3,4,5} char arr4[3] = {'a',98, 'c'};...原创 2018-09-05 19:51:49 · 271 阅读 · 0 评论 -
在屏幕上打印杨辉三角。
#include<stdio.h>#include<stdlib.h>int main(){ int i, j, k, arr[10][10] = { 0 }; printf("打印出杨辉三角:\n"); for (i = 0; i<10; i++) { arr[i][0] = 1; arr[i][i] = 1; } for (i = 2;...原创 2018-05-22 21:08:33 · 183 阅读 · 0 评论 -
杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
//杨氏矩阵有一个二维数组.数组的每行从左到右是递增的,每列从上到下是递增的.在这样的数组中查找一个数字是否存在。时间复杂度小于O(N);数组:1 2 32 3 43 4 51 3 42 4 54 5 6#include<stdio.h> void find(int arr[3][3], int k, int row, int col){ i...原创 2018-09-13 19:48:54 · 154 阅读 · 0 评论 -
1.实现一个函数,可以左旋字符串中的k个字符。 2.判断一个字符串是否为另外一个字符串旋转之后的字符串。
1.实现一个函数,可以左旋字符串中的k个字符ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB #include<stdio.h>#include<string.h>void left_move(char*str, int k){ char tmp = 0; int len = strlen(str); while (k--) {...原创 2018-09-13 20:00:58 · 120 阅读 · 0 评论 -
结构体内存对齐,位段,枚举+联合
1.结构体内存对齐结构体内存对齐规则1.第一个成员在与结构体变量偏移量为0的地址处2.其他成员变量要对齐到对齐数的整数倍的地址处。对齐数=编译器默认的一个对齐数与该成员大小的 较小值 vs中默认的值为8,linux中的默认值为43.结构体总大小为最大对齐数(每一个成员变量都有一个对齐数)的整数倍4.如果嵌套了结构体的情况,嵌套结构体对齐到自己最大对齐数的整数倍处,结构体...原创 2018-10-31 12:57:30 · 329 阅读 · 0 评论 -
写冒泡排序可以排序多个字符串。
//写冒泡排序可以排序多个字符串#include <stdio.h> #include <string.h> void bubble_sort_str(char *str[], int sz){ int i = 0; int j = 0; for (i = 0; i < sz - 1; i++) { for (j = 0; j < s...原创 2018-09-15 14:56:34 · 159 阅读 · 0 评论 -
使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。例如:命令行参数输入:test.exe -a 1 2执行1+2输出3。#include <stdio.h>int main(int argc, char *argv[]){ in...原创 2018-09-15 14:55:48 · 266 阅读 · 0 评论 -
1.模拟实现strcpy 2.实现strcat 3.实现strstr 4.实现strchr 5.实现strcmp 6.实现memcpy 7.实现memmove
1.模拟实现strcpy //模拟实现strcpy#include <stdio.h> char *my_strcpy(char *dest, const char *str){ char *ret = dest; while (*dest++ = *str++) ; return ret;}int main(){ char arr1[20] = { ...原创 2018-09-15 14:53:59 · 229 阅读 · 0 评论 -
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现。
1.一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字,编程实现。#include<stdio.h>#include<stdio.h>int main(){ int arr[] = { 1, 3, 8, 1, 3, 8, 4, 6 }; int num = 0; int sz = sizeof(arr) / sizeof(arr[...原创 2018-09-15 14:46:43 · 225 阅读 · 0 评论 -
模拟实现printf函数,可完成下面的功能
模拟实现printf函数,可完成下面的功能////能完成下面函数的调用。//print("s ccc d.\n","hello",'b','i','t',100);//函数原型://print(char *format, ...)//#include<stdio.h>#include<stdarg.h>void print_int(int n){ ...原创 2018-09-15 14:40:47 · 215 阅读 · 0 评论 -
使用可变参数,实现函数,求函数参数的平均值和最大值
1.使用可变参数,实现函数,求函数参数的平均值。#include<stdio.h> #include<stdlib.h> #include <stdarg.h> int average(int num, ...)//第一个参数传的是参数的个数,后面三个点代表可变参数列表 { int sum = 0; va_list a...原创 2018-09-15 14:39:46 · 661 阅读 · 0 评论 -
可变参数
C语言中的可变参数是一个比较有意思的实现,通过将函数实现为可变参数的形式,可以使得函数可以接受1个以上的任意多个参数(不固定)。实现一个函数可以求任意个参数的平均值。 #include <stdio.h> #include <stdarg.h> int average(int n, ...) { va_list arg; int i = 0...原创 2018-09-15 14:34:22 · 165 阅读 · 0 评论 -
有关递归的简单题目
1.递归和非递归分别实现求第n个斐波那契数。递归#include<stdio.h>int fib(int n){ if (n <= 2) return 1; else return fib(n - 1) + fib(n - 2);}int main(){ int n = 10; int ret = fib(n); printf("%d\n", ...原创 2018-09-15 11:34:24 · 264 阅读 · 0 评论 -
函数的调用过程,栈帧的创建和销毁。
#include<stdio.h>int Add(int x, int y){ int z = 0; z = x + y; return z; }int main(){ int a = 10; int b = 20; int ret = 0; ret = Add(a, b); printf("...原创 2018-09-15 11:23:57 · 170 阅读 · 0 评论 -
自定义类型 结构体类型创建 结构体初始化
结构体结构体的基础知识:结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构体的声明:struct tag //struct是结构体关键字,tag为结构体标签{ member-list; //成员列表}variable-list;//变量列表例如描写一个学生struct Stu { char name[20]; //名字...原创 2018-09-19 23:20:23 · 1886 阅读 · 0 评论 -
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯 的一个。以下为4个嫌疑犯的供词。
//凶手为1,不是凶手为0#include <stdio.h> int main(){ int A = 0, B = 0, C = 0, D = 0; int FD;//因为c和d的供词刚好对立 表示对立的 int i; for (i = 1; i <= 4; i++) { if (i == 1)//A说的假 { A = 1; C = ...原创 2018-05-22 21:07:48 · 330 阅读 · 0 评论 -
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#include <stdio.h> #include <stdlib.h> int Forecast(int arr[])//判断预测结果 { if ((...原创 2018-05-22 21:06:38 · 235 阅读 · 0 评论 -
实现一个函数,判断一个数是不是素数。
#include <stdio.h>#include<stdlib.h>int prime(num){ int i; for (i = 2; i < num / 2; i++) { if (num%i == 0) return 0; else return 1; }}int main(){ int num; int ret...原创 2018-05-21 21:28:53 · 435 阅读 · 0 评论 -
求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。
在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数:153 = 1^3 + 5^3 + 3^3。370 = 3^3 + 7^3 + 0^3。371 = 3^3 + 7^3 + ...原创 2018-05-19 12:53:49 · 462 阅读 · 0 评论 -
在屏幕上输出一个菱形
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <Windows.h> //Sleep()的头文件int main(){ char arr1[] = "*************"; char arr2[] = " * "; c...原创 2018-05-19 12:48:02 · 295 阅读 · 0 评论 -
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
#include<stdio.h>int main(){ double sum; int i; for (sum = 0, i = 1; i <= 100; i++) { if (i % 2 == 1) { sum += 1.0 / i; } else if (i % 2 == 0) { sum -= 1.0 / i; }...原创 2018-05-17 21:29:07 · 785 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
#include <stdio.h>#include <stdlib.h>void swap(int num1[], int num2[], int length){ int i = 0; for (i = 0; i < length; i++) { int tmp = num1[i]; num1[i] = num2[i]; num2[i]...原创 2018-05-17 21:27:07 · 140 阅读 · 0 评论 -
求两个数的最大公约数。
#include<stdio.h>int main(){ int m, n, p; printf("输入两个数:"); scanf_s("%d%d", &m, &n); while (m%n != 0) { p = m%n; m = n; n = p; } printf("最大公约数是%d\n", n); system("pause"原创 2018-05-17 21:25:49 · 174 阅读 · 0 评论 -
将三个数按从大到小输出。
#include<stdio.h>int main(){ int a, b, c; int t; printf("输入abc的值\n"); scanf_s("%d %d %d", &a, &b, &c); if (a<b) { t = a; a = b; b = t; } if (a...原创 2018-05-17 21:23:14 · 303 阅读 · 0 评论 -
求10 个整数中最大值。
#include<stdio.h>#include<stdlib.h>int main(){ int arr[10]; int i, max; for (i = 0; i < 10; i++) scanf_s("%d", &arr[i]); max = arr[0]; for (i = 0; i < 10; i++) { i...原创 2018-05-17 21:19:42 · 180 阅读 · 0 评论 -
三种方法交换两个值的内容
方法一:创建临时变量#include "stdio.h"int main(){int a = 10;int b = 20;int tmp = 0; tmp=a;a = b;b = tmpprintf("%d,%d\n", a, b);return 0;}方法二:不用创建临时变,用加法来实现int main(){ int a = 10; int b ...原创 2018-05-17 21:17:16 · 270 阅读 · 0 评论 -
判断1000年---2000年之间的闰年
首先介绍一下闰年的概念: 普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年,1999年不是闰年);世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年); //四年一闰,百年不闰,四百年再闰#include <stdio.h>int main(){ int count = 0; int ...原创 2018-05-17 21:04:04 · 366 阅读 · 0 评论 -
C语言实现乘法口诀表
#include<stdio.h>int main(){ int i, j; for (i = 1; i <= 9; i++) { for (j = 1; j <= i; j++) printf("%d*%d=%-2d ",i,j, i*j); printf("\n"); } return 0;}输出结果如下: ...原创 2018-05-17 21:01:42 · 493 阅读 · 0 评论 -
打印100~200 之间的素数
#include<stdio.h>int main(){ int n, num; int i; for (n = 101; n <= 200; n++) { num = 0;//每次都要初始化num for (i = 2; i < n; i++) { if (n%i==0) num++; } if (num == 0) ...原创 2018-05-17 20:54:57 · 381 阅读 · 0 评论 -
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222
#include<stdio.h>int main(){ int i, j, num; int sum = 0; scanf_s("%d", &num); for (i = 0; i < 5; i++) { j = i * 10 + num; sum = j + sum; } printf("%d", sum); system("pause"...原创 2018-05-19 12:54:38 · 227 阅读 · 0 评论