C:一些题目
1.分数求和
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
#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.比大小(整数)
代码展示:
#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 的倍数
代码展示:
#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:如果不能构成三角形,输出相应的提示信息。
代码展示:
#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 乘法口诀表。这样的思路可以清晰地处理每一行和每一列的乘法运算,并以整齐的格式输出结果。
代码展示:
#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;
}
结果展示:
原文地址:https://blog.csdn.net/2401_85010100/article/details/140575957
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!