期末C语言基本算法

news2024/11/15 14:00:38

期末C语言基本算法

题型一

输入两个学生a和b的成绩,输出其中高的成绩

# include <studio.h>
void main()
{
    float a,b,max;
    printf("please enter a and b:");
    scanf("%f,%f",&a,&b);
    if(a>=b) max = a;
    else max = b;
    printf("max=%6.2f\n",max);
}

题型二

输入3个成绩a,b,c要求按由高到低的顺序输出

  • if a < b 将a和b对换
  • if b < c 将a和c对换
  • if b < c 将b和c对换
# include <studio.h>
void main()
{
    float a,b,c,t;
    scanf("please enter a,b,c:");
    if(a<b) {t=a;a=b;b=t;}
    if(a<c) {t=a;a=c;c=t;}
    if(b<c) {t=b;b=c;c=t;}
    printf("%6.2f,%6.2f,%6.2f\n",a,b,c);
}

题型三

输入3个整数,输出最大值和最小值

# include <studio.h>
void main()
{
    int a,b,c,max,min;
    printf("input three numbers:");
    sacnf("%d%d%d",&a,&b,&c);
    if(a>b) {max = a;min = a;}
    else {max=b;min=a;}
    if(max<c) max = c;
    if(min>c) min = c;
    printf("max=%d\n min=%d",max,min);
}

题型四

编写代码实现闰年判断

# include <stdio.h>
 
void main()
{
    int year;
 
    printf("请输入年份:");
    scanf("%d", &year);
 
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
    {
        printf("%d年是闰年\n", year);
    }
    else
    {
        printf("%d年不是闰年\n", year);
    }
}

题型五

在这里插入图片描述

# include <stdio.h>
void main()
{
    int i,j,k,n;
    scanf("%d",&n);
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j < i-1; j++) printf(" ");
        for(int k = 1; k <= n; k++) printf("*");
        printf("\n");
    }
}

题型六

求1+2+3+……+100的和

# include <stdio.h>
void main()
{
    int i,sum = 0;
    for(int i = 1; i <= 100; i++)
    {
       sum = sum + i;
    }
    printf("sum = %d\n",sum);
}

题型七

输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数

#include<stdio.h>

void main()
{
	// 输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数
	int kongge = 0,zimu = 0,shuzi = 0,qita = 0;
	char ch;
	printf("Input:\n");
	while ((ch = getchar()) != '\n')
	{
		if (ch == ' ')
		{
			kongge++;
		}else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
		{
			zimu++;
		}else if (ch >= '0' && ch <= '9')
		{
			shuzi++;
		} else {
			qita++;
		}
	}
	printf("英文字母:%d\n",zimu);
	printf("空格:%d\n",kongge);
	printf("数字:%d\n",shuzi);
	printf("其他字符:%d",qita);
}

题型八

打印输出九九乘法表

# include <stdio.h>
void main
{
    int i,j;
    for(int i = 1; i <= 9; i++)
    {
        for(int j = 1; j <= i; j++)
        {
            printf("%d * %d = %d",i,j,i*j);
        }
        printf("\n");
    }
}

题型九

输出100以内能被3整除且个位数为6的所有整数

# include <stdio.h>
void main
{
    int i,j;
    for(int i = 0;i < 10; i++)
    {
        j = i * 10 + 6;
        if(j%3 == 0) printf("%d",j);
    }
}

题型十

判断一个数是否是素数

# include <stdio.h>

void main(){
    // 判断一个数是否是素数
    int n;
    printf("Inpute:\n");
    scanf("%d",&n);
    int i;
    for (i = 2; i < n; i++)
    {
        if (n % i == 0)
        {
            break;
        }
    }
    if (n == i)
    {
        printf("%d是素数",n);
    } else {
        printf("%d不是素数",n);
    }
}

求100到200之间的全部素数

# include <stdio.h>

void main(){
    // 求100到200之间的全部素数
    int i,j,sum = 0;
    for (i = 100; i <= 200; i++)
    {
        for (j = 2; j < i; j++)
        {
            if (i % j == 0)
            {
                break;
            }
        }
        if (i == j)
        {
            sum = sum + i;
        }
    }
    printf("%d",sum);
}

题型十一

输出10!的阶乘的值

# include <stdio.h>

void main(){
    int result = 1;
    for(int i = 1; i <= 10; i++){
        result = result * i;
    }
    printf("%d",result);
}

求1!+2!+3!+……+10! 阶乘的值

#include<stdio.h>

void main()
{
	// 求1!+2!+3!+……+10! 阶乘的值
	int sum = 0;

	for (int i = 1; i <= 10; i++)
	{
		int mult = 1;
		for (int j = 1; j <= i; j++)
		{
			mult = mult * j;
		}
		sum = sum + mult;
	}
	printf("%d",sum);
}

题型十二

输出1~1000的奇数之和

# include <stdio.h>

void main(){
    int sum = 0;
    for(int i = 1; i <= 1000; i++){
        if (i % 2 != 0)
        {
            sum = sum + i;
        }
    }
    printf("%d",sum);
}

输出1~1000的偶数之和

# include <stdio.h>

void main(){
    int sum = 0;
    for(int i = 1; i <= 1000; i++){
        if (i % 2 == 0)
        {
            sum = sum + i;
        }
    }
    printf("%d",sum);
}

题型十三

统计1~1000之间的水仙花数

水仙花数:一个N位数,各个数位上的数的n次方之和恰好等于原数(153=1^3 + 53+33)

# include <stdio.h>

void main(){
    // 统计100~999之间的水仙花数
    // 水仙花数:一个N位数,各个数位上的数的n次方之和恰好等于原数(153=1^3 + 5^3+3^3)
    int q,w,e;
    for(int i = 100; i <= 999; i++){
        q = i % 10;   //个
        w = i / 10 % 10;   //十
        e = i / 10 / 10;  //百
        if(i == q*q*q + w*w*w + e*e*e){
            printf("%d,",i);
        }
    }
}

题型十四

正整数分解质因数

输入:90 打印:90=2×3×3×5

#include <stdio.h>

void main()
{
    /*
    正整数分解质因数
    输入:90 打印:90=2×3×3×5
    */

    int n;
    printf("请输入正整数:");
    scanf("%d", &n);

    printf("%d = ", n);
    int i;
    for (i = 2; i <= n; i++)
    {
        while (n % i == 0)
        {
            printf("%d*", i);
            n = n / i;
        }
    }
}
#include <stdio.h>

// 函数声名
int fun();

int main()
{
    /*
    正整数分解质因数
    输入:90 打印:90=2×3×3×5
    */
    int n;
    printf("请输入整数:");
    scanf("%d", &n);
    fun(n);
}

int fun(int n)
{
    printf("%d = ",n);
    for (int i = 2 ; i <= n; i++)
    {
        while (n % i == 0)
        {
            printf("%d ",i);
            n = n / i;
        }
    }
}

题型十五

求4 * 4 矩阵的 主次对角线之和

# include <stdio.h>

void main(){
    // 求4 * 4 矩阵的 主次对角线之和
    int str[4][4];
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            printf("请输入-第%d行-第%d列元素值:",i,j);
            scanf("%d",&str[i][j]);
        }
    }

    int sum_1 = 0,sum_2 = 0;
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            if (i == j) // 主对角线 和
            {   
                sum_1 = sum_1 + str[i][j];
            }
            if (i + j == 3) // 对角线 和
            {
                sum_2 = sum_2 + str[i][j];
            }
        }    
    }

    printf("主对角线和为:%d\n次对角线和为:%d",sum_1,sum_2);
}

题型十六

杨辉三角

在这里插入图片描述

#include<stdio.h>

void main()
{
	/*
	1
	1 1
	1 2 1
	1 3 3 1 
	*/
	int arr[10][10];
	for (int i = 0; i < 10; i++)
	{
		arr[i][0] = 1;
		arr[i][i] = 1;
	}

	for (int j = 2; j < 10; j++)
	{
		for (int k = 1; k < j; k++)
		{
			arr[j][k] = arr[j-1][k-1] + arr[j-1][k];
		}
	}

	for (int n = 0; n < 10; n++)
	{
		for (int m = 0; m <= n; m++)
		{
			printf("%5d",arr[n][m]);
		}
		printf("\n");
	}
    
}

在这里插入图片描述

#include<stdio.h>

void main()
{
	/*
	1
	1 1
	1 2 1
	1 3 3 1 
	*/
	int arr[10][10];
	for (int i = 0; i < 10; i++)
	{
		arr[i][0] = 1;
		arr[i][i] = 1;
	}
	
	for (int j = 2; j < 10; j++)
	{
		for (int k = 1; k < j; k++)
		{
			arr[j][k] = arr[j-1][k-1] + arr[j-1][k];
		}
	}

	for (int n = 0; n < 10; n++)
	{
		for (int h = 0; h < 10-n; h++)
		{
			printf(" ");
		}
		for (int m = 0; m <= n; m++)
		{
			printf("%5d",arr[n][m]);
		}
		printf("\n");
	}
	
}

题型十七

键盘输入十个整数,用冒泡排序后按从小到大输出

# include <stdio.h>

void main(){
    int arr[20];
    printf("请输入10个随机数:");

    for(int i = 0;i < 10; i++){
        scanf("%d",&arr[i]);    //10 9 8 7 6 5 4 3 2 1
    }
    
    for(int j = 0;j < 10-1; j++){
        for(int k = 0; k <= 10-1-j; k++){
            if(arr[k] > arr[k+1]){
                int temp = arr[k];
                arr[k] = arr[k+1];
                arr[k+1] = temp;
            }
        }
    }

    for(int f = 0; f < 10; f++){
        printf("%d,",arr[f]);
    }
}

键盘输入十个整数,用选择排序后按从小到大输出

# include <stdio.h>

void main(){
    // 键盘输入十个整数,用选择排序后按从小到大输出
    int arr[20];
    for(int i = 0;i < 10; i++){
        printf("请输入%d个随机数:",i+1);
        scanf("%d",&arr[i]);    
    }
    
    for(int j = 0;j < 10-1; j++){
        for(int k = j+1; k < 10; k++){
            if(arr[j] > arr[k]){
                int temp = arr[j];
                arr[j] = arr[k];
                arr[k] = temp;
            }
        }
    }

    for(int f = 0; f < 10; f++){
        printf("%d,",arr[f]);
    }
}

