内容正文:
编写说明:湖南省普通高校对口招生专业理论考试《计算机应用类专业综合考纲百套卷》,依据《湖南省普通高校对口招生计算机应用类专业综合知识基本要求及考试大纲》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第90卷,按《计算机编程语言——C语言》范围和要求编写。具体内容为:①关系运算和逻辑运算;②条件语句;③多分支语句。
湖南省《计算机应用类专业综合考纲百套卷》 第90卷
《计算机编程语言——C语言》
分支结构程序设计
专题训练卷
考试时间60分钟 满分100分
班级________姓名________学号________成绩________
一、单项选择题(本大题共15小题,每题2分,共30分)
1.设有定义 int a=8,b=12,c=0;,执行表达式 c = a>10 || (b-5<9 && ++c); 后,a、b、c 的值依次为( )
A. 8,12,0 B. 8,12,1 C. 8,7,1 D. 8,12,2
【答案】B
【解析】|| 左侧为假才执行右侧;&& 左右都要判断,++c生效,最终 a=8,b=12,c=1。
2.执行以下程序段的输出结果是( )
int x=5;
if(x=3) printf("A");
else if(x>5) printf("B");
else printf("C");
A. A B. B C. C D. 无输出
【答案】A
【解析】if 中是赋值x=3,表达式值为 3(非 0,逻辑真),直接执行第一条 printf 输出 A,后续分支不再判断。
3.下列代码运行后变量结果判断正确的是( )
int m=2,n=3,k=0;
int res = (m>n) && (++k);
A. res=1,k=1 B. res=0,k=0 C. res=0,k=1 D. res=1,k=0
【答案】B
【解析】m>n即 2>3 为假,&&发生短路,右侧++k完全不执行,k 保持 0,整体逻辑表达式结果 0。
4.执行以下程序的输出结果是( )
int a=4,b=6;
if(a>0)
if(b>8)
printf("1");
else
printf("2");
A. 1 B. 2 C. 无输出 D. 编译错误
【答案】B
【解析】else 遵循就近匹配原则,匹配内层if(b>8);b=6 不大于 8,内层 if 不执行,else 执行,输出2。
5.设有 int x=15;,表达式 x>10 && x<20 || x%2==0 的结果是( )
A. -1 B. 0 C. 1 D. 15
【答案】C
【解析】&&优先级高于||;15>10 且 15<20 结果为真(1),逻辑或一真则整体为 1。
6.执行以下程序的输出结果是( )
int num=-7;
if(num > 0)
num += 5;
else if(num > -10)
num *= 2;
else
num -= 3;
printf("%d",num);
A. -14 B. -2 C. -10 D. -7
【答案】A
【解析】num=-7 不大于 0,进入 else if;-7>-10 成立,执行 num= -7*2 = -14。
7.表达式 !(5>3) || (2<1) && (7%3==1) 的运算结果是( )
A. 1 B. 0 C. 2 D. -1
【答案】B
【解析】优先级:! > && > ||;!(5>3)=0;2<1=0,0 && 1短路为 0;0 || 0 最终结果 0。
8.执行以下程序段的输出结果是( )
int score=78;
if(score >= 90) printf("A");
else if(score >= 80) printf("B");
else if(score >= 70) printf("C");
else printf("D");
A. A B. B C. C D. D
【答案】C
【解析】78 不满足 90、80 分支,满足 >=70,输出 C。
9.设有 int a=10,b=0;,执行 int flag = a<5 || (b++, a>3); 后 b 的值为( )
A. 0 B. 1 C. 2 D. 10
【答案】B
【解析】a<5 为假,执行逗号表达式b++,a>3;逗号表达式全部执行,b 自增为 1。
10.下列表达式能正确判断 “x 不等于 0 并且 x 在 [-10,10] 区间内” 的是( )
A. x !=0 && x>=-10 && x<=10 B. x!=0 || x>=-10 && x<=10
C. -10<x<10 && x!=0 D. x !=0 && -10<x<10
【答案】A
【解析】同时满足三个条件:非 0、大于等于 - 10、小于等于 10;C、D 连续比较语法逻辑错误;B 逻辑或逻辑错误。
11.执行 以下程序的输出结果是( )
int m=6,n=4;
if(m>n)
if(n>2) m=m-n;
else
m=m+n;
printf("%d",m);
A. 2 B. 10 C. 6 D. 4
【答案】A
【解析】else 匹配内层 if;m=6>4 成立,内层 n>2 成立,执行 m=6-4=2,else 不执行,输出 2。
12.执行 int x=9; int res = !(x%3) && x>5; res 的值是( )
A. 0 B. 1 C. 9 D. 3
【答案】B
【解析】9%3=0,!0=1;x>5=1;1 && 1 结果 1。
13.执行以下程序的输出结果是( )
int data=65;
char ch=data;
if(ch >= 'A' && ch <= 'Z')
ch = ch + 32;
printf("%c",ch);
A. A B. a C. 65 D. 空白
【答案】B
【解析】65 对应大写 'A',满足判断,+32 转为小写 'a'。
14.定义int a=7,b=-4,c=0;,执行c = a<9 && (b+=3) || (c++,a-b);后 a、b、c 的值依次为( )
A. 7,-1,0 B. 7,-1,1 C. 7,-4,1 D. 7,-1,2
【答案】B
【解析】a=7<9为真,执行b+=3得b=-1,&&结果为真;||左侧为真,右侧(c++,a-b)短路不执行;整个表达式值为1赋给c,故a=7,b=-1,c=1,选B。
15.执行以下程序段的输出结果是( )
int data=-12;
if(data>0) data+=6;
else if(data>-15) data*=3;
else data-=4;
printf("%d",data);
A. -36 B. -6 C. -16 D. -12
【答案】A
【解析】data=-12 不大于 0,满足data>-15,执行-12*3=-36。
二、阅读程序,写出运行结果(本大题共10小题。每空2分,合计20分)
1.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int a = 3, b = 2;
switch(a / b)
{ case 1:
if(a > b) a += 2;
else a -= 2;
break;
case 2: a *= b;break; }
printf("%d", a);
return 0;}
【答案】5
2.下列程序的运行结果是__________________。
#define BASE 13-5
#include <stdio.h>
int main(void)
{ int a,b,flag,out;
a = BASE * 4 - 7;
b = a % (BASE - 2);
flag = (a > 20 && (b += 3)) || (a - b < 10);
if(flag)
{ if(b > 0)
out = a - b;
else
out = a + b;
}
else
{ if(a % 2 == 0)
out = a / b;
else
out = a * b;
}
printf("a=%d,b=%d,flag=%d,out=%d",a,b,flag,out);
return 0; }
【答案】a=-14,b=-2,flag=1,out=-16
3.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{ int score,level,add;
score = 82;
level = score / 10;
add = 0;
switch(level)
{ case 9:
add += 10;
case 8:
if(score % 10 >= 5)
add += 5;
add += 3;
break;
case 7:
add += 2;
break;
default:
add = 0;
}
printf("level=%d,add=%d",level,add);
return 0;
}
【答案】level=8,add=3
4.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{
int x,y,z,res;
x = 067;
y = -23;
z = 0;
res = (x < 60 || (z++, y -= 6)) && (x + y > 10);
if(res == 0)
if(y < -20)
x = x + y;
else
x = x - y;
else
if(z > 0)
x = x / (y + 10);
else
x = x * 2;
printf("x=%d,y=%d,z=%d,res=%d",x,y,z,res);
return 0;
}
【答案】x=110,y=-23,z=0,res=1
5.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{
int num,tag,ans;
num = -36;
tag = num % (num + 14);
if(tag < -4)
{
if(num % 3 == 0)
ans = num - tag;
else
ans = num + tag;
}
else if(tag > -10)
{
if(num < -30)
ans = tag * 3;
else
ans = tag / 2;
}
else
ans = num * tag;
printf("num=%d,tag=%d,ans=%d",num,tag,ans);
return 0;
}
【答案】num=-36,tag=-14,ans=-22
6.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{
int m,n,sum;
m = 17;
n = 6;
if(m / n > 2)
if(n % 2 == 0)
m -= n += 4;
else
m += n -= 2;
else
if(m - n > 10)
m *= n;
else
m /= n;
sum = m + n;
printf("m=%d,n=%d,sum=%d",m,n,sum);
return 0;
}
【答案】m=102,n=6,sum=108
7.下列程序的运行结果是__________________。
#define K 12-7
#include <stdio.h>
int main(void)
{
int p,q,logic,final;
p = K * (4 + 3) - 9;
q = p % K;
logic = (p > K && q != 0);
switch(logic)
{
case 1:
if(q > 2)
final = p - q;
else
final = p + q;
break;
case 0:
final = p / K;
break;
}
printf("K=%d,p=%d,q=%d,final=%d",K,p,q,final);
return 0;
}
【答案】K=5,p=-46,q=-17,final=-10
8.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{ char ch;
int asc,convert,mark;
ch = 'H';
asc = ch;
mark = (ch >= 'A' && ch <= 'Z');
if(mark)
{ if(asc % 2 == 0)
convert = asc + 32;
else
convert = asc - 32;
}
else
{ if(asc % 2 == 0)
convert = asc - 32;
else
convert = asc + 32;
}
printf("ch=%c,asc=%d,convert=%d",ch,asc,convert);
return 0; }
【答案】ch=H,asc=72,convert=104
9.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{ int data,rank,add;
data = 64;
rank = data / 10;
add = 0;
switch(rank)
{ case 9:
add += 15;
case 8:
add += 8;
break;
case 7:
if(data % 10 >= 6)
add += 4;
add += 2;
break;
default:
add = 1;
}
printf("rank=%d,add=%d",rank,add);
return 0; }
【答案】rank=6,add=1
10.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{
int f1_int, f2_int;
int eq1, eq2, total, val;
f1_int = 4;
f2_int = 4;
eq1 = (f1_int == f2_int);
eq2 = !(f1_int > f2_int);
total = eq1 + eq2;
switch(total)
{
case 2: val = 10; break;
case 1:
if(eq1 == 0)
val = 5;
else
val = 8;
break;
case 0: val = 0; break;
}
printf("eq1=%d,eq2=%d,val=%d", eq1, eq2, val);
return 0;
}
【答案】eq1=1,eq2=1,val=10
三、程序填空。按照题目要求,将正确内容填入答题卡相应位置,使程序完整(每空2分,共计30分)
1.输入实数 x,根据分段公式计算 y:
#include <stdio.h>
int main(void)
{ double x, y;
printf("请输入x:");
scanf("%lf", &x);
if (x < 0)
{ y = _______①______; }
else if (x == 0)
{ y = 0; }
else
{ if (x < 10)
y = _________②________;
else
__________③__________;
}
printf("y=%.2lf", y);
return 0; }
【答案】①x * x - 2 * x ②x * x + 3 * x ③ y = x / 2.0
2.输入总头数、总脚数,判断合法并分别计算鸡、兔子数量;若数据不合法输出无解。
#include <stdio.h>
int main(void)
{
int head, foot, chicken, rabbit;
printf("输入总头、总脚:");
scanf("%d%d", &head, &foot);
if (_____________①______________)
{
printf("数据无解");
}
else
{
rabbit = ___________②__________;
chicken = ___________③___________;
printf("鸡:%d,兔:%d", chicken, rabbit);
}
return 0;
}
【答案】①foot % 2 != 0 || foot < 2 * head || foot > 4 * head
②(foot - 2 * head) / 2 ③head - rabbit
3.输入百分制成绩,用 switch 实现分级:90~100:A、80~89:B、70~79:C、60~69:D、0~59:E;处理非法负数、超 100 分数。
#include <stdio.h>
int main(void)
{
int score, level;
printf("输入成绩:");
scanf("%d", &score);
if (__________①__________)
{
printf("成绩非法");
return 0;
}
__________②________;
switch (level)
{
case 10:
case 9: printf("A"); break;
case 8: printf("B"); break;
case 7: printf("C"); break;
case 6: printf("D"); break;
________③________ printf("E");
}
return 0;
}
【答案】①score < 0 || score > 100 ②level = score / 10
③default:
4.输入金额(1~10 元整数),输出最少硬币组合(1 元、5 角、1 角)。
#include <stdio.h>
int main(void)
{
int money, yuan, jiao;
int y1, j5, j1;
printf("输入金额(1~10整数):");
scanf("%d", &money);
if (money < 1 || money > 10)
{
printf("金额超出范围");
return 0;
}
yuan = money;
y1 = yuan;
jiao = 0;
j5 = ________①_______;
j1 = _______②________;
switch(yuan)
{
case 10:case 9:case 8:case 7:case 6:case 5:case 4: case 3: case 2:
case 1: printf("1元硬币:%d枚,5角:%d枚,1角:%d枚",y1,j5,j1);
________③________
}
return 0;
}
【答案】①jiao / 5 ②jiao % 5 ③break;
5.输入年、月、日,先判断月份 1~12;再分 2 / 大月 31 天 / 小月 30 天,结合闰年判断 2 月天数,输出日期合法 / 非法。
#include <stdio.h>
int main(void)
{
int y, m, d, maxDay;
int leap;
printf("输入年月日:");
scanf("%d%d%d", &y, &m, &d);
if(m < 1 || m > 12 || d < 1)
{
printf("日期非法");
return 0;
}
leap = _____________①____________;
if(m == 2)
maxDay = ________②_________
else if(m==4||m==6||m==9||m==11)
maxDay = 30;
else
maxDay = 31;
if(_______③________)
printf("日期合法");
else
printf("日期非法");
return 0;
}
【答案】①(y%4==0 && y%100!=0) || (y%400==0)
②leap ? 29 : 28; ③d <= maxDay
四、阅读程序:修改程序中的错误,不得增行或删行,也不得更改程序结构。请在答题卡中指出错误代码所在的行号,并给出该行修改后的程序代码。(每空2分,共计20分)
1.下列程序的功能是:输入两个正整数,使用 if 分支实现辗转相除求最大公约数,输入负数提示非法。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 int main(void)
L3 {
L4 int m,n,r;
L5 printf("输入两个正整数:");
L6 scanf("%d%d", &m, &n);
L7 if(m <= 0 || n <= 0)
L8 {
L9 printf("请输入正数");
L10 return 0;
L11 }
L12 if(m < n)
L13 {
L14 int t = m; m = n; n = t;
L15 }
L16 r = m / n;
L17 if(r == 0)
L18 printf("最大公约数:%d", n);
L19 else
L20 printf("最大公约数:%d", n % r == 0 ? n%r :r );
L21 return 0;
L22 }
【答案】①L16 r = m % n;
②L20 printf("最大公约数:%d", n % r == 0 ? r : n%r);
2.下列程序的功能是:输入三位数,判断其是否为回文数。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 int main(void)
L3 {
L4 int num, h, g;
L5 printf("输入三位数:");
L6 scanf("%d", &num);
L7 if(num < 100 && num > 999)
L8 {
L9 printf("非法数字");
L10 return 0;
L11 }
L12 h = num / 100;
L13 g = num / 10;
L14 if(h == g)
L15 printf("%d是回文数", num);
L16 else
L17 printf("%d不是回文数", num);
L18 return 0;
L19 }
【答案】①L7 if(num < 100 || num > 999)
②L13 g = num % 10;
3.下列程序的功能是:输入三边整数,先判断能否构成三角形,再判断是否直角三角形。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 int main(void)
L3 { int a,b,c,max;
L4 printf("输入三边:");
L5 scanf("%d%d%d",a,b,c);
L6 if(a<=0||b<=0||c<=0)
L7 { printf("无法构成三角形");
L8 return 0; }
L9 max = a;
L10 if(b>max) max = b;
L11 if(c<max) max = c;
L12 if(max == a)
L13 {
L14 if(b*b + c*c == a*a) printf("直角三角形");
L15 else printf("普通三角形");
L16 }
L17 else if(max == b)
L18 {
L19 if(a*a + c*c == b*b) printf("直角三角形");
L20 else printf("普通三角形");
L21 }
L22 else
L23 {
L24 if(a*a + b*b == c*c) printf("直角三角形");
L25 else printf("普通三角形");
L26 }
L27 return 0;
L28 }
【答案】①L5 scanf("%d%d%d",&a,&b,&c);
②L6 if(a<=0||b<=0||c<=0||a+b<=c||a+c<=b||b+c<=a)
③L11 if(c>max) max = c;
4.快递运费分段计费:首重 1kg 内 10 元;1~5kg 每 kg 加 3 元;5kg 以上每 kg 加 2 元;输入重量计算运费。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 int main(void)
L3 {
L4 double w, cost;
L5 printf("输入包裹重量(kg):");
L6 scanf("%lf", &w);
L7 if(w <= 1)
L8 {
L9 printf("重量非法");
L10 return 0;
L11 }
L12 if(w <= 1)
L13 cost = 10;
L14 else if(w <= 5)
L15 cost = 10 + w - 1 * 3;
L16 else
L17 cost = 10 + 4 * 3 + w - 5 * 2;
L18 printf("运费=%.2lf元", cost);
L19 return 0;
L20 }
【答案】①L7 if(w <= 0)
②L15 cost = 10 + (w - 1) * 3;
③L17 cost = 10 + 4 * 3 + (w - 5) * 2;
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:湖南省普通高校对口招生专业理论考试《计算机应用类专业综合考纲百套卷》,依据《湖南省普通高校对口招生计算机应用类专业综合知识基本要求及考试大纲》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第90卷,按《计算机编程语言——C语言》范围和要求编写。具体内容为:①关系运算和逻辑运算;②条件语句;③多分支语句。
湖南省《计算机应用类专业综合考纲百套卷》 第90卷
《计算机编程语言——C语言》
分支结构程序设计
专题训练卷
考试时间60分钟 满分100分
班级________姓名________学号________成绩________
一、单项选择题(本大题共15小题,每题2分,共30分)
1.设有定义 int a=8,b=12,c=0;,执行表达式 c = a>10 || (b-5<9 && ++c); 后,a、b、c 的值依次为( )
A. 8,12,0 B. 8,12,1 C. 8,7,1 D. 8,12,2
2.执行以下程序段的输出结果是( )
int x=5;
if(x=3) printf("A");
else if(x>5) printf("B");
else printf("C");
A. A B. B C. C D. 无输出
3.下列代码运行后变量结果判断正确的是( )
int m=2,n=3,k=0;
int res = (m>n) && (++k);
A. res=1,k=1 B. res=0,k=0 C. res=0,k=1 D. res=1,k=0
4.执行以下程序的输出结果是( )
int a=4,b=6;
if(a>0)
if(b>8)
printf("1");
else
printf("2");
A. 1 B. 2 C. 无输出 D. 编译错误
5.设有 int x=15;,表达式 x>10 && x<20 || x%2==0 的结果是( )
A. -1 B. 0 C. 1 D. 15
6.执行以下程序的输出结果是( )
int num=-7;
if(num > 0)
num += 5;
else if(num > -10)
num *= 2;
else
num -= 3;
printf("%d",num);
A. -14 B. -2 C. -10 D. -7
7.表达式 !(5>3) || (2<1) && (7%3==1) 的运算结果是( )
A. 1 B. 0 C. 2 D. -1
8.执行以下程序段的输出结果是( )
int score=78;
if(score >= 90) printf("A");
else if(score >= 80) printf("B");
else if(score >= 70) printf("C");
else printf("D");
A. A B. B C. C D. D
9.设有 int a=10,b=0;,执行 int flag = a<5 || (b++, a>3); 后 b 的值为( )
A. 0 B. 1 C. 2 D. 10
10.下列表达式能正确判断 “x 不等于 0 并且 x 在 [-10,10] 区间内” 的是( )
A. x !=0 && x>=-10 && x<=10 B. x!=0 || x>=-10 && x<=10
C. -10<x<10 && x!=0 D. x !=0 && -10<x<10
11.执行 以下程序的输出结果是( )
int m=6,n=4;
if(m>n)
if(n>2) m=m-n;
else
m=m+n;
printf("%d",m);
A. 2 B. 10 C. 6 D. 4
12.执行 int x=9; int res = !(x%3) && x>5; res 的值是( )
A. 0 B. 1 C. 9 D. 3
13.执行以下程序的输出结果是( )
int data=65;
char ch=data;
if(ch >= 'A' && ch <= 'Z')
ch = ch + 32;
printf("%c",ch);
A. A B. a C. 65 D. 空白
14.定义int a=7,b=-4,c=0;,执行c = a<9 && (b+=3) || (c++,a-b);后 a、b、c 的值依次为( )
A. 7,-1,0 B. 7,-1,1 C. 7,-4,1 D. 7,-1,2
15.执行以下程序段的输出结果是( )
int data=-12;
if(data>0) data+=6;
else if(data>-15) data*=3;
else data-=4;
printf("%d",data);
A. -36 B. -6 C. -16 D. -12
二、阅读程序,写出运行结果(本大题共10小题。每空2分,合计20分)
1.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int a = 3, b = 2;
switch(a / b)
{ case 1:
if(a > b) a += 2;
else a -= 2;
break;
case 2: a *= b;break; }
printf("%d", a);
return 0;}
2.下列程序的运行结果是__________________。
#define BASE 13-5
#include <stdio.h>
int main(void)
{ int a,b,flag,out;
a = BASE * 4 - 7;
b = a % (BASE - 2);
flag = (a > 20 && (b += 3)) || (a - b < 10);
if(flag)
{ if(b > 0)
out = a - b;
else
out = a + b;
}
else
{ if(a % 2 == 0)
out = a / b;
else
out = a * b;
}
printf("a=%d,b=%d,flag=%d,out=%d",a,b,flag,out);
return 0; }
3.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{ int score,level,add;
score = 82;
level = score / 10;
add = 0;
switch(level)
{ case 9:
add += 10;
case 8:
if(score % 10 >= 5)
add += 5;
add += 3;
break;
case 7:
add += 2;
break;
default:
add = 0;
}
printf("level=%d,add=%d",level,add);
return 0;
}
4.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{
int x,y,z,res;
x = 067;
y = -23;
z = 0;
res = (x < 60 || (z++, y -= 6)) && (x + y > 10);
if(res == 0)
if(y < -20)
x = x + y;
else
x = x - y;
else
if(z > 0)
x = x / (y + 10);
else
x = x * 2;
printf("x=%d,y=%d,z=%d,res=%d",x,y,z,res);
return 0;
}
5.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{
int num,tag,ans;
num = -36;
tag = num % (num + 14);
if(tag < -4)
{
if(num % 3 == 0)
ans = num - tag;
else
ans = num + tag;
}
else if(tag > -10)
{
if(num < -30)
ans = tag * 3;
else
ans = tag / 2;
}
else
ans = num * tag;
printf("num=%d,tag=%d,ans=%d",num,tag,ans);
return 0;
}
6.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{
int m,n,sum;
m = 17;
n = 6;
if(m / n > 2)
if(n % 2 == 0)
m -= n += 4;
else
m += n -= 2;
else
if(m - n > 10)
m *= n;
else
m /= n;
sum = m + n;
printf("m=%d,n=%d,sum=%d",m,n,sum);
return 0;
}
7.下列程序的运行结果是__________________。
#define K 12-7
#include <stdio.h>
int main(void)
{
int p,q,logic,final;
p = K * (4 + 3) - 9;
q = p % K;
logic = (p > K && q != 0);
switch(logic)
{
case 1:
if(q > 2)
final = p - q;
else
final = p + q;
break;
case 0:
final = p / K;
break;
}
printf("K=%d,p=%d,q=%d,final=%d",K,p,q,final);
return 0;
}
8.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{ char ch;
int asc,convert,mark;
ch = 'H';
asc = ch;
mark = (ch >= 'A' && ch <= 'Z');
if(mark)
{ if(asc % 2 == 0)
convert = asc + 32;
else
convert = asc - 32;
}
else
{ if(asc % 2 == 0)
convert = asc - 32;
else
convert = asc + 32;
}
printf("ch=%c,asc=%d,convert=%d",ch,asc,convert);
return 0; }
9.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{ int data,rank,add;
data = 64;
rank = data / 10;
add = 0;
switch(rank)
{ case 9:
add += 15;
case 8:
add += 8;
break;
case 7:
if(data % 10 >= 6)
add += 4;
add += 2;
break;
default:
add = 1;
}
printf("rank=%d,add=%d",rank,add);
return 0; }
10.下列程序的运行结果是__________________。
#include <stdio.h>
int main(void)
{
int f1_int, f2_int;
int eq1, eq2, total, val;
f1_int = 4;
f2_int = 4;
eq1 = (f1_int == f2_int);
eq2 = !(f1_int > f2_int);
total = eq1 + eq2;
switch(total)
{
case 2: val = 10; break;
case 1:
if(eq1 == 0)
val = 5;
else
val = 8;
break;
case 0: val = 0; break;
}
printf("eq1=%d,eq2=%d,val=%d", eq1, eq2, val);
return 0;
}
三、程序填空。按照题目要求,将正确内容填入答题卡相应位置,使程序完整(每空2分,共计30分)
1.输入实数 x,根据分段公式计算 y:
#include <stdio.h>
int main(void)
{ double x, y;
printf("请输入x:");
scanf("%lf", &x);
if (x < 0)
{ y = _______①______; }
else if (x == 0)
{ y = 0; }
else
{ if (x < 10)
y = _________②________;
else
__________③__________;
}
printf("y=%.2lf", y);
return 0; }
2.输入总头数、总脚数,判断合法并分别计算鸡、兔子数量;若数据不合法输出无解。
#include <stdio.h>
int main(void)
{
int head, foot, chicken, rabbit;
printf("输入总头、总脚:");
scanf("%d%d", &head, &foot);
if (_____________①______________)
{
printf("数据无解");
}
else
{
rabbit = ___________②__________;
chicken = ___________③___________;
printf("鸡:%d,兔:%d", chicken, rabbit);
}
return 0;
}
3.输入百分制成绩,用 switch 实现分级:90~100:A、80~89:B、70~79:C、60~69:D、0~59:E;处理非法负数、超 100 分数。
#include <stdio.h>
int main(void)
{
int score, level;
printf("输入成绩:");
scanf("%d", &score);
if (__________①__________)
{
printf("成绩非法");
return 0;
}
__________②________;
switch (level)
{
case 10:
case 9: printf("A"); break;
case 8: printf("B"); break;
case 7: printf("C"); break;
case 6: printf("D"); break;
________③________ printf("E");
}
return 0;
}
4.输入金额(1~10 元整数),输出最少硬币组合(1 元、5 角、1 角)。
#include <stdio.h>
int main(void)
{
int money, yuan, jiao;
int y1, j5, j1;
printf("输入金额(1~10整数):");
scanf("%d", &money);
if (money < 1 || money > 10)
{
printf("金额超出范围");
return 0;
}
yuan = money;
y1 = yuan;
jiao = 0;
j5 = ________①_______;
j1 = _______②________;
switch(yuan)
{
case 10:case 9:case 8:case 7:case 6:case 5:case 4: case 3: case 2:
case 1: printf("1元硬币:%d枚,5角:%d枚,1角:%d枚",y1,j5,j1);
________③________
}
return 0;
}
5.输入年、月、日,先判断月份 1~12;再分 2 / 大月 31 天 / 小月 30 天,结合闰年判断 2 月天数,输出日期合法 / 非法。
#include <stdio.h>
int main(void)
{
int y, m, d, maxDay;
int leap;
printf("输入年月日:");
scanf("%d%d%d", &y, &m, &d);
if(m < 1 || m > 12 || d < 1)
{
printf("日期非法");
return 0;
}
leap = _____________①____________;
if(m == 2)
maxDay = ________②_________
else if(m==4||m==6||m==9||m==11)
maxDay = 30;
else
maxDay = 31;
if(_______③________)
printf("日期合法");
else
printf("日期非法");
return 0;
}
四、阅读程序:修改程序中的错误,不得增行或删行,也不得更改程序结构。请在答题卡中指出错误代码所在的行号,并给出该行修改后的程序代码。(每空2分,共计20分)
1.下列程序的功能是:输入两个正整数,使用 if 分支实现辗转相除求最大公约数,输入负数提示非法。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 int main(void)
L3 {
L4 int m,n,r;
L5 printf("输入两个正整数:");
L6 scanf("%d%d", &m, &n);
L7 if(m <= 0 || n <= 0)
L8 {
L9 printf("请输入正数");
L10 return 0;
L11 }
L12 if(m < n)
L13 {
L14 int t = m; m = n; n = t;
L15 }
L16 r = m / n;
L17 if(r == 0)
L18 printf("最大公约数:%d", n);
L19 else
L20 printf("最大公约数:%d", n % r == 0 ? n%r :r );
L21 return 0;
L22 }
2.下列程序的功能是:输入三位数,判断其是否为回文数。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 int main(void)
L3 {
L4 int num, h, g;
L5 printf("输入三位数:");
L6 scanf("%d", &num);
L7 if(num < 100 && num > 999)
L8 {
L9 printf("非法数字");
L10 return 0;
L11 }
L12 h = num / 100;
L13 g = num / 10;
L14 if(h == g)
L15 printf("%d是回文数", num);
L16 else
L17 printf("%d不是回文数", num);
L18 return 0;
L19 }
3.下列程序的功能是:输入三边整数,先判断能否构成三角形,再判断是否直角三角形。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 int main(void)
L3 { int a,b,c,max;
L4 printf("输入三边:");
L5 scanf("%d%d%d",a,b,c);
L6 if(a<=0||b<=0||c<=0)
L7 { printf("无法构成三角形");
L8 return 0; }
L9 max = a;
L10 if(b>max) max = b;
L11 if(c<max) max = c;
L12 if(max == a)
L13 {
L14 if(b*b + c*c == a*a) printf("直角三角形");
L15 else printf("普通三角形");
L16 }
L17 else if(max == b)
L18 {
L19 if(a*a + c*c == b*b) printf("直角三角形");
L20 else printf("普通三角形");
L21 }
L22 else
L23 {
L24 if(a*a + b*b == c*c) printf("直角三角形");
L25 else printf("普通三角形");
L26 }
L27 return 0;
L28 }
4.快递运费分段计费:首重 1kg 内 10 元;1~5kg 每 kg 加 3 元;5kg 以上每 kg 加 2 元;输入重量计算运费。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 int main(void)
L3 {
L4 double w, cost;
L5 printf("输入包裹重量(kg):");
L6 scanf("%lf", &w);
L7 if(w <= 1)
L8 {
L9 printf("重量非法");
L10 return 0;
L11 }
L12 if(w <= 1)
L13 cost = 10;
L14 else if(w <= 5)
L15 cost = 10 + w - 1 * 3;
L16 else
L17 cost = 10 + 4 * 3 + w - 5 * 2;
L18 printf("运费=%.2lf元", cost);
L19 return 0;
L20 }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$