内容正文:
编写说明:湖南省普通高校对口招生专业理论考试《计算机应用类专业综合考纲百套卷》,依据《湖南省普通高校对口招生计算机应用类专业综合知识基本要求及考试大纲》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第75卷,按《计算机编程语言——C语言》范围和要求编写。具体内容为:①3种循环语句的嵌套使用;②break语句的使用;③continue语句的使用。
湖南省《计算机应用类专业综合考纲百套卷》 第75卷
《计算机编程语言——C语言》
多重循环、break和continue语句
考点训练卷
考试时间60分钟 满分100分
班级________姓名________学号________成绩________
一、单项选择题(本大题共15小题,每题2分,共30分)
1.以下代码的输出结果是( )
int i, j;
for(i=0; i<3; i++)
for(j=i; j<3; j++)
if(j==1) break;
printf("%d,%d", i, j);
A. 3,3 B. 3,1 C. 2,1 D. 3,2
2.关于break和continue语句,下列说法错误的是( )
A. break语句只能用于循环语句和switch语句中
B. continue语句只能用于循环语句中
C. 在多重循环中,break语句可以一次跳出所有外层循环
D. continue语句的作用是跳过本次循环体中剩余的语句,进行下一次循环的条件判断
3.执行下列程序段的输出结果是( )
int i,j;
for(i=1;i<=2;i++)
for(j=1;j<=3;j++)
{ if(j==2) continue;
printf("%d,%d ",i,j); }
A. 1,1 1,3 2,1 2,3 B. 1,1 1,2 1,3 2,1 2,2 2,3
C. 1,3 2,3 D. 1,1 2,1
4.执行下列程序段的输出结果是( )
int a=1,b;
while(a<=3)
{ b=1;
while(b<=2)
{ if(a==2) break;
printf("%d ",b);
b++; }
a++; }
A. 1 2 1 2 B. 1 2 1 2 1 2 C. 1 2 1 2 D. 1 2
5.执行下列程序代码段后,程序最终输出*的个数是( )
int x,y;
for(x=1;x<4;x++)
for(y=1;y<=x;y++)
if(y==x) break;
printf("*");
A.1 B.2 C.3 D.4
6.执行下列程序段的输出结果是( )
int m=0,i,j;
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
{ m++;
if(m>=3) break; }
printf("%d",m);
A. 2 B. 3 C. 4 D. 5
7.执行下列程序段的输出结果是( )
int s=0,i,j;
for(i=1;i<=3;i++)
for(j=1;j<=i;j++)
{ if(j%2==0) continue;
s += j; }
printf("%d",s);
A. 4 B. 6 C. 8 D. 10
8.执行下列程序段的输出结果是( )
int k=1;
while(k<=2)
{ int n=1;
while(n<=2)
{ n++;
if(n==2) continue;
printf("%d ",n);}
k++; }
A. 3 3 B. 2 2 C. 3 2 D. 无输出
9.执行下列程序段的输出结果是( )
int a=0,i;
for(i=1;i<=4;i++)
{ if(i%2==0) continue;
a += i;}
printf("%d",a);
A. 4 B. 5 C. 6 D. 10
10.执行下列程序段的输出结果是( )
int x=0,i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{ if(j==1) break;
x++; }
printf("%d",x);
A. 2 B. 3 C. 4 D. 6
11.执行下列程序段的输出结果是( )
int num=0;
int i=1,j;
while(i<=3)
{ j=1;
while(j<=3)
{ j++;
if(i+j>4) break;
num++; }
i++; }
printf("%d",num);
A. 3 B. 4 C. 5 D. 6
12.执行下列程序段的输出结果是( )
int cnt=0;
int a=1,b=1;
do
{ do
{ if(b==2) break;
cnt++;
b++;}while(b<3);
a++;
}while(a<3);
printf("%d",cnt);
A.1 B.2 C.3 D.4
13.执行下列程序段的输出结果是( )
int count=0,i,j;
for(i=1;i<=2;i++)
{ j=1;
while(j<=3)
{ j++;
if(i==1 && j==2) break;
count++; } }
printf("%d",count);
A.2 B.3 C.4 D.5
14.以下代码段的外循环次数是( )
int i = 0, j = 0;
do { j++;
while(++i < 3) {
if (i == 2) continue;
j++; }
} while(i < 5);
A. 3次 B. 4次 C. 5次 D. 无限循环
15.执行下列程序段的输出结果是( )
int i, j;
for(i=0; i<2; i++) {
for(j=0; j<3; j++) {
if(i==j) continue;
printf("%d%d ", i, j); }
printf("# "); }
A. 01 02 # 10 12 # B. 01 02 # 10 12
C. 01 02 10 12 # D. 01 02 # 10 12 # #
二、阅读程序,写出运行结果(本大题共10小题。每空2分,合计20分)
1.(2023年)下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int s=24,r=1;
while(s)
{ if(!(s & 0x01))
r++;
else
break;
s >>=1; }
printf("r=%d
",r); }
2.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int a, m, n;
a = 0;
for(m = 2; m > 0; m--)
{ for(n = 1; n <= m; n++)
{ if(n % m == 0)
continue;
a += m + n;
}
}
printf("%d", a);
return 0; }
3.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int k, p, q;
k = 0;
for(p = 1; p <= 3; p++)
{ q = 3;
do
{ q--;
if(p + q == 3)
continue;
k++;
}while(q > 0);
}
printf("%d", k);
return 0; }
4.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int res, i, j;
res = 0;
i = 1;
do
{ j = i;
for(; j < 4; j++)
{ if(j - i >= 2)
break;
res += i; }
i++; }while(i < 4);
printf("%d", res);
return 0;}
5.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int t, a, b;
t = 0;
for(a = 3; a >= 1; a--)
for(b = 1; b <= 3; b++)
if(a + b > 4)
break;
else if(a == b)
t += 2;
printf("%d", t);
return 0; }
6.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int val, p, q;
val = 1;
p = 1;
do
{ q = 1;
while(q <= p)
{ val *= 2;
if(val > 4)
break;
q++;
}
p++; }while(p < 3);
printf("%d", val);
return 0; }
7.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int total, a, b;
total = 0;
a = 1;
while(a < 4)
{ for(b = a; b < 4; b++)
{ if((a + b) % 2 == 1)
continue;
total += b - a; }
a++; }
printf("%d", total);
return 0; }
8.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int s, x, y;
s = 0;
x = 3;
for(; x > 0; x--)
{ y = 1;
do
{ if(x * y >= 5)
break;
s += x * y;
y++; }while(y < 3);
}
printf("%d", s);
return 0; }
9.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int res, a, b;
res = 0;
for(a = 1; a <= 3; a++)
{ for(b = 3; b >= a; b--)
{ if(b == a + 1)
continue;
res += a + b;
}
}
printf("%d", res);
return 0; }
10.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int count, m, n;
count = 0;
m = 1;
while(m <= 2)
{ for(n = 2; n >= 1; n--)
{ if(m + n == 4)
continue;
count = count + m;
}
m++;}
printf("%d", count);
return 0; }
三、程序填空。按照题目要求,将正确内容填入答题卡相应位置,使程序完整(每空2分,共计30分)
1.(2022年)学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人,编写一个程序求该校的学生人数,并输出该人数。
#include <stdio.h>
main()
{
int i;
for(i=900;i<=1100;_____①_____)
{
if(______②_____&&i%7==3&&i%3==1)
{
printf("%d
",______③_____);
_______④_______
}
}
}
2.完全数(完美数)定义:一个正整数,等于它所有真因子(不包含自身) 之和。示例:6 的真因子为 1、2、3,1+2+3=6,因此 6 是完全数。下列程序的功能是:输入一个上限值 max,查找 1 ~ max 范围内所有完全数。
#include <stdio.h>
int main(void)
{ int max, num = 2;
scanf("%d", &max);
do
{ int i = 1, sum = 0;
while (______①_____)
{ if (num % i == 0)
sum += i;
i++;
}
if (sum == num)
printf("%d 是完全数
", num);
________②______
} while (_______③________);
return 0; }
3.五位老人夜里分鱼:第一个老人将鱼分成 5 份,多出 1 条扔掉,拿走 1 份;
剩下的鱼第二个老人重复同样操作:分 5 份、扔 1 条、拿走 1 份;第三、四、五位老人依次照做。已知第五位老人操作完成后,每份至少 1 条鱼。下列程序的功能是:求出最初最少有多少条鱼。
#include <stdio.h>
int main()
{
int fish = 0, i, flag;
while(______①_____)
{
fish++;
int temp = fish;
flag = 1;
for(i = 1; i <= 5; i++)
{
if(_________②_______ != 0)
{
flag = 0;
break;
}
temp = _______③______;
}
if(______④______) break;
}
printf("最初最少鱼数量:%d
", fish);
return 0;
}
4.100 块砖,100 人搬运。男人每人搬 4 块,女人每人搬 3 块,小孩 2 人搬 1 块。要求男、女、小孩都不少于 1 人,下列程序的功能是求所有搬运方案。
#include <stdio.h>
int main()
{
int man, woman, child;
for(man = 1; man <= 25; man++)
{
for(woman = 1; woman <= 33; woman++)
{
child = _______①______;
if(_____________②_____________)
{
printf("男%d 女%d 小孩%d
", man, woman, child);
}
}
}
return 0;
}
5.公鸡5元1只,母鸡3元1只,小鸡3只1元。现用 100元买100只鸡,不多不少。下列程序的功能是利用三重循环枚举所有公鸡、母鸡、小鸡数量,输出所有合法购买方案。
#include <stdio.h>
int main()
{ int x, y, z;
for(x = 0; x <= 20; x++)
{
for(y = 0; y <= 33; y++)
{
z = _______①_______;
if(__________②__________)
{
printf("公鸡:%d,母鸡:%d,小鸡:%d
",x,y,z);
}
}
}
return 0;
}
四、阅读程序:修改程序中的错误,不得增行或删行,也不得更改程序结构。请在答题卡中指出错误代码所在的行号,并给出该行修改后的程序代码。(每空2分,共计20分)
1.(2023年)下面程序功能是计算如下级数,直到最后一项的绝对值小于10-6。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 double sum=0.0;
L5 int i;
L6 for(i=0;;i++)
L7 {
L8 double term=1/(i*2+1);
L9 if(i%2==0)
L10 sum+=term;
L11 else
L12 sum-=term;
L13 if(term<1e-6)
L14 continue;
L15 }
L16 printf("%.6f
",sum);
L17 return 0;
L18 }
2.下列程序的功能是:使用双重循环:外层遍历 1~50,筛选出所有偶数;内层计算每个偶数所有约数的总和。最终把所有偶数的约数和再次累加,输出最终结果。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 int num, i, j, sum1, sum2;
L5 sum2 = 0;
L6 for(num = 1; num <= 50; num++)
L7 {
L8 if(num % 2 != 0)
L9 break;
L10 sum1 = 0;
L11 for(j = 1; j <= num; j++)
L12 {
L13 if(num % j == 0)
L14 sum1 += j;
L15 }
L16 sum2 = sum1;
L17 }
L18 printf("%d
", sum2);
L19 return 0;
L20 }
3.下列程序的功能是:输入行数 n,打印空心数字菱形,仅轮廓打印数字1,中间为空格。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 int n, i, j;
L5 scanf("%d", &n);
L6 for(i = 1; i <= n; i++)
L7 {
L8 for(j = 1; j <= n - i; j++)
L9 printf(" ");
L10 for(j = 1; j <= 2*i; j++)
L11 {
L12 if(j == 1 || j == 2*i - 1)
L13 printf("1");
L14 else
L15 printf(" ");
L16 }
L17 printf("
");
L18 }
L19 for(i = 1; i >= 1; i--)
L20 {
L21 for(j = 1; j <= n - i; j++)
L22 printf(" ");
L23 for(j = 1; j <= 2*i - 1; j++)
L24 {
L25 if(j == 1 && j == 2*i - 1)
L26 printf("1");
L27 else
L28 printf(" ");
L29 }
L30 printf("
");
L31 }
L32 return 0;
L33 }
4.若A的真因数和=B,且B的真因数和=A、A≠B,则A、B为亲密数。下列程序的功能是求1~300以内所有亲密数对。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 int a, b, i, sum1, sum2;
L5 for(a = 1; a <= 300; a++)
L6 {
L7 sum1 = 0;
L8 for(i = 1; i < a; i++)
L9 if(a%i==0) sum1=i;
L10 b = sum1;
L11 sum2 = 0;
L12 for(i = 1; i < b; i++)
L13 if(b%i==0) sum2=i;
L14 if(sum2==a || a < b)
L15 {
L16 printf("亲密数:%d 和 %d
",a,b);
L17 }
L18 }
L19 return 0;
L20 }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:湖南省普通高校对口招生专业理论考试《计算机应用类专业综合考纲百套卷》,依据《湖南省普通高校对口招生计算机应用类专业综合知识基本要求及考试大纲》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第75卷,按《计算机编程语言——C语言》范围和要求编写。具体内容为:①3种循环语句的嵌套使用;②break语句的使用;③continue语句的使用。
湖南省《计算机应用类专业综合考纲百套卷》 第75卷
《计算机编程语言——C语言》
多重循环、break和continue语句
考点训练卷
考试时间60分钟 满分100分
班级________姓名________学号________成绩________
一、单项选择题(本大题共15小题,每题2分,共30分)
1.以下代码的输出结果是( )
int i, j;
for(i=0; i<3; i++)
for(j=i; j<3; j++)
if(j==1) break;
printf("%d,%d", i, j);
A. 3,3 B. 3,1 C. 2,1 D. 3,2
【答案】B
【解析】当 i=0 时,内层 j 从 0 开始,自增到 1 时触发 break,此时 j=1。
当 i=1 和 i=2 时,内层 j 初始值直接继承上一轮的 1,一进入循环就满足 j==1,立即 break,j 始终为 1。
外层循环正常结束,i 自增为 3。最终输出 3,1。
2.关于break和continue语句,下列说法错误的是( )
A. break语句只能用于循环语句和switch语句中
B. continue语句只能用于循环语句中
C. 在多重循环中,break语句可以一次跳出所有外层循环
D. continue语句的作用是跳过本次循环体中剩余的语句,进行下一次循环的条件判断
【答案】C
【解析】break语句只能跳出当前所在的最内层循环(或switch),无法直接跳出多层嵌套循环。
3.执行下列程序段的输出结果是( )
int i,j;
for(i=1;i<=2;i++)
for(j=1;j<=3;j++)
{ if(j==2) continue;
printf("%d,%d ",i,j); }
A. 1,1 1,3 2,1 2,3 B. 1,1 1,2 1,3 2,1 2,2 2,3
C. 1,3 2,3 D. 1,1 2,1
【答案】A
【解析】内层循环j==2时执行continue,跳过本次循环剩余语句,不执行打印。因此每个外层i仅打印j=1和j=3。
4.执行下列程序段的输出结果是( )
int a=1,b;
while(a<=3)
{ b=1;
while(b<=2)
{ if(a==2) break;
printf("%d ",b);
b++; }
a++; }
A. 1 2 1 2 B. 1 2 1 2 1 2 C. 1 2 1 2 D. 1 2
【答案】A
【解析】a=1时内层循环完整执行,输出1 2;a=2时触发break,内层循环直接终止,无输出;a=3时内层循环再次完整执行,输出1 2。
5.执行下列程序代码段后,程序最终输出*的个数是( )
int x,y;
for(x=1;x<4;x++)
for(y=1;y<=x;y++)
if(y==x) break;
printf("*");
A.1 B.2 C.3 D.4
【答案】A
【解析】代码未加花括号,for仅管辖紧跟的单条语句。两层嵌套循环只作用于if(y==x) break;,printf("*");不属于循环体,循环结束后仅执行 1 次,故只输出 1 个*。
6.执行下列程序段的输出结果是( )
int m=0,i,j;
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
{ m++;
if(m>=3) break; }
printf("%d",m);
A. 2 B. 3 C. 4 D. 5
【答案】B
【解析】i=1:j=1 (m=1)、j=2 (m=2);i=2:j=1 (m=3),满足条件执行 break,跳出内层循环。最终 m=3。
7.执行下列程序段的输出结果是( )
int s=0,i,j;
for(i=1;i<=3;i++)
for(j=1;j<=i;j++)
{ if(j%2==0) continue;
s += j; }
printf("%d",s);
A. 4 B. 6 C. 8 D. 10
【答案】B
【解析】i=1:j=1 (奇数),s=1;
i=2:j=1 (s=2),j=2 (偶数,continue);
i=3:j=1 (s=3),j=2 (continue),j=3 (s=6);最终 s=6。
8.执行下列程序段的输出结果是( )
int k=1;
while(k<=2)
{ int n=1;
while(n<=2)
{ n++;
if(n==2) continue;
printf("%d ",n);}
k++; }
A. 3 3 B. 2 2 C. 3 2 D. 无输出
【答案】A
【解析】内层 n=1→n=2,触发 continue,跳过打印;n 继续自增为 3,执行打印。外层循环执行 2 次,输出两个 3。
9.执行下列程序段的输出结果是( )
int a=0,i;
for(i=1;i<=4;i++)
{ if(i%2==0) continue;
a += i;}
printf("%d",a);
A. 4 B. 5 C. 6 D. 10
【答案】A
【解析】i 为偶数时执行 continue,不累加。参与累加的是i=1、3,和为 4。
10.执行下列程序段的输出结果是( )
int x=0,i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{ if(j==1) break;
x++; }
printf("%d",x);
A. 2 B. 3 C. 4 D. 6
【答案】A
【解析】每层内层循环 j=0 时 x++,j=1 触发 break,每层仅 + 1;外层循环 2 次,x=2。
11.执行下列程序段的输出结果是( )
int num=0;
int i=1,j;
while(i<=3)
{ j=1;
while(j<=3)
{ j++;
if(i+j>4) break;
num++; }
i++; }
printf("%d",num);
A. 3 B. 4 C. 5 D. 6
【答案】A
【解析】逐层执行循环,仅当i+j≤4时num自增,累计共 3 次。
12.执行下列程序段的输出结果是( )
int cnt=0;
int a=1,b=1;
do
{ do
{ if(b==2) break;
cnt++;
b++;}while(b<3);
a++;
}while(a<3);
printf("%d",cnt);
A.1 B.2 C.3 D.4
【答案】A
【解析】内层循环b==2时执行break,仅b=1时cnt++;外层循环第二次执行时b仍为 2,直接跳出内层,最终cnt=1。
13.执行下列程序段的输出结果是( )
int count=0,i,j;
for(i=1;i<=2;i++)
{ j=1;
while(j<=3)
{ j++;
if(i==1 && j==2) break;
count++; } }
printf("%d",count);
A.2 B.3 C.4 D.5
【答案】B
【解析】i=1时触发break无计数;i=2时内层循环累计 3 次计数,最终count=3。
14.以下代码段的外循环次数是( )
int i = 0, j = 0;
do { j++;
while(++i < 3) {
if (i == 2) continue;
j++; }
} while(i < 5);
A. 3次 B. 4次 C. 5次 D. 无限循环
【答案】A
【解析】内层循环执行后i=3,外循环条件i<5仅成立 3 次,之后不再执行。
15.执行下列程序段的输出结果是( )
int i, j;
for(i=0; i<2; i++) {
for(j=0; j<3; j++) {
if(i==j) continue;
printf("%d%d ", i, j); }
printf("# "); }
A. 01 02 # 10 12 # B. 01 02 # 10 12
C. 01 02 10 12 # D. 01 02 # 10 12 # #
【答案】A
【解析】i==j时执行continue跳过输出,每层内层循环结束后打印#,最终输出对应选项内容。
二、阅读程序,写出运行结果(本大题共10小题。每空2分,合计20分)
1.(2023年)下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int s=24,r=1;
while(s)
{ if(!(s & 0x01))
r++;
else
break;
s >>=1; }
printf("r=%d
",r); }
【答案】r=4
2.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int a, m, n;
a = 0;
for(m = 2; m > 0; m--)
{ for(n = 1; n <= m; n++)
{ if(n % m == 0)
continue;
a += m + n;
}
}
printf("%d", a);
return 0; }
【答案】3
3.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int k, p, q;
k = 0;
for(p = 1; p <= 3; p++)
{ q = 3;
do
{ q--;
if(p + q == 3)
continue;
k++;
}while(q > 0);
}
printf("%d", k);
return 0; }
【答案】6
4.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int res, i, j;
res = 0;
i = 1;
do
{ j = i;
for(; j < 4; j++)
{ if(j - i >= 2)
break;
res += i; }
i++; }while(i < 4);
printf("%d", res);
return 0;}
【答案】9
5.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int t, a, b;
t = 0;
for(a = 3; a >= 1; a--)
for(b = 1; b <= 3; b++)
if(a + b > 4)
break;
else if(a == b)
t += 2;
printf("%d", t);
return 0; }
【答案】4
6.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int val, p, q;
val = 1;
p = 1;
do
{ q = 1;
while(q <= p)
{ val *= 2;
if(val > 4)
break;
q++;
}
p++; }while(p < 3);
printf("%d", val);
return 0; }
【答案】8
7.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int total, a, b;
total = 0;
a = 1;
while(a < 4)
{ for(b = a; b < 4; b++)
{ if((a + b) % 2 == 1)
continue;
total += b - a; }
a++; }
printf("%d", total);
return 0; }
【答案】2
8.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int s, x, y;
s = 0;
x = 3;
for(; x > 0; x--)
{ y = 1;
do
{ if(x * y >= 5)
break;
s += x * y;
y++; }while(y < 3);
}
printf("%d", s);
return 0; }
【答案】12
9.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int res, a, b;
res = 0;
for(a = 1; a <= 3; a++)
{ for(b = 3; b >= a; b--)
{ if(b == a + 1)
continue;
res += a + b;
}
}
printf("%d", res);
return 0; }
【答案】16
10.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{ int count, m, n;
count = 0;
m = 1;
while(m <= 2)
{ for(n = 2; n >= 1; n--)
{ if(m + n == 4)
continue;
count = count + m;
}
m++;}
printf("%d", count);
return 0; }
【答案】4
三、程序填空。按照题目要求,将正确内容填入答题卡相应位置,使程序完整(每空2分,共计30分)
1.(2022年)学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人,编写一个程序求该校的学生人数,并输出该人数。
#include <stdio.h>
main()
{
int i;
for(i=900;i<=1100;_____①_____)
{
if(______②_____&&i%7==3&&i%3==1)
{
printf("%d
",______③_____);
_______④_______
}
}
}
【答案】①i++ ②i%5==2 ③i ④break;
2.完全数(完美数)定义:一个正整数,等于它所有真因子(不包含自身) 之和。示例:6 的真因子为 1、2、3,1+2+3=6,因此 6 是完全数。下列程序的功能是:输入一个上限值 max,查找 1 ~ max 范围内所有完全数。
#include <stdio.h>
int main(void)
{ int max, num = 2;
scanf("%d", &max);
do
{ int i = 1, sum = 0;
while (______①_____)
{ if (num % i == 0)
sum += i;
i++;
}
if (sum == num)
printf("%d 是完全数
", num);
________②______
} while (_______③________);
return 0; }
【答案】①i < num ②num++; ③num <= max
3.五位老人夜里分鱼:第一个老人将鱼分成 5 份,多出 1 条扔掉,拿走 1 份;
剩下的鱼第二个老人重复同样操作:分 5 份、扔 1 条、拿走 1 份;第三、四、五位老人依次照做。已知第五位老人操作完成后,每份至少 1 条鱼。下列程序的功能是:求出最初最少有多少条鱼。
#include <stdio.h>
int main()
{
int fish = 0, i, flag;
while(______①_____)
{
fish++;
int temp = fish;
flag = 1;
for(i = 1; i <= 5; i++)
{
if(_________②_______ != 0)
{
flag = 0;
break;
}
temp = _______③______;
}
if(______④______) break;
}
printf("最初最少鱼数量:%d
", fish);
return 0;
}
【答案】①1 ②(temp - 1) % 5 ③(temp - 1) / 5 * 4
④flag
4.100 块砖,100 人搬运。男人每人搬 4 块,女人每人搬 3 块,小孩 2 人搬 1 块。要求男、女、小孩都不少于 1 人,下列程序的功能是求所有搬运方案。
#include <stdio.h>
int main()
{
int man, woman, child;
for(man = 1; man <= 25; man++)
{
for(woman = 1; woman <= 33; woman++)
{
child = _______①______;
if(_____________②_____________)
{
printf("男%d 女%d 小孩%d
", man, woman, child);
}
}
}
return 0;
}
【答案】①100 - man - woman
②child>0&&4*man+3*woman + child/2 == 100 && child%2 == 0
5.公鸡5元1只,母鸡3元1只,小鸡3只1元。现用 100元买100只鸡,不多不少。下列程序的功能是利用三重循环枚举所有公鸡、母鸡、小鸡数量,输出所有合法购买方案。
#include <stdio.h>
int main()
{ int x, y, z;
for(x = 0; x <= 20; x++)
{
for(y = 0; y <= 33; y++)
{
z = _______①_______;
if(__________②__________)
{
printf("公鸡:%d,母鸡:%d,小鸡:%d
",x,y,z);
}
}
}
return 0;
}
【答案】①100 - x - y
②z % 3 == 0 && 5*x + 3*y + z/3 == 100
四、阅读程序:修改程序中的错误,不得增行或删行,也不得更改程序结构。请在答题卡中指出错误代码所在的行号,并给出该行修改后的程序代码。(每空2分,共计20分)
1.(2023年)下面程序功能是计算如下级数,直到最后一项的绝对值小于10-6。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 double sum=0.0;
L5 int i;
L6 for(i=0;;i++)
L7 {
L8 double term=1/(i*2+1);
L9 if(i%2==0)
L10 sum+=term;
L11 else
L12 sum-=term;
L13 if(term<1e-6)
L14 continue;
L15 }
L16 printf("%.6f
",sum);
L17 return 0;
L18 }
【答案】①L8 double term=1.0/(i*2+1);
②L14 break;
2.下列程序的功能是:使用双重循环:外层遍历 1~50,筛选出所有偶数;内层计算每个偶数所有约数的总和。最终把所有偶数的约数和再次累加,输出最终结果。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 int num, i, j, sum1, sum2;
L5 sum2 = 0;
L6 for(num = 1; num <= 50; num++)
L7 {
L8 if(num % 2 != 0)
L9 break;
L10 sum1 = 0;
L11 for(j = 1; j <= num; j++)
L12 {
L13 if(num % j == 0)
L14 sum1 += j;
L15 }
L16 sum2 = sum1;
L17 }
L18 printf("%d
", sum2);
L19 return 0;
L20 }
【答案】①L9 continue;
②L16 sum2 += sum1;
3.下列程序的功能是:输入行数 n,打印空心数字菱形,仅轮廓打印数字1,中间为空格。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 int n, i, j;
L5 scanf("%d", &n);
L6 for(i = 1; i <= n; i++)
L7 {
L8 for(j = 1; j <= n - i; j++)
L9 printf(" ");
L10 for(j = 1; j <= 2*i; j++)
L11 {
L12 if(j == 1 || j == 2*i - 1)
L13 printf("1");
L14 else
L15 printf(" ");
L16 }
L17 printf("
");
L18 }
L19 for(i = 1; i >= 1; i--)
L20 {
L21 for(j = 1; j <= n - i; j++)
L22 printf(" ");
L23 for(j = 1; j <= 2*i - 1; j++)
L24 {
L25 if(j == 1 && j == 2*i - 1)
L26 printf("1");
L27 else
L28 printf(" ");
L29 }
L30 printf("
");
L31 }
L32 return 0;
L33 }
【答案】①L10 for(j = 1; j <= 2*i - 1; j++)
②L19 for(i = n-1; i >= 1; i--)
③L25 if(j == 1 || j == 2*i - 1)
4.若A的真因数和=B,且B的真因数和=A、A≠B,则A、B为亲密数。下列程序的功能是求1~300以内所有亲密数对。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 int main()
L3 {
L4 int a, b, i, sum1, sum2;
L5 for(a = 1; a <= 300; a++)
L6 {
L7 sum1 = 0;
L8 for(i = 1; i < a; i++)
L9 if(a%i==0) sum1=i;
L10 b = sum1;
L11 sum2 = 0;
L12 for(i = 1; i < b; i++)
L13 if(b%i==0) sum2=i;
L14 if(sum2==a || a < b)
L15 {
L16 printf("亲密数:%d 和 %d
",a,b);
L17 }
L18 }
L19 return 0;
L20 }
【答案】①L9 if(a%i==0) sum1+=i;
②L13 if(b%i==0) sum2+=i;
③L14 if(sum2==a && a < b)
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$