记录平时自己遇到的精彩代码,和自己的想法
写一个代码:打印100~200之间的素数#define _CRT_SECURE_NO_WARNINGS #include打印1000到2000之间的闰年int main() { int i = 100; int j = 0; int a = 0; do { j= i - 1; do { a = i % j; if (a == 0) { break; } j--; } while (j >= 2); if (a != 0) { printf("%d ",i); } i++; } while (i <= 200); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include给定两个数,求这个两个数的最大公约数// 求1000到2000年之间的闰年 int main() { int i = 0; for (i = 1000; i <= 2000; i++) { if (i % 4 == 0 && i % 100 != 0) // 普通闰年 { printf("%d ",i); } else if (i % 400 == 0) // 世纪闰年 { printf("%d ",i); } else { continue; } } return 0; }
#define _CRT_SECURE_NO_WARNINGS #include写一个代码打印1—100之间所有3倍的数字// 求两个数的最大公约数 int main() { int a = 40; int b = 20; int c = 0; while (1) { c = a % b; // 辗转相除 if (c != 0) { a = b; b = c; } else { printf("最大公约数是:%d",b); break; } } return 0; }
#define _CRT_SECURE_NO_WARNINGS #include写代码将三个整数按从小到大输出int main() { int a = 0; for (a = 1; a < 101; a++) { if (a % 3 == 0) //只有三的倍数,取模才等于0 { printf("%d ", a); } } return 0; }
#includeint main() { int a = 21; int b = 13; int c = 61; if (a >= b && a >= c) // 第一种可能,a最大 { printf("%dt",a); if (b >= c) { printf("%dt",b); printf("%d",c); } else { printf("%dt",c); printf("%d",b); } } else if (b >= a && b >= c) // 第二种可能b最大 { printf("%dt", b); if (a >= c) { printf("%dt", a); printf("%d", c); } else { printf("%dt", c); printf("%d", a); } } else // 第三种可能c最大 { printf("%dt",c); if (a >= b) { printf("%dt", a); printf("%d", b); } else { printf("%d", b); printf("%d", a); } } return 0; } // 第二种解法 if(a 冒泡算法 #define _CRT_SECURE_NO_WARNINGS #include将浮点数转换为整数类型,要求四舍五入//#include using namespace std; void bubblesort(int* arr, int len) { int i = 0; int j = 0; int tmp = 0; for (i = 0; i < len - 1; i++) { for (j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j + 1]) // 每次将最大数升到最前面 { tmp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = tmp; } } } } void printArray(int arr[], int len) { int k; for (k = 0; k < len; k++) { cout << arr[k] << endl; } } int main() { int arr[10] = { 1,2,3,4,5,6,67,7,9,10 }; int len = sizeof(arr) / sizeof(arr[0]); bubblesort(arr, len); // 冒泡 printArray(arr, len); // 打印数组 return 0; } #include注意下面的输入//将浮点数转换为整数类型,要求四舍五入 int main() { double a; scanf("%lf",&a); if (a>0) // 如果是正数,加0.5,然后强制转int { printf("%d",(int)(a+0.5)); } else // 如果是负数,加0.5,然后强制转int { printf("%d",(int)(a-0.5)); } return 0; } #include输出出生年月日int main() { int a=0; float b=0.0; // float初始化时,应该是浮点数 float c=0.0; float d=0.0; scanf("%d;%f,%f,%f",&a,&b,&c,&d); // 带有标点符号,怎么输入的我还不了解 printf("The each student score of No. %d is %.2f, %.2f, %.2f.",a,b,c,d); return 0; } #includeint main() { int a=0; int b=0; int c=0; scanf("%4d%2d%2d",&a,&b,&c); printf("year=%dnmonth=%02dndate=%02d",a,b,c); //不够两位默认填0 return 0; } [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O7oBeA68-1652187782018)(C:Users20961AppDataRoamingTyporatypora-user-imagesimage-20220414175157658.png)]
#include接受一个整形值(无符号),按照顺序打印它的每一位。这里指定1234int main() { int a=0; int b=0; int tmp=0; scanf("a=%d,b=%d",&a,&b); // 输入要求a=%d这样的格式 tmp=b; //交换 b=a; a=tmp; printf("a=%d,b=%d",a,b); return 0; } #define _CRT_SECURE_NO_WARNINGS #include求字符串的长度void print(int a) { if (a < 9){ printf("%dt",a); } else { print(a / 10); printf("%dt",a%10); } } int main() { int x = 1234; print(x); } // 求字符串的长度,不允许创建临时变量 #define _CRT_SECURE_NO_WARNINGS #include求第n个斐波那契数int strlen(char* str) { if (*str == ' ') { return 0; } else { return 1+strlen(str+1); } } int main() { char arr[]="songguangjin"; printf("%d",strlen(arr)); } // 求第n个斐波那契数 #define _CRT_SECURE_NO_WARNINGS #include求整形数值数组前n项和int strlen(int x) { if (x == 1) { return 1; } else if (x == 2) { return 1; } else { return strlen(x - 1) + strlen(x - 2); } } int main() { int a = 5; printf("%d",strlen(a)); } // 求整形数值数组前n项和 #define _CRT_SECURE_NO_WARNINGS #include求整形数值数组前n项和int sum(int arr[], int n) { if (n == 0) { return arr[0]; } else { return sum(arr,n-1)+arr[n]; } } int main() { int arr[3] = {3,2,1}; printf("%d", sum(arr, 2)); //求整形数值数组前n项的最大值 } // 求整形数值数组前n项最大值 #define _CRT_SECURE_NO_WARNINGS #includeHanoiint max(int arr[], int n) { if (n ==0) { return arr[0]; } else if (max(arr, n-1) <=arr[n]) { return arr[n]; } else { return max(arr,n-1); } } int main() { int arr[3] = {3,2,1}; printf("%d", max(arr, 2)); //n项中的n是指数组的下标 } // Hanoi #define _CRT_SECURE_NO_WARNINGS #include青蛙跳台阶int Hanoi(int n, char A, char B, char C) { if (n == 1){ printf("%c-->%cn",A,C); } else { Hanoi(n - 1, A, C, B); printf("%c-->%cn", A, C); Hanoi(n - 1, B, A, C); } } int main() { Hanoi(3,'A','B','C'); // 3层汉诺塔 return 0; } // 一只青蛙可以跳上一级台阶,也可以跳上二级台阶,求青蛙跳上n级台阶有多少种办法 #define _CRT_SECURE_NO_WARNINGS #include编写一个递归函数int strlen(int x) { if (x == 1) { return 1; // 跳上一层台阶,有一种办法 } else if (x == 2) { return 2; // 跳上两层台阶,有两种办法 } else { return strlen(x - 1) + strlen(x - 2); } } int main() { int a = 5; printf("%d",strlen(a)); } 求n的k次方
- 弄清这个递归函数的功能是什么,怎么调用这个函数,即设计好递归函数的返回值和参数列表
- 什么时候应该结束这个递归,它的边界条件(出口)是什么
- 在非边界条件下,怎么从第n层转到第n+1层(递推公式)
// 求n的k次方 #define _CRT_SECURE_NO_WARNINGS #include输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19int hh(int a, int k) { if (k == 1) return a; else { return hh(a, k - 1) * a; } } int main() { printf("%d", hh(7, 2)); return 0; } #define _CRT_SECURE_NO_WARNINGS #include字符串的翻转int Digitsum(int a) { if (a < 9){ return a; } else { return (a % 10) + Digitsum(a / 10); } } int main() { printf("%d", Digitsum(1234)); return 0; } // 递归实现字符串反转 #define _CRT_SECURE_NO_WARNINGS #include递归和非递归求字符长度int reverse(char arr[], int n) { if (n == 0) { printf("%ct", arr[0]); } else { printf("%ct", arr[n]); reverse(arr, n-1); } } int strlen(char* arr) { if (*arr == ' ') { return 0; } else { return 1 + strlen(arr + 1); } } int main() { char arr[] = "songguangjin"; reverse("songguangjin", strlen (arr)-1); // 数组的项数与数组的长度相差1 return 0; } // 递归。字符串的长度 int strlen1(char* arr) { if (*arr == ' ') { return 0; } else { return 1 + strlen(arr + 1); } } #include求输入数组的最大值// 非递归。求字符串的长度 int strlen2(char* arr) { int num = 0; while (*arr != ' ') { num++; arr++; } return num; } int mian() { printf("%d", strlen2("songguangjin")); return 0; } #define _CRT_SECURE_NO_WARNINGS #include计算阶乘之和int main() { int a, i; int max = 0; for (i = 0; i < 4; i++) { scanf("%d", &a); if (a >= max) { max = a; } } printf("%d", max); return 0; } // 计算1!+2!+3!+...+n! int main() { int ret = 1; int sum = 0; int n = 0; for (n=1;n<=3;n++) { ret = ret *n; // 3!=2!+1 n!=(n-1)! sum = sum + ret; } printf("%d",sum ); return 0; }在数组中,查找某个数字// 折半查找法 一定得是有序数组,从大到小排列或从小到大排列 int main() { int left = 0; int right = 9; int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; while (left <= right) { // int mid = (left + right) / 2; int mid =left+(right-left)/2; 上面那种方式有溢出的风险 if (arr[mid] < 7) { left = arr[mid + 1]; } else if (arr[mid] > 7) { right = arr[mid - 1]; } else { printf("找到了 ,下标为%dn", mid); break; } } if (left > arrright) { printf("没找到"); } }编写代码,演示多个字符从两端移动,向中间汇聚#define _CRT_SECURE_NO_WARNINGS #include猜数字游戏#include // 引用Sleep函数 #include // 引用system函数 // 编写代码,演示多个字符从两端移动,向中间汇聚 int main() { char arr1[] = "welcome to Bit!!!!" ; char arr2[] = "##################" ; int L = 0;// 数组最左边的下标 int R = sizeof(arr1) / sizeof(arr1[0])-2; int mid = (L + R) / 2; //for (;L<=mid+3,R>=mid;L++,R--) // for循环 里面只要有一个判断条件不满足,就结束循环 while(L<=R) // while循环 { arr2[L] = arr1[L]; arr2[R] = arr1[R]; printf("%sn",arr2); Sleep(1000); system("cls"); // system是一个库函数,可以执行系统命令 L++; R--; } return 0; } #define _CRT_SECURE_NO_WARNINGS #include#include // 调用Sleep函数 #include // 调用system函数 引用srand #include // 调用time // 猜数字 void menu() { printf("***********************n"); printf("***** 1.play ********n"); printf("***** 0.exit ********n"); printf("***********************n"); } void game() { // 1.生成随机数 int guess = 0; int ret = rand()%100+1; // 生成0~100之间的函数 任何正整数模100产生数的范围都是在0~99之间 //printf("%dn",ret); // 2.猜数字 printf("请猜数字n"); while (1) { scanf("%d", &guess); if (guess < ret) { printf("猜小了n"); } else if (guess > ret) { printf("猜大了n"); } else { printf("恭喜你,猜对了!!!n"); break; } } } int main() { int input=0; srand((unsigned int)time(NULL)); // 设置一次就可以了 do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case 1: printf("猜数字开始n"); game(); break; case 0: printf("退出游戏n"); break; default: printf("选择错误,重新选择n"); break; } } while(input); return 0; } [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IzRfoHZA-1652187782019)(C:Users20961AppDataRoamingTyporatypora-user-imagesimage-20220417222014262.png)]
#includeint main() { int a; scanf("%d",&a); printf("%ld",(long long)3.156e7*a); // 注意指数形式是浮点数,这里强转称long } // long数据类型 发金币
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Kb15z6A-1652187782019)(C:Users20961AppDataRoamingTyporatypora-user-imagesimage-20220420225912395.png)]
一、第一种解法 #includeint main() { int a[11]; int n; scanf("%d",&n); int t=0; int flag=0; while(n){ if(n%2==1){ a[t++]=1; }else{ a[t++]=0; } n/=10; } int i; for(i=t-1;i>=0;i--) { if(a[i]!=0)// 1、显示第一位不为0的1 2、后面的位为1的都由这里显示,0的 { // 都由后面elseif显示 flag=1;// 这个循环的设置比较精彩 printf("%d",a[i]); } else if(flag) { printf("%d",a[i]); } } if(!flag) printf("0n"); } 二、 第二种解法 #include // 把每位的权重乘上,例如百位的权重为100 int main() // 算一个数,可将他的每一位的大小乘以它的权重,然后相加 { int n=0; int tmp=0; int m=0; int x=0; int k=1; scanf("%d",n); if(n!=0) { for(k=1;n!=0;k*=10) { tmp=(n%10)/2; if(tmp==0) { x=0; } else { x=1; } m=x*k+m; n=n/10; } printf("%d",m); } else { printf("0"); } return 0; } // 第一种解法 #includeint main() { int i=0; int k=0; int sum=0; int all=0; scanf("%d",&k); for(i=1;;i++) { sum=sum+i; if (k>sum) { all=all+i*i; } else if (k



