内容正文:
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第12卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(六)while循环
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第12卷
while循环 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.下面程序的运行后输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int n=10;
while(n>6){n--; printf("%d",n); }getch(); }
A.987 B.876 C.8765 D.9876
2.下面程序段的运行结果是( )
a=1;b=2;c=2;
while(a<b<c)
{t=a;a=b;b=t;c- -;}
printf("%d,%d,%d",a,b,c);
A.2,1,0 B.1,2,1 C.2,1,1 D.1,2,0
3.设有以下程序段,则( )
int x=0,s=0;
while(!x=0) s+=++x;
printf(“%d”,s);
A.运行程序段后输出0 B.运行程序段后输出1
C.程序段无限次执行 D.程序段中的控制表达式非法
4.有以下程序
#include<stdio.h>
main()
{
int k=4;
while(--k);
printf("%d
", k);
}
程序运行后的输出结果是( )
A.0 B.1 C.-1 D.7
5.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是( )
A.(E>0||E<0) B.(!E==0) C.(E!=0) D.(E==9)
6.以下程序的循环次数是( )
main()
{
int i=0;
while(i<10)
{
if(i<1) continue;
if(i==5) break;
i++;
}
}
A.死循环,不能确定次数 B.6 C.4 D.1
7.以下代码的输出结果是( )
#include <stdio.h>
int main() {
int i = 0;
while (i < 5) {
i++;
if (i == 3) break;
printf("%d ", i);
}
return 0;
}
A.1 2 3 4 5 B.1 2 4 5 C.1 2 D.3
8.以下代码段的输出结果是( )
int i = 5;
while (i--) {
printf("%d ", i);
}
A.4 3 2 1 0 B.5 4 3 2 1 C.5 4 3 2 1 0 D.4 3 2 1
9.以下代码段的输出结果是( )
int i = 0;
while (1) {
if (i == 3) {
break;
}
printf("%d ", i);
i++;
}
A.0 1 2 B.0 1 2 3 C.无限循环 D.无输出
10.以下嵌套 while 循环中,内层循环体执行的总次数是( )
int i = 0, j;
while (i < 3) {
j = 0;
while (j < 2) {
// 内层循环体
j++;
}
i++;
}
A.2 次 B.3 次 C.5 次 D.6 次
11.下面哪种循环语句不需要指定循环条件?( )
A.for循环 B.while循环
C.do-while循环 D.都需要指定循环条件
12.下面哪种循环语句可以无限循环? ( )
A.for循环 B.while循环 C.do-while循环 D.都可以无限循环
13.下面哪个循环语句适合在已知循环次数的情况下使用?( )
A.while循环 B.for循环 C.do-while循环 D.return语句
14.下面哪个循环语句适合在循环次数未知的情况下使用?( )
A.while循环 B.for循环 C.do-while循环 D.exit
15.下面哪个循环语句可以使用多个循环变量? ( )
A.while循环 B.for循环 C.do-while循环 D.goto语句
16.以下 while 循环用于输入一个正整数,直到输入的数大于 100 为止,横线处应填的代码是( )
int num;
scanf("%d", &num);
while (______) {
scanf("%d", &num);
}
A.num > 100 B.num < 100 C.num >= 100 D.num <= 100
17.以下嵌套 while 循环用于输出一个直角三角形,横线处应填的代码是( )
int i = 1, j;
while (i <= 5) {
j = 1;
while (j <= ______) {
printf("*");
j++;
}
printf("
");
i++;
}
A.i B.5 - i C.5 D.i + 1
18.以下代码的输出结果是( )
int i = 0;
while (i < 5) {
if (i == 1) {
i = 3;
continue;
}
printf("%d ", i);
i++;
}
A.无输出 B.0 C.0 3 D.0 3 4
19.以下代码的输出结果是( )
int i = 0;
while (i < 5) {
if (i == 3) {
continue;
}
printf("%d ", i);
i++;
}
A.0 1 2 B.程序陷入死循环 C.0 1 2 4 D.0 1 2 3 4
20.以下代码实现了从 1 到 10 的整数求和,其中空白处应填入( )
int sum = 0;
int i = 1;
while (______) {
sum += i;
i++;
}
A.i < 10 B.i <= 10 C.i > 0 D.i >= 1
二、程序设计题(本大题共4小题,每题10分,共40分)
21.输入一行字符,输出其中字母的个数。
提示:n=0; //计算器n置0
ch=getchar(); //输入第1个字符
while(ch!='
')
{if(ch为英文字母)
n++; //计算器n加1
ch=getchar(); //输入下一个字符
}
22.代码实现计算两个正整数的最大公约数
要求:
输入两个正整数 a 和 b。
使用 while 循环和辗转相除法(欧几里得算法)计算它们的最大公约数。
输出结果。
23.一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是?
#include "math.h"
#include "stdio.h"
main()
{
long int i,x,y;
while(1){
/*******space*******/
/*******space*******/
i++;
}
24.定义一个函数用于判断某个数是否是回文数,若是则输出是,若不是则输出不是。
#include<stdio.h>
int hw(int n){
/*******space*******/
/*******space*******/
}
main(){
int n;
scanf("%d",&n);
if(hw(n)){
printf("是回文数");
}else{
printf("不是回文数")
}
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第12卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(六)while循环
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第12卷
while循环 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.下面程序的运行后输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int n=10;
while(n>6){n--; printf("%d",n); }getch(); }
A.987 B.876 C.8765 D.9876
【答案】D
2.下面程序段的运行结果是( )
a=1;b=2;c=2;
while(a<b<c)
{t=a;a=b;b=t;c- -;}
printf("%d,%d,%d",a,b,c);
A.2,1,0 B.1,2,1 C.2,1,1 D.1,2,0
【答案】D
3.设有以下程序段,则( )
int x=0,s=0;
while(!x=0) s+=++x;
printf(“%d”,s);
A.运行程序段后输出0 B.运行程序段后输出1
C.程序段无限次执行 D.程序段中的控制表达式非法
【答案】B
4.有以下程序
#include<stdio.h>
main()
{
int k=4;
while(--k);
printf("%d
", k);
}
程序运行后的输出结果是( )
A.0 B.1 C.-1 D.7
【答案】A
【详解】while 循环使用了 --k 作为条件,这意味着每次循环迭代前,变量 k 的值都会减少 1。循环会一直执行,直到 k 的值变为 0,因为 0 在 C 语言中被视为假(false),这会导致循环终止。在 while 循环中,有一个分号 ;,这实际上是一个空语句。它表示循环体内不做任何操作,循环仅仅是为了递减 k 的值直到它变为 0。
5.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是( )
A.(E>0||E<0) B.(!E==0) C.(E!=0) D.(E==9)
【答案】D
【详解】(E > 0 || E < 0) 等价于 E 非零,因为只要 E 不为零,这个表达式就为真。 (!E == 0) 等价于 E 非零,因为逻辑非操作 ! 会反转 E 的真假值,然后与 0 比较。 (E != 0) 直接检查 E 是否非零,与 E 非零等价。(E == 9) 仅当 E 恰好等于 9 时为真,这与 E 非零的广泛情况不等价。
6.以下程序的循环次数是( )
main()
{
int i=0;
while(i<10)
{
if(i<1) continue;
if(i==5) break;
i++;
}
}
A.死循环,不能确定次数 B.6 C.4 D.1
【答案】A
【详解】初始时 i = 0,进入循环。i < 1 成立,执行 continue,不执行 i++,直接进入下一次迭代。i 仍然是0,再次进入循环,继续执行 continue。这个状态会一直持续,因为 i 永远不会增加,导致一个无限循环。
7.以下代码的输出结果是( )
#include <stdio.h>
int main() {
int i = 0;
while (i < 5) {
i++;
if (i == 3) break;
printf("%d ", i);
}
return 0;
}
A.1 2 3 4 5 B.1 2 4 5 C.1 2 D.3
【答案】C
8.以下代码段的输出结果是( )
int i = 5;
while (i--) {
printf("%d ", i);
}
A.4 3 2 1 0 B.5 4 3 2 1 C.5 4 3 2 1 0 D.4 3 2 1
【答案】A
9.以下代码段的输出结果是( )
int i = 0;
while (1) {
if (i == 3) {
break;
}
printf("%d ", i);
i++;
}
A.0 1 2 B.0 1 2 3 C.无限循环 D.无输出
【答案】A
10.以下嵌套 while 循环中,内层循环体执行的总次数是( )
int i = 0, j;
while (i < 3) {
j = 0;
while (j < 2) {
// 内层循环体
j++;
}
i++;
}
A.2 次 B.3 次 C.5 次 D.6 次
【答案】D
11.下面哪种循环语句不需要指定循环条件?( )
A.for循环 B.while循环
C.do-while循环 D.都需要指定循环条件
【答案】C
【详解】do-while循环不需要指定循环条件,至少执行一次循环体。
12.下面哪种循环语句可以无限循环? ( )
A.for循环 B.while循环 C.do-while循环 D.都可以无限循环
【答案】D
【详解】所有循环语句都可以用于无限循环,只需要循环条件永远为真。
13.下面哪个循环语句适合在已知循环次数的情况下使用?( )
A.while循环 B.for循环 C.do-while循环 D.return语句
【答案】B
【详解】for循环可以在循环开始前就确定循环次数,适合在已知循环次数的情况下使用。
14.下面哪个循环语句适合在循环次数未知的情况下使用?( )
A.while循环 B.for循环 C.do-while循环 D.exit
【答案】A
【详解】while循环适合在循环次数未知的情况下使用,通过判断条件来决定是否继续循环。
15.下面哪个循环语句可以使用多个循环变量? ( )
A.while循环 B.for循环 C.do-while循环 D.goto语句
【答案】B
【详解】for循环可以使用多个循环变量,通过逗号分隔。
16.以下 while 循环用于输入一个正整数,直到输入的数大于 100 为止,横线处应填的代码是( )
int num;
scanf("%d", &num);
while (______) {
scanf("%d", &num);
}
A.num > 100 B.num < 100 C.num >= 100 D.num <= 100
【答案】D
17.以下嵌套 while 循环用于输出一个直角三角形,横线处应填的代码是( )
int i = 1, j;
while (i <= 5) {
j = 1;
while (j <= ______) {
printf("*");
j++;
}
printf("
");
i++;
}
A.i B.5 - i C.5 D.i + 1
【答案】A
18.以下代码的输出结果是( )
int i = 0;
while (i < 5) {
if (i == 1) {
i = 3;
continue;
}
printf("%d ", i);
i++;
}
A.无输出 B.0 C.0 3 D.0 3 4
【答案】D
19.以下代码的输出结果是( )
int i = 0;
while (i < 5) {
if (i == 3) {
continue;
}
printf("%d ", i);
i++;
}
A.0 1 2 B.程序陷入死循环 C.0 1 2 4 D.0 1 2 3 4
【答案】B
20.以下代码实现了从 1 到 10 的整数求和,其中空白处应填入( )
int sum = 0;
int i = 1;
while (______) {
sum += i;
i++;
}
A.i < 10 B.i <= 10 C.i > 0 D.i >= 1
【答案】B
二、程序设计题(本大题共4小题,每题10分,共40分)
21.输入一行字符,输出其中字母的个数。
提示:n=0; //计算器n置0
ch=getchar(); //输入第1个字符
while(ch!='
')
{if(ch为英文字母)
n++; //计算器n加1
ch=getchar(); //输入下一个字符
}
【答案】#include <stdio.h>
main() {
int n = 0;
char ch;
ch = getchar();
while (ch != '
') {
if (ch >= 'a' && ch <= 'z'||ch >= 'A' && ch <= 'Z')
n++;
ch = getchar();
}
printf("%d", n);
}
22.代码实现计算两个正整数的最大公约数
要求:
输入两个正整数 a 和 b。
使用 while 循环和辗转相除法(欧几里得算法)计算它们的最大公约数。
输出结果。
【答案】#include <stdio.h>
int main() {
int a, b, temp;
scanf("%d %d", &a, &b);
while (b != 0) {
temp = b;
b = a % b;
a = temp;
}
printf("最大公约数:%d", a);
return 0;
}
23.一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是?
#include "math.h"
#include "stdio.h"
main()
{
long int i,x,y;
while(1){
/*******space*******/
/*******space*******/
i++;
}
【答案】x=sqrt(i+100);
y=sqrt(i+168);
if(x*x==i+100 && y*y==i+168){
printf(“该数是%d”,i);
break;
}
【详解】完全平方数是开方后是一个整数,那么这个数叫完全平方数,此题是利用在C语言中整型变量接收小数时会强制舍弃掉小数部分,那么利用这一点可以从i=1开始进行穷举,让每一个+100和+168的数字进行开方,开方后如果为整数,那么再进行平方后一定会等于原来开放的数,否则不等,一旦相等跳出循环即可。
24.定义一个函数用于判断某个数是否是回文数,若是则输出是,若不是则输出不是。
#include<stdio.h>
int hw(int n){
/*******space*******/
/*******space*******/
}
main(){
int n;
scanf("%d",&n);
if(hw(n)){
printf("是回文数");
}else{
printf("不是回文数")
}
}
【答案】int temp,t=0;
temp=n;
while(temp!=0){
t=t*10+temp%10;
temp=temp/10;
}
if(t==n) return 1;
else return 0;
【详解】将自定义函数里的形参进行数位分离并进行反序,若反序后的数字依然等于原数,则该数位回文数。
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$