内容正文:
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第11卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(六)while循环
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第11卷
while循环 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.下列语句段中不是死循环的是( )
A.i=100;
while (1)
{
i=i%100+1;
if(i= =20) break;
}
B.for (i-=1;i++)
sum=sum+l;
C.k=0;
do
{
++k;
} while (k<=0);
D.s=3379;
while (s++%2+3%2)
s++;
【答案】C
2.以下代码的输出结果是( )
int i = 0;
while(i < 4) {
for(int j = 0; j < 2; j++) {
if(j == 1) break;
printf("%d", j);
}
i++;
}
A.0101 B.0000 C.00112233 D.0123
【答案】B
3.以下代码的输出结果是( )
int i = 5;
while(i--) {
if(i == 3) break;
printf("%d", i);
}
A.543 B.54 C.43 D.4
【答案】D
4.以下代码的输出结果是( )
int i = 1;
while(i <= 5) {
if(i % 2 == 0) {
i++;
continue;
}
printf("%d", i);
i++;
}
A.135 B.12345 C.24 D.13
【答案】A
5.以下 while 循环代码的输出结果是( )
int x = 10;
while (x > 7) {
if (x % 2 == 0) {
x -= 2;
continue;
}
printf("%d ", x);
x--;
}
A.10 B.10 9 C.9 D.无输出
【答案】C
6.以下代码段的输出结果是( )
int i = 0;
while (i < 5) {
if (i % 2 == 1) {
i++;
continue;
}
printf("%d ", i);
i++;
}
A.0 2 4 B.1 3 C.0 1 2 3 4 D.无输出
【答案】A
7.以下代码段的输出结果是( )
int i = 5;
while (i > 0) {
if (i == 3) {
i--;
continue;
}
printf("%d ", i);
i--;
}
A.5 4 3 2 1 B.5 4 2 1 C.5 4 D.无输出
【答案】B
8.以下 while 循环代码的输出结果是( )
int a = 0;
while (a < 5) {
if (a == 3) {
a++;
continue;
}
printf("%d ", a++);
}
A.0 1 2 4 B.0 1 2 3 4 C.0 1 2 D.1 2 4
【答案】A
9.以下代码的输出是( )
int x = 5;
while (x--) {
printf("%d", x);
}
A.43210 B.54321 C.4321 D.5432
【答案】C
10.以下代码的输出结果是( )
int i = 0;
while (i < 3) {
printf("%d ", i);
i++;
}
A.0 1 2 B.0 1 2 3 C.1 2 3 D.无输出
【答案】A
11.以下代码的输出结果是( )
int x=2;
while(x--);
printf("%d", x);
A.2 B.1 C.9 D.-1
【答案】D
12.执行下列程序段后的输出结果是( )
int i=0;
char a[ ]="abm", b[ ]="aqid", c[10];
while (a[i]!='\0' && b[i]!=\0)
{ if (a[i]>=b[i]) c[i]=a[i]-32 ;
else c[i]=b[i]-32 ;
i++;}
c[i]=\0'; puts(c);
A.ABM B.AQM C.AQID D.ABQ
【答案】B
13.下面没有构成死循环的程序段是( )
A.int i=100;while(1) {i=i%100+1;if(i>1000)break;}
B.for(;;);
C.int k=1000;do{- -k} while(k);
D.int s=36;while(s>=0);++s;
【答案】C
14.下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。
include <stdio.h>
main( )
{ int a,b,t;
scanf("%d%d",&a,&b);
while( 【 】 )
{ if(a>b){ t=a;a=b;b=t;}
printf("%d,%d
",a,b);scanf("%d%d",&a,&b);
} }
A.!a=b B.a!=b C.a==b D.a=b
【答案】B
15.下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。
#include <stdio.h>
main( )
{ int m=0,n=0;char c;
while((【l】)!=‘
’)
{ if(c>=‘A’&&c<=‘Z’) m++;
if(c>=‘a’&&c<=‘z’) n++;
}printf("%d
", m<n ?n:m); }
A.c=getchar( ) B.c=putchar( ) C.getchar( ) D.scanf(“%c”,c)
【答案】A
16.下面程序段的运行结果是( )
int n=0;
while(n++<=2);printf(“%d”,n);
A.2 B.4 C.3 D.死循环
【答案】B
17.下列程序的运行结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int n=15;
while(n>11)
{n-=2;
printf("%d",n);}getch(); }
A.1311 B.11 C.311 D.1
【答案】A
18.下列程序的运行结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int x=1,s=2;
while(!x!=0)
s+=--x;
printf("%d",s);getch(); }
A.1 B.0 C.2 D.-1
【答案】C
19.下面程序段的运行结果是( )
x=y=0;
while(x<15)
y++,x+=++y;
print("%d,%d",x,y);
A.20,8 B.8,20 C.12,6 D.7,20
【答案】A
20.下面程序段的输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int n=8;
while(n--)printf("%d",--n);getch(); }
A.20 B.0 C.420 D.6420
【答案】D
二、程序设计题(本大题共4小题,每题10分,共40分)
21.编写函数查找在1000以内某个区间中一个数的其平方具有对称性质的数(也称回文数)。例如121就是一个具有对称性质的数。
#include <stdio.h>
#include <stdlib.h>
int isPalindromeNumber(int num){
int original = num;
int reverse = 0;
/*******space*******/
/*******space*******/
}
int main(){
int start, end,i,square,found=0;
printf("【请输入区间的起始值(1000以内的正整数):】");
scanf("%d", &start);
printf("【请输入区间的结束值(1000以内的正整数):】");
scanf("%d", &end);
if(start>100||end>1000||start<0||end<0){
printf("请输入1000以内的正整数
");
return 0;
}
if(start>end){
printf("请输入正确的区间
");
return 0;
}
for(i= start;i<= end;i++){
square = i * i;
if(isPalindromeNumber(square)){
printf("%d %d
", i, square);
found = 1;
}
}
if(found == 0){
printf("在区间 [%d, %d] 内,不具有对称性质(即不是回文数)。
", start, end);
}
return 0;
}
【答案】while(original!=0){
reverse=reverse*10+original%10;
original/=10;
}
if(reverse==num) return 1;
else return 0;
【详解】将数字进行数位分离后并反序,反序后的数若依然等于原数,则为对称数。
22.从键盘输入一个十进制整数,将其转换为二进制后反序再转成新的十进制后输出(例如11 => 1011 => 1101 => 13)
#include <stdio.h>
main(){
int n,x,t;
scanf(“%d”,&n);
x=0;
/*******space*******/
/*******space*******/
printf(“%d
”,x);
【答案】while(n!=0){
t=n%10;
n=n/10;
x=x*2+t;
}
【详解】这道题考查数位分离和反序,由于将其转化成二进制的数1011再逆序后是1101, 逆序后的左边的1是先%出的,再进行转换成十进制时,是需要乘以更多的2,所以是反序,反序固定代码 t=t*进制+a(t的初始值为0,a为每次循环要参与反序的数字)
23.输入一个正整数,相反次序输出(例:输入12345,输出54321)
【答案】#include <stdio.h>
void main()
{
int a,b=0;
printf("请输入数字:
");
scanf("%d",&a);
while(a>0)
{
b=b*10+a%10;
a/=10;
}
printf("%d",b);
}
【详解】使用取余函数和while循环相结合。
24.输入一行字符,输出字母个数。
【答案】#include<stdio.h>
main()
{
char ch;
int num=0;
printf("输入一行字符:");
ch=getchar();
while(ch!='
')
{
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')
num++;
ch=getchar();
}
printf("字母个数%d
",num);
}
【详解】利用循环和getchar()语句依次判断输入的字符是否为字母,并计数。
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第11卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(六)while循环
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第11卷
while循环 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.下列语句段中不是死循环的是( )
A.i=100;
while (1)
{
i=i%100+1;
if(i= =20) break;
}
B.for (i-=1;i++)
sum=sum+l;
C.k=0;
do
{
++k;
} while (k<=0);
D.s=3379;
while (s++%2+3%2)
s++;
2.以下代码的输出结果是( )
int i = 0;
while(i < 4) {
for(int j = 0; j < 2; j++) {
if(j == 1) break;
printf("%d", j);
}
i++;
}
A.0101 B.0000 C.00112233 D.0123
3.以下代码的输出结果是( )
int i = 5;
while(i--) {
if(i == 3) break;
printf("%d", i);
}
A.543 B.54 C.43 D.4
4.以下代码的输出结果是( )
int i = 1;
while(i <= 5) {
if(i % 2 == 0) {
i++;
continue;
}
printf("%d", i);
i++;
}
A.135 B.12345 C.24 D.13
5.以下 while 循环代码的输出结果是( )
int x = 10;
while (x > 7) {
if (x % 2 == 0) {
x -= 2;
continue;
}
printf("%d ", x);
x--;
}
A.10 B.10 9 C.9 D.无输出
6.以下代码段的输出结果是( )
int i = 0;
while (i < 5) {
if (i % 2 == 1) {
i++;
continue;
}
printf("%d ", i);
i++;
}
A.0 2 4 B.1 3 C.0 1 2 3 4 D.无输出
7.以下代码段的输出结果是( )
int i = 5;
while (i > 0) {
if (i == 3) {
i--;
continue;
}
printf("%d ", i);
i--;
}
A.5 4 3 2 1 B.5 4 2 1 C.5 4 D.无输出
8.以下 while 循环代码的输出结果是( )
int a = 0;
while (a < 5) {
if (a == 3) {
a++;
continue;
}
printf("%d ", a++);
}
A.0 1 2 4 B.0 1 2 3 4 C.0 1 2 D.1 2 4
9.以下代码的输出是( )
int x = 5;
while (x--) {
printf("%d", x);
}
A.43210 B.54321 C.4321 D.5432
10.以下代码的输出结果是( )
int i = 0;
while (i < 3) {
printf("%d ", i);
i++;
}
A.0 1 2 B.0 1 2 3 C.1 2 3 D.无输出
11.以下代码的输出结果是( )
int x=2;
while(x--);
printf("%d", x);
A.2 B.1 C.9 D.-1
12.执行下列程序段后的输出结果是( )
int i=0;
char a[ ]="abm", b[ ]="aqid", c[10];
while (a[i]!='\0' && b[i]!=\0)
{ if (a[i]>=b[i]) c[i]=a[i]-32 ;
else c[i]=b[i]-32 ;
i++;}
c[i]=\0'; puts(c);
A.ABM B.AQM C.AQID D.ABQ
13.下面没有构成死循环的程序段是( )
A.int i=100;while(1) {i=i%100+1;if(i>1000)break;}
B.for(;;);
C.int k=1000;do{- -k} while(k);
D.int s=36;while(s>=0);++s;
14.下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。
include <stdio.h>
main( )
{ int a,b,t;
scanf("%d%d",&a,&b);
while( 【 】 )
{ if(a>b){ t=a;a=b;b=t;}
printf("%d,%d
",a,b);scanf("%d%d",&a,&b);
} }
A.!a=b B.a!=b C.a==b D.a=b
15.下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。
#include <stdio.h>
main( )
{ int m=0,n=0;char c;
while((【l】)!=‘
’)
{ if(c>=‘A’&&c<=‘Z’) m++;
if(c>=‘a’&&c<=‘z’) n++;
}printf("%d
", m<n ?n:m); }
A.c=getchar( ) B.c=putchar( ) C.getchar( ) D.scanf(“%c”,c)
16.下面程序段的运行结果是( )
int n=0;
while(n++<=2);printf(“%d”,n);
A.2 B.4 C.3 D.死循环
17.下列程序的运行结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int n=15;
while(n>11)
{n-=2;
printf("%d",n);}getch(); }
A.1311 B.11 C.311 D.1
18.下列程序的运行结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int x=1,s=2;
while(!x!=0)
s+=--x;
printf("%d",s);getch(); }
A.1 B.0 C.2 D.-1
19.下面程序段的运行结果是( )
x=y=0;
while(x<15)
y++,x+=++y;
print("%d,%d",x,y);
A.20,8 B.8,20 C.12,6 D.7,20
20.下面程序段的输出结果是( )
#include<stdio.h>
#include<conio.h>
main( )
{int n=8;
while(n--)printf("%d",--n);getch(); }
A.20 B.0 C.420 D.6420
二、程序设计题(本大题共4小题,每题10分,共40分)
21.编写函数查找在1000以内某个区间中一个数的其平方具有对称性质的数(也称回文数)。例如121就是一个具有对称性质的数。
#include <stdio.h>
#include <stdlib.h>
int isPalindromeNumber(int num){
int original = num;
int reverse = 0;
/*******space*******/
/*******space*******/
}
int main(){
int start, end,i,square,found=0;
printf("【请输入区间的起始值(1000以内的正整数):】");
scanf("%d", &start);
printf("【请输入区间的结束值(1000以内的正整数):】");
scanf("%d", &end);
if(start>100||end>1000||start<0||end<0){
printf("请输入1000以内的正整数
");
return 0;
}
if(start>end){
printf("请输入正确的区间
");
return 0;
}
for(i= start;i<= end;i++){
square = i * i;
if(isPalindromeNumber(square)){
printf("%d %d
", i, square);
found = 1;
}
}
if(found == 0){
printf("在区间 [%d, %d] 内,不具有对称性质(即不是回文数)。
", start, end);
}
return 0;
}
22.从键盘输入一个十进制整数,将其转换为二进制后反序再转成新的十进制后输出(例如11 => 1011 => 1101 => 13)
#include <stdio.h>
main(){
int n,x,t;
scanf(“%d”,&n);
x=0;
/*******space*******/
/*******space*******/
printf(“%d
”,x);
23.输入一个正整数,相反次序输出(例:输入12345,输出54321)
24.输入一行字符,输出字母个数。
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$