题型十八

输入一串字母字母:大小写互相转换

#include<stdio.h>
#include<string.h>

void main()
{
	char str[100];
	printf("Input a string:");
	scanf("%s",str);

	for(int i=0;i<strlen(str);i++)
	{
		if(str[i]>='a' && str[i]<='z')
		{
			str[i]=str[i]-32;//小写转换成大写
		}
		else if(str[i]>='A' && str[i]<='Z')
		{
			str[i]=str[i]+32;//大写转换成小写
		}
	}
	printf("新字符串是:%s\n",str);
}

题型十九

最小公倍数

#include<stdio.h>

void main()
{
	int a,b;
	printf("Input:\n");
	scanf("%d,%d",&a,&b);

	int max = a > b ? a : b;

	for (int i = 1; i < a*b; i++)
	{
		if (i % a == 0 && i % b == 0)
		{
			printf("最小公倍数:%d",i);
			break;
		}
	}
}

最大公约数(公因数)

#include<stdio.h>

void main()
{
	int a,b;

	printf("输入两个整数:");
	scanf("%d %d",&a,&b);

	int n = a > b ? a : b;
	int max = 0;

	for (int i = 1; i <= n; i++)
	{
		if (a % i == 0 && b % i == 0)
		{
			if (i > max)	//最大公约数
			{
				max = i;
			}
			
			// printf("%d,",i);	所有公约数
		}
	}
	printf("最大公约数:%d",max);
}

输入两个正整数m和n,求其最大公约数和最小公倍数

#include<stdio.h>

void main()
{
	// 输入两个正整数m和n,求其最大公约数和最小公倍数

	//声名函数
	int max_gys(int a,int b,int max);
	int min_gbs(int a,int b,int min);

	int m,n;
	printf("Input:\n");
	scanf("%d,%d",&m,&n);
	int max = m > n ? m : n;
	int min = m < n ? m : n;
	int gys = max_gys(m,n,max);
	int gbs = min_gbs(m,n,min);
	printf("最大公约数:%d\n最小公倍数:%d",gys,gbs);
}

int max_gys(int a,int b,int max)	//最大公约数
{
	int gmax = 0;
	for (int i = 1; i <= max; i++)
	{
		if (a % i == 0 && b % i ==0)
		{
			if (i > gmax)
			{
				gmax = i;
			}
		}
	}
	return gmax;
}

int min_gbs(int a,int b,int min)	//最小公倍数
{
	int gmin = 0;
	for (int i = min; i <= a*b; i++)
	{
		if (i % a == 0 && i % b ==0)
		{
			gmin = i;
			break;
		}
		
	}
	return gmin;
}

题型二十

建立二维数组,循环赋值并打印

# include <stdio.h>

void main(){

    int arr[3][3];
    printf("请输入3x3二维数组的元素:\n");

    // 循环赋值
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("请输入arr[%d][%d]的值:", i, j);
            scanf("%d", &arr[i][j]);
        }
    }

    // 打印数组元素
    printf("二维数组元素如下:\n");
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
}

题型二十一

求1-100的完全数

#include<stdio.h>

void main()
{
	for (int i = 1; i < 100; i++)
	{
		int sum = 0;
		for (int j = 1; j < i; j++)
		{
			if (i % j == 0)
			{
				sum = sum + j;
			}
			
		}
		if (i == sum)
		{
			printf("%d,",i);
		}	
	}
}

题型二十二

输入三个整数x,y,z 请把这三个数从小到大输出

#include<stdio.h>

void main()
{
	// 输入三个整数x,y,z 请把这三个数从小到大输出
	int a,b,c;

	printf("Input:\n");
	scanf("%d,%d,%d",&a,&b,&c);

	if (a > b)
	{
		int temp = a;
		a = b;
		b = temp;
	}
	if (a > c)
	{
		int temp = a;
		a = c;
		c = temp;
	}
	if (b > c)
	{
		int temp = b;
		b = c;
		c = temp;
	}
	printf("%d,%d,%d",a,b,c);
}

题型二十三

输入某年某月某日,判断这一天是这一年的第几天

#include<stdio.h>

void main()
{
	// 输入某年某月某日,判断这一天是这一年的第几天
	int year,month,day;
	printf("请输入年.月.日:\n");
	scanf("%d.%d.%d",&year,&month,&day);

	int sum = 0;
	switch(month){
		case 1: sum	= 0;		break;
		case 2: sum	= 31;		break;	//假设都为平年,二月28天
		case 3: sum	= 59;		break;
		case 4: sum	= 90;		break;
		case 5: sum	= 120;		break;
		case 6: sum	= 151;		break;
		case 7: sum	= 181;		break;
		case 8: sum	= 212;		break;
		case 9: sum	= 242;		break;
		case 10: sum = 273;		break;
		case 11: sum = 304;		break;
		case 12: sum = 334;		break;
		default: printf("Error!");
	}
	sum = sum + day;
	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
	{
		if (month > 1)
		{
			sum = sum + 1;
			printf("%d",sum);
		}else {
			printf("%d",sum);
		}	
	} else {
		printf("%d",sum);
	}
}

题型二十四

求1 - 1/2 + 1/3 - 1/4 + …… +1/99

#include<stdio.h>

void main()
{
	// 求1 - 1/2 + 1/3 - 1/4 + …… +1/99
	double sum = 0.0;
	int tag = 1;
	for (int i = 1; i < 100; i++)
	{
		if (i % 2 == 0)
		{
			tag = -tag;
		}
		sum = sum + tag/i;
	}
	printf("%lf",sum);
}

题型二十五

求 ax²+bx+c=0 的根,分别考虑

  • 有两个不等的实根
  • 有两个相等的实根

在这里插入图片描述

#include<stdio.h>
#include<math.h>

void main()
{
	// 求 ax²+bx+c=0 的根,分别考虑
	// 有两个不等的实根
	// 有两个相等的实根

	double a,b,c;
	printf("Input:\n");
	scanf("%lf,%lf,%lf",&a,&b,&c);

	double data = b*b - 4*a*c;
	if (a == 0)
	{
		printf("该方程不是二次函数");
	} else {

		if (data == 0)
		{
			double result = -b / (2.0*a);
			printf("有两个相等的实根:x=%lf",result);
		} else{
			if (data > 0)
			{
				double p = -b / (2.0*a);
				double n = sqrt(data);
				double result_1 = p + n;
				double result_2 = p - n;
				printf("有两个不等的实根:x1=%lf,x2=%lf",result_1,result_2);
			} 
			if (data < 0)
			{
				printf("无实根");
			}
		}	
	}	
}

题型二十六

输出100以内的个位数为6,且能被3整除的所有数

#include <stdio.h>

void main() {

    for (int i = 1; i < 10; i++)
    {
        int temp = 10 * i + 6;
        if (temp % 3 == 0)
        {
            printf("%d,",temp);
        }
    }
}

题型二十七

求Sn = a + aa + aaa + …… + aa……a之值,其中a是一个数字,n表示a的位数,n由键盘输入

例如:2+22+222+2222+22222(此时n是5)

#include<stdio.h>

void main()
{
	int n,a;
	printf("Input:\n");
	scanf("%d,%d",&a,&n);
	int sum = 0;
	int temp = 0;
	for (int i = 1; i <= n; i++)
	{
		temp = temp*10 + a;
		sum = sum + temp;
	}
	printf("%d",sum);
}

题型二十八

从键盘输入一个字符串a,并在a串中最大元素后插入字符串b(“ab”)

#include <stdio.h>
#include <string.h>

void main(){    
	//从键盘输入一个字符串a,并在a串中最大元素后插入字符串b("ab")

	char a[100];
	printf("Input:\n");
	gets(a);

	int index = 0;
	for (int i = 0; i < strlen(a); i++)	//字符串最大值元素下标
	{
		if (a[i] > a[index])
		{
			index = i;
		}
	}

	/*
	方法一:
	// 将数组a 最大值下标index 依次后移
    int len = strlen(a);
	for (int i = len + 2; i > index + 1; i--) {
        a[i] = a[i - 2];
    }

	//插入
	a[index+1] = 'a';
	a[index+2] = 'b';

	printf("新字符串为:%s",a);
	*/
	
	// 将数组a 最大值下标index 后的数据放入新数组
	char p[100];
	int k = 0;
    for (int j = index+1; j < strlen(a); j++,k++)
	{
		p[k] = a[j];
	}
	p[k] = '\0';	//往p末尾插入\0
	a[index+1] = '\0';	//往a末尾插入\0

	//拼接字符
	char b[] = "ab";
	strcat(a,b);
	strcat(a,p);

	printf("新字符串为:%s",a);
}

题型二十九

将两个字符串连接起来,不使用strcat函数

#include<stdio.h>

void main()
{
	// 将两个字符串连接起来,不使用strcat函数
    int i = 0, j = 0;
    char s1[80],s2[40];
    printf("Inpute s1:");
    scanf("%s",&s1);
    printf("Inpute s2:");
    scanf("%s",&s2);

    while (s1[i] != '\0')   // s1数组长度
    {
        i++;
    }
    while (s2[j] != '\0')
    {
        s1[i++] = s2[j++];
    }
    s1[i] = '\0';
    printf("%s",s1);
}

题型三十

输入20个学生的信息,包括姓名,学号,成绩1,成绩2,成绩3,成绩4
要求输出所有学生中成绩1大于60,成绩2大于70的学生的成绩,按总分从大到小的顺序排列

#include <stdio.h>

struct student
{
    char name[20];
    int num;
    float score1;
    float score2;
    float score3;
    float score4;
    float totalScore; // 总分
};

