c语言中分支与循环的一些题目

本文介绍了使用C语言解决六道编程问题,包括三角形类型判断、乘法口诀表打印、求最大值、分数求和、闰年识别和数9个数,展示了基础逻辑控制和算术运算在实际问题中的应用。
摘要由CSDN通过智能技术生成

1.BC51-三角形判断

这是牛客的一道题,题目如下:

题目有多组输入数据,每一行输入三个a,b,c(0<a,b,c<1000),作为三角形的三个边,用空格分隔。针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”。 

首先分析题目,题目要求是多组输入,那么就要运用循环的语句,我这里是用while循环,其次是看题目条件,题目有多个如果,那么自然想到用到if语句

代码如下:

#include<stdio.h>
int main()
{
  int a,b,c;
  while(scanf("%d %d %d",&a,&b,&c) !=EOF)
  {
    if(a+b >c && a+c>b && b+c>a)
    {
       if(a==b && b==c)
       printf("Equilateral triangle!\n");
       else if(a==b || b==c || a==c)
        printf("Isosceles triangle!\n");
      else
      printf("Ordinary triangle!\n");
    }
     else
     printf("Not a triangle!\n");
  }
    return 0;
}

通过if语句先判断是否是三角形,如果是就进入if语句,在if语句中在依次判断该三角形的形状,如果都不是就是else语句来打印出不是三角形的结果(Not a triangle!)

2. 乘法口诀表

 在屏幕上输出9*9乘法口诀表

99乘法表想必大家都熟悉了,那么该如何打印出来,通过两个for循环就可以打印出来,首先通过一个for循环来打印行,在来一个for循环打印列数,为了打印美观一些让列数始终小于行数,代码实现如下:

#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, j * i);
		}
		printf("\n");
	}
	return 0;
}

3.求最大值 

求10 个整数中最大值 

10个数首先定义一个数组来存放10个数,在通过创建一个max(最大值),和一个第三个变量tmp,用来交换两个数的值。代码如下:

#include<stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,6,7,9,8,10 };
	int i = 0;
	int max = 0;
	int tmp = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	max = arr[0];
	for (i = 1; i <= sz; i++)
	{
		if (max < arr[i])
		{
			tmp = arr[i];
			arr[i] = max;
			max = tmp;
		}
	}
	printf("%d", max);
	return 0;
}

其中sz是数组的元素个数

4.分数求和

 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果,我这里用for循环来不断计算,用if语句来判断是否为奇数还是偶数,把每个奇数的和与偶数的和计算出来,根据题目在用奇数的值减去偶数(因为偶数是负的)代码如下:

#include<stdio.h>
int main()
{
	int i = 0;
	double sum = 0;
	double sum1 = 0;//计算奇数的分数和
	double sum2 = 0;//计算偶数的分数和
	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 0)
		{
			sum2 += 1.0 / i;
		}
		else
		{
			sum1 += 1.0 / i;
		}
	}
	sum = sum1 - sum2;
	printf("%f", sum);
	return 0;
}

5.打印1000年到2000年之间的闰年

 打印1000年到2000年之间的闰年

通过闰年的判断来打印是否为闰年,闰年的基本性质是:可以被4整除但不能被100整除,或者能够被400整除2,满足其中一个条件就是闰年。代码如下:

#include<stdio.h>
int main()
{
	int year = 0;
	for(year=1000; year<=2000; year++)
	{
		if(((year%4==0)&&(year%100!=0))||(year%400==0))
		{
			printf("%d ", year);
		}
	}

	return 0;
}

6.数9的个数

 编写程序数一下 1到 100 的所有整数中出现多少个数字9

首先当然是for循环1到100次,通过%来判断除以10后余数是不是9,这样就打印了1到89中的数字9,但90时这个就不正确了,所以通过 / 来判断除以10后的商是不是9,这样就接着打印90到100中9的个数。然后通过count 来计算一共有多少给9。代码如下:

#include<stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	for (i = 1; i <= 100; i++)
	{
		if (i % 10 == 9)
		{
			printf("%d ", i);
			count++;
		}
		if (i / 10 == 9)
		{
			printf("%d ", i);
			count++;
		}
	}
	printf("\n");
	printf("总共有个%d数字9", count);
	return 0;
}

 

  • 17
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WEP_Gg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值