C语言小练习(贰)

上机

  1. 计算n以内所有正奇数的和 ? n值通过键盘输入

    #include <stdio.h>
    
    int main()
    {
    	int sum = 0;
    	int i = 1;
    	int n;
    	printf("请输入一个范围\n");
    	scanf("%d",&n);
    	do
    	{
    		if(i % 2 != 0)//判断奇数
    		{
    			sum += i;
    		}
    		i++;
    		
    	}while(i <= n);//限定条件
    	
    	printf("范围内的正奇数和为%d\n",sum);
    	
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述

  2. 计算 1 + 1/(2 * 3) + 1/(3 * 4) + …+ 1/(n * (n + 1)) = ?直到最后一相值小于0.00001为至。

#include <stdio.h>

int main() {
    // 初始化变量
    double sum = 1.0;
    double term;
    int n = 2;

    // 计算每一项并累加到 sum 中,直到最后一项小于 0.00001
    do {
        term = 1.0 / (n * (n + 1));
        sum += term;
        n++;
    } while (term >= 0.00001);

    // 输出结果
    printf("结果为: %.5f\n", sum);

    return 0;
}

运行结果:

在这里插入图片描述

  1. 计算1+1/2 - 1/3 + 1/4 - 1/5 …+1/n= ? n通过键盘输入
#include <stdio.h>

int main() {
    int n;
    double sum = 1.0; // 初始和为第一项1.0
    printf("请输入一个整数 n:");
    scanf("%d", &n);

    for (int i = 2; i <= n; i++) 
	{
        if (i % 2 == 0) 
		{
            sum += 1.0 / i; // 偶数项加正数
        } 
		else 
		{
            sum -= 1.0 / i; // 奇数项减负数
        }
    }

    printf("累加和为: %.6f\n", sum);

    return 0;
}

运行结果:

在这里插入图片描述

  1. 计算n的阶乘 ? n! = 123…*n n值通过键盘输入
//需求:for案例用户可通过键盘录入一个整数n用来作为阶乘的最高位数
#include <stdio.h>
#include <math.h>

int main()
{
	int n = 1;//接受控制台输入,作为阶乘最高位
	int r = 1;//用来接收计算结果
	printf("请输入一个整数:\n");
	scanf("%d",&n);
	
	//循环实现阶乘
	for(int i = 1;i <= fabs(n);i++)
	{
		r *= i;
	}
	
	printf("1~%d之间的阶乘的结果是%d\n",n,r);
	
	return 0;
	
}

运行结果:

在这里插入图片描述

  1. 输出半径为1~10的圆面积,面积大于100时停止
#include <stdio.h>
#include <math.h>
#define PI 3.14

int main()
{
	int s,s1,r;
	for(int r = 1;r <= 10;r++)
	{
		
		s = PI * r * r;
		s1 += s;
		
		if(s > 100)
		{
			printf("计算停止\n");
		}
		
	}	
	printf("半径1~10的圆面积为%d\n",s1);
	
	return 0;
}

运行结果:

在这里插入图片描述

  1. 求输入的十个整数中正数的个数及其平均值
#include <stdio.h>

int main()
{
	int num;//定义输入变量
	int count = 0;//正数的个数统计
	int sum = 0;//初始化正数的和为0
	printf("请输入10个整数\n");//提示信息
	//录入数据
	for(int i = 0;i <10;i++)
	{
		
		scanf("%d",&num);
		//计算正数的整合
		if(num>0)
		{
			sum += num;
			count++;
		}
	}
 // 计算正数的平均值
    double average = 0.0;
    if (count > 0)
    {
        average = (double)sum / count;
    }

    // 输出结果
    printf("正数的个数为:%d\n", count);
    printf("正数的总和为:%d\n", sum);
    printf("正数的平均值为:%.2f\n", average);

    return 0;
}

运行结果:

在这里插入图片描述

  1. 打印出100以内能整除7之外的的自然数
#include <stdio.h>

int main()
{
	int i;
	for(i = 0;i < 100;i++)
	{
		if(i % 7 != 0)
		
		printf("该值为:%d\n",i);
	}
	
	return 0;
}

运行结果:
在这里插入图片描述

  1. 打印乘法表
 /*
 *嵌套循环案例九九乘法表
 */
 #include <stdio.h>
 
 int main()
 {
 	//外层循环控制行
 	for(int i = 1;i <= 9;i++)
 	{	
 		//内层循环控制列<=行
 		for(int j = 1;j <= i;j++)
 		{
 			//生成当前行中的乘法序列
 			printf("%d × %d = %d\t",j,i,i*j);
		}
		//一行中所有列输出完毕,需要换行
		printf("\n");
	}
	printf("\n");
	
	return 0;
 }

运行结果:
在这里插入图片描述

9.我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三

值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

#include <stdio.h>

// 公鸡、母鸡和小鸡的数量
int cock, hen, chick;

// 枚举所有可能的情况
void search() 
{
    for (cock = 0; cock <= 100; cock++) 
	{
        for (hen = 0; hen <= 100; hen++) 
		{
            chick = 100 - cock - hen;
            // 满足条件:公鸡每只 5 文钱,母鸡每只 3 文钱,小鸡每三只 1 文钱
            if (5 * cock + 3 * hen + 1.0 / 3 * chick == 100) 
			{
                printf("公鸡数量:%d,母鸡数量:%d,小鸡数量:%d\n", cock, hen, chick);
            }
        }
    }
}

int main() 
{
    search();
    return 0;

运行结果:

在这里插入图片描述

  1. 从键盘上输入多个无符号整型数据,直到 0 结束 ,输出所输入数据中的最大值。
#include <stdio.h>

int main()
{
    int max = 0;
    int i;
    
    do
    {   
    	printf("请输入您的数值:\n");
        scanf("%d", &i);
        if (i > max )
        {
            max = i;
        }
        else if (i == 0)
        {
            break;
        }
        
    } while (1);
    printf("最小的值为%d\n", max);
    return 0;
}

运行结果:

在这里插入图片描述

思考题

  1. 判断一个数是不是回文数。(回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。如:12321
#include <stdio.h>

int main()
{   //定义变量
  	int num,count,recount,other;
  	//提示信息
  	printf("请输入数值\n");
  	scanf("%d",&num);
  	//存储输入值
  	count = num;
  	//循环
  	while(num != 0)
  	{	
  		//整数的逆转
  		other = num % 10;
  		recount = recount * 10 + other;
        //跳出循环的限定条件
  		num /= 10;
	}
	//条件判断
	if(count == recount)
	{
		printf("%d:为回文数\n",count);
	}
	else
	{
		printf("该数不是回文数\n");
	}
  	
    return 0;
}

运行结果:

在这里插入图片描述

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值