void main()
{
    /*
    输入20个学生的信息,包括姓名,学号,成绩1,成绩2,成绩3,成绩4
    要求输出所有学生中成绩1大于60,成绩2大于70的学生的成绩,按总分从大到小的顺序排列
    */
   
    //定义结构体数组
    struct student stu[20];
    // 输入学生信息
    for (int i = 0; i < 20; i++)
    {
        printf("请输入第 %d 位学生的姓名:", i + 1);
        scanf("%s", &stu[i].name);
        printf("请输入第 %d 位学生的学号:", i + 1);
        scanf("%d", &stu[i].num);
        printf("请输入第 %d 位学生的成绩1:", i + 1);
        scanf("%f", &stu[i].score1);
        printf("请输入第 %d 位学生的成绩2:", i + 1);
        scanf("%f", &stu[i].score2);
        printf("请输入第 %d 位学生的成绩3:", i + 1);
        scanf("%f", &stu[i].score3);
        printf("请输入第 %d 位学生的成绩4:", i + 1);
        scanf("%f", &stu[i].score4);

        // 总分
        stu[i].totalScore = stu[i].score1 + stu[i].score2 + stu[i].score3 + stu[i].score4;
    }

    // 按总分从大到小的顺序排列
    struct student temp;
    for (int i = 0; i < 20 - 1; i++)
    {
        for (int j = 0; j < 20 - 1 - i; j++)
        {
            if (stu[j].totalScore < stu[j + 1].totalScore)
            {
                temp = stu[j];
                stu[j] = stu[j + 1];
                stu[j + 1] = temp;
            }
        }
    }

    // 输出所有学生中成绩1大于60,成绩2大于70的学生的成绩
    printf("\n学生中成绩1大于60,成绩2大于70的学生的成绩是:\n");
    for (int i = 0; i < 20; i++)
    {
        if (stu[i].score1 > 60 && stu[i].score2 > 70)
        {
            printf("姓名: %s, 学号: %d, 成绩1: %.2f, 成绩2: %.2f, 成绩3: %.2f, 成绩4: %.2f, 总分: %.2f\n",
                   stu[i].name,
                   stu[i].num,
                   stu[i].score1,
                   stu[i].score2,
                   stu[i].score3,
                   stu[i].score4,
                   stu[i].totalScore);
        }
    }
}

题型三十一

输入字符串,去掉所有空格

#include <stdio.h>
#include <string.h>

void main() {
    
    char str[100];
    printf("Input:\n");
    gets(str);

    char new_str[100];
    int j = 0;
    for (int i = 0; str[i] != '\0'; i++)
    {
        if (str[i] != ' ')
        {
            new_str[j] = str[i];
            j++;
        }
    }
    new_str[j] = '\0';
    printf("新字符串是:%s",new_str);
}

题型三十二

将二维数组行列元素互换,存到另一个二维数组

#include <stdio.h>

void main() {

    int str_a[2][3] = {{1,2,3},{4,5,6}};
    int str_b[3][2];

    printf("Array A:\n");
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            printf("%d\t",str_a[i][j]);
            str_b[j][i] = str_a[i][j];
        }
        printf("\n");
    }

    printf("Array B:\n");
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            printf("%d\t",str_b[i][j]);
        }
        printf("\n");
    }
}

题型三十三

输入以0结束的正数,统计这些正整数中奇数的平均值和偶数的乘积

#include <stdio.h>

void main() {
    // 输入以0结束的正数,统计这些正整数中奇数的平均值和偶数的乘积

    int number;
    printf("请输入一个正整数(输入0结束): ");
    scanf("%d",&number);

    float avg = 0.0;
    int mult = 1;
    int sum = 0;
    int count = 0;

    while (number != 0)
    {          
   
        if (number % 2 != 0)    // 奇数
        {
            sum = sum + number;
            count++;
        } else      // 偶数
        {
            mult = mult * number;
        }
        printf("请输入一个正整数(输入0结束): ");
        scanf("%d",&number);
    }

    

    if (count == 0)
    {
        printf("偶数的乘积:%d\n",mult);
        printf("输入的数据中没有奇数");
    } else if (mult == 1)
    {
        avg = (float)sum / (float)count;
        printf("奇数的平均值:%lf\n",avg);
        printf("输入的数据中没有偶数");
    } else{
        printf("奇数的平均值:%lf\n",(float)sum / (float)count);
        printf("偶数的乘积:%d\n",mult);
    }

}

题型三十四

输出斐波那契数列前20项,每5个一行

#include<stdio.h>

void main()
{
	// 输出斐波那契数列前20项,每5个一行
    int f1 = 1,f2 = 1;
    for (int i = 1; i <= 20; i++)
    {
        printf("%15d%15d",f1,f2);
        if (i % 2 == 0){printf("\n");}
        f1 = f1 + f2;
        f2 = f1 + f2;
    }
}
#include <stdio.h>

// 函数声名
int fib(int n);

int main()
{
    /*
    求斐波那契数列前n项
    */
    int n;
    printf("请输入一个整数: ");
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
        printf("%d ", fib(i));
    }

    return 0;
}

int fib(int n)
{
    if (n <= 2)
    {
        return 1;
    }
    else
    {
        return fib(n - 1) + fib(n - 2);
    }
}

题型三十五

有一个已排序好的数组,要求输入一个数后,按原来排序的规律将它插入数组中

# include <stdio.h>
# include <string.h>

void main(){
    // 将数组排序(从小到大),要求输入一个数后,按原来排序的规律将它插入数组中
    int str[11] = {2,6,1,4,8,9,3,20,12,11};

    // 排序
    for (int i = 0; i < 10; i++)
    {
        for (int j = i+1; j < 10; j++)
        {
            if (str[i] > str[j])
            {
                int temp = str[i];
                str[i] = str[j];
                str[j] = temp;
            }
            
        }
    }
    
    // 排序后的数组
    printf("Array:\n");
    for (int i = 0; i < 10; i++)
    {   
        printf("%d\t",str[i]);
    }

    // 插入数据
    int number;
    printf("\n请输入插入数据:");
    scanf("%d",&number);
    int index = 0;

    if (number > str[9])
    {
        str[10] = number;
    } else {
        for (int i = 0; i < 10; i++)
        {       
            if (str[i] > number)
            {
                index = i;  // 找到插入位置索引
                break;
            }
        }
        
        // 将后面元素依次后移一位
        for (int j = 10; j > index; j--) {
            str[j] = str[j - 1];
        }
        str[index] = number;
    }

    // 排序后的数组
    printf("\nNew Array:\n");
    for (int i = 0; i < 11; i++)
    {   
        printf("%d\t",str[i]);
    }
    
}

题型三十六

输入整型数,实现逆序输出

  • 输入:1234567
  • 输出:7654321
# include <stdio.h>
# include <string.h>

void main(){
    /*
    输入整型数,实现逆序输出
    输入:1234567   
    输出:7654321
    */
    int number,flag,num;

    printf("输入整形数:");
    scanf("%d",&number);

    int result = 0;
    while (number != 0)
    {
        flag = number % 10; // 取个位
        number = number / 10;  // 去除个位
        result = result * 10 + flag;
    }

    printf("倒转后的整形数:%d",result);
}

题型三十七

将字符串第m个字符开始的全部字符复制到另一个字符串中

要求在主函数输入字符串以及m值并输出结果,在被调用函数中完成复制

# include <stdio.h>

// 声名函数
void copy(char *str1,char *str2,int m);

void main(){
    char str1[20],str2[20];
    int m;
    printf("请输入字符串:");
    gets(str1);
    printf("请输入启始位置:");
    scanf("%d",&m);

    copy(str1,str2,m);

    printf("Array str2:");
    printf("%s",str2);
}

// void copy(char str1[],int m)
void copy(char *str1,char *str2,int m)
{
    int i = 0;
    while (str1[m] != '\0')
    {
        str2[i] = str1[m];
        i++;
        m++;
    }
    str2[i] = '\0';
}

题型三十八

2/1 + 3/2 + 5/3 + 8/5+ 13/8 + 21/13……

# include <stdio.h>

void main(){
    int n,sum = 0;
    printf("请输入n值:");
    scanf("%d",&n);

    int f1 = 2,f2 = 1,temp;
    for (int i = 1; i <= n; i++)
    {
        sum = sum + f1/f2;  // sum = 0 + 2/1
        temp = f1;  // temp = 2,3
        f1 = f1 + f2;   // f1 = 2+1 = 3,5
        f2 = temp;  // f2 = 2,3
    }
    printf("%d",sum);  
}

题型三十九

编写一个程序进行字符串的截取,即从键盘上输入一个字符串str1,将此字符串中从第m个字符开始的n个字符形成另一个字符串送到变量str2中

例如:str1=“Computer”,m=2,n=3,这样str2=“mpu”

# include <stdio.h>

void main(){
   char str1[20],str2[20];
   int m,n;
   printf("请输入字符串:");
   gets(str1);
   printf("请输入截取字符串启始字符m 和 截取字符串长度n:");
   scanf("%d,%d",&m,&n);
   for (int i = m, j = 0; i < m+n; i++,j++)
   {
       str2[j] = str1[i];
   }
   printf("Array str2:");
   printf("%s",str2);
}
# include <stdio.h>
# include <string.h>

void main(){
   char str1[20],str2[20];
   int m,n;
   printf("请输入字符串:");
   gets(str1);
   printf("请输入截取字符串启始字符m 和 截取字符串长度n:");
   scanf("%d,%d",&m,&n);
   
   // 函数strncpy
   strncpy(str2,str1+m,n);

   printf("Array str2:");
   printf("%s",str2);
}

题型四十

在这里插入图片描述

# include <stdio.h>

void main(){

    for (int i = 1; i <= 4; i++)            //控制行数
    {
        for (int j = 4-1; j >= i; j--)      // 控制空格
        {
            printf(" ");
        }
        for (int k = 1; k <= 2*i-1; k++)    // 控制星
        {
            printf("*");
        }
        printf("\n");
    }

    for (int i = 3; i >= 1; i--)    //控制行数
    {
        for (int j = 3; j >= i; j--)     // 控制空格
        {
            printf(" ");
        }
        for (int k = 1; k <= 2*i-1; k++)     // 控制星
        {
            printf("*");
        }
        printf("\n");
    }
    
}

