内容正文:
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第15卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(八)for循环、循环的嵌套
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第15卷
for循环、循环的嵌套 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.下面程序的输出结果是 ( )
int k,j,s;
for(k=2;k<6;k++,k++)
{ s=1;
for(j=k;j<6;j++)
s+=j;}
printf("%d
",s);
A.1 B.9 C.11 D.10
【答案】D
【详解】第一次外循环:k = 2内循环:j 从2累加到5,s 的值变为 1 + 2 + 3 + 4 + 5 = 15
第二次外循环:k = 4(注意,由于 k++ 实际上只执行一次,所以这里 k 应该是3,但由于 k++, k++ 的写法,这里 k 实际上会增加两次,变为4)
内循环:j 从4累加到5,s 的值变为 1 + 4 + 5 = 10
第三次外循环:k = 6(k 再次增加两次,变为6,但由于循环条件 k < 6,循环结束)
由于内循环每次开始时 s 都被重置为1,所以只有最后一次内循环的结果是有效的,即 s = 10。
2.以下代码段的输出结果是( )
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
printf("*");
}
printf("
");
}
A.**
**
**
B.***
***
C.**
***
D.*
*
*
【答案】A
3.以下代码的输出结果是( )
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
printf("%d %d
", i, j);
}
}
A.0 0
0 1
1 0
1 1
B.0 0
1 0
0 1
1 1
C.0 0
0 1
D.0 0
1 1
【答案】A
4.以下代码段的输出结果是( )
c
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; j--) {
printf(" ");
}
for (int k = 1; k <= i; k++) {
printf("*");
}
printf("
");
}
A.*
**
***
****
***** B.*****
****
***
**
* C.*
**
***
****
***** D.*****
****
***
**
*
【答案】A
【分析】该代码段通过嵌套循环来实现多重循环
【详解】外层循环(i从1到5)来控制行数,共5行。
第一个内层循环(j从5递减到i)来打印空格,实现右对齐效果
第二个内层循环(k从1到i)打印星号,数量与行号i相等
每行结束时打印换行符
因此输出结果是一个右对齐的金字塔型的星号图案。
【点睛】本题考查的是for循环及多种循环的知识。
5.下面的代码段输出的结果是什么?( )
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
if(i + j == 2){
continue;
}
printf("%d %d ", i, j);
}
}
A.0 0 0 1 1 0 1 2 2 1 2 2
B.0 0 0 1 1 0 1 2 2 2 2 2
C.0 0 0 1 1 0 1 2 2 1 1 2
D.0 0 0 1 1 0 1 2 2 1 2 1
【答案】A
【详解】当i+j等于2时,遇到continue语句,跳过本次循环,继续下一次循环。所以当i+j等于2时,不会输出i和j的值。
6.下面的代码段输出的结果是什么?( )
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
if(i == j){
break;
}
printf("%d %d ", i, j);
}
}
A.1 0 2 0 2 0
B.1 0 2 0 1 1
C.1 0 2 0 2 1
D.1 0 2 0 2 2
【答案】C
【详解】当i等于j时,遇到break语句,终止内层循环,外层循环仍然会继续执行。
7.以下代码的输出结果是( )
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (i + j > 4) {
break;
}
printf("%d %d
", i, j);
}
}
A.1 1
1 2
1 3
2 1
2 2
3 1 B.1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3 C.1 1
1 2
1 3
2 1
2 2 D.1 1
1 2
2 1
【答案】A
8.下面的代码段输出的结果是( )
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
if(i == 1 && j == 1){
break;
}
printf("%d %d ", i, j);
}
}
A.0 0 0 1 0 2 1 0 1 1 2 0 2 1 2 2
B.0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2
C.0 0 0 1 0 2 1 02 0 2 1 2 2
D.0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2
【答案】C
【详解】当i等于1且j等于1时,遇到break语句,终止内层循环,外层循环仍然会继续执行。
9.for语句中的表达式可以部分或全部省略,但两个 不可省略,但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。( )
A.! B., C.; D.:
【答案】C
10.下列for循环语句正确的是( )
A.for(i=1;i<10;i++) B.for(i=1;i<=10;i++)
C.for(i=10;i>=1;i--) D.以上选项均正确
【答案】D
11.下列选项中,有关for循环的描述中正确的一项是( )
A.for循环只能用于循环次数已经确定的情况
B.for循环先执行循环体语句,后判断表达式
C.在for循环中,不能使用break语句跳出循环体
D.for循环的循环体语句中,可以包含多条语句,但必须使用花括号括起来
【答案】D
【分析】for循环不仅限于循环次数确定的情况,也可用于次数未知的循环(如通过条件表达式控制) ;for循环的执行顺序是先判断表达式,再决定是否执行循环体,而非先执行后判断 ;在for循环中,可以使用break语句提前跳出循环。
12.若a、b均为int型变量,且a=100,则关于循环语句for(b=100;a!=b;++a,++b)
printf ( “ ------------”) ;的正确说法是( )
A.循环体只执行一次 B.死循环
C.循环体一次也不执行 D.输出-----------
【答案】C
13.下列程序段的功能是( )
int main()
{int i;
for (i = 2; i <= 100; i += 2)
printf("%d
", i);}
A.输出1至100之间的所有奇数
B.输出1至100之间的所有偶数
C.输出1至100之间的所有数
D.程序中有语法错误
【答案】B
14.下列程序的运行结果是( )
main()
{int i,sum;
for(i=1;i<5;i++) sum+=i;
printf(“%d”,sum);}
A.15 B.14 C.0 D.不确定
【答案】D
15.下列有关for循环说法正确的是( )
A.在for循环中循环体至少执行一次。
B.在for循环语句中省略表达式1,表达式3则相当于while语句。
C.在for循环语句中省略表达式2,则循环条件总是为假。
D.for语句中表达式1,表达式2,表达式3均可省略,分号也不要写。
【答案】B
【详解】A选项中,在for循环中表达式2一开始为假,循环体一次也不执行。C选项中,在for循环语句中省略表达式2,则循环条件总是为真。D选项中,for语句中表达式1,表达式2,表达式3均可省略,但分号要写。
16.在for循环中,判断循环是否终止的时候是( )
A.在测试循环条件时进行判断
B.任何地方,只要条件不满足就终止
C.循环执行过程中判断
D.以上均不正确
【答案】A
【详解】for循环中在表达式2进行循环条件判断。故选A。
17.下列循环程序段中,不是死循环的是( )
A.int j=0;
while(j<=0);j++;
B.int k;
for(k=5; ;k--);
C.int i=16,s=0;
while(s<=20) s=i%15+1;
D.int z=9;
for(;z;) –z;
【答案】D
【详解】A选项中,while后有分号,循环控制变量z的值在循环体中没有被改变,一直为真,是死循环。B选项中,for循环表达式2没有书写,一直为真,是死循环。C选项中,s一直被重新赋值,一直小于20,是死循环。故选D。
18.执行以下程序的输出结果是( )
main()
{int a[3]={1},i;
for(i=0;i<2;i++)
printf("%d",a[i]);getch();}
A.01 B.001 C.10 D.100
【答案】C
19.执行以下程序的输出结果是( )
int fun()
{static int x=1;
x*=2;
return x;}
main()
{ int i,s=1;
for(i=1;i<=3;i++) s*=fun();
printf("%d
",s);getch();}
A.0 B.10 C.30 D.64
【答案】D
20.下列选项中不是无限循环的语句是( )
A.for(y=0,x=1;x>++y;x=i++) i=x; B.for(;;x++=i);
C.while(1){x++;} D.for(i=10;;i--) sum+i;
【答案】A
二、程序设计题(本大题共4小题,每题10分,共40分)
21.要求使用指针实现输出一个整型数组中的最大值。
#include<stdio.h>
main(){
int i,a[10];
int *p=a;
/*******space*******/
/*******space*******/
}
【答案】for(i=0;i<10;i++){
scanf("%d",p+i);
}
max=*p;
for(i=1;i<10;i++){
if(max<*(p+i)){
max=*(p+i); }
}
return max;
【详解】数组的取值方式是数组名[索引值],若指针p指向数组第一个元素,即p=数组名,指针的取值方式是*(p+i),在数组中找最大值的方法不变,即取值改成指针方式即可。
22.题目:编写一个函数,实现从用户处接收一个字符串,然后交换字符串中所有相邻的字符,要求使用指针实现。
#include <stdio.h>
#include <string.h>
void swap(char *str);
int main() {
char str[100];
printf("【Enter a string:】 ");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "
")] = 0;
swap(str);
printf("【Modified string: 】%s
", str);
return 0;
}
void swap(char *str) {
int len = strlen(str);
/*******space*******/
/*******space*******/
}
【答案】int i;
char temp;
for(i=0;i<len-1;i+=2){
temp=*(str+i);
*(str+i)=*(str+i+1);
*(str+i+1)=temp;
}
【详解】数组中每两个相邻字符的交换,实际上就是a[j]和a[j+1]的交换,索引值j从0开始每次跳2个即可。
23.函数fun的功能是:给一维数组a输入任意4个整数,并按如下的规律输出。
例如,输入1、2、3、4,程序运行后输出以下方阵:
4 1 2 3
3 4 1 2
2 3 4 1
1 2 3 4
#include <stdio.h>
#define M 4
void fun(int *a)
{
int I,j,k,m;
printf("【Enter 4 number: 】");
for(I=0;I<M;I++)
scanf("%d",&a[I]);
printf("
【The result :】
");
/*******space*******/
/*******space*******/
}
void main()
{
int a[M];
fun(a);
}
【答案】for(I=M;I>0;I--)
{
k=a[M-1];
for(j=M-1;j>0;j--)
a[j]=a[j-1];
a[0]=k;
for(m=0;m<M;m++) printf("%d ",a[m]);
printf("
");
}
24.请编写函数sum,其功能是:用While循环语句求1到n之间(包括n)能被7整除的所有整数之和,并将结果返回给主函数(n值由主函数传入)
#include <stdio.h>
long sum(int n)
{
/*******space*******/
/*******space*******/
}
void main()
{
int x;
long f;
scanf("%d",&x);
f=sum(x);
printf("%ld
",f);
}
【答案】long sum=0;
int i;
for(i=1;i<=n;i++){
if(i%7==0){
sum=sum+i;
}
}
return sum;
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第15卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(八)for循环、循环的嵌套
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第15卷
for循环、循环的嵌套 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.下面程序的输出结果是 ( )
int k,j,s;
for(k=2;k<6;k++,k++)
{ s=1;
for(j=k;j<6;j++)
s+=j;}
printf("%d
",s);
A.1 B.9 C.11 D.10
2.以下代码段的输出结果是( )
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
printf("*");
}
printf("
");
}
A.**
**
**
B.***
***
C.**
***
D.*
*
*
3.以下代码的输出结果是( )
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
printf("%d %d
", i, j);
}
}
A.0 0
0 1
1 0
1 1
B.0 0
1 0
0 1
1 1
C.0 0
0 1
D.0 0
1 1
4.以下代码段的输出结果是( )
c
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i; j--) {
printf(" ");
}
for (int k = 1; k <= i; k++) {
printf("*");
}
printf("
");
}
A.*
**
***
****
***** B.*****
****
***
**
* C.*
**
***
****
***** D.*****
****
***
**
*
5.下面的代码段输出的结果是什么?( )
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
if(i + j == 2){
continue;
}
printf("%d %d ", i, j);
}
}
A.0 0 0 1 1 0 1 2 2 1 2 2
B.0 0 0 1 1 0 1 2 2 2 2 2
C.0 0 0 1 1 0 1 2 2 1 1 2
D.0 0 0 1 1 0 1 2 2 1 2 1
6.下面的代码段输出的结果是什么?( )
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
if(i == j){
break;
}
printf("%d %d ", i, j);
}
}
A.1 0 2 0 2 0
B.1 0 2 0 1 1
C.1 0 2 0 2 1
D.1 0 2 0 2 2
7.以下代码的输出结果是( )
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
if (i + j > 4) {
break;
}
printf("%d %d
", i, j);
}
}
A.1 1
1 2
1 3
2 1
2 2
3 1 B.1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3 C.1 1
1 2
1 3
2 1
2 2 D.1 1
1 2
2 1
8.下面的代码段输出的结果是( )
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
if(i == 1 && j == 1){
break;
}
printf("%d %d ", i, j);
}
}
A.0 0 0 1 0 2 1 0 1 1 2 0 2 1 2 2
B.0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2
C.0 0 0 1 0 2 1 02 0 2 1 2 2
D.0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2
9.for语句中的表达式可以部分或全部省略,但两个 不可省略,但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。( )
A.! B., C.; D.:
10.下列for循环语句正确的是( )
A.for(i=1;i<10;i++) B.for(i=1;i<=10;i++)
C.for(i=10;i>=1;i--) D.以上选项均正确
11.下列选项中,有关for循环的描述中正确的一项是( )
A.for循环只能用于循环次数已经确定的情况
B.for循环先执行循环体语句,后判断表达式
C.在for循环中,不能使用break语句跳出循环体
D.for循环的循环体语句中,可以包含多条语句,但必须使用花括号括起来
12.若a、b均为int型变量,且a=100,则关于循环语句for(b=100;a!=b;++a,++b)
printf ( “ ------------”) ;的正确说法是( )
A.循环体只执行一次 B.死循环
C.循环体一次也不执行 D.输出-----------
13.下列程序段的功能是( )
int main()
{int i;
for (i = 2; i <= 100; i += 2)
printf("%d
", i);}
A.输出1至100之间的所有奇数
B.输出1至100之间的所有偶数
C.输出1至100之间的所有数
D.程序中有语法错误
14.下列程序的运行结果是( )
main()
{int i,sum;
for(i=1;i<5;i++) sum+=i;
printf(“%d”,sum);}
A.15 B.14 C.0 D.不确定
15.下列有关for循环说法正确的是( )
A.在for循环中循环体至少执行一次。
B.在for循环语句中省略表达式1,表达式3则相当于while语句。
C.在for循环语句中省略表达式2,则循环条件总是为假。
D.for语句中表达式1,表达式2,表达式3均可省略,分号也不要写。
16.在for循环中,判断循环是否终止的时候是( )
A.在测试循环条件时进行判断
B.任何地方,只要条件不满足就终止
C.循环执行过程中判断
D.以上均不正确
17.下列循环程序段中,不是死循环的是( )
A.int j=0;
while(j<=0);j++;
B.int k;
for(k=5; ;k--);
C.int i=16,s=0;
while(s<=20) s=i%15+1;
D.int z=9;
for(;z;) –z;
18.执行以下程序的输出结果是( )
main()
{int a[3]={1},i;
for(i=0;i<2;i++)
printf("%d",a[i]);getch();}
A.01 B.001 C.10 D.100
19.执行以下程序的输出结果是( )
int fun()
{static int x=1;
x*=2;
return x;}
main()
{ int i,s=1;
for(i=1;i<=3;i++) s*=fun();
printf("%d
",s);getch();}
A.0 B.10 C.30 D.64
20.下列选项中不是无限循环的语句是( )
A.for(y=0,x=1;x>++y;x=i++) i=x; B.for(;;x++=i);
C.while(1){x++;} D.for(i=10;;i--) sum+i;
二、程序设计题(本大题共4小题,每题10分,共40分)
21.要求使用指针实现输出一个整型数组中的最大值。
#include<stdio.h>
main(){
int i,a[10];
int *p=a;
/*******space*******/
/*******space*******/
}
22.题目:编写一个函数,实现从用户处接收一个字符串,然后交换字符串中所有相邻的字符,要求使用指针实现。
#include <stdio.h>
#include <string.h>
void swap(char *str);
int main() {
char str[100];
printf("【Enter a string:】 ");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "
")] = 0;
swap(str);
printf("【Modified string: 】%s
", str);
return 0;
}
void swap(char *str) {
int len = strlen(str);
/*******space*******/
/*******space*******/
}
23.函数fun的功能是:给一维数组a输入任意4个整数,并按如下的规律输出。
例如,输入1、2、3、4,程序运行后输出以下方阵:
4 1 2 3
3 4 1 2
2 3 4 1
1 2 3 4
#include <stdio.h>
#define M 4
void fun(int *a)
{
int I,j,k,m;
printf("【Enter 4 number: 】");
for(I=0;I<M;I++)
scanf("%d",&a[I]);
printf("
【The result :】
");
/*******space*******/
/*******space*******/
}
void main()
{
int a[M];
fun(a);
}
24.请编写函数sum,其功能是:用While循环语句求1到n之间(包括n)能被7整除的所有整数之和,并将结果返回给主函数(n值由主函数传入)
#include <stdio.h>
long sum(int n)
{
/*******space*******/
/*******space*******/
}
void main()
{
int x;
long f;
scanf("%d",&x);
f=sum(x);
printf("%ld
",f);
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$