时间:2023年3月5日 晚22:05
主题:程序控制结构(if-else选择结构switch分支结构)
链接:ACM蓝桥杯竞赛入门 - 编程题库 - C语言网
说明:记录错题以及值得注意的算法
题目 1043: [编程入门]三个数字的排序
题目描述:输入三个整数,按由小到大的顺序输出。
输入格式:三个整数(样例输入:2 3 1)
输出格式:由小到大输出成一行,每个数字后面跟一个空格(样例输出:1 2 3)
代码:使用<条件运算符>:表达式1?表达式2:表达式3
#include<stdio.h>
int main()
{
int a,b,c;
int min, max, mid;
scanf("%d %d %d\n",&a, &b, &c);
max=((a>b?a:b)>c)?(a>b?a:b):c;
min=((a<b?b:a)<c)?(a<b?b:a):c;
mid=(a+b+c)-min-max;
printf("%d %d %d\n", min, mid,max);
return 0;
}
题目 2779: 输出绝对值
题目描述:输入一个浮点数,输出这个浮点数的绝对值。
输入格式:输入一个浮点数,其绝对值不超过10000。(样例输入:-3.14)
输出格式:输出这个浮点数的绝对值,保留到小数点后两位。(样例输出:3.14)
代码:
#include<stdio.h>
#include<math.h>
int main()
{
float n, m;
scanf("%f\n", &n);
m=fabs(n);
printf("%.2f\n", m);
return 0;
}
出错原因:
1. 使用绝对值函数,需要加上
#include<math.h>
2. 读题!读题!注意读题!严格按照所给输入输出的案例!
题目 1480: 模拟计算器
题目描述:使用Switch语句编写一个模拟简单计算器的程序。依次输入两个整数和一个字符,并用空格隔开。如果该字 符是一个“+”,则打印和;如果该字符是一个“-”,则打印差;如果该字符是一个“*”,则打印积;如果该字符是“/”,则打印商;如果该字符是一个 “%”,则打印余数。打印结果后输出一个空行。
输入格式:一行,前面两个数,再一个运算符号。(样例输入:3 4 +)
输出格式:运算表达式的结果。(样例输出:7)
代码:
#include<stdio.h>
int main()
{
char a;
int x,y;
scanf("%d %d %c\n",&x, &y, &a);
switch(a)
{
case '+': {printf("%d\n\n", x+y); break;}
case '-': {printf("%d\n\n", x-y); break;}
case '*': {printf("%d\n\n", x*y); break;}
case '/': {printf("%d\n\n", x/y); break;}
case '%': {printf("%d\n\n", x%y); break;}
default: break;
}
return 0;
}
出错原因:
switch(a) { case '+': printf("%d\n\n",x+y); break; }
注意switch语句下有一个大括号{}
注意case ‘+’,字符需要加上单引号‘’
注意题目要求<打印结果后输出一个空行>:%d/n/n