题型四十一

编写一个程序输入10个数,将其中最大的数与第一个数对换,最小数与最后一个数对换,输出对换后的
10个数

# include <stdio.h>

void main(){
    // 编写一个程序输入10个数,将其中最大的数与第一个数对换,最小数与最后一个数对换,输出对换后的10个数
    int str[10];
    for (int i = 0; i < 10; i++)
    {   
        printf("请输入第%d个元素:",i);
        scanf("%d",&str[i]);
    }

    // 输出
    printf("Array_1:\n");
    for (int i = 0; i < 10; i++)
    {
        printf("%d ",str[i]);
    }

    int max_index = 0,min_index = 0;
    for (int i = 0; i < 10; i++)
    {
        if (str[i] > str[max_index])  // 最大值 下标
        {
            max_index = i;
        }
        if (str[i] < str[min_index])  // 最小值 下标
        {
            min_index = i;
        }
    }

    // 输出 最大值下标 最小值下标
    printf("\n最大值下标:%d",max_index);
    printf("\n最小值下标:%d",min_index);

    // 最大的数与第一个数对换
    int temp1 = str[0];
    str[0] = str[max_index];
    str[max_index] = temp1;
    // 最小数与最后一个数对换
    int temp2 = str[9];
    str[9] = str[min_index];
    str[min_index] = temp2;

    // 输出
    printf("\nArray_2:\n");
    for (int i = 0; i < 10; i++)
    {
        printf("%d ",str[i]);
    }
}

题型四十二

在这里插入图片描述

# include <stdio.h>

void main(){
    int n;
    printf("请输入行数:");
    scanf("%d",&n);
    for (int i = 1; i <= n; i++)            //控制行数
    {
        for (int j = n-1; j >= i; j--)      // 控制空格
        {
            printf(" ");
        }
        for (int k = 1; k <= 2*i-1; k++)    // 控制星
        {
            printf("*");
        }
        printf("\n");
    }   
}

题型四十三

输入两个正整数m和n,求其最大公约数和最小公倍数(辗转相除法)

#include <stdio.h>

void main() {
    // 输入两个正整数m和n,求其最大公约数和最小公倍数。
    // 最大公约数 * 最小公倍数 = m * n

    int m, n;
    printf("请输入两个正整数m和n:");
    scanf("%d,%d", &m, &n);

    int max = m > n ? m : n;
    int min = m < n ? m : n;

    while (min != 0) // 被除数不等于0
    {
        int temp = max % min;
        max = min;
        min = temp;
    }

    int gys = max; // 最大公约数
    int gbs = m * n / gys; // 最小公倍数

    printf("最大公约数:%d\n", gys);
    printf("最    小公倍数:%d\n", gbs);
}

题型四十四

输入10个数,要求输出其中值最大的元素和该元素是第几个数

#include <stdio.h>

void main(){
    int str[10];
    for (int i = 0; i < 10; i++)
    {
        printf("请输入第%d个数:",i);
        scanf("%d",&str[i]);
    }
    
    int index = 0, max = 0;
    for (int j = 0; j < 10; j++)
    {
        if (str[j] > max)
        {
            max = str[j];
            index = j;
        }
    }
    printf("最大的元素是:%d,最大的元素是第%d个数",max,index+1);   
}

题型四十五

写一个函数,使输入的字符串按反序存放,在主函数中输入和输出字符串

#include <stdio.h>
#include <string.h>

void main(){
    // 写一个函数,使输入的字符串按反序存放,在主函数中输入和输出字符串
    void inverse(char str[]);
    char str[10];
    printf("请输入字符串:");
    scanf("%s",str);
    inverse(str);
    printf("%s",str);
}

void inverse(char str[])
{
    for (int i = 0,j = strlen(str); i < (strlen(str) / 2); i++,j--)
    {
        char temp = str[i];
        str[i] = str[j-1];
        str[j-1] = temp;
    }
}

题型四十六

写一个函数,将字符串中的元音字母复制到另一字符串,然后输出

#include <stdio.h>
#include <string.h>

void main(){
    // 写一个函数,将字符串中的元音字母复制到另一字符串,然后输出
    void copy(char str[],char c[]);

    char str[80],c[80];
    printf("Inpute:");
    scanf("%s",&str);
    copy(str,c);
    printf("%s",c);
}

void copy(char str[],char c[])
{
    int i,j;
    for (i = 0,j = 0; str[i] != '\0'; i++)
    {
        if (
            str[i] == 'a' || str[i] == 'A' ||
            str[i] == 'e' || str[i] == 'E' ||
            str[i] == 'i' || str[i] == 'I' ||
            str[i] == 'o' || str[i] == 'O' ||
            str[i] == 'u' || str[i] == 'U'
            )
        {
            c[j] = str[i];
            j++;
        }
    }
    c[j] = '\0';
}

题型四十七

写一个函数,输入一个4位数,要求输出这4个数字字符,但每两个数字间空一个空格

输入:1900

输出:1 9 0 0

#include <stdio.h>
#include <string.h>

void main(){
    
   void insert(char str[]);

   char str[80];
   printf("请输入数字字符:");
   scanf("%s",&str);
   insert(str);
}

void insert(char str[])
{
    for (int i = strlen(str); i > 0; i--)
    {
        str[2 * i] = str[i];
        str[2 * i-1] = ' ';
    }
    printf("%s",str);   
}

题型四十八

输入10个非0数,对其进行去重操作后输出

#include <stdio.h>
/*
    输入10个非0数,对其进行 去重 操作后输出
*/
int main()
{
    int num = 10;
    int arr[num];
    // 输入数据
    printf("请输入%d个非0数:\n", num);
    for (int i = 0; i < num; i++)
    {
        printf("请输入第%d个数:", i + 1);
        scanf("%d", &arr[i]);
        if (arr[i] == 0)
        {
            printf("输入有误,第%d个数不能为0!\n", i);
            return 1;
        }
    }

    // 去重
    int current = 0;
    for (int i = 0; i < num; i++)
    {
        int flag = 0; //假设不是重复的
        for (int j = 0; j < current; j++)
        {
            if (arr[j] == arr[i])
            {
                flag = 1; //假设错误
                break;
            }
        }
        if (!flag)
        {
            arr[current++] = arr[i];
        }
    }

    // 打印输出去重后的数组
    printf("去重后的数组为");
    for (int i = 0; i < current; i++)
    {
        printf("%d ", arr[i]);
    }
}

题型四十九

编程从键盘输入两个整数分别给变量a和b 要求不借助其他变量的条件下实现a b互换

#include <stdio.h>

void main(){
    int a,b;
    printf("请输两个整数a和b:");
    scanf("%d,%d",&a,&b);   
    a = a + b; 
    b = a - b; 
    a = a - b; 
    printf("a = %d,b = %d",a,b);
}

题型五十

编写程序 输入三个整数a b c 然后交换它们中的数
a 原来的数给 b
b 原来的数给 c
c 原来的数给 a

#include <stdio.h>

void main()
{
    int a, b, c;
    printf("请输入三个整数a,b,c:");
    scanf("%d,%d,%d",&a,&b,&c);
    printf("OLD:a=%d,b=%d,c=%d",a,b,c);
    int t = b;
    b = a;
    a = c;
    c = t;
    printf("\nNEW:a=%d,b=%d,c=%d",a,b,c);
}

题型五十一

定义5×5数组 赋值从2开始的偶数,分别求 左上,右上,右下,左下 元素的和

#include <stdio.h>

void main()
{
    // 定义5×5数组,赋值从2开始的偶数,分别求 左上,右上,右下,左下 元素的和
    int str[4][4];
    int n = 1;
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            // printf("请输入第%d行第%d列元素:",i,j);
            // scanf("%d",&str[i][j]);
            str[i][j] = n++;
        }
    }

    // 输出
    printf("Array str:\n");
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            printf("%d ", str[i][j]);
        }
        printf("\n");
    }

    // 左上
    int sum1 = 0;
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4-i; j++)
        {
            sum1 = sum1 + str[i][j];
        }
    }
    printf("左上:%d\n", sum1);

    // 右上
    int sum2 = 0;
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            if (j >= i)
            {
                sum2 = sum2 + str[i][j];
            }
        }
    }
    printf("右上:%d\n", sum2);

    // 右下
    int sum3 = 0;
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            if (j + i >= 3)
            {
                sum3 = sum3 + str[i][j];
            }
        }
    }
    printf("右下:%d\n", sum3);

    // 左下
    int sum4 = 0;
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            sum4 = sum4 + str[i][j];
        }
    }
    printf("左下:%d\n", sum4);
}

题型五十二

判断输入整数的正负性和奇偶性

#include <stdio.h>

void main()
{
    // 判断输入整数的正负性和奇偶性
    int num;
    printf("请输入整数:");
    scanf("%d", &num);

    if (num == 0)
    {
        printf("%d是0 既不是奇数也不是偶数", num);
    }

    if (num < 0)
    {
        if (num % 2 == 0)
        {
            printf("%d是负数 且是偶数", num);
        }
        else
        {
            printf("%d是负数 且是奇数", num);
        }
    }
    else
    {
        if (num % 2 == 0)
        {
            printf("%d是正数 且是偶数", num);
        }
        else
        {
            printf("%d是正数 且是奇数", num);
        }
    }
}

题型五十三

从键盘上任意输入一个整数,程序判断该数是否是回文数

回文数:一个数从右到左和从左到右是一样的 12321、4004

#include <stdio.h>

void main()
{
    
    int number;
    printf("请输入一个整数:");
    scanf("%d", &number);

    int result_old = number;
    int result_new = 0;
    int temp;

    while (number != 0)
    {
        temp = number % 10;
        number = number / 10;
        result_new = result_new * 10 + temp;
    }

    if (result_old == result_new)
    {
        printf("%d 是回文数", result_old);
    }
    else
    {
        printf("%d 不是回文数", result_old);
    }
}

题型五十四

从键盘任意输入一个整数x 编程计算x的每一位数字相加之和(忽略整数前面的正负号)
输入:1234 计算1+2+3+4=10 输出10

