内容正文:
编写说明:江苏省对口招生计算机类《考纲百套卷》,依据《江苏省计算机类专业综合理论考试大纲》编写。本专辑涵盖5门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。
本试卷是第21卷为专业核心模块训练卷,按《C语言》中"C语言卷8——for循环结构"范围和要求编写。具体内容为:掌握for循环结构。
江苏省对口招生职业技能考试
C语言 试卷
(C语言卷8——for循环结构)
考试时间:90分钟 满分:100分
一、单项选择题(共20题,每题2分,共40分)
1. for循环的基本格式是( )
A.for 条件 语句 B.for(初始化;条件;更新) 语句
C.for(条件) 语句 D.for 初始化,条件,更新 语句
【答案】B
【解析】for循环格式为for(初始化;条件;更新) 语句。
2. 下列关于for循环,正确的是( )
A.for循环必须先执行初始化
B.for循环的条件判断在循环体执行之后
C.for循环可以用于已知循环次数的场合
D.for循环不能嵌套使用
【答案】C
【解析】for循环特别适合用于已知循环次数的场合。
3. for(i=0;i<10;i++)循环体将执行( )
A.9次 B.10次 C.11次 D.无限次
【答案】B
【解析】i从0到9,共10次迭代。
4. 在for循环中,初始化部分( )
A.必须存在且只能是一条语句 B.可以省略不写(用分号占位) C.必须放在循环体内部 D.每次循环都执行
【答案】B
【解析】for循环的三个部分都可以省略,但分号必须保留。
5. 在for循环中,条件判断在( )
A.循环体执行之后 B.循环体执行之前 C.只在第一次迭代前 D.程序结束时
【答案】B
【解析】for循环先判断条件,条件为真才执行循环体。
6. 在for循环中,更新部分在( )执行
A.循环体执行之前 B.循环体执行之后 C.初始化之前 D.条件判断之前
【答案】B
【解析】for循环每次迭代后执行更新部分,然后重新判断条件。
7. 下列for循环执行次数的说法正确的是( )
for(i=1;i<=10;i++)
A.执行9次 B.执行10次 C.执行11次 D.执行无限次
【答案】B
【解析】i从1到10,共10次迭代。
8. 下列关于for循环,错误的是( )
A.for循环的三个部分都可以省略 B.省略条件部分时默认为真(无限循环)
C.for循环不能用来实现无限循环 D.初始化部分可以定义变量(C99+)
【答案】C
【解析】for(;;)就是无限循环,for循环可以实现无限循环。
9. 下列程序段的输出次数是( )
for(i=5;i>0;i--)
A.0次 B.5次 C.无限次 D.6次
【答案】B
【解析】i从5到1,共5次迭代。
10. 想要用for循环计算1+2+...+100,初始化部分应该为( )
A.int i=1,sum=0; B.int i=0,sum=1;
C.int i=100,sum=0; D.int i=1,sum=1;
【答案】A
【解析】计算1到100的和,i从1开始,sum初始为0。
11. 在for(;;)中,条件部分省略表示( )
A.条件为假 B.条件为真(无限循环) C.编译错误 D.运行错误
【答案】B
【解析】省略for循环的条件部分,默认为真,形成无限循环。
12. 下列关于for循环嵌套,正确的是( )
A.for循环不能嵌套 B.for循环可以嵌套,内层循环完整执行
C.嵌套for循环中内层循环只执行一次 D.for循环嵌套不能超过两层
【答案】B
【解析】for循环可以嵌套,外层循环每迭代一次,内层循环完整执行所有迭代。
13. 下列能正确计算n的阶乘的是( )
A.for(i=1;i<n;i++) fact*=i;
B.for(i=1;i<=n;i++) fact*=i;
C.for(i=0;i<n;i++) fact*=i;
D.for(i=1;i<n;i++) fact*=i+1;
【答案】B
【解析】n的阶乘是1×2×...×n,i从1到n。
14. 在for循环中,continue语句的作用是( )
A.终止整个循环 B.跳出当前循环,执行下次迭代 C.终止程序 D.什么也不做
【答案】B
【解析】continue跳过本次循环剩余语句,进入下次迭代。
15. 在for循环中,break语句的作用是( )
A.终止本次循环迭代 B.跳出整个for循环 C.终止程序 D.重新从初始化开始
【答案】B
【解析】break跳出整个for循环,不再执行后续迭代。
16. 下列关于for循环,正确的是( )
A.for循环只能用于计数循环 B.for循环的三个部分必须用花括号括起来
C.for循环的循环体如果是多条语句需要用花括号 D.for循环的条件部分不能省略
【答案】C
【解析】for循环的循环体如果有多条语句需要用{}括起来。
17. 下列for循环执行后i的值是( )
for(i=0;i<10;i++);
A.9 B.10 C.11 D.不确定
【答案】B
【解析】循环结束后i的值为10(i++执行后i变为10,然后判断i<10为假,退出循环)。
18. 想要用for循环输出1到10的所有整数,下列条件正确的是( )
A.i=1;i<10;i++ B.i=1;i<=10;i++ C.i=0;i<10;i++ D.i=1;i!=10;i++
【答案】B
【解析】输出1到10,i从1开始,i<=10时继续循环。
19. 在for循环中,初始化部分( )
A.只能执行一次 B.每次循环都执行 C.可以执行多次 D.在循环体之后执行
【答案】A
【解析】for循环的初始化部分只在循环开始时执行一次。
20. 下列关于for和while的区别,正确的是( )
A.for循环不能实现无限循环 B.while循环必须先执行循环体再判断条件
C.for循环更适合已知次数的循环 D.while循环不能嵌套
【答案】C
【解析】for循环格式清晰,更适合已知循环次数的场合;while适合未知次数的循环。
二、判断题(共10题,每题1分,共10分)
21. for循环的三个部分(初始化、条件、更新)都可以省略( )
【答案】√
【解析】for循环的三个部分都可以省略,但两个分号必须保留。
22. for循环的条件判断在循环体执行之前进行( )
【答案】√
【解析】for循环先判断条件,条件为真才执行循环体。
23. for(;;)是一个合法的for循环,表示无限循环( )
【答案】√
【解析】省略条件部分默认为真,for(;;)表示无限循环。
24. 在for循环中,更新部分在循环体执行之前执行( )
【答案】×
【解析】更新部分在循环体执行之后执行。
25. for循环只能用于已知循环次数的场合( )
【答案】×
【解析】for循环也可以用于未知次数的场合,但while更适合。
26. 在for循环中,break语句可以跳出整个循环( )
【答案】√
【解析】break跳出整个for循环,不再执行后续迭代。
27. 在for循环中,continue语句可以跳过本次循环的剩余语句( )
【答案】√
【解析】continue跳过本次循环剩余语句,进入下次迭代。
28. for循环不能嵌套使用( )
【答案】×
【解析】for循环可以嵌套使用,实现多重循环。
29. for循环的初始化部分在每次循环时都执行( )
【答案】×
【解析】初始化部分只在循环开始时执行一次。
30. for(i=0;i<10;i++); 循环体只有一个空语句( )
【答案】√
【解析】for后的分号;是循环体(空语句),循环执行10次空语句。
三、填空题(共10空,每空2分,共20分)
31. for循环的基本格式是:for(____;____;____) 语句。
【答案】初始化、条件、更新
【解析】for(初始化;条件;更新) 语句。
32. 在for循环中,初始化部分只在循环开始时执行____次。
【答案】一(1)
【解析】初始化部分只在循环开始时执行一次。
33. 在for循环中,条件判断在循环体执行____(填之前或之后)。
【答案】之前
【解析】for循环先判断条件,条件为真才执行循环体。
34. 在for循环中,更新部分在循环体执行____(填之前或之后)。
【答案】之后
【解析】更新部分在循环体执行之后执行。
35. for循环的三个部分都可以省略,但必须保留____个分号。
【答案】两(2)
【解析】for(;;)中两个分号不能省略。
36. 在for循环中,____语句可以跳出整个循环。
【答案】break
【解析】break跳出整个for循环。
37. 在for循环中,____语句可以跳过本次循环的剩余语句。
【答案】continue
【解析】continue跳过本次循环剩余语句,进入下次迭代。
38. for(;;)表示____循环(填有限或无限)。
【答案】无限
【解析】省略条件部分默认为真,for(;;)是无限循环。
39. for循环嵌套中,外层循环每迭代一次,内层循环____执行所有迭代。
【答案】完整(全部)
【解析】外层循环每迭代一次,内层循环完整执行所有迭代。
40. for(i=1;i<=10;i++)循环体执行____次。
【答案】10
【解析】i从1到10,共10次迭代。
四、程序综合题(共3题,每题10分,共30分)
41. 程序阅读题:阅读下列程序,写出运行结果。
#include <stdio.h>
int main()
{
int i,s=0;
for(i=1;i<=5;i++)
s=s+i;
printf("s=%d
",s);
s=0;
for(i=1;i<=10;i+=2)
s=s+i;
printf("s=%d
",s);
return 0;
}
【答案】s=15;s=25
【解析】
1.第一个循环计算 1+2+3+4+5,结果为 15,输出 s=15;
2.第二个循环计算 1+3+5+7+9,结果为 25,输出 s=25。
42.文件lucky.txt中存放一个正整数(位数≥5)。用削峰法删除2个数字,使新数只包含数字4和8(幸运数字),且尽可能大。请完善程序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define DEL 2
int is_lucky(int n);
int max_lucky(char strn[],int deln);
int main()
{
char strn[30];
int result;
FILE *fp=fopen("lucky.txt","r");
fscanf(fp,"%s",strn);
fclose(fp);
result=max_lucky(strn,DEL);
if(result>0)printf("最大幸运数:%d
",result);
else printf("不存在");
return 0;
}
int is_lucky(int n)
{
int d;
while(n>0)
{
d=n%10;
if(①)return 0;
n/=10;
}
return 1;
}
int max_lucky(char strn[],int deln)
{
int lenth=strlen(strn);
int i,k,dn,maxl=-1,num;
for(dn=1;dn<=deln;dn++)
{
i=0;
while(strn[i]>=strn[i+1]&&i<lenth-dn)
i++;
for(k=i;k<lenth-dn;k++)
②;
}
num=0;
for(k=0;k<lenth-deln;k++)
num=num*10+strn[k]-'0';
if(③&&num>maxl)maxl=num;
return maxl;
}
【答案】① d!=4 && d!=8 ② strn [k]=strn [k+1] ③ is_lucky (num)
【解析】
① 判断数字是否为 4 或 8,不是则返回 0,判定非幸运数字;
② 将后一位字符向前覆盖,实现删除指定位置数字的功能;
③ 调用函数判断数字是否为幸运数字,满足条件则更新最大值。
43.文件root.txt中存放一个正整数(位数≥6)。用削峰法删除3个数字,使新数的数字根(各位数字反复求和至个位)等于指定值。请完善程序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define DEL 3
int digital_root(int n);
int find_by_root(char strn[],int deln,int target);
int main()
{
char strn[50];
int target,result;
FILE *fp=fopen("root.txt","r");
fscanf(fp,"%s",strn);
fclose(fp);
scanf("%d",&target);
result=find_by_root(strn,DEL,target);
if(result>0)printf("符合条件的数:%d
",result);
else printf("不存在");
return 0;
}
int digital_root(int n)
{
while(n>=10)
{
int sum=0;
while(n>0)
{
①;
n/=10;
}
n=sum;
}
return n;
}
int find_by_root(char strn[],int deln,int target)
{
int lenth=strlen(strn);
int i,k,dn,num,sum;
for(dn=1;dn<=deln;dn++)
{
i=0;
while(strn[i]<=strn[i+1]&&i<lenth-dn)
i++;
for(k=i;k<lenth-dn;k++)
②;
}
num=0;sum=0;
for(k=0;k<lenth-deln;k++)
{
num=num*10+strn[k]-'0';
sum+=strn[k]-'0';
}
if(③)return num;
return -1;
}
【答案】① sum+=n%10 ② strn [k]=strn [k+1] ③ digital_root (num)==target
【解析】
① 累加数字的每一位,计算各位数字之和;
② 将后一位字符向前覆盖,实现删除指定位置数字的功能;
③ 判断数字根是否等于目标值,满足条件则返回该数。
学科网(北京)股份有限公司
$
编写说明:江苏省对口招生计算机类《考纲百套卷》,依据《江苏省计算机类专业综合理论考试大纲》编写。本专辑涵盖5门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。
本试卷是第21卷为专业核心模块训练卷,按《C语言》中"C语言卷8——for循环结构"范围和要求编写。具体内容为:掌握for循环结构。
江苏省对口招生职业技能考试
C语言 试卷
(C语言卷8——for循环结构)
考试时间:90分钟 满分:100分
一、单项选择题(共20题,每题2分,共40分)
1. for循环的基本格式是( )
A.for 条件 语句 B.for(初始化;条件;更新) 语句
C.for(条件) 语句 D.for 初始化,条件,更新 语句
2. 下列关于for循环,正确的是( )
A.for循环必须先执行初始化
B.for循环的条件判断在循环体执行之后
C.for循环可以用于已知循环次数的场合
D.for循环不能嵌套使用
3. for(i=0;i<10;i++)循环体将执行( )
A.9次 B.10次 C.11次 D.无限次
4. 在for循环中,初始化部分( )
A.必须存在且只能是一条语句 B.可以省略不写
C.必须放在循环体内部 D.每次循环都执行
5. 在for循环中,条件判断在( )
A.循环体执行之后 B.循环体执行之前 C.只在第一次迭代前 D.程序结束时
6. 在for循环中,更新部分在( )执行
A.循环体执行之前 B.循环体执行之后 C.初始化之前 D.条件判断之前
7. 下列for循环执行次数的说法正确的是( )
for(i=1;i<=10;i++)
A.执行9次 B.执行10次 C.执行11次 D.执行无限次
8. 下列关于for循环,错误的是( )
A.for循环的三个部分都可以省略 B.省略条件部分时默认为真(无限循环)
C.for循环不能用来实现无限循环 D.初始化部分可以定义变量(C99+)
9. 下列程序段的输出次数是( )
for(i=5;i>0;i--)
A.0次 B.5次 C.无限次 D.6次
10. 想要用for循环计算1+2+...+100,初始化部分应该为( )
A.int i=1,sum=0; B.int i=0,sum=1;
C.int i=100,sum=0; D.int i=1,sum=1;
11. 在for(;;)中,条件部分省略表示( )
A.条件为假 B.条件为真(无限循环) C.编译错误 D.运行错误
12. 下列关于for循环嵌套,正确的是( )
A.for循环不能嵌套
B.for循环可以嵌套,内层循环完整执行
C.嵌套for循环中内层循环只执行一次
D.for循环嵌套不能超过两层
13. 下列能正确计算n的阶乘的是( )
A.for(i=1;i<n;i++) fact*=i;
B.for(i=1;i<=n;i++) fact*=i;
C.for(i=0;i<n;i++) fact*=i;
D.for(i=1;i<n;i++) fact*=i+1;
14. 在for循环中,continue语句的作用是( )
A.终止整个循环 B.跳出当前循环,执行下次迭代 C.终止程序 D.什么也不做
15. 在for循环中,break语句的作用是( )
A.终止本次循环迭代 B.跳出整个for循环 C.终止程序 D.重新从初始化开始
16. 下列关于for循环,正确的是( )
A.for循环只能用于计数循环
B.for循环的三个部分必须用花括号括起来
C.for循环的循环体如果是多条语句需要用花括号
D.for循环的条件部分不能省略
17. 下列for循环执行后i的值是( )
for(i=0;i<10;i++);
A.9 B.10 C.11 D.不确定
18. 想要用for循环输出1到10的所有整数,下列条件正确的是( )
A.i=1;i<10;i++ B.i=1;i<=10;i++ C.i=0;i<10;i++ D.i=1;i!=10;i++
19. 在for循环中,初始化部分( )
A.只能执行一次 B.每次循环都执行 C.可以执行多次 D.在循环体之后执行
20. 下列关于for和while的区别,正确的是( )
A.for循环不能实现无限循环 B.while循环必须先执行循环体再判断条件
C.for循环更适合已知次数的循环 D.while循环不能嵌套
二、判断题(共10题,每题1分,共10分)
21. for循环的三个部分(初始化、条件、更新)都可以省略( )
22. for循环的条件判断在循环体执行之前进行( )
23. for(;;)是一个合法的for循环,表示无限循环( )
24. 在for循环中,更新部分在循环体执行之前执行( )
25. for循环只能用于已知循环次数的场合( )
26. 在for循环中,break语句可以跳出整个循环( )
27. 在for循环中,continue语句可以跳过本次循环的剩余语句( )
28. for循环不能嵌套使用( )
29. for循环的初始化部分在每次循环时都执行( )
30. for(i=0;i<10;i++); 循环体只有一个空语句( )
三、填空题(共10空,每空2分,共20分)
31. for循环的基本格式是:for(____;____;____) 语句。
32. 在for循环中,初始化部分只在循环开始时执行____次。
33. 在for循环中,条件判断在循环体执行____(填之前或之后)。
34. 在for循环中,更新部分在循环体执行____(填之前或之后)。
35. for循环的三个部分都可以省略,但必须保留____个分号。
36. 在for循环中,____语句可以跳出整个循环。
37. 在for循环中,____语句可以跳过本次循环的剩余语句。
38. for(;;)表示____循环(填有限或无限)。
39. for循环嵌套中,外层循环每迭代一次,内层循环____执行所有迭代。
40. for(i=1;i<=10;i++)循环体执行____次。
四、程序综合题(共3题,每题10分,共30分)
41. 程序阅读题:阅读下列程序,写出运行结果。
#include <stdio.h>
int main()
{
int i,s=0;
for(i=1;i<=5;i++)
s=s+i;
printf("s=%d
",s);
s=0;
for(i=1;i<=10;i+=2)
s=s+i;
printf("s=%d
",s);
return 0;
}
42.文件lucky.txt中存放一个正整数(位数≥5)。用削峰法删除2个数字,使新数只包含数字4和8(幸运数字),且尽可能大。请完善程序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define DEL 2
int is_lucky(int n);
int max_lucky(char strn[],int deln);
int main()
{
char strn[30];
int result;
FILE *fp=fopen("lucky.txt","r");
fscanf(fp,"%s",strn);
fclose(fp);
result=max_lucky(strn,DEL);
if(result>0)printf("最大幸运数:%d
",result);
else printf("不存在");
return 0;
}
int is_lucky(int n)
{
int d;
while(n>0)
{
d=n%10;
if(①)return 0;
n/=10;
}
return 1;
}
int max_lucky(char strn[],int deln)
{
int lenth=strlen(strn);
int i,k,dn,maxl=-1,num;
for(dn=1;dn<=deln;dn++)
{
i=0;
while(strn[i]>=strn[i+1]&&i<lenth-dn)
i++;
for(k=i;k<lenth-dn;k++)
②;
}
num=0;
for(k=0;k<lenth-deln;k++)
num=num*10+strn[k]-'0';
if(③&&num>maxl)maxl=num;
return maxl;
}
43.文件root.txt中存放一个正整数(位数≥6)。用削峰法删除3个数字,使新数的数字根(各位数字反复求和至个位)等于指定值。请完善程序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define DEL 3
int digital_root(int n);
int find_by_root(char strn[],int deln,int target);
int main()
{
char strn[50];
int target,result;
FILE *fp=fopen("root.txt","r");
fscanf(fp,"%s",strn);
fclose(fp);
scanf("%d",&target);
result=find_by_root(strn,DEL,target);
if(result>0)printf("符合条件的数:%d
",result);
else printf("不存在");
return 0;
}
int digital_root(int n)
{
while(n>=10)
{
int sum=0;
while(n>0)
{
①;
n/=10;
}
n=sum;
}
return n;
}
int find_by_root(char strn[],int deln,int target)
{
int lenth=strlen(strn);
int i,k,dn,num,sum;
for(dn=1;dn<=deln;dn++)
{
i=0;
while(strn[i]<=strn[i+1]&&i<lenth-dn)
i++;
for(k=i;k<lenth-dn;k++)
②;
}
num=0;sum=0;
for(k=0;k<lenth-deln;k++)
{
num=num*10+strn[k]-'0';
sum+=strn[k]-'0';
}
if(③)return num;
return -1;
}
学科网(北京)股份有限公司
$