admin管理员组

文章数量:1794759

C:一些题目

1.分数求和

计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

代码语言:javascript代码运行次数:0运行复制
#include <stdio.h>

int main()
 {
    double sum = 0.0;  // 使用 double 类型来存储结果,以处理可能的小数部分
    int sign = 1;  // 符号标志,初始为 1 表示正数

    for (int i = 1; i <= 100; i++) // 循环得到 1 ~ 100
{  
        sum += sign * (1.0 / i);  // 将当前项加到总和中,通过 sign 控制正负
        sign *= -1;  // 每次循环后改变符号,实现正负交替
    }
     printf("结果为: %lf\n", sum);  // 输出计算结果

     return 0;
}

代码分析:

  •   double sum = 0.0;:使用双精度浮点数 sum 来存储累加的结果,因为计算过程中可能会产生小数。
  •   int sign = 1;:定义一个整数 sign 作为符号标志,初始为 1 表示正项。
  • for (int i = 1; i <= 100; i++) :使用循环得到从 1 到 100 的每个数。
  • sum += sign * (1.0 / i); :计算当前项的值,通过乘以 sign 来决定是加还是减,然后累加到 sum 中。
  • sign *= -1; :在每次循环后改变符号,使得下一项的符号与当前项相反。
  •  printf("结果为: %lf\n", sum); :以双精度浮点数的格式输出最终的计算结果。

本题使用双精度浮点数的原因 

1:精度问题:这个计算中涉及到分数的运算,结果可能不是整数,而是带有小数部分。使用整数类型(如 int)无法准确表示小数部分,会导致精度丢失。而双精度浮点数能够提供更高的精度,可以更准确地表示计算结果。

例如,计算 1/3 用整数类型会得到 0,但实际上应该是约 0.3333... ,使用 double 类型可以更接近真实值。

 2:避免舍入误差:随着计算的进行,由于整数除法会直接截断小数部分,可能会导致累积的舍入误差越来越大。使用浮点数可以在一定程度上减少这种误差的影响,使得最终结果更接近数学上的准确值。

3:通用性:在实际的科学计算和数学运算中,很多情况下结果都是带有小数的。使用浮点数类型可以使代码更具通用性,能够处理更广泛的数值范围和精度要求。

2.比大小(整数)

代码展示:

代码语言:javascript代码运行次数:0运行复制
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	printf("输入两个数");
	scanf("%d %d", &a, &b);
	if (a > b)
		printf("%d %d", a );
	else
	{
		if (a == b)
			printf("%d = %d", a , b);
		else
			printf("%d < %d", a , b);
	}
	return 0;
}

3.打印1~100之间所有3的倍数的数字

题目思路:

1 .需要生成1~100个数,我们可以使用 for 循环 for(i = 1;i <= 100; i++)

2. 3 的倍数一定能被3整除,因此 i % 3== 0,该表达式成立,则 i 一定是 3 的倍数

代码展示:

代码语言:javascript代码运行次数:0运行复制
#include<stdio.h>
int main()
{
	int i = 0;//初始化
	for (i = 1; i <= 100; i++)//生成1~100之间的数
	{
		if (i % 3 == 0)//判断是不是 3 的倍数
			printf("%d\n", i);
	}
	return 0;
}

4.三角形的判断

思路解析:

1:通过scanf函数得到三角形三条边的长度,用 a、b、c三个变量表示。

2:使用 if条件判断语句 来检查这三条边能否构成一个三角形。构成三角形的条件是任意两边之和大于第三边,所以使用(a + b > c) && (a + c > b) && (b + c > a) 这个条件来判断。

3:如果能构成三角形,再进一步判断三角形的类型:

     如果三条边都相等,a == b && a == c 即则是等边三角形。

     如果有两条边相等,即 (a == b) && (b != c)) || ((a == c) && (c != b)) || ((b == c) && (c != a)则是等腰三角形。

     如果三条边都不相等,则是一般三角形。

4:如果不能构成三角形,输出相应的提示信息。

代码展示:

代码语言:javascript代码运行次数:0运行复制
#include<stdio.h>
int main()
{   //初始化
	int a = 0;
	int b = 0;
	int c = 0;
    printf("请输入三边长:");
	scanf("%d %d %d", &a, &b, &c);//输入值
	if ((a + b > c) && (a + c > b) && (b + c > a))//判断是否构成三角形
	{
		if (a == b && a == c)//三边相等
		{
			printf("等边三角形");
		}
		else
		{
			if (((a == b) && (b != c)) || ((a == c) && (c != b)) || ((b == c) && (c != a)))//两边相等
			{
				printf("等腰三角形");
			}
			else
			{
				printf("普通三角形");
			}
		}
	}
	else//无法构成三角形
	{
		printf("无法构成三角形,请重新尝试");
	}
	return 0;
}

5.打印乘法口诀表

思路解析:

 1. 我们需要使用两个嵌套的循环来实现。我们可以使用两个for循环。外层for循环控制行数,从 1 到 9 。 对于每一行,内层for循环控制列数,列数从 1 到当前的行数。

2. 在内层循环中,计算当前行和列对应的乘法结果,并将其打印出来。  可以使用`printf`函数来输出乘法表达式和结果,例如:printf("%d * %d = %d\t", i, j, i * j); ,其中 i 表示行,j 表示列。

3. 为了使输出的乘法口诀表更美观,在每一行乘法运算结束后,进行换行操作。  可以在内层循环结束后,使用 printf("\n"); 来换行。

通过以上步骤,就可以逐步打印出 9*9 乘法口诀表。这样的思路可以清晰地处理每一行和每一列的乘法运算,并以整齐的格式输出结果。

代码展示:

代码语言:javascript代码运行次数:0运行复制
#include <stdio.h>
int main()
{
	int i = 0;//行变量

	for (i = 1; i <= 9; i++)
	{
		
		int j = 0;//列变量
		for (j = 1; j <= i; j++)
		{
			printf("%d * %d= %2d ", i, j, i * j);
		}
		printf("\n");
	}
	return 0;
}

结果展示:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-07-22,如有侵权请联系 cloudcommunity@tencent 删除int变量函数数学存储

本文标签: C一些题目