根据自己平时刷的一些题目,分享一下做题思路,也欢迎大家提出更好的见
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<a,b,c<1000),作为三角形的三个边,用空格分隔。
输出描述:
针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”。
这道题考察的是分支语句的运用来满足要求。通过读题后可以知道一共有四种输出结果,因此需要有四种判断条件。而再细分的话又可以分为两大类,即 能构成三角形 和 不能构成三角形 。那么利用三角形边的性质,我们就可以写出这段代码
#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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;
}