C基础练习
空
贪心的柠檬
正在努力学习的小菜鸟……
展开
-
打印杨辉三角
打印杨辉三角int main(){ int arr[9][9] = { 0 }; int i = 0; int j = 0; for (i = 0; i < 9; i++) { for (j = 0; j < 9; j++) { if (j == 0)//第一列为1 { arr[i][j] = 1; } if (i == j)//对...原创 2020-02-23 14:52:44 · 93 阅读 · 0 评论 -
用reverse_string实现字符串的逆置
用reverse_string实现字符串的逆置1.非递归实现#include<assert.h>int my_Strlen(const char* str)//模拟实现strlen{ int count = 0; assert(str != NULL);//断言 while (*str++ != '\0') { count++; } return count;...原创 2020-02-22 10:48:35 · 550 阅读 · 0 评论 -
输入一个无符号整数,取出每位且求和
输入一个无符号整数,取出每位且求和int Digitsum(unsigned int n){ if (n <= 9) { return n; } else { return Digitsum(n / 10) + n % 10; }}int main(){ unsigned int num = 0; scanf_s("%d", &num); int ...原创 2020-02-22 10:46:17 · 658 阅读 · 0 评论 -
操作符
操作符详解1.算术操作符:+ – * / %笔记:(1)% 操作符的两个操作数必须为整数,返回的是整除之后的余数(2)除了 % 操作符之外,其余均可以作用于整数和浮点数(3)对于 / 操作符如果两个操作数都为整数,执行整数除法;而只要有浮点数执行的就是浮点数除法,返回的是整除之后的商2.移位操作符:(1)>> 右移操作符(类似于/2)...原创 2020-02-19 16:54:04 · 134 阅读 · 0 评论 -
关于数组
一维数组的创建和初始化1.数组:数组是一组相同类型元素的集合。创建方式如下:type_t arr_name[const_n];//type_t 是指数组的元素类型//arr_name 是数组的名字//const_n 是一个常量表达式,用来指定数组的大小(必须是常量)实例:int arr1[10];char arr2[10];2.数组的初始化:在创建数组的同时给数组的内容...原创 2020-02-13 22:45:55 · 168 阅读 · 0 评论 -
递归与迭代
一.递归的两个必要条件:1.存在限制条件,当满足这个限制条件的时候,递归便不再继续。2.每次递归调用之后越来越接近这个限制条件。二.迭代与循环的关系:迭代>=循环练习:求n的阶乘(递归)#include<stdio.h>int Fac(int m){ if (m<= 1) { return 1;//如果m<=1,阶乘为1 } else {...原创 2020-02-13 20:36:42 · 138 阅读 · 0 评论 -
借用指针交换两个变量
借用指针交换两个变量#include<stdio.h>void swab(int* pa, int* pb){ int tmp = *pa;//*pa=a *pa = *pb;//*pb=b *pb = tmp;}int main(){ int a = 10; int b = 20; printf("%d %d\n", a, b); swab(&a, ...原创 2020-02-05 18:48:02 · 175 阅读 · 0 评论 -
猜数字小游戏
猜数字小游戏笔记:1. do while 循环至少会执行一次2.rand可生成随机数,但是在使用前必须调用srand,srand是设置生成随机数的起点,放在main函数中,设置一次就好。#include<stdio.h>#include<time.h>#include<stdlib.h>void meau()//菜单{ printf("****...原创 2020-02-02 21:35:01 · 164 阅读 · 0 评论 -
寻找10个数中的最大值
寻找10个数中的最大值#include<stdio.h>int main(){ int arr[] = { -4,4,6,3,90,8,9,5,-3,56 }; int max = arr[0];//暂且以第一个数为最大值(不可赋值为0,因为可能会出现负数) int i = 0; for (i = 1; i < 10; i++)//从第二个开始比较,第一个已经为最大...原创 2020-01-23 22:09:59 · 607 阅读 · 0 评论 -
给定两个整型变量的值,交换两个值的内容
给定两个整型变量的值,交换两个值的内容方法一:创建临时变量#include<stdio.h>int main(){ int num1 = 2;//变量一 int num2 = 4;//变量二 int tmp = 0; //临时变量 printf("num1=%d num2=%d\n", num1, num2);//原始序列输出 tmp = num1; num1 = ...原创 2020-01-23 21:56:36 · 377 阅读 · 0 评论 -
打印1000到2000之间的闰年
打印1000到2000之间的闰年主要思路:1.能被4整除但是不能被100整除2.能被400整除方法一:#include<stdio.h>int main(){ int year = 0; int count = 0;//计数器 for (year = 1000; year <= 2000; year++) { if (year % 4 == 0)//能被...原创 2020-01-20 22:55:12 · 320 阅读 · 0 评论 -
两个数求和
两个数求和从键盘输入两个数#include<stdio.h>int main(){ int num1 = 0; int num2 = 0; int sum = 0; printf("请输入两个数:"); scanf_s("%d%d", &num1, &num2); sum = num1 + num2; printf("sum=%d\n", sum)...原创 2020-01-18 22:52:14 · 898 阅读 · 1 评论 -
求n的k次方(递归)
求n的k次方(递归)double Pow(int n, int k){ if (k == 0) { return 1.0; } else if (k > 0) { return 1.0*n*Pow(n, k - 1); } else { return 1.0/Pow(n, -k); }}int main(){ int n = 0; int k = ...原创 2020-02-22 10:45:28 · 395 阅读 · 0 评论 -
编写函数,不允许创建临时变量,求字符串长度
编写函数,不允许创建临时变量,求字符串长度笔记:strlen以\0为结束标志,但是不算\0方法一://my_strlen("abc")//1+my_strlen("bc")//1+1+my_strlen("c")//1+1+1+my_strlen("")//1+1+1+0=3int my_strlen(char* str)//数组的第一个字符是整个数组的首地址,所以用指针{ i...原创 2020-02-12 13:32:22 · 216 阅读 · 0 评论 -
求1/1-1/2+1/3-1/4···········+1/99-1/100的值
求1/1-1/2+1/3-1/4···········+1/99-1/100的值笔记:除号两端至少有一个操作数为小数才能保证算出的答案为小数#include<stdio.h>int main(){ int i = 0;//分母 double sum = 0.0; int flag = 1;//标志位 for (i = 1; i <= 100; i++)//求和 ...原创 2020-02-03 18:15:41 · 482 阅读 · 0 评论 -
求100到200之间的素数
求100到200之间的素数的几种方法方法一:范围为2到i-1#include<stdio.h>int main(){ int i = 0; int j = 0; int count = 0;//计数器 for (i = 100; i <= 200; i++) { int flag = 1;//是素数 for (j= 2; j <i; j++)// ...原创 2020-01-20 22:03:48 · 1487 阅读 · 1 评论 -
计数器
计数器方法一:常规思路int Add(int x, int y)//加法{ return x + y;}int Sub(int x, int y)//减法{ return x - y;}int Mul(int x, int y)//乘法{ return x * y;}double Div(int x, int y)//除法{ return x / y;}void...原创 2020-02-23 21:11:15 · 124 阅读 · 0 评论 -
获取一个数二进制序列中所有的奇数位和偶数位,分别输出二进制序列
获取一个数二进制序列中所有的奇数位和偶数位,分别输出二进制序列int main(){ int n = 100; int i = 0; for (i = 31; i >= 1; i -= 2)//偶数位 { printf("%d ", (n >> i) & 1); } printf("\n"); for (i = 30; i >= 0; i -=...原创 2020-02-22 19:52:13 · 152 阅读 · 0 评论 -
写一个函数统计返回参数二进制中1的个数
写一个函数统计返回参数二进制中1的个数方法一:int count_one_bits(unsigned int n)//无符号数不论正负{ int count = 0;//计数器 while (n != 0) { if (n % 2 == 1) { count++; } n /= 2; } return count;}int main(){ int nu...原创 2020-02-22 19:51:21 · 277 阅读 · 0 评论 -
数组作为函数参数
冒泡排序void bubble_sort(int arr[], int sz){ //1.确定排序趟数 int i = 0; for (i = 0; i < sz - 1; i++)//若n个数则排n-1趟 { int flag = 1;//有序 //2.确定交换次数 int j = 0; for (j= 0; j <sz-i-1 ; j++)//若n个数则...原创 2020-02-15 19:39:40 · 109 阅读 · 0 评论 -
大小写转换,数字不输出
大小写转换,数字不输出笔记:1.EOF:文件结束标志2.字母大小写转换:大写转小写(ch+32);小写转大写(ch-32)3.getchar():接收一个字符4.putchar():输出一个字符5.isupper():判断大写6.islower():判断小写7.toupper():转大写8.tolower():转小写9.isdigit():判断数字方法一:int main(...原创 2020-02-15 18:53:35 · 282 阅读 · 0 评论 -
求0到999之间的水仙花数
求0到999之间的水仙花数主要思路:1.求位数2.求次方和3.判断是否为水仙花数#include<stdio.h>#include<math.h>int main(){ int i = 0;//全局变量 for (i = 0; i < 1000; i++) { //1.求位数 int count = 0;//统计位数 int tmp ...原创 2020-02-14 16:41:53 · 138 阅读 · 0 评论 -
从屏幕输入一个数字,调用递归依次输出数字的每一位
从屏幕输入一个数字,调用递归依次输出数字的每一位## 标题#include<stdio.h>void print(unsigned int n)//n=1234{ if (n > 9) { print(n/10);//123 } printf("%d ", n % 10);//4}int main(){ unsigned int num = 0; sc...原创 2020-02-09 13:44:20 · 601 阅读 · 0 评论 -
自定义函数日常练习
1.写一个函数判断一个数是不是素数#include<stdio.h>int is_prime(int n){ int m = 0; for (m = 2; m < n; m++) { if (n % m == 0) { return 0;//不是素数 } return 1;//素数 }}int main(){ int i = 0; i...原创 2020-02-05 21:18:44 · 643 阅读 · 0 评论 -
编写程序寻找1到100的所有整数中出现多少个数字9
编写程序寻找1到100的所有整数中出现多少个数字9笔记:除10商9(十位为9),模10余9(个位为9)#include<stdio.h>int main(){ int i = 0; int count = 0;//计数器 for (i = 1; i <= 100; i++) { if (i / 10 == 9)//除10余9(十位为9) { coun...原创 2020-02-03 18:27:43 · 250 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容交换,两个数组一样大
将数组A中的内容和数组B中的内容交换,两个数组一样大笔记:1.因为数组本身是地址,所以在交换的时候不能直接借助创建临时变量来实现交换2.计算数组元素个数用sizeof(arr)/sizeof(arr[0])#include<stdio.h>int main(){ int arr1[] = { 12,34,56,78 }; int arr2[] = { 21,43,65,...原创 2020-02-03 10:37:14 · 175 阅读 · 0 评论 -
编写代码模拟用户登录情景,最多只能输入三次密码,如果三次均输入错误,则退出程序
编写代码模拟用户登录情景,最多只能输入三次密码,如果三次均输入错误,则退出程序笔记:1.数组名本身就是一个地址2.字符串比较用strcmp3._s安全模式输入时要加数组长度(10或者sizeof(数组名)/sizeof(数组类型))#include<stdio.h>#include<string.h>int main(){ int i = 0; char...原创 2020-02-02 20:04:48 · 1194 阅读 · 2 评论 -
编写代码,演示多个字符从两端移动,向中间汇聚
编写代码,演示多个字符从两端移动,向中间汇聚笔记:1.字符串求长度用strlen(arr)2.字符数组求长度用sizeof(arr)/sizeof(arr[0])-13.strlen计算时不包含\0,而sizeof包含\0...原创 2020-02-02 19:15:19 · 114 阅读 · 0 评论 -
从一组有序的数组中查找具体的某个数n
从一组有序的数组中查找具体的某个数n主要思路:折半查找(必须有序)#include<stdio.h>int main(){ int arr[] = { 1,3,5,7,9,23,56,67 }; int n = 67; int left = 0;//左下标 int right = (sizeof(arr) / sizeof(arr[0])) - 1;//右下标 w...原创 2020-02-02 16:46:14 · 323 阅读 · 0 评论 -
求1加到10的阶乘
求1加到10的阶乘#include<stdio.h>int main(){ int n = 0; int m = 1;//储存阶乘 int sum = 0;//求和 for (n = 1; n <= 3; n++) { m = m * n; sum = sum + m; } printf("%d", sum); return 0;}...原创 2020-02-02 16:00:20 · 3326 阅读 · 0 评论 -
求n的阶乘
求n的阶乘#include<stdio.h>int main(){ int n = 0; int i = 0; int m = 1;//储存阶乘 scanf_s("%d", &n);//输入n for (i = 1; i <= n; i++) { m = m * i; } printf("%d\n", m); return 0;}...原创 2020-01-31 14:44:23 · 124 阅读 · 0 评论 -
求两个数的最大公约数
求两个数的最大公约数主要思路:辗转相除(不用比较大小)#include<stdio.h>int main(){ int a = 18; int b = 24; int c = 0; while (c = a % b) { a = b; b = c; } printf("%d\n", b); return 0;}...原创 2020-01-23 22:34:02 · 95 阅读 · 0 评论 -
打印1到100之间的奇数
打印1到100之间的奇数主要思路:1.模2等于1 为奇数2.num+=2方法一:模2等于1 为奇数#include<stdio.h>int main(){ int num = 0; int count = 0;//计数器 for (num = 1; num <= 100; num++) { if (num % 2 == 1) { printf(...原创 2020-01-21 15:13:29 · 2636 阅读 · 0 评论 -
打印乘法表
打印乘法表#include<stdio.h>int main(){ int i = 0;//i表示行数 int j = 0;//j表示列数 for (i = 1; i <= 9; i++) { for (j = 1; j <= i; j++)//打印一行 { printf("%d*%d=%-2d ", j, i, i*j);//-2d调整错位 ...原创 2020-01-20 22:28:11 · 672 阅读 · 0 评论