C语言每日刷题(1)

根据自己平时刷的一些题目,分享一下做题思路,也欢迎大家提出更好的见

1.

int func(int a)
{
    int b;
    switch (a)
    {
        case 1: b = 30;
        case 2: b = 20;
        case 3: b = 16;
        default: b = 0;
    }
    return b;
}

func(1) = ( )

这道题主要考察的是对于Switch语句的理解。对于这道题来说,给了 int a = 1,因此在Switch语句中,会将 case 1 当做执行入口,并执行其后的语句,并且只有碰到 break* 才执行结束。而这道题中所有分支均没有增加 *break 语句,因此代码会按照顺序一直执行下去,直到遇到了 default 语句并返回。因此最后的结果应该是 0 .

2.

KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。

输入描述:

题目有多组输入数据,每一行输入三个a,b,c(0

输出描述:

针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”。

这道题考察的是分支语句的运用来满足要求。通过读题后可以知道一共有四种输出结果,因此需要有四种判断条件。而再细分的话又可以分为两大类,即 能构成三角形 和 不能构成三角形 。那么利用三角形边的性质,我们就可以写出这段代码

#include 
​
int main() 
{
  int a, b, c;
  while(scanf("%d %d %d", &a, &b, &c)!=EOF)  // 保证多组输入,使用一个while循环
      
  if ((a + b > c) && (a + c > b)  && (b + c > a))  // 可以构成三角形的条件
  {
•    if (a == b && b == c)  // 等边三角形
•      printf("Equilateral triangle!\n");
      
•    if ((a == b && b != c) || (a == c && c != b) || (b == c && c != a))  // 等腰三角形
•      printf("Isosceles triangle!\n");
      
•    if (a != b && b != c && c != a)  // 普通三角形
•      printf("Ordinary triangle!\n");
  }
  else  // 不能构成三角形
  {
•    printf("Not a triangle!\n");
  }
  return 0;
}

3.

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

这道题很短也很明确,而要输出口诀表,我们也要先明确口诀表的格式。即每行个数依次加一,并且行数与列数相等,均为9。那么我们肯定需要用到循环语句,如果依旧没有什么思路的话,我们可以先尝试打印一个 9*9 的 * 来练习一下

#include 
int main()
{
    int i = 0;
    //控制行数
    for(i=1; i<=9; i++)
    {
        //打印每一行内容,每行有i个*
        int j = 0;
        for(j=1; j<=i; j++)
        {
            printf("*");
        }
        printf("\n");  // 不要忘记换行
    }
    return 0;
}

打印出来如下所示

*
**
***
****
*****
******
*******
********
*********

有了这个为基础,我们只需要把 * 替换成乘法表达式即可

#include 
int main()
{
    int i = 0;
    //控制行数
    for(i=1; i<=9; i++)
    {
        //打印每一行内容,每行有i个表达式
        int j = 0;
        for(j=1; j<=i; j++)
        {
            printf("%d*%d=%2d ", i, j, i*j);
        }
        printf("\n");
    }
    return 0;
}

4.

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

读完题后,很容易想到要数1到100中数字9的个数,肯定要对1~100进行循环遍历。之后需要做的就是如何找到 9 ,那么我们就要对数字比较敏感。首先9的位置可以位于个位或者十位,因此可以分为两部分得到,最后合在一起就是总数。其次不难想到个位数字为9的数除以10得到的余数一定为9,即使用 % ;十位数为9的数除以10的结果是9,即使用 /

#include 
​
int main()
{
    int i = 0;
    int count = 0;
​
    for(i=1; i<=100; i++)
    {
        if(i%10==9)  // 判断是否相等一定要用 ==
            count++;  // 满足条件的让计数器加一
        if(i/10==9)
            count++;
    }
    printf("%d\n", count);
    return 0;
}

你可能感兴趣的:(刷题,c语言,算法,数据结构)