内容正文:
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第16卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(八)for循环、循环的嵌套
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第16卷
for循环、循环的嵌套 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.下列程序的运行结果为( )
main()
{int x=2,i=1;
for(;i<=3;i++)
{x=x*2+(i^(i-1));}
printf("%d",x);getch();}
A.24 B.25 C.26 D.27
【答案】D
2.以下循环的执行次数是( )
for(x=0,y=0;(y=123)&&(x<4);x++);
A.3次 B.4次 C.无限次 D.次数不定
【答案】B
3.以下程序for循环的次数为( )
for(i=0,x=0;!x&&i<=5;i++)
A.4 B.5 C.6 D.无限次
【答案】C
4.计算1到n整数和的算法最佳时间复杂度为( )
A.O(n) B.O(1) C.O(n²) D.O(log n)
【答案】B
【详解】公式 S=n(n+1)/2 可直接计算,时间固定。
5.有如下程序段,则输出结果是( )
char str[]=” abcdefgh”;
int i;
for(i=0;str[i]!=’\0’;i++)
if(i++%3==0)
printf("%2c",toupper(str[i]));}
A.A D B.a d C.B H D.b h
【答案】C
【详解】注意if条件中i++为后置加,条件成立后i的值加1,toupper将小写字符变为大写字符。故选C
6.若有以下定义,则下列输出结果是( )
int i,j,bb[3 ][4 ]={{1,2,3}{,4,5,6},{7,8,9}};
for(i=0;i<4;i++)
printf(“%d”,bb[1][i]);
A.1234 B.4560 C.2580 D.1230
【答案】B
【详解】输出中bb[1][i],输出数组第1行的全部元素,没有初始化的默认为0。故选B
7.for(i=0;i<11;i++);结束后 ,i的值是( )
A.9 B.10 C.11 D.12
【答案】C
8.以下程序的运行结果是( )
#include <stdio.h>
int main() {
int s = 0, k = 2;
for (; k < 6; k++)
s += k;
printf("%d", s);
}
A.12 B.13 C.14 D.15
【答案】C
9.以下程序运行后的输出是( )
main() {
int sum = 1, k = 3;
for (; k < 8; k++)
sum += k;
printf("%d", sum);
}
A.24 B.25 C.26 D.27
【答案】C
10.for(i=0;i<10;i++);结束后 ,i的值是( )
A.9 B.10 C.11 D.12
【答案】B
11.若 i,j 已定义为 int 类型,则以下程序段中内循环的总的执行次数是( )
main() {
for (i = 5; i < 8; i++)
for (j = 0; j < 4; j++)
{...}
}
A.12 B.10 C.24 D.8
【答案】A
【详解】“for (i = 5; i < 8; i++)”的执行次数为3次,“for (j = 0; j < 4; j++)”的执行次数为4次。因此,总的执行次数为3*4=12次。
12.下面有关for循环的正确描述是( )
A.for是先执行循环体,后判断表达式
B.for循环只能用于循环次数已经确定的情况
C.for循环不可以用break语句跳出循环体
D.for循环括号中的表达式可以省略一个或多个,但不能省略分号
【答案】D
【详解】for先判断表达式,符合条件执行循环。for循环一般用于循环次数已经确定的情况。for循环可以用break语句跳出循环体。
13.下面的代码段输出的结果是什么?( )
for(int i = 0; i < 5; i++){
if(i == 3){
continue;
}
printf("%d ", i);
}
A.0 1 2 3 4
B.0 1 2 4
C.0 1 2 3 4 5
D.0 1 2 3 4 5 6
【答案】B
【详解】当i等于3时,遇到continue语句,跳过本次循环,继续下一次循环。
14.以下代码的输出的结果为( )
int main() {
int sum = 0;
int i = 0, j = 0;
for (j = 0; j < 10; j++) {
if (j % 3)
continue;
sum++;
}
printf("sum = %d", sum);
return 0;
}
A.sum = 1 B.sum = 2 C.sum = 3 D.sum = 4
【答案】D
【详解】执行“for (j = 0; j < 10; j++) ”,j = 0,0%3的值为0,不执行continue语句,执行“sum++”。执行“j++”,j的值此时为1,1 % 3的值为1,符合条件,执行continue语句,直接开始下一轮循环。同理,循环至j < 10条件不成立。因此sum的值为4。
15.以下程序段运行后,当输入数据的形式为4↙,该程序的输出结果为( )
int a[] = {1, 3, 5, 7, 2, 4, 6, 8}, i, start;
scanf("%d", &start);
for (i = 0; i < 3; i++)
printf("%d", a[(start - i) / 2]);
A.522 B.511 C.555 D.533
【答案】D
【详解】带参数的宏“SUM(x) 5*x+3”代入相应的参数 i+ j整体代入(不要先进行计算),代入后,5 * 2 + 3 + 3,根据运算符的优先级计算可得值为16。
16.执行语句 for(i=1; i<=4;i++);后,变量i的值是( )
A.3 B.4 C.5 D.不确定
【答案】C
17.若i是int型变量,以下循环体执行的次数为( )
for (i = 2; i > 3; i++)
printf("%d
", i--);
A.0 B.1 C.2 D.无限次
【答案】A
【详解】执行“i = 2”,i的值初始化为2。2 > 3条件不成立,因此,循环一次也不执行。
18.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h">
main()
{int i;
for(i=0; i<3; i++)
switch(i)
{ case 1: printf("%d", i);
case 2: printf("%d", i);
default : printf("%d", i);} getch();}
A.012 B.0111 C.01112 D.011122
【答案】D
19.有以下程序段,若k为int型变量且 0≤k<4, 则对字符串的不正确引用是( )
char str[4][10]={"first","second","third","fourth"}, * strp[4];
int n;for ( n=0;n<4;n++) strp[n]=str[n];
A.strp B.*strp C.str[k] D.strp[k]
【答案】A
20.以下代码的输出结果是( )
int i;
for(i = 3; i > 0; i--) {
if(i == 2) break;
printf("%d", i);
}
A.321 B.32 C.21 D.3
【答案】D
二、程序设计题(本大题共4小题,每题10分,共40分)
21.函数fun的功能是:用选择法对数组中的n个元素进行升序排列
#include<stdio.h>
#define N 20
void fun(int a[],int n)
{
int i,j,t,p;
for(j=0;j<n-1;j++)
{
/*******space*******/
/*******space*******/
}
}
void main()
{
int a[N]={9,6,8,3,-1},i, m = 5;
fun(a,m);
printf("【排序后的数据:】") ;
for(i=0;i<m;i++)
printf("%d ",a[i]);
printf("
");
}
【答案】p=j;
for(i=j;i<n;i++){
if(a[i]<a[p]) p=i;
}
t=a[p];
a[p]=a[j];
a[j]=t;
22.代码实现输入一个 3×3 矩阵,输出其转置矩阵。
输入示例:
1 2 3
4 5 6
7 8 9
输出示例:
1 4 7
2 5 8
3 6 9
【答案】#include <stdio.h>
int main() {
int matrix[3][3];
// 输入矩阵
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 转置矩阵
int transposed[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
transposed[i][j] = matrix[j][i];
}
}
// 输出转置后的矩阵
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", transposed[i][j]);
}
printf("
");
}
return 0;
}
23.输出1000以内各位数之和为40的数字,并输出其和。
#include<stdio.h>
main(){
/*******space*******/
/*******space*******/
}
【答案】int i,temp,sum;
for(i=1;i<1000;i++)
{
sum=0;
temp=i;
while(temp!=0){
sum=sum+temp%10;
temp=temp/10;
}
if(sum==40) printf(“%d”,i);
}
【详解】for循环取出满足范围内的数字,sum=0必须再循环内初始化,以防上一次的求和结果影响下一次,并且使用临时变量temp接收i的值进行数位分离就和,数位分离会使被分离的数变为0,所以不能直接对循环变量i进行数位分离,最后判断和是否等于40输出即可。
24.求出-10 到 30 之内能被 7 或 11 整除,但不能同时被 7 或 11 整除的所有整数。
#include <conio.h>
#include <stdio.h>
main()
{
/*******space*******/
/*******space*******/
}
【答案】int i;
for(i=-10;i<30;i++)
{
for(!(i%7==0 && i%11==0))
{
printf(“%d”,i);
}
}
【详解】使用for循环取出指定区间内的数字,然后重点是理解能被 7 或 11 整除,但不能同时被 7 或 11 整除的所有整数,能同时被7和11整除的对立面就是满足条件的数,然后利用for循环挑出输出即可。
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第16卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(八)for循环、循环的嵌套
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第16卷
for循环、循环的嵌套 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.下列程序的运行结果为( )
main()
{int x=2,i=1;
for(;i<=3;i++)
{x=x*2+(i^(i-1));}
printf("%d",x);getch();}
A.24 B.25 C.26 D.27
2.以下循环的执行次数是( )
for(x=0,y=0;(y=123)&&(x<4);x++);
A.3次 B.4次 C.无限次 D.次数不定
3.以下程序for循环的次数为( )
for(i=0,x=0;!x&&i<=5;i++)
A.4 B.5 C.6 D.无限次
4.计算1到n整数和的算法最佳时间复杂度为( )
A.O(n) B.O(1) C.O(n²) D.O(log n)
5.有如下程序段,则输出结果是( )
char str[]=” abcdefgh”;
int i;
for(i=0;str[i]!=’\0’;i++)
if(i++%3==0)
printf("%2c",toupper(str[i]));}
A.A D B.a d C.B H D.b h
6.若有以下定义,则下列输出结果是( )
int i,j,bb[3 ][4 ]={{1,2,3}{,4,5,6},{7,8,9}};
for(i=0;i<4;i++)
printf(“%d”,bb[1][i]);
A.1234 B.4560 C.2580 D.1230
7.for(i=0;i<11;i++);结束后 ,i的值是( )
A.9 B.10 C.11 D.12
8.以下程序的运行结果是( )
#include <stdio.h>
int main() {
int s = 0, k = 2;
for (; k < 6; k++)
s += k;
printf("%d", s);
}
A.12 B.13 C.14 D.15
9.以下程序运行后的输出是( )
main() {
int sum = 1, k = 3;
for (; k < 8; k++)
sum += k;
printf("%d", sum);
}
A.24 B.25 C.26 D.27
10.for(i=0;i<10;i++);结束后 ,i的值是( )
A.9 B.10 C.11 D.12
11.若 i,j 已定义为 int 类型,则以下程序段中内循环的总的执行次数是( )
main() {
for (i = 5; i < 8; i++)
for (j = 0; j < 4; j++)
{...}
}
A.12 B.10 C.24 D.8
12.下面有关for循环的正确描述是( )
A.for是先执行循环体,后判断表达式
B.for循环只能用于循环次数已经确定的情况
C.for循环不可以用break语句跳出循环体
D.for循环括号中的表达式可以省略一个或多个,但不能省略分号
13.下面的代码段输出的结果是什么?( )
for(int i = 0; i < 5; i++){
if(i == 3){
continue;
}
printf("%d ", i);
}
A.0 1 2 3 4
B.0 1 2 4
C.0 1 2 3 4 5
D.0 1 2 3 4 5 6
14.以下代码的输出的结果为( )
int main() {
int sum = 0;
int i = 0, j = 0;
for (j = 0; j < 10; j++) {
if (j % 3)
continue;
sum++;
}
printf("sum = %d", sum);
return 0;
}
A.sum = 1 B.sum = 2 C.sum = 3 D.sum = 4
15.以下程序段运行后,当输入数据的形式为4↙,该程序的输出结果为( )
int a[] = {1, 3, 5, 7, 2, 4, 6, 8}, i, start;
scanf("%d", &start);
for (i = 0; i < 3; i++)
printf("%d", a[(start - i) / 2]);
A.522 B.511 C.555 D.533
16.执行语句 for(i=1; i<=4;i++);后,变量i的值是( )
A.3 B.4 C.5 D.不确定
17.若i是int型变量,以下循环体执行的次数为( )
for (i = 2; i > 3; i++)
printf("%d
", i--);
A.0 B.1 C.2 D.无限次
18.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h">
main()
{int i;
for(i=0; i<3; i++)
switch(i)
{ case 1: printf("%d", i);
case 2: printf("%d", i);
default : printf("%d", i);} getch();}
A.012 B.0111 C.01112 D.011122
19.有以下程序段,若k为int型变量且 0≤k<4, 则对字符串的不正确引用是( )
char str[4][10]={"first","second","third","fourth"}, * strp[4];
int n;for ( n=0;n<4;n++) strp[n]=str[n];
A.strp B.*strp C.str[k] D.strp[k]
20.以下代码的输出结果是( )
int i;
for(i = 3; i > 0; i--) {
if(i == 2) break;
printf("%d", i);
}
A.321 B.32 C.21 D.3
二、程序设计题(本大题共4小题,每题10分,共40分)
21.函数fun的功能是:用选择法对数组中的n个元素进行升序排列
#include<stdio.h>
#define N 20
void fun(int a[],int n)
{
int i,j,t,p;
for(j=0;j<n-1;j++)
{
/*******space*******/
/*******space*******/
}
}
void main()
{
int a[N]={9,6,8,3,-1},i, m = 5;
fun(a,m);
printf("【排序后的数据:】") ;
for(i=0;i<m;i++)
printf("%d ",a[i]);
printf("
");
}
22.代码实现输入一个 3×3 矩阵,输出其转置矩阵。
输入示例:
1 2 3
4 5 6
7 8 9
输出示例:
1 4 7
2 5 8
3 6 9
23.输出1000以内各位数之和为40的数字,并输出其和。
#include<stdio.h>
main(){
/*******space*******/
/*******space*******/
}
24.求出-10 到 30 之内能被 7 或 11 整除,但不能同时被 7 或 11 整除的所有整数。
#include <conio.h>
#include <stdio.h>
main()
{
/*******space*******/
/*******space*******/
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$