内容正文:
编写说明:湖南省普通高校对口招生专业理论考试《计算机应用类专业综合考纲百套卷》,依据《湖南省普通高校对口招生计算机应用类专业综合知识基本要求及考试大纲》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第70卷,按《计算机编程语言——C语言》范围和要求编写。具体内容为:①if语句;②if……else语句;③if语句的嵌套;④条件表达式。
湖南省《计算机应用类专业综合考纲百套卷》 第70卷
《计算机编程语言——C语言》
条件语句
考点训练卷
考试时间60分钟 满分100分
班级________姓名________学号________成绩________
一、单项选择题(本大题共15小题,每题2分,共30分)
1.(2019年)已知:int w=1,x=2,y=3,z=4;,则表达式“w>x?w:z>y?z:x”的值是( )
A.1 B.2 C.3 D.4
2.设 int a=1, b=2, c=3, d=4;,则表达式 a<b ? a : c<d ? a : d 的结果为( )
A. 1 B. 2 C. 3 D. 4
3.已知 int x=5;,执行语句 if(x) x=1; else x=6; 后,x 的值是( )
A. 1 B. 5 C. 6 D. 0
4.执行以下程序段后,输出结果是( )
int x=3, y=10; if(x=1) y=x; y=y+1; printf("%d,%d
",x,y);
A. 3,11 B. 3,10 C. 3,4 D. 1,2
5.已知 int x;,语句 if(x); 中的表达式 x 等价于( )
A. x==0 B. x!=0 C. x==1 D. x!=1
6.执行以下程序段后,输出结果是( )
int x=-3, y=1; if (x) y++; y=y+1; printf("%d
",y);
A. 1 B. 2 C. 3 D. 4
7.执行以下程序段后,输出结果是( )
int a=0; if(!a) printf("1"); else printf("0");
A. 0 B. 1 C. 10 D. 提示运行错误
8.以下程序段的输出结果是( )
int a=1, b=1; if (a<1) if(b<2) b=0; else b=2; printf("%d",b);
A. 0 B. 1 C. 2 D. 3
9.若有定义 int x=10, y=20, z=30;,则执行下列语句后 x、y、z 的值是( )
if(x>y) z=x; x=y; y=z;
A. x=10, y=20, z=30 B. x=20, y=30, z=10
C. x=20, y=30, z=30 D. x=20, y=30, z=20
10.以下程序的运行结果是( )
main()
{ int a=5; if(a++>5) printf("%d",a); else printf("%d
",a--); }
A. 4 B. 5 C. 6 D. 7
11.有以下程序段,程序的输出结果是( )
int a,b,c; a=10; b=50; c=30;
if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d
",a,b,c);
A. a=10 b=30 c=10 B. a=10 b=50 c=30
C. a=10 b=50 c=10 D. a=50 b=30 c=50
12.以下程序的运行结果是( )
main() { if (5<2*2==4) printf("T"); else printf("F"); }
A. T B. F C. 1 D. 0
13.设有条件表达式 (EXP) ? i++ : j--,则以下表达式中与 (EXP) 完全等价的是( )
A. (EXP==0) B. (EXP!=0) C. (EXP==1) D. (EXP!=1)
14.当把以下四个表达式用作 if 语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是( )
A. k%2 B. k%2==1 C. (k%2)!=0 D. !k%2==1
15.下列条件语句中,输出结果与其他语句不同的是( )
A. if(a) printf("%d
",x); else printf("%d
",y);
B. if(a==0) printf("%d
",y); else printf("%d
",x);
C. if(a!=0) printf("%d
",x); else printf("%d
",y);
D. if(a==0) printf("%d
",x); else printf("%d
",y);
二、阅读程序,写出运行结果(本大题共10小题。每空2分,合计20分)
1.(2022年)下列程序的运行结果是__________________。
#include "stdio.h"
int main(void)
{
signed char c=128;
int i=10;
(c+i>10)? puts("sum> 10"):puts("sum<=10");
return 0;
}
2.(2026年)下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int n=6,m=5,x=10;
int row=(x-1)/m+1;
int pos_in_row=(x-1)%m;
int col;
if(row%2==1){
col=pos_in_row+1;
}else{
col=m-pos_in_row;
}
printf("%d%d",row,col);
return 0;
}
3.下列程序的运行结果是__________________。
#include <stdio.h>
int main() {
int x=1, y=2, z=3;
if(x>y)
if(y>z) printf("A");
else printf("B");
else
if(x>z) printf("C");
else printf("D");
return 0;
}
4.下列程序的运行结果是__________________。
#include <stdio.h>
int main() {
int x=0, y=0, z=0;
if(x++) y=1;
else if(++z) y=2;
printf("%d,%d,%d
", x, y, z);
return 0;
}
5.下列程序的运行结果是__________________。
#include <stdio.h>
int main() {
int a=3,b=4,c=5;
int t;
if(a>b) t=a,a=b,b=t;
if(a>c) t=a,a=c,c=t;
if(b>c) t=b,b=c,c=t;
printf("%d %d %d",a,b,c);
return 0;
}
6.下列程序的运行结果是__________________。
#include <stdio.h>
int main() {
int a=1,b=2,c=3,d=4;
int x=0;
if(a>b && c>d) x=10;
else if(a<b || c<d) x=20;
else x=30;
printf("%d",x);
return 0;
}
7.下列程序的运行结果是__________________。
#include <stdio.h>
int main() {
int a=1,b=2,c=3;
if(a==1)
if(b!=2)
if(c==3) printf("X");
else printf("Y");
else printf("Z");
else printf("W");
return 0;
}
8.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int a = 1, b = 2, c = 3;
if (a++ == 1 && b++ == 2)
if (c++ == 3)
a = b + c;
else
b = a + c;
else
c = a + b;
printf("%d %d %d", a, b, c);
return 0;
}
9.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int num=9;
if(num/2 > 4)
if(num%2 == 1) num -= 3;
else num += 3;
else
num /= 2;
printf("%d", num);
return 0;
}
10.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int num = -6;
int s = num > 0 ? 1 : (num < 0 ? -1 : 0);
if (s == -1)
num = -num;
printf("%d %d", num, s);
return 0;
}
三、程序填空。按照题目要求,将正确内容填入答题卡相应位置,使程序完整(每空2分,共计30分)
1.(2024年)如需对个人一次性劳务报酬征收所得税,假设:收入未超过 800 元,不纳税;收入超过 800 元、未超过 5000 元,减除 800 元后再按 “应纳税额 =(收入−800)×20%” 纳税;收入超过 5000 元,按 “应纳税额 = 收入 ×(1−20%)×30%” 纳税。编程实现以下功能:从键盘输入个人一次性取得的劳务报酬,根据上述计算方法,计算并输出应纳税额。
#include <stdio.h>
int main()
{
________①________
printf("Input Income=");
________②________
if(________③________)
tax=0;
else if(income<=5000)
________④________
else
tax=income*0.8*0.3;
printf("tax=%.0f
",tax);
return 0;
}
2.下列程序的功能是计算下图所示的分段函数的值,x为浮点型。
#include <stdio.h>
int main()
{
____①____
printf("请输入x:");
scanf("%lf", &x);
if(____②____)
y = x * x;
else if(x < 10)
____③____
else
____④____
printf("y=%.2lf
", y);
return 0;
}
3.下列程序的功能是计算阶梯水费:用水量≤10 吨,每吨 2 元;10~20 吨,超出部分每吨 3 元;>20 吨,超出部分每吨 4 元。
#include <stdio.h>
int main()
{
float water, money;
scanf("%f", &water);
if(water <= 10)
_______①_______
else if(water <= 20)
_________②_______
else
___________③__________
printf("用水量:%.1f 吨,水费:%.2f 元
",water, money);
return 0;
}
4.功能描述:从键盘输入三个浮点数作为三角形三边长度,使用条件表达式判断三边是否满足三角形构成规则;若合法,通过多层 if 语句依次判断该三角形为等边、等腰、等腰直角、直角或普通三角形,采用海伦公式计算面积并完整输出结果;若不合法,提示无法构成三角形。
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, c, p, area;
int flag;
printf("请输入三条边长:");
scanf("%lf%lf%lf", &a, &b, &c);
flag = __________①_________
if(flag)
{
p = ______②_______;
area = sqrt(p*(p-a)*(p-b)*(p-c));
printf("合法三角形,");
if(_________③__________)
printf("等边三角形
");
else if(___________④__________)
printf((a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)?"等腰直角三角形
" : "等腰三角形
");
else
printf((a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)? "直角三角形
" : "普通三角形
");
printf("面积:%.2lf
", area);
}
else
{
printf("不能构成三角形
");
}
return 0;
}
四、阅读程序:修改程序中的错误,不得增行或删行,也不得更改程序结构。请在答题卡中指出错误代码所在的行号,并给出该行修改后的程序代码。(每空2分,共计20分)
1.下列程序的功能是:输入两个正数,先判断除数是否为 0(非法运算);若合法,计算两数之商,再判断商是否为整数,完整输出运算结论。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 int num1, num2, res;
L5 scanf("%d%d", &num1, &num2);
L6 if(num2)
L7 {
L8 printf("除数为0,运算非法
");
L9 }
L10 else
L11 {
L12 res = num1 / num2;
L13 printf("运算合法,商:%d
", res);
L14 if(num1 % num2 != 0)
L15 printf("商是整数
");
L16 else
L17 printf("商不是整数
");
L18 }
L19 return 0;
L20 }
2.下列程序的功能是:输入饮品容量 (ml),折扣规则:
容量 < 300ml:原价售卖
300ml ≤ 容量 ≤ 500ml:9 折
容量 > 500ml:8 折
已知原价统一为 15 元,计算最终售价。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 int ml;
L5 double money;
L6 scanf("%d",ml);
L7 if(ml > 500)
L8 money = 15 * 0.8;
L9 else if(ml > 300)
L10 money = 15 * 0.9;
L11 else
L12 money = 15;
L13 printf("售价:%.2lf 元
", money);
L14 return 0;
L15 }
3.下列程序的功能是:从键盘输入一个字符,使用条件表达式初步区分字母与非字母;若为字母,通过多层 if 语句依次判断大写字母、小写字母,并进一步判定是否为元音字母,非字母则区分数字与其他符号,完整输出分类结论。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 int main()
L3 { char ch;
L4 int isLetter;
L5 scanf(" %c", &ch);
L6 isLetter=(ch>='A'&& ch<='Z')&&(ch>='a'&& ch<='z')?1:0;
L7 if(isLetter == 1)
L8 {
L9 if(ch >= 'A' || ch <= 'Z')
L10 {
L11 printf("字符类型:大写字母,");
L12 if(ch == 'A'||ch =='E'||ch =='I'||ch== 'O'||ch == 'U')
L13 printf("属于元音字母
");
L14 else
L15 printf("属于辅音字母
");
L16 }
L17 else
L18 {
L19 printf("字符类型:小写字母,");
L20 if(ch == 'a'||ch=='e'||ch=='i' || ch =='o'||ch== 'u')
L21 printf("属于元音字母
");
L22 else
L23 printf("属于辅音字母
");
L24 }
L25 }
L26 else
L27 {
L28 if(ch >= 0 && ch <= 9)
L29 printf("字符类型:数字字符
");
L30 else
L31 printf("字符类型:其他符号
");
L32 }
L33 return 0;
L34 }
4.下列程序的功能是:输入一元二次方程整数系数a、b、c,多层分支判断:a=0则不是一元二次方程;根据判别式delta = b*b-4*a*c,分别输出两个不等实根、两个相等实根、无实数根三种结果。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 #include <math.h>
L3 int main()
L4 { double a, b, c;
L5 double delta, x1, x2;
L6 printf("请输入一元二次方程系数 a b c:");
L7 scanf("%lf%lf%lf", &a, &b, &c);
L8 if (a = 0)
L9 printf("a 为 0,该方程不是一元二次方程
");
L10 else
L11 { delta = b * b - 4 * a * c;
L12 if (delta < 0)
L13 {
L14 x1 = (-b + sqrt(delta)) / (2 * a);
L15 x2 = (-b - sqrt(delta)) / (2 * a);
L16 printf("方程有两个不相等的实数根
");
L17 printf("x1 = %.2lf , x2 = %.2lf
", x1, x2);
L18 }
L19 else if (delta == 0)
L20 {
L21 x1 = b / (2 * a);
L22 printf("方程有两个相等的实数根
");
L23 printf("x1 = x2 = %.2lf
", x1);
L24 }
L25 else
L26 printf("方程无实数根
");
L27 }
L28 return 0;
L29 }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:湖南省普通高校对口招生专业理论考试《计算机应用类专业综合考纲百套卷》,依据《湖南省普通高校对口招生计算机应用类专业综合知识基本要求及考试大纲》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第70卷,按《计算机编程语言——C语言》范围和要求编写。具体内容为:①if语句;②if……else语句;③if语句的嵌套;④条件表达式。
湖南省《计算机应用类专业综合考纲百套卷》 第70卷
《计算机编程语言——C语言》
条件语句
考点训练卷
考试时间60分钟 满分100分
班级________姓名________学号________成绩________
一、单项选择题(本大题共15小题,每题2分,共30分)
1.(2019年)已知:int w=1,x=2,y=3,z=4;,则表达式“w>x?w:z>y?z:x”的值是( )
A.1 B.2 C.3 D.4
【答案】D
【解析】条件运算符的结合性为自右向左,该表达式等价于 w>x ? w : (z>y ? z : x)。因 w>x(1>2)为假,故计算右侧子表达式;又因 z>y(4>3)为真,取问号后的值 z,即 4,故选 D。
2.设 int a=1, b=2, c=3, d=4;,则表达式 a<b ? a : c<d ? a : d 的结果为( )
A. 1 B. 2 C. 3 D. 4
【答案】A
【解析】条件运算符的结合性是自右向左。该表达式等价于 a<b ? a : (c<d ? a : d)。因为 a<b (1<2) 为真,所以直接取问号后的第一个值 a,即1。
3.已知 int x=5;,执行语句 if(x) x=1; else x=6; 后,x 的值是( )
A. 1 B. 5 C. 6 D. 0
【答案】A
【解析】x 的值为5,非0,条件为真,执行 x=1;。
4.执行以下程序段后,输出结果是( )
int x=3, y=10; if(x=1) y=x; y=y+1; printf("%d,%d
",x,y);
A. 3,11 B. 3,10 C. 3,4 D. 1,2
【答案】D
【解析】if(x=1) 是赋值操作,将1赋给x,表达式值为1(真)。执行 y=x; 即 y=1;,接着 y=y+1; 变为2。最终 x=1, y=2。
5.已知 int x;,语句 if(x); 中的表达式 x 等价于( )
A. x==0 B. x!=0 C. x==1 D. x!=1
【答案】B
【解析】if(x) 判断x是否为非0值,与 if(x!=0) 完全等价。
6.执行以下程序段后,输出结果是( )
int x=-3, y=1; if (x) y++; y=y+1; printf("%d
",y);
A. 1 B. 2 C. 3 D. 4
【答案】C
【解析】x=-3,非0为真,执行 y++,y变为2。接着无条件执行 y=y+1,y变为3。
7.执行以下程序段后,输出结果是( )
int a=0; if(!a) printf("1"); else printf("0");
A. 0 B. 1 C. 10 D. 提示运行错误
【答案】B
【解析】a=0,!a 为真,执行 printf("1");。
8.以下程序段的输出结果是( )
int a=1, b=1; if (a<1) if(b<2) b=0; else b=2; printf("%d",b);
A. 0 B. 1 C. 2 D. 3
【答案】B
【解析】外层 if(a<1) 为假,其控制的语句(内层if-else)不执行,直接跳到 printf。b的值保持为1。
9.若有定义 int x=10, y=20, z=30;,则执行下列语句后 x、y、z 的值是( )
if(x>y) z=x; x=y; y=z;
A. x=10, y=20, z=30 B. x=20, y=30, z=10
C. x=20, y=30, z=30 D. x=20, y=30, z=20
【答案】C
【解析】if(x>y) z=x; 不执行,z仍为30。x=y; -> x=20。y=z; -> y=30。最终 x=20, y=30, z=30。对应选项C。
10.以下程序的运行结果是( )
main()
{ int a=5; if(a++>5) printf("%d",a); else printf("%d
",a--); }
A. 4 B. 5 C. 6 D. 7
【答案】C
【解析】a++>5 是后置自增,先比较 5>5 为假,然后a变为6。进入else分支,printf("%d
", a--); 输出当前a的值6,然后a变为5。所以输出6。
11.有以下程序段,程序的输出结果是( )
int a,b,c; a=10; b=50; c=30;
if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d
",a,b,c);
A. a=10 b=30 c=10 B. a=10 b=50 c=30
C. a=10 b=50 c=10 D. a=50 b=30 c=50
【答案】A
【解析】a>b (10>50) 为假,a=b; 不执行。接着顺序执行 b=c; (b变为30),c=a; (c变为10)。最终 a=10, b=30, c=10。
12.以下程序的运行结果是( )
main() { if (5<2*2==4) printf("T"); else printf("F"); }
A. T B. F C. 1 D. 0
【答案】B
【解析】关系运算符 < 优先级高于 ==。先算 5<4,结果为0(假)。再算 0==4,结果为0(假)。执行else,输出F。
13.设有条件表达式 (EXP) ? i++ : j--,则以下表达式中与 (EXP) 完全等价的是( )
A. (EXP==0) B. (EXP!=0) C. (EXP==1) D. (EXP!=1)
【答案】B
【解析】C语言中非0即为真,(EXP) 为真等价于 (EXP!=0)。
14.当把以下四个表达式用作 if 语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是( )
A. k%2 B. k%2==1 C. (k%2)!=0 D. !k%2==1
【答案】D
【解析】A、B、C 都是判断k是否为奇数。D中 ! 优先级高于 %,等价于 (!k)%2==1,当k为0时,!k 为1,1%2==1 为真;当k为非0时,!k 为0,0%2==1 为假。所以D是判断k是否为0,与其他三项不同。
15.下列条件语句中,输出结果与其他语句不同的是( )
A. if(a) printf("%d
",x); else printf("%d
",y);
B. if(a==0) printf("%d
",y); else printf("%d
",x);
C. if(a!=0) printf("%d
",x); else printf("%d
",y);
D. if(a==0) printf("%d
",x); else printf("%d
",y);
【答案】D
【解析】 A、B、C 都是 a为真(非0)时输出x,a为假(0)时输出y。D是 a为假(0)时输出x,a为真(非0)时输出y,逻辑相反。
二、阅读程序,写出运行结果(本大题共10小题。每空2分,合计20分)
1.(2022年)下列程序的运行结果是__________________。
#include "stdio.h"
int main(void)
{
signed char c=128;
int i=10;
(c+i>10)? puts("sum> 10"):puts("sum<=10");
return 0;
}
【答案】sum<=10
2.(2026年)下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int n=6,m=5,x=10;
int row=(x-1)/m+1;
int pos_in_row=(x-1)%m;
int col;
if(row%2==1){
col=pos_in_row+1;
}else{
col=m-pos_in_row;
}
printf("%d%d",row,col);
return 0;
}
【答案】21
3.下列程序的运行结果是__________________。
#include <stdio.h>
int main() {
int x=1, y=2, z=3;
if(x>y)
if(y>z) printf("A");
else printf("B");
else
if(x>z) printf("C");
else printf("D");
return 0;
}
【答案】D
4.下列程序的运行结果是__________________。
#include <stdio.h>
int main() {
int x=0, y=0, z=0;
if(x++) y=1;
else if(++z) y=2;
printf("%d,%d,%d
", x, y, z);
return 0;
}
【答案】1,2,1
5.下列程序的运行结果是__________________。
#include <stdio.h>
int main() {
int a=3,b=4,c=5;
int t;
if(a>b) t=a,a=b,b=t;
if(a>c) t=a,a=c,c=t;
if(b>c) t=b,b=c,c=t;
printf("%d %d %d",a,b,c);
return 0;
}
【答案】3 4 5
6.下列程序的运行结果是__________________。
#include <stdio.h>
int main() {
int a=1,b=2,c=3,d=4;
int x=0;
if(a>b && c>d) x=10;
else if(a<b || c<d) x=20;
else x=30;
printf("%d",x);
return 0;
}
【答案】20
7.下列程序的运行结果是__________________。
#include <stdio.h>
int main() {
int a=1,b=2,c=3;
if(a==1)
if(b!=2)
if(c==3) printf("X");
else printf("Y");
else printf("Z");
else printf("W");
return 0;
}
【答案】Z
8.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int a = 1, b = 2, c = 3;
if (a++ == 1 && b++ == 2)
if (c++ == 3)
a = b + c;
else
b = a + c;
else
c = a + b;
printf("%d %d %d", a, b, c);
return 0;
}
【答案】7 3 4
9.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int num=9;
if(num/2 > 4)
if(num%2 == 1) num -= 3;
else num += 3;
else
num /= 2;
printf("%d", num);
return 0;
}
【答案】4
10.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int num = -6;
int s = num > 0 ? 1 : (num < 0 ? -1 : 0);
if (s == -1)
num = -num;
printf("%d %d", num, s);
return 0;
}
【答案】6 -1
三、程序填空。按照题目要求,将正确内容填入答题卡相应位置,使程序完整(每空2分,共计30分)
1.(2024年)如需对个人一次性劳务报酬征收所得税,假设:收入未超过 800 元,不纳税;收入超过 800 元、未超过 5000 元,减除 800 元后再按 “应纳税额 =(收入−800)×20%” 纳税;收入超过 5000 元,按 “应纳税额 = 收入 ×(1−20%)×30%” 纳税。编程实现以下功能:从键盘输入个人一次性取得的劳务报酬,根据上述计算方法,计算并输出应纳税额。
#include <stdio.h>
int main()
{
________①________
printf("Input Income=");
________②________
if(________③________)
tax=0;
else if(income<=5000)
________④________
else
tax=income*0.8*0.3;
printf("tax=%.0f
",tax);
return 0;
}
【答案】① float income,tax;
② scanf("%f",&income);
③ income<=800
④ tax=(income-800)*0.2;
2.下列程序的功能是计算下图所示的分段函数的值,x为浮点型。
#include <stdio.h>
int main()
{
____①____
printf("请输入x:");
scanf("%lf", &x);
if(____②____)
y = x * x;
else if(x < 10)
____③____
else
____④____
printf("y=%.2lf
", y);
return 0;
}
【答案】① double x, y; ② x < 0
③ y = x; ④ y = x / 2;
3.下列程序的功能是计算阶梯水费:用水量≤10 吨,每吨 2 元;10~20 吨,超出部分每吨 3 元;>20 吨,超出部分每吨 4 元。
#include <stdio.h>
int main()
{
float water, money;
scanf("%f", &water);
if(water <= 10)
_______①_______
else if(water <= 20)
_________②_______
else
___________③__________
printf("用水量:%.1f 吨,水费:%.2f 元
",water, money);
return 0;
}
【答案】①money = water * 2; ②money = 10*2 + (water-10)*3;
③money = 10*2 + 10*3 + (water-20)*4;
4.功能描述:从键盘输入三个浮点数作为三角形三边长度,使用条件表达式判断三边是否满足三角形构成规则;若合法,通过多层 if 语句依次判断该三角形为等边、等腰、等腰直角、直角或普通三角形,采用海伦公式计算面积并完整输出结果;若不合法,提示无法构成三角形。
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, c, p, area;
int flag;
printf("请输入三条边长:");
scanf("%lf%lf%lf", &a, &b, &c);
flag = __________①_________
if(flag)
{
p = ______②_______;
area = sqrt(p*(p-a)*(p-b)*(p-c));
printf("合法三角形,");
if(_________③__________)
printf("等边三角形
");
else if(___________④__________)
printf((a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)?"等腰直角三角形
" : "等腰三角形
");
else
printf((a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)? "直角三角形
" : "普通三角形
");
printf("面积:%.2lf
", area);
}
else
{
printf("不能构成三角形
");
}
return 0;
}
【答案】①(a+b>c && a+c>b && b+c>a) ? 1 : 0; ②(a+b+c)/2.0
③a==b && b==c ④a==b || a==c || b==c
四、阅读程序:修改程序中的错误,不得增行或删行,也不得更改程序结构。请在答题卡中指出错误代码所在的行号,并给出该行修改后的程序代码。(每空2分,共计20分)
1.下列程序的功能是:输入两个正数,先判断除数是否为 0(非法运算);若合法,计算两数之商,再判断商是否为整数,完整输出运算结论。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 int num1, num2, res;
L5 scanf("%d%d", &num1, &num2);
L6 if(num2)
L7 {
L8 printf("除数为0,运算非法
");
L9 }
L10 else
L11 {
L12 res = num1 / num2;
L13 printf("运算合法,商:%d
", res);
L14 if(num1 % num2 != 0)
L15 printf("商是整数
");
L16 else
L17 printf("商不是整数
");
L18 }
L19 return 0;
L20 }
【答案】①L6 if(num2 == 0)
②L14 if(num1 % num2 == 0)
2.下列程序的功能是:输入饮品容量 (ml),折扣规则:
容量 < 300ml:原价售卖
300ml ≤ 容量 ≤ 500ml:9 折
容量 > 500ml:8 折
已知原价统一为 15 元,计算最终售价。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 int ml;
L5 double money;
L6 scanf("%d",ml);
L7 if(ml > 500)
L8 money = 15 * 0.8;
L9 else if(ml > 300)
L10 money = 15 * 0.9;
L11 else
L12 money = 15;
L13 printf("售价:%.2lf 元
", money);
L14 return 0;
L15 }
【答案】①L6 scanf("%d", &ml);
②L9 else if(ml >= 300)
3.下列程序的功能是:从键盘输入一个字符,使用条件表达式初步区分字母与非字母;若为字母,通过多层 if 语句依次判断大写字母、小写字母,并进一步判定是否为元音字母,非字母则区分数字与其他符号,完整输出分类结论。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 int main()
L3 { char ch;
L4 int isLetter;
L5 scanf(" %c", &ch);
L6 isLetter=(ch>='A'&& ch<='Z')&&(ch>='a'&& ch<='z')?1:0;
L7 if(isLetter == 1)
L8 {
L9 if(ch >= 'A' || ch <= 'Z')
L10 {
L11 printf("字符类型:大写字母,");
L12 if(ch == 'A'||ch =='E'||ch =='I'||ch== 'O'||ch == 'U')
L13 printf("属于元音字母
");
L14 else
L15 printf("属于辅音字母
");
L16 }
L17 else
L18 {
L19 printf("字符类型:小写字母,");
L20 if(ch == 'a'||ch=='e'||ch=='i' || ch =='o'||ch== 'u')
L21 printf("属于元音字母
");
L22 else
L23 printf("属于辅音字母
");
L24 }
L25 }
L26 else
L27 {
L28 if(ch >= 0 && ch <= 9)
L29 printf("字符类型:数字字符
");
L30 else
L31 printf("字符类型:其他符号
");
L32 }
L33 return 0;
L34 }
【答案】①L6 isLetter=(ch>='A'&& ch<='Z')||(ch>='a'&& ch<='z')?1:0;
②L9 if(ch >= 'A' && ch <= 'Z')
③L28 if(ch >= '0' && ch <= '9')
4.下列程序的功能是:输入一元二次方程整数系数a、b、c,多层分支判断:a=0则不是一元二次方程;根据判别式delta = b*b-4*a*c,分别输出两个不等实根、两个相等实根、无实数根三种结果。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 #include <math.h>
L3 int main()
L4 { double a, b, c;
L5 double delta, x1, x2;
L6 printf("请输入一元二次方程系数 a b c:");
L7 scanf("%lf%lf%lf", &a, &b, &c);
L8 if (a = 0)
L9 printf("a 为 0,该方程不是一元二次方程
");
L10 else
L11 { delta = b * b - 4 * a * c;
L12 if (delta < 0)
L13 {
L14 x1 = (-b + sqrt(delta)) / (2 * a);
L15 x2 = (-b - sqrt(delta)) / (2 * a);
L16 printf("方程有两个不相等的实数根
");
L17 printf("x1 = %.2lf , x2 = %.2lf
", x1, x2);
L18 }
L19 else if (delta == 0)
L20 {
L21 x1 = b / (2 * a);
L22 printf("方程有两个相等的实数根
");
L23 printf("x1 = x2 = %.2lf
", x1);
L24 }
L25 else
L26 printf("方程无实数根
");
L27 }
L28 return 0;
L29 }
【答案】①L8 if (a == 0)
②L12 if (delta > 0)
③L21 x1 = -b / (2 * a);
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$