#include <stdio.h>
#include <math.h>

void main()
{
    int n;
    printf("请输入一个整数:");
    scanf("%d", &n);

    int x = abs(n);

    int sum = 0;
    int temp;

    while (x != 0)
    {
        temp = x % 10;
        x = x / 10;
        sum = sum + temp;
    }
    printf("%d",sum);
}

题型五十五

1元5角人民币兑换5分、2分、1分的硬币(每一种都要有)共100枚

  • 问一共有几种兑换方案
  • 每种方案各换多少枚
#include <stdio.h>

void main()
{
    int x, y, z;
    int count = 0;
    for (int x = 1; x <= 29; x++)
    {
        for (int y = 1; y <= 72; y++)
        {
            z = 100 - x - y;
            if (5 * x + 2 * y + 1 * z == 150)
            {
                count++;
                printf("%d %d %d\n", x, y, z);
            }
        }
    }
    printf("一共有%d种兑换方案",count);
}

输出用1元人民币换成 1分 2分 5分 的所有方案

#include <stdio.h>

void main()
{
    // 输出用1元人民币换成 1分 2分 5分 的所有方案
    int count = 0;
    for (int five = 0; five <= 20; five++)
    {
        for (int two = 0; two < 50; two++)
        {
            int one = 100 - 5*five + two*2;
            if (one>= 0)
            {
                count++;
                printf("%d %d %d\n",one,two,five);        
            }
        }
    }
    printf("一共有%d种兑换方案\n", count);
}

题型五十六

将一个正实数保留2位小数,并对第三位进行四舍五入处理

输入:2.52466

输出:2.52

#include <stdio.h>

void main()
{
    float number;
    printf("请输入正实数:");
    scanf("%f", &number); 

    float result = (int)(number * 1000 + 0.5) / 1000.0;

    printf("四舍五入后:%.3f",result);
}

题型五十七

输入十进制整数转换成 n 进制并输出

#include <stdio.h>

void main()
{
    int num, n, str[20];

    printf("请输入十进制整数:");
    scanf("%d", &num);
    printf("请输入转换的进制:");
    scanf("%d", &n);

    int temp = num;

    int i = 0;
    while (num != 0)
    {
        str[i] = num % n;
        num = num / n;
        i++;
    }
    

    printf("%d转换成%d进制是:", temp, n);
    for (int j = i-1; j >= 0; j--)
    {
        printf("%d", str[j]);
    }
}

题型五十八

创建两个升序数组,并输入数据,按照升序排列

合成成一个升序数组(两路合并法)

#include <stdio.h>

void main()
{
    /*
    创建两个升序数组,并输入数据,按照升序排列
    成成一个升序数组(两路合并法)
    */

    int a[3] = {1,7,9};
    int b[5] = {4,6,8,9,10};
    int c[10];

    int i = 0,j=0,k = 0;
    while (i < 3 && j < 5)
    {
        if (a[i] > b[j])
        {
            c[k] = b[j];
            j++;            // 指向下一个数
            k++;            // 统计个数
        } else              // a[i] <= b[j]
        {
            c[k] = a[i];
            i++;
            k++;
        }
    }

    // 将剩余的数放入数组
    while (i < 3)
    {
        c[k] = a[i];
        i++;
        k++;
    }
    while (j < 5)
    {   
        c[k] = b[j];
        j++;
        k++;
    }

    // 输出
    for (int i = 0; i < k; i++)
    {
        printf("%d ",c[i]);
    }
}

题型五十九

编程实现从键盘输入20个整数,统计非负数的个数,并计算非负数之和

#include <stdio.h>

void main()
{
    /*
    编程实现从键盘输入20个整数,统计非负数的个数,并计算非负数之和
    */

    int str[20];
    for (int i = 0; i < 20; i++)
    {
        printf("请输入第%d个整数:", i+1);
        scanf("%d", &str[i]);
    }

    int sum = 0, count = 0;
    for (int i = 0; i < 20; i++)
    {
        if (str[i] < 0)
        {
            sum = sum + str[i];
            count++;
        }
    }
    printf("非负数个数:%d\n非负数之和:%d", count, sum);
}

题型六十

输入10个整数,将这10个整数升序排列输出,奇数在前,偶数在后

#include <stdio.h>

void main()
{
    /*
    输入10个整数,将这10个整数升序排列输出,奇数在前,偶数在后
    */
    int str[10],n;
    int odd = 0;    
    int even = 9;

    for (int i = 0; i < 10; i++)   
    {
        printf("请输入第%d个整数:", i + 1);
        scanf("%d", &n);
        // 偶数 放数组右边
        if (n % 2 == 0)
        {
            str[even--] = n;
        }
        // 奇数 放数组左边
        if (n % 2 == 1)
        {
            str[odd++] = n;
        }
    }

    // 选择排序对 奇数 进行升序排列
    for (int i = 0; i < odd-1; i++)
    {
        for (int j = i+1; j < odd; j++)
        {
            if (str[i] > str[j])
            {
                int temp = str[j];
                str[j] = str[i];
                str[i] = temp;
            }
        }
    }

    // 选择排序对 偶数 进行升序排列
    for (int i = odd; i < 10-1; i++)
    {
        for (int j = i+1; j < 10; j++)
        {
            if (str[i] > str[j])
            {
                int temp = str[j];
                str[j] = str[i];
                str[i] = temp;
            }
        }
    }

    // 输出
    for (int i = 0; i < 10; i++)
    {
        printf("%d ",str[i]);
    }
}

题型六十一

编程实现字符串反向输出

输入:abc

输出:cba

#include <stdio.h>
#include <string.h>

void main()
{
    char str[10];
    printf("请输入字符串:");
    gets(str);
    int len = strlen(str);

    printf("字符串反向输出:");
    for (int i = len-1; i >= 0; i--)
    {
        printf("%c",str[i]);
    }
}

题型六十二

编程实现将用户输入的字符串中所有字符 ‘c’ 删除,并输出结果

#include <stdio.h>
#include <string.h>

void main()
{
    /*
    编程实现将用户输入的字符串中所有字符 'c' 删除,并输出结果
    */
    char str[10];
    printf("请输入字符串:");
    gets(str);
    
    // 处理
    for (int i = 0; i < strlen(str); i++)
    {
        if (str[i] == 'c')
        {
            for (int j = i; j < strlen(str); j++)
            {
                str[j] = str[j+1];
            }   
        }
    }

    printf("输出结果:");  
    for (int i = 0; i < strlen(str); i++)
    {
        printf("%c",str[i]);
    }
}
#include <stdio.h>

void main()
{
    char str[10];
    gets(str);

    int i, j;
    for (i = 0, j = 0; str[i] != '\0'; i++) 
    {
        if (str[i] != 'c')
        {
            str[j++] = str[i];      
        }
    }

    str[j] = '\0';
    puts(str);
}

题型六十三

编程实现 strcpy 函数原理

编程实现 strcat 函数原理

编程实现 strcmp 函数原理

编程实现 delete 字符删除

编程实现 strlen 函数原理

#include <stdio.h>

// 声名函数
void v_strcpy(char *a, char *b);
void v_strcat(char *dest, char *src);
int v_strcmp(char *dest, char *src);
void v_delete(char *src, char ch);
int v_strlen(char *s);

int main()
{
    /*
    编程实现 strcpy 函数原理

    编程实现 strcat 函数原理

    编程实现 strcmp 函数原理

    编程实现 delete 字符删除

    编程实现 strlen 函数原理
    */

    // strcpy
    char src_1[10] = "def";
    char dest_1[10] = "abc";
    v_strcpy(dest_1, src_1);
    printf("v_strcpy:%s", dest_1);

    printf("\n");

    // strcat
    char src_2[10] = "def";
    char dest_2[10] = "abc";
    v_strcat(dest_2, src_2);
    printf("v_strcat:%s", dest_2);

    printf("\n");

    // strcmp
    char src_3[10] = "aef";
    char dest_3[10] = "aef";
    int n = v_strcmp(dest_3, src_3);
    if (n > 0)
    {
        printf("%s > %s", dest_3, src_3);
    }
    else if (n == 0)
    {
        printf("%s = %s", dest_3, src_3);
    }
    else
    {
        printf("%s < %s", dest_3, src_3);
    }

    printf("\n");

    // delete
    char src_4[10] = "abcdef";
    char ch;
    printf("原字符串为%s 请输入要删除的字符:", src_4);
    scanf("%c", &ch);
    v_delete(src_4, ch);
    printf("v_delete:%s", src_4);

    printf("\n");

    // strlen
    char src_5[10] = "abcdef";
    printf("%s的长度为:%d", src_5, v_strlen(src_5));

    return 0;
}

void v_strcpy(char *dest, char *src)
{
    while (*src != '\0')
    {
        *dest++ = *src++;
    }
}

void v_strcat(char *dest, char *src)
{
    while (*dest != '\0')
    {
        *dest++;
    }
    while (*src != '\0')
    {
        *dest++ = *src++;
    }
}

int v_strcmp(char *dest, char *src)
{
    while (*dest == *src)
    {
        if (*dest == '\0')
        {
            return 0;
        }
        *dest++;
        *src++;
    }
    return (*dest - *src);
}

void v_delete(char *s, char ch)
{
    char *p = s;
    while (*s)
    {
        if (*s != ch)
        {
            *p++ = *s;
        }
        *s++;
    }
    *p = '\0';
}

int v_strlen(char *s)
{
    int n = 0;
    while (*s != '\0')
    {
        *s++;
        n++;
    }
    return n;
}

题型六十四

一维数组插入数据,并升序输出

原来数据:1 3 5 7

插入 4

输出:1 3 4 5 7

#include <stdio.h>

