栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

WonderfulCode(1)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

WonderfulCode(1)

记录平时自己遇到的精彩代码,和自己的想法

写一个代码:打印100~200之间的素数
#define  _CRT_SECURE_NO_WARNINGS	
#include
	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;
	}

打印1000到2000之间的闰年
#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
// 求两个数的最大公约数
	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;
	}
写一个代码打印1—100之间所有3倍的数字
#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;
	}

写代码将三个整数按从小到大输出
#include
int 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;
}
输出出生年月日
#include
int 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
int 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;
}
接受一个整形值(无符号),按照顺序打印它的每一位。这里指定1234
#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

int strlen(char* str)
{
	if (*str == '') {
		return 0;
	}
	else {
		return 1+strlen(str+1);
	}
}

int main()
{
	char arr[]="songguangjin";
	printf("%d",strlen(arr));
	
}
求第n个斐波那契数
// 求第n个斐波那契数 
#define  _CRT_SECURE_NO_WARNINGS	
#include

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项和
// 求整形数值数组前n项和
#define  _CRT_SECURE_NO_WARNINGS	
#include

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项和
// 求整形数值数组前n项最大值
#define  _CRT_SECURE_NO_WARNINGS	
#include

int 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
// 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层转到第n+1层(递推公式)
求n的k次方
// 求n的k次方
#define  _CRT_SECURE_NO_WARNINGS	
#include

int 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;
}
输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
#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)]

#include
int main()
{
    int a;
    scanf("%d",&a);
    printf("%ld",(long long)3.156e7*a);  // 注意指数形式是浮点数,这里强转称long
}                                        // long数据类型
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Kb15z6A-1652187782019)(C:Users20961AppDataRoamingTyporatypora-user-imagesimage-20220420225912395.png)]

    一、第一种解法
    #include 
    int 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;
    }
    
发金币

// 第一种解法
#include
int 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 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873436.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号