首页 > 其他分享 >C:一些题目

C:一些题目

时间:2024-07-20 21:57:09浏览次数:10  
标签:题目 int 浮点数 sign && printf 一些 三角形

 

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;
}

结果展示:

标签:题目,int,浮点数,sign,&&,printf,一些,三角形
From: https://blog.csdn.net/2401_85010100/article/details/140575957

相关文章

  • 一些零碎的知识点
    一、is、id()和 == is通过对象地址进行判断 id()函数返回对象的唯一标识符,即返回对象地址==操作符比较的是两个对象的值(value)是否相等。如果两个对象的值相等,那么‘==’返回True==操作符可以用于所有数据类型,无论是可变还是不可变。二、数据类型的方法......
  • java的一些基础知识
    文章目录JDK、JRE、JVM变量关键字标识符规则数据类型基本数据类型(简单数据类型)引用数据类型(除基本数据类型以外的数据类型)运算符Java流程控制语句分支语句循环语句特殊的流程控制语句方法形参实参数组数组动态初始化和静态初始化数组的复制数组的扩容数组的删除二维......
  • 面向对象的一些知识
    文章目录类与对象类里有什么内容?类和对象的关系对象和引用的关系对象在哪里开辟空间private修饰符-私有化this关键字-本对象封装构造方法static修饰符-静态的继承优缺点子类能否继承父类所有属性和方法super关键字重写/复写访问修饰符Objectfinal抽象类抽象方法......
  • 网络中一些概率的理解
     路由:将路由比喻为中转站是一个直观的理解方式,但为了更全面地理解路由的功能,我们还可以将其比作网络通信中的邮局或快递分拣中心。在这个类比中:数据包相当于信件或包裹,它们需要从一个地方发送到另一个地方。源地址和目的地址类似于信封上的发件人和收件人的地址。路由器就......
  • numpy的一些基本操作
    文章目录1.numpy数组的多种创建方式1.1使用np.array()创建1.2使用plt创建1.3使用np的routine函数创建2.numpy的常用属性2.1shape2.2ndim2.3size2.4dtype3.numpy的索引和切片3.1切出前两列数据3.2切出前两行数据3.3切出前两行的前两列的数据3.4数组数据翻转3.5练习:将一......
  • 2022CSP答案+解析(附题目)
    一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)1.以下哪种功能没有涉及C++语言的面向对象特性支持:()。A.C++中调用printf函数B.C++中调用用户定义的类成员函数C.C++中构造一个class或structD.C++中构造来源于同一基类的多个派生类答......
  • 一些操作线性表的函数及使用方法
    线性表的增删查改头文件seqlist.h#ifndefSEQLIST#defineSEQLIST//#include<myhead.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAXSIZE100typedefintdatatype;typedefstruct{datatypedata[MAXSIZE];in......
  • Misc基础题目-BugKu-CTF
    第一部分misc1签到题目关注公众号即可获得flag{BugKu-Sec-pwn!}misc2这是一张单纯的照片看看属性中有没有CRC或者其他信息,并没有,然后用notepad++打开,看一下头部和尾部,发现unicode编码,解码得到key{youareright}misc3隐写binwalk,zsteg并没发现flag,stegsolve查看通......
  • 第十五届蓝桥杯单片机模拟考试实战题目
    目录一、硬件框图二、功能描述2.1基本功能描述2.2显示功能1.测距界面2.参数界面3.记录界面4.显示要求2.3按键功能2.4旋钮模式2.5LED指示灯功能2.6初始状态三、代码实现1>主函数:2>测距驱动函数3>PCF8591驱动函数4>矩阵按键驱动函数5>CT107D头文件四、题目链......
  • 一些有趣的代码注释
    在网上冲浪的时候看到了一些很好玩的注释,分享一波~用处:好玩,例如放到SpringBoot的banner里,输出到浏览器控制台里…‍佛祖保佑/***_ooOoo_*o8888888o*88"."88*......