void main()
{
    /*
    一维数组插入数据,并升序输出
    原来数据:1 3 5 7
    插入 4
    输出:1 3 4 5 7
    */

    int length = 10;
    int str[length], n;
    for (int i = 0; i < 10; i++)
    {
        printf("请输入第%d个数据:", i + 1);
        scanf("%d", &str[i]);
    }
    printf("请输入插入数据:");
    scanf("%d", &n);

    // 升序排列
    for (int i = 0; i < 10 - 1; i++)
    {
        for (int j = 0; j < 10 - 1 - i; j++)
        {
            if (str[j] > str[j + 1])
            {
                int temp = str[j];
                str[j] = str[j + 1];
                str[j + 1] = temp;
            }
        }
    }

    // 插入数据
    int index = 0;
    for (int i = 0; i < 11; i++)
    {
        if (str[i] > n)
        {
            index = i; //  获取最大值索引
            break;
        }
    }

    // 数组依次后移
    for (int j = 10; j > index; j--)
    {
        str[j] = str[j - 1];
    }
    // 插入
    str[index] = n;
    length = length + 1;

    // 输出
    for (int i = 0; i < length; i++)
    {
        printf("%d ", str[i]);
    }
}

题型六十五

找出一个二维数组鞍点的位置:该位置上的元素在该行上最大,在该列上最小

如果有输出行列号,没有输出提示信息

#include <stdio.h>

void main()
{
    /*
    找出一个二维数组鞍点的位置:该位置上的元素在该行上最大,在该列上最小
    如果有输出行列号,没有输出提示信息
    */
    int str[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int flag = 0;

    // 遍历每一行
    for (int i = 0; i < 3; i++)
    {
        int max_row = str[i][0];
        int col_index = 0;

        // 找到每一行的最大值
        for (int j = 0; j < 3; j++)
        {
            if (str[i][j] > max_row)
            {
                max_row = str[i][j];
                col_index = j;
            }
        }

        // 检查最大值是否也是其列中的最小值
        int min_col = str[0][col_index];
        for (int j = 0; j < 3; j++)
        {
            if (str[i][col_index] < min_col)
            {
                min_col = str[i][col_index];
            }
        }

        if (max_row == min_col)
        {
            printf("鞍点位置在第 %d 行,第 %d 列,元素值为 %d\n", i + 1, col_index + 1, max_row);
            // 标记已找到鞍点
            flag = 1;
        }
    }

    if (!flag)
    {
        printf("该二维数组没有鞍点\n");
    }
}

题型六十六

数组后移

#include <stdio.h>

void main()
{
    int str[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};  
    // 数组后移一位  
    for (int i = 9; i > 0; i--)
    {
        str[i] = str[i - 1];
    }
    
    // 输出
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", str[i]);
    }
}

题型六十七

编程求1000以内的完数,1不是完数

例如:6=1+2+3

#include <stdio.h>

void main()
{
    /*
    编程求1000以内的完数,1不是完数
    如:6=1+2+3
    */

   int sum;
   for (int i = 2; i <= 1000; i++)
   {
       sum = 0;
       for (int j = 1 ; j < i; j++)
       {
           if (i % j == 0)
           {
               sum = sum + j;
           }
       }

       if (sum == i)
       {
           printf("%d = ",i);
           for (int k = 1; k < i; k++)
           {
               if (i % k == 0)
               {
                   printf("%d + ",k);
               }
           }
           printf("\n");
       }
   }
}

题型六十八

数组倒序排列

#include <stdio.h>

// 函数声名
void fun();

int main()
{
    /*
    数组倒序排列
    */
    int str[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    fun(str);
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", str[i]);
    }
    
    return 0;
}

void fun(int *str)
{
    int i, j;
    for (i = 0, j = 9; i < j; i++, j--)
    {
        int temp = str[i];
        str[i] = str[j];
        str[j] = temp;
    }
}
#include <stdio.h>

// 函数声名
void fun(int *str, int n);

int main()
{
    /*
    数组倒序排列
    */
    int str[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    fun(str, 10);
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", str[i]);
    }

    return 0;
}

void fun(int *str, int n)
{
    for (int i = 0; i < n / 2; i++)
    {
        int temp = str[i];
        str[i] = str[n - 1 - i];
        str[n - 1 - i] = temp;
    }
}

题型六十九

求数列中n个数{1,12,123……123456789}的累和,1<=n<=9

例如n=3,就是求1,12,123的累和

#include <stdio.h>

int main()
{
    /*
    求数列中n个数{1,12,123……123456789}的累和,1<=n<=9
    例如n=3,就是求1,12,123的累和
    */
    int n;
    printf("请输入n:");
    scanf("%d", &n);

    int num = 0,sum = 0;
    for (int i = 1; i <= n; i++)
    {
        num = num*10 + i;
        sum = sum + num;
    }
    printf("%d",sum);
}

题型七十

把一个学生的信息(包括学号、姓名、性别、住址)放在一个结构体变量中,然后输出这个学生的信息

#include <stdio.h>

struct student
{
    int num;
    char name[10];
    char sex[5];
    char address[100];
};

int main()
{
    /*
    把一个学生的信息(包括学号、姓名、性别、住址)放在一个结构体变量中,然后输出这个学生的信息
    */
    struct student stu1 = {1234, "wei", "F", "hubeiwuhan"};
    printf("学号:%d\n姓名:%s\n性别:%s\n住址:%s", stu1.num, stu1.name, stu1.sex, stu1.address);
    return 0;
}

题型七十一

输入两个学生的学号、姓名和成绩,输出成绩较高的学生的学号、姓名和成绩

#include <stdio.h>

struct student
{
    int num;
    char name[10];
    float score;
};

int main()
{
    /*
    输入两个学生的学号、姓名和成绩,输出成绩较高的学生的学号、姓名和成绩
    */
    struct student stu[2];
    for (int i = 0; i < 2; i++)
    {
        printf("请输入第%d位学生的学号:", i + 1);
        scanf("%d", &stu[i].num);
        printf("请输入第%d位学生的姓名:", i + 1);
        scanf("%s", stu[i].name);
        printf("请输入第%d位学生的成绩:", i + 1);
        scanf("%f", &stu[i].score);
    }
    if (stu[0].score > stu[1].score)
    {
        printf("学号:%d\n", stu[0].num);
        printf("姓名:%s\n", stu[0].name);
        printf("成绩:%f\n", stu[0].score);
    }
    else if (stu[0].score < stu[1].score)
    {
        printf("学号:%d\n", stu[1].num);
        printf("姓名:%s\n", stu[1].name);
        printf("成绩:%f\n", stu[1].score);
    }
    else
    {
        printf("学号:%d\n", stu[0].num);
        printf("姓名:%s\n", stu[0].name);
        printf("成绩:%f\n", stu[0].score);
        printf("学号:%d\n", stu[1].num);
        printf("姓名:%s\n", stu[1].name);
        printf("成绩:%f\n", stu[1].score);
    }

    return 0;
}

题型七十二

有3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果

#include <stdio.h>
#include <string.h>

struct person
{
    char name[10];
    int count;
} leader[3] = {"wei", 0, "wang", 0, "zhang", 0};

int main()
{
    /*
    有3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果
    */
    char leader_name[10];
    for (int i = 1; i <= 10; i++)
    {
        printf("请输入投票人的姓名:");
        scanf("%s", &leader_name);
        for (int j = 0; j < 3; j++)
        {
            if (strcmp(leader_name, leader[j].name) == 0)
            {
                leader[j].count++;
            }
        }
    }

    // 输出
    for (int i = 0; i < 3; i++)
    {
        printf("%s\t", leader[i].name);
        printf("%d\n", leader[i].count);
    }

    return 0;
}

题型七十三

有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息

#include <stdio.h>

struct student
{
    int num;
    char name[10];
    float score;
};

int main()
{
    /*
    有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息
    */
    struct student stu[5];
    for (int i = 0; i < 5; i++)
    {
        printf("请输入第%d位学生的学号:", i + 1);
        scanf("%d", &stu[i].num);
        printf("请输入第%d位学生的姓名:", i + 1);
        scanf("%s", stu[i].name);
        printf("请输入第%d位学生的成绩:", i + 1);
        scanf("%f", &stu[i].score);
    }

    // 定义临时结构体
    struct student temp;
    for (int i = 0; i < 5 - 1; i++)
    {
        for (int j = i + 1; j < 5; j++)
        {
            if (stu[i].score < stu[j].score)
            {
                temp = stu[i];
                stu[i] = stu[j];
                stu[j] = temp;
            }
        }
    }

    // 输出
    for (int i = 0; i < 5; i++)
    {
        printf("%d\t", stu[i].num);
        printf("%s\t", stu[i].name);
        printf("%.2f\n", stu[i].score);
    }

    return 0;
}

题型七十四

输入3个整数a,b,c,要求按由大到小的顺序将它们输出,用函数实现

#include <stdio.h>

// 函数声明
void fun(int *a, int *b, int *c);
void swap(int *x, int *y);

int main()
{
    /*
    输入3个整数a,b,c,要求按由大到小的顺序将它们输出。用函数实现
    */
    int a, b, c;
    printf("请输入a,b,c:");
    scanf("%d,%d,%d", &a, &b, &c);

    fun(&a, &b, &c);
    printf("%d,%d,%d", a, b, c);

    return 0;
}

void fun(int *a, int *b, int *c)
{
    if (*a < *b)
    {
        swap(a, b);
    }
    if (*a < *c)
    {
        swap(a, c);
    }
    if (*b < *c)
    {
        swap(b, c);
    }
}

void swap(int *x, int *y)
{
    int temp = *x;
    *x = *y;
    *y = temp;
}

题型七十五

输入两个整数,要求输出其中值较大者,要求用函数来找到大数

#include <stdio.h>

// 函数声明
int fun(int a,int b);

int main()
{
    /*
    输入两个整数,要求输出其中值较大者。要求用函数来找到大数
    */
   int a,b;
   printf("请输入整数a,b:");
   scanf("%d,%d",&a,&b);
   int max = fun(a,b);
   printf("Max:%d",max);

   return 0;
}

int fun(int a,int b)
{
    int max = a > b ? a : b;
    return max;
}

题型七十六

输入4个整数,找出其中最大的数,用函数的嵌套调用来处理

#include <stdio.h>

// 函数声名
int max(int a, int b, int c, int d);
int swap(int x, int y);

int main()
{
    /*
    输入4个整数,找出其中最大的数,用函数的嵌套调用来处理
    */
    int a, b, c, d;
    printf("请输入a,b,c,d:");
    scanf("%d,%d,%d,%d", &a, &b, &c, &d);
    printf("%d", max(a, b, c, d));

    return 0;
}

int max(int a, int b, int c, int d)
{
    int temp;
    temp = swap(a, b);
    temp = swap(temp, c);
    temp = swap(temp, d);
}

int swap(int x, int y)
{
    return x > y ? x : y;
}

题型六十七

有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁

问第4个学生岁数,他说比第3个学生大2岁

问第3个学生,又说比第2个学生大2岁

问第2个学生,说比第1个学生大2岁

最后问第1个学生,他说是10岁。请问第5个学生多大

#include <stdio.h>

//函数声名
int function(int n);

int main()
{
    printf("第5个学生的年龄是:%d",function(5));

    return 0;
}

int function(int n)
{
    if (n == 1)
    {
        return 10;
    }
    
    return function(n-1) + 2;
}

题型六十八

输入10个数,要求输出其中值最大的元素和该数是第几个数

#include <stdio.h>

int main()
{
    /*
    输入10个数,要求输出其中值最大的元素和该数是第几个数
    */
    int str[10];
    for (int i = 0; i < 10; i++)
    {
        printf("请输入第%d个数:", i + 1);
        scanf("%d", &str[i]);
    }
    int max = 0,index = 0;
    for (int i = 0; i < 10; i++)
    {
        if (str[i] > max)
        {
            max = str[i];
            index = i;
        }
    }
    printf("值最大的元素是:%d,是第%d个数",max,index+1);
    
    return 0;
}

题型六十九

有一个一维数组score,内放10个学生成绩,求平均成绩,用函数实现

#include <stdio.h>

// 函数声名
float function(float *score);

int main()
{
    /*
    有一个一维数组score,内放10个学生成绩,求平均成绩,用函数实现
    */
    float score[10];
    for (int i = 0; i < 10; i++)
    {
        printf("请输入第%d位学生的成绩:", i + 1);
        scanf("%f", &score[i]);
    }

    float avg = function(score);
    printf("平均成绩:%f", avg);

    return 0;
}

// float function(float score[10])
float function(float *score)
{
    float sum = 0.0;
    for (int i = 0; i < 10; i++)
    {
        sum = sum + score[i];
    }
    return sum / 10;
}

题型七十

对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出

#include <stdio.h>

// 函数声明
void sort(int str[10]);

int main()
{
    /*
    对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出
    */
    int str[10];
    for (int i = 0; i < 10; i++)
    {
        printf("请输入第%d个元素:", i + 1);
        scanf("%d", &str[i]);
    }

    sort(str);

    printf("Array:\n");
    for (int i = 0; i < 10; i++)
    {
        printf("%d ",str[i]);
    }
    
    return 0;
}

void sort(int str[10])
{
    for (int i = 0; i < 10-1; i++)
    {
        for (int j = 0; j < 10-1-i; j++)
        {
            if (str[j] < str[j+1])
            {
                int temp = str[j];
                str[j] = str[j+1];
                str[j+1]= temp;
            }
        }
    }
}

题型七十一

有10个地区的面积,要求对它们按由小到大的顺序排列,冒泡排序实现

#include <stdio.h>

int main()
{
    /*
    有10个地区的面积,要求对它们按由小到大的顺序排列。冒泡排序实现
    */
    float str[10];
    for (int i = 0; i < 10; i++)
    {
        printf("请输入第%d个地区的面积:", i + 1);
        scanf("%f", &str[i]);
    }

    // 冒泡排序
    for (int i = 0; i < 10-1; i++)
    {
        for (int j = 0; j < 10-1-i; j++)
        {
            if (str[j] > str[j+1])
            {
                int temp = str[j];
                str[j] = str[j+1];
                str[j+1] = temp;
            }
        }
    }

    // 选择排序
    // for (int i = 0; i < 10; i++)
    // {
    //     for (int j = i+1; j < 10; j++)
    //     {
    //         if (str[i] > str[j])
    //         {
    //             int temp = str[i];
    //             str[i] = str[j];
    //             str[j] = temp;
    //         }
    //     }
    // }
    
    // 输出
    for (int i = 0; i < 10; i++)
    {
        printf("%.2f ",str[i]);
    }
    
    return 0;
}

题型七十二

将一个二维数组行和列的元素互换,存到另一个二维数组中

#include <stdio.h>

int main()
{
    /*
    将一个二维数组行和列的元素互换,存到另一个二维数组中
    */
    int a[2][3], b[3][2];
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            printf("请输入第 %d 行 %d 列元素:", i + 1, j + 1);
            scanf("%d", &a[i][j]);
        }
    }

    // 行 列 互换
    printf("Array a:\n");
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            printf("%d ",a[i][j]);
            b[j][i] = a[i][j];
        }
        printf("\n");
    }

    // 输出
    printf("Array b:\n");
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            printf("%d ",b[i][j]);
        }
        printf("\n");
    }

    return 0;    
}

题型七十三

有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号

#include <stdio.h>

int main()
{
    /*
    有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号
    */
    int str[3][4];
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            printf("请输入第%d行%d列:", i + 1, j + 1);
            scanf("%d", &str[i][j]);
        }
    }

    int max = str[0][0], row = 0, colum = 0;
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            if (str[i][j] > max)
            {
                max = str[i][j];
                row = i;
                colum = j;
            }
        }
    }

    printf("值最大元素在 %d 行 %d 列:%d", row + 1, colum + 1, max);

    return 0;
}

题型七十四

输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

#include <stdio.h>

int main()
{
    /*
    输入一行字符,统计其中有多少个单词,单词之间用空格分隔开
    */
    char string[100];
    printf("请输入单词,每个单词用空格隔开:");
    gets(string);
    int c, num;
    for (int i = 0; (c = string[i]) != '\0'; i++)
    {
        if (c == ' ')
        {
            num++;
        }
    }
    printf("一共有%d个单词", num + 1);

    return 0;
}

题型七十五

求1+2+3+…+100

#include <stdio.h>

int main()
{
    /*
    求1+2+3+…+100
    */
    int sum = 0;
    for (int i = 1; i <= 100; i++)
    {
        sum = sum + i;
    }
    printf("%d", sum);
    
    return 0;
}

题型七十六

在全系1000名学生中举行慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数以及平均每人捐款的数目

#include <stdio.h>

int main()
{
    /*
    在全系1000名学生中举行慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数以及平均每人捐款的数目
    */
    int i;
    float sum = 0, end = 100000, amount, average = 0.0;
    for (i = 1; i <= 1000; i++)
    {
        printf("请输入第%d个同学捐款金额:", i);
        scanf("%f", &amount);
        sum = sum + amount;
        if (sum >= end)
        {
            break;
        }
    }
    average = sum / i;
    printf("捐款人数:%d\n平均每人捐款的数目:%.2f", i, average);
    return 0;
}

题型七十七

判断101-200之间有多少个素数,并输出所有素数

#include <stdio.h>

int main()
{
    /*
    判断101-200之间有多少个素数,并输出所有素数
    */
    int i, j, count = 0;
    for (i = 101; i <= 200; i++)
    {
        for (j = 2; j < i; j++)
        {
            if (i % j == 0)
            {
                break;
            }
        }
        if (i == j)
        {
            count++;
            printf("%d ", i);
        }
    }
    printf("\n一共有:%d 个素数",count);

    return 0;
}

题型七十八

输入两个正整数m和n,求其最大公约数和最小公倍数

#include <stdio.h>

int main()
{
    /*
    输入两个正整数m和n,求其最大公约数和最小公倍数
    */
    int m, n;
    printf("请输入m和n:");
    scanf("%d,%d", &m, &n);
    int max = m > n ? m : n;
    int min = m < n ? m : n;
    while (min != 0)
    {
        int temp = max % min;
        max = min;
        min = temp;
    }
    int gys = max;
    int gbs = m * n / gys;
    printf("最大公约数:%d\n最小公倍数:%d", gys, gbs);

    return 0;
}
#include <stdio.h>

// 函数声明
int max_gys(int max, int min);
int min_gbs(int max, int min);

int main()
{
    /*
    输入两个正整数m和n,求其最大公约数和最小公倍数
    */
    int m, n;
    printf("请输入m和n:");
    scanf("%d,%d", &m, &n);
    int max = m > n ? m : n;
    int min = m < n ? m : n;
    int gys = max_gys(max, min);
    int gbs = min_gbs(max, min);

    printf("最大公约数:%d\n最小公倍数:%d", gys, gbs);

    return 0;
}

int max_gys(int max, int min)
{
    int gmax = 0;
    for (int i = 1; i <= min; i++)
    {
        if (max % i == 0 && min % i == 0)
        {
            if (i > gmax)
            {
                gmax = i;
            }
        }
    }
    return gmax;
}

int min_gbs(int max, int min)
{
    int gmin = 0;
    for (int i = min; i <= min * max; i++)
    {
        if (i % max == 0 && i % min == 0)
        {
            gmin = i;
            break;
        }
    }
    return gmin;
}

题型七十九

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

#include <stdio.h>
#include <string.h>

int main()
{
    /*
    输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
    */
    int letters = 0, space = 0, digit = 0, other = 0;
    char c;
    printf("请输入一行字符:");
    while ((c = getchar()) != '\n')
    {
        if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
        {
            letters++;
        }
        else if (c == ' ')
        {
            space++;
        }
        else if (c >= '0' && c <= '9')
        {
            digit++;
        }
        else
        {
            other++;
        }
    }
    printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符:%d\n", letters, space, digit, other);

    return 0;
}

题型八十

    * 
   *** 
  ****** 
 ******** 
  ****** 
   *** 
    * 
#include <stdio.h>

int main()
{
    for (int i = 1; i <= 4; i++)
    {
        for (int j = 4; j > i; j--) //  空格
        {
            printf(" ");
        }
        for (int j = 1; j <= i * 2 - 1; j++) // *
        {
            printf("*");
        }
        printf("\n");
    }

    for (int i = 1; i < 4; i++)
    {
        for (int j = 1; j <= i; j++) // 空格
        {
            printf(" ");
        }
        for (int j = 1; j <= 7 - 2 * i; j++) // *
        {
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

题型八十一

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和

#include <stdio.h>

int main()
{
    /*
    有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
    */
    float sum = 0.0;
    float fz = 2;
    float fm = 1;
    for (int i = 0; i < 20; i++)
    {
        sum = sum + fz / fm;
        printf("%.2f / %.2f \n", fz, fm);
        int temp = fz;
        fz = fz + fm;
        fm = temp;
    }
    printf("%9.6f", sum);

    return 0;
}

题型八十二

求1!+2!+3!+…+20!的和

#include <stdio.h>

int main()
{
    /*
    求1!+2!+3!+...+20!的和
    */
    float sum = 0.0;
    for (int i = 1; i <= 20; i++)
    {
        float temp = 1.0;
        for (int j = 1; j <= i; j++)
        {
            temp = temp * j;
        }
        sum = sum + temp;
    }
    printf("%.2f", sum);

    return 0;
}

题型八十三

在这里插入图片描述

#include <stdio.h>
#include <math.h>

int main()
{
    int sign = 1;
    double sum = 0.0;
    double fm = 1.0;
    double fs = 1.0;
    double pi = 0.0;
    while (fabs(fs) >= 1e-6)
    {
        sum = sum + fs;
        fm = fm + 2;
        sign = -sign;
        fs = sign / fm;
    }
    pi = 4 * sum;
    printf("pi的值为 %f\n", pi);

    return 0;
}
#include <stdio.h>
#include <math.h>

int main()
{
    double result = 1.0;
    double fz = 2.0;
    double pi;
    for (int i = 1; i <= 10000; i++)
    {
        result *= ((fz * fz) / ((fz - 1) * (fz + 1)));
        fz = fz + 2;
    }
    pi = 2 * result;
    printf("pi的值为:%.6f\n", pi);

    return 0;
}
#include <stdio.h>
#include <math.h>

int main()
{
    double pi;
    double fm = 1.0;
    double sum = 0.0;
    while (1 / (fm * fm) >= 1e-6)
    {
        sum += 1 / (fm * fm);
        fm++;
    }
    pi = 6 * sum;
    printf("pi的值为:%.6f\n", sqrt(pi));

    return 0;
}

题型八十四

在这里插入图片描述

#include <stdio.h>
#include <math.h>

int main()
{
    double pi;
    double result = 1.0;
    for (int i = 2; i <= 100; i += 2)
    {
        result *= (double)(i * i) / ((i - 1) * (i + 1));
    }
    printf("result = %lf", 2 * result);

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2110030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录:474. 一和零

474. 一和零 二维费用背包问题 class Solution { public:int findMaxForm(vector<string>& strs, int m, int n) {int l strs.size();int dp[110][110] {0};//dp[i][j]表示有i个0&#xff0c;j个1的子集长度for (int i 0; i < l; i) {//遍历字符数组int one …

「漏洞复现」蜂信物联 FastBee 开源物联网平台 download 任意文件读取漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…

数据库知识回忆

1、关系型数据库与非关系型数据库 数据库类型数据模型扩展性性能举例关系型数据库基于严格的关系模型->表格较差查询时要优化电商网站的商品信息非关系型数据库相对灵活 比如键值对(redis) 文档数据库(MongoDB)较好较好用户行为日志 2、DBS DBMS OS 关系 用户通过DBMS接口…

怎么将mp4转换为mp3?教你8种值得收藏的转换方法!

怎么将mp4转换为mp3&#xff1f;在日常的数字娱乐与工作中&#xff0c;MP4视频文件因其无所不在的兼容性成为了大众的首选&#xff0c;但与此同时&#xff0c;它们也悄然带来了一些不便&#xff0c;比如面对一个视频&#xff0c;其中的视觉内容或许并不吸引你&#xff0c;但你却…

Xmind思维导图领衔,三款常备神器助你2024年思维升级!

到了2024年&#xff0c;信息多得让人眼花&#xff0c;新东西学都学不完。要在这么多信息里保持清醒&#xff0c;快速学东西&#xff0c;对大家来说是个考验。好在&#xff0c;科技帮了我们大忙&#xff0c;比如思维导图软件&#xff0c;它们直观又灵活&#xff0c;帮我们提高思…

COD论文笔记 ECCV2024 Just a Hint: Point-Supervised Camouflaged Object Detection

这篇论文的主要动机、现有方法的不足、拟解决的问题、主要贡献和创新点&#xff1a; 1. 动机 伪装物体检测&#xff08;Camouflaged Object Detection, COD&#xff09;旨在检测隐藏在环境中的伪装物体&#xff0c;这是一个具有挑战性的任务。由于伪装物体与背景的细微差别和…

Simulink:循环计数器 Counter Free-Running

原文&#xff1a;Matlab生成stm32代码_matlab stm32-CSDN博客 使用“Counter Free-Running”模块进行计数&#xff0c;参数配置如下 此配置的意思为每0.5秒计数一次&#xff0c;计数的最大值为2^Nbits – 1&#xff0c;其中Nbits为所填的2&#xff0c;所以这里最大值为3。 示波…

Prometheus + Grafana + nVisual 实现运维监控全面可视化

Prometheus主要实现采集、存储、查询设备数据指标、告警等功能&#xff1b;Grafana通过Prometheus的API以仪表板的形展示数据&#xff0c;同时在线提供了大量监测数据展示模版。然而&#xff0c;实际运维中我们不仅需要实时监测数据&#xff0c;还需要了解设备的物理位置、拓扑…

如何在Centos7安装“Grafana“?

一、下载 下载地址&#xff1a;https://dl.grafana.com/oss/release/grafana-9.0.0.linux-amd64.tar.gz 二、上传 到对应目录 三、解压文件 tar -zxvf grafana-9.0.0.linux-amd64.tar.gz 四、进入解压后的文件夹&#xff0c; cd grafana-9.0.0五、启动 1、前台启动&#…

LaTeX中算法环境横线/宽度调整(Algorithm)

在 LaTeX 中&#xff0c;Algorithm 环境默认会占据整栏的宽度。如果你想调整算法的宽度&#xff0c;可以使用 minipage 环境来控制其占用的空间。 原程序&#xff1a; \begin{center} % center algorithm % \begin{minipage}{.7\linewidth} \begin{algorithm}[H]\caption{The…

吃尽时代“黑利”,地信、测绘、城规专业00后,该走那条路?

00后&#xff0c;出生就享受到了互联网带来的便捷生活。 同时&#xff0c;也接收到来自四面八方的信息&#xff0c;包括负面消息。 高考改革&#xff0c;成为第一批吃螃蟹的人。大学入校疫情封闭&#xff0c;未能享受到美好校园生活。毕业那年&#xff0c;解封后又面临着离校&…

还得是苏州!!诚意满满大手笔!!!看电影免费游江南

中秋临近&#xff0c;根据康锐原创小说《月落姑苏》改编的爱情电影《江南&#xff1a;在爱开始的地方等你》即将开始点映。9 月 7 日和 8 日&#xff0c;影片在长三角的江苏、浙江、上海、安徽四省市率先开启限时超前点映&#xff0c;紧接着9 月 14 日&#xff0c;全国限时点映…

传统CV算法——角点特征点提取匹配算法实战

harris角点 角点可以是两个边缘的角点&#xff1b;角点是邻域内具有两个主方向的特征点&#xff1b;角点通常被定义为两条边的交点&#xff0c;更严格的说&#xff0c;角点的局部邻域应该具有两个不同区域的不同方向的边界。或者说&#xff0c;角点就是多条轮廓线之间的交点。…

“释放CPU多核潜能,Linux线程技术助你一臂之力,创新无限!“#Linux系统编程之线程

"释放CPU多核潜能&#xff0c;Linux线程技术助你一臂之力&#xff0c;创新无限&#xff01;"#Linux系统编程之线程 前言预备知识一、 线程概述&#xff08;与进程的区别及线程的优势&#xff09;1.1 进程与线程的联系图1.2 进程与线程1.3 使用线程的理由 二、 线程创…

【在Linux世界中追寻伟大的One Piece】数据链路层

目录 1 -> 数据链路层 2 -> 对比理解“数据链路层”和“网络层” 3 -> 以太网 3.1 -> 以太网的帧格式 4 -> 认识MAC地址 4.1 -> 对比理解MAC地址和IP地址 5 -> 认识MTU 5.1 -> MTU对IP协议的影响 5.2 -> MTU对UDP协议的影响 5.3 -> MT…

如何用涡街流量计计量检测焦炉煤气?

涡街流量计在焦炉煤气计量检测之中仍广泛使用&#xff0c;但也存在一些问题。让我们谈谈这些问题的原因和解决办法。 现场计量检测系统发生故障的原因可归纳为两大原因&#xff0c;一是由流量计或其关联设备引起的。第二种是非流量仪表原因&#xff0c;即流量仪表正常&#xff…

递归求解斐波那契数列的时间复杂度——几种简洁证明

李春葆《算法设计与分析》绿皮--题库版---61页特征方程法&#xff1a;

【原创】java+springboot+mysql企业产品销售管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

动态面板模型

专题名称 第1讲(3 小时) 动态面板模型 面板 VAR 模型 授课内容 一阶差分GMM 估计量(FD-GMM) 序列相关检验、过度识别检验(Sargan 检验) 模型设定常见问题(弱工具变量问题) 面板 VAR 模型简介 允许外生变量的PVAR模型 冲击反应函数(IRF)、方差分解(FEVD) 应用实例(介绍2篇论文) …

无论是速卖通、敦煌网、国际站,自养号测评就是提高曝光的利器!

速卖通&#xff08;AliExpress&#xff09;这是阿里巴巴集团旗下的一个跨境电商平台&#xff0c;主要面向全球零售市场。速卖通店铺根据运营策略不同,可以分为精铺模式、精品模式和垂直模式三种。除了后两种模式需要自有货源外,大部分店铺采用的是“无货源电商”模式。这意味着…