第21卷 字符数组的定义和使用 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计知识考点双析卷》

2025-10-29
| 2份
| 24页
| 75人阅读
| 1人下载

内容正文:

编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。 本专辑第21卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】: (十一)字符数组的定义和使用 湖南省普通高等学校对口招生考试 计算机应用类 《C语言程序设计》考点双析卷 第21卷 字符数组的定义和使用 老师讲解卷 时间:45分钟 总分:100分 班级_______ 姓名_______ 学号_______ 成绩_______ 一、单项选择题(本大题共20小题,每题3分,共60分) 1.设有以下变量定义:char str[20],i;当输入“zhang空格hong回车”时,能输入“zhang hong”的程序段是(   ) A.scanf(“%s”,str); B.for(i=0,str[i]=getchar();str[i]!=' ';) str[i++]=getchar(); C.gets(str); D.for(i=0,str[i]=getchar();str[i]!='\0';i++) str[i]=scanf("%c",str[i]); 2.对于以下定义正确的叙述为(   ) char x[]="abcdefg"; char y[]={'a','b','c','d','e','f','g'}; A.数组x和数组y等价 B.数组x和数组y的长度相同 C.数组x的长度大于数组y的长度 D.数组x的长度小于数组y的长度 3.串采用节点大小为1的链表作为其存储结构,是指(     ) A.链表的长度为1 B.链表中只存放一个字符 C.链表中每个节点的数据域中只存放一个字符 D.以上都不对 4.char string[ ]= "this is a string!";该变量的存储形式是(   ) A.this is a string! B.\0 C.this is a string! \0 D.string 5.有如下程序 main(   ) { char ch[2][5]={"6937","8254"}; int i,j;long s=0; for(i=0;i<2;i++) for(j=0;ch[i][j]>'\0';j++) s=10*s+ch[i][j]-'0'; printf("%ld ",s); } 该程序的输出结果是_____。(   ) A.69825 B.693825 C.6385 D.69378254 6.下面关于串的叙述中,正确的是(   ) A.串是一种特殊的线性表 B.串中元素只能是字母 C.空串就是空白串 D.串的长度必须大于零 7.以下给字符数组str定义和赋值正确的是(   ) A.char str[10]; str={"China!"}; B.char str[ ]={"China!"}; C.char str[10]; strcpy( str,"abcdefghijkl"); D.char str[10]={"abcdefghijkl"}; 8.当接受用户输入的含有空格的字符串时,应使用 函数。(     ) A.gets( ) B.getchar( ) C.scanf( ) D.printf( ) 9.有如下程序 main() { char ch[80]="123abcdEFG*&"; int j;long s=0; puts(ch); for(j=0;ch[j]>'\0';j++) if(ch[j]>='a'&&ch[j]<='z') ch[j]=ch[j]-'b'+'B'; puts(ch); } 该程序的功能是(     ) A.测字符数组ch的长度 B.将数字字符串ch转换成十进制数 C.将字符数组ch中的小写字母转换成大写 D.将字符数组ch中的大写字母转换成小写 10.设有数组定义:char array[]="China";则strlen(array)的值为(     ) A.4 B.5 C.6 D.7 11.两个字符串相等的条件是(   ) A.串的长度相等 B.含有相同的字符集 C.都是非空串 D.两个串的长度相等且对应位置的字符相同 12.有如下程序 main() { char a[10]={'1','2','3',0,'5','6','7','8','9','\0'}; printf("%s ",a); } 该程序的输出结果是(    ) A.123 B.1230 C.123056789 D.1230567890 13.设有数组定义:char array[10]= "China";则数组array所占的存储空间为(     ) A.4个字节 B.5个字节 C.6个字节 D.7个字节 14.执行以下程序段的输出结果是(   )     char s[ ]={"012xy"};     int i,n=0;     for(i=0;s[i]!='\0';i++)     if(s[i]>='a'&&s[i]<='z')n++;     printf("%d",n); A.0 B.2 C.3 D.5 15.执行以下程序段的输出结果是(   ) char arr[2][4]; strcpy(arr[0],"you"); strcpy(arr[1],"me"); arr[0][3]='&'; printf("%s ",arr); A.you&me B.you C.me D.err 16.执行以下程序段的输出结果是(   ) int i;char a[ ]="How are you!"; for(i=0;a[i];i++) {if(a[i]==' ') {strcpy(a,&a[i+1]);i=0;}} printf("%s",a); A.you! B.Howareyou! C.areyou! D.are you! 17.执行以下程序段的输出结果是(   ) char s[ ]="Beijing"; printf("%d ",strlen(strcpy(s,"China"))); A.5 B.7 C.12 D.14 18.执行以下程序段的输出结果是(   ) char a[10]="abc",b[10]="012",c[10]="xyz"; strcpy(a+1,b+2); puts(strcat(a,c+1)); A.a12xyz B.12yz C.a2yz D.bc2yz 19.执行以下程序段的输出结果是(   ) char x[ ]="STRING"; x[0]=0;x[1]='\0';x[2]='0'; printf("%d %d ",sizeof(x),strlen(x)); A.6 1 B.7 0 C.6 3 D.7 1 20.若有char str[5] = "hello";,则问题在于(    ) A.长度不足 B.类型错误 C.语法正确 D.未初始化 二、程序设计题(本大题共4小题,每题10分,共40分) 21.将字符串sour中连续的数字字符和其前面的符号转换为若干个十进制整数(可正,可负),再计算这些整数的和。    #include<stdio.h>    #include<ctype.h>    void apart(sour) {         int i,sum,sign=1,s;         i=sum=0;         while(a[i])         {        /*******space*******/        /*******space*******/         }          printf("%d ",sum); } int main() {          char sour[100]={"kn--.23,q,-37.&#%%-18'w94jAF5aS"};          apart(sour);          return 0; } 22.编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。所谓回文是指顺读和倒读都一样的字符串。如"XZYKYZX"是回文。 #include<stdio.h> #include<string.h> void main() {          char s[50];          int hw(char *s);          gets(s);          if(hw(s))               printf("是回文! ");          else               printf("不是回文! "); } int hw(char *s) {        int flag=1;          char *p,*q; /*******space*******/ /*******space*******/ } 23.函数fun的功能是:删除s所指字符串中所有的小写字母c。 #include<stdio.h> void fun(char *s) {      int i,j;      /*******space*******/      /*******space*******/      s[j]='\0' } void main(){      char s[80];      printf("【Enter a string:】");      gets(s);      fun(s);      printf("【The string after deleted : 】 ");      puts(s); } 24.题目:函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。例如,若给a输入字符串: ABCDEFGHIJK,调用函数后,字符数组b中的内容为: ABC DEF GHI JK。    #include <stdio.h>    void fun(char *a, char *p)    {         int   i, k=0;         while(*p)         {                 i=1;                 while( i<=3 && *p ) /*******space*******/                 /*******space*******/         }         b[k]='\0'; } void main() {   char  a[80],b[80];           printf("【Enter a string:】");             gets(a);           fun(a,b);           printf("【The string after insert space:】");             puts(b); } 试卷第6页,共6页 试卷第5页,共6页 学科网(北京)股份有限公司 $ 编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。 本专辑第21卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】: (十一)字符数组的定义和使用 湖南省普通高等学校对口招生考试 计算机应用类 《C语言程序设计》考点双析卷 第21卷 字符数组的定义和使用 老师讲解卷 时间:45分钟 总分:100分 班级_______ 姓名_______ 学号_______ 成绩_______ 一、单项选择题(本大题共20小题,每题3分,共60分) 1.设有以下变量定义:char str[20],i;当输入“zhang空格hong回车”时,能输入“zhang hong”的程序段是(   ) A.scanf(“%s”,str); B.for(i=0,str[i]=getchar();str[i]!=' ';) str[i++]=getchar(); C.gets(str); D.for(i=0,str[i]=getchar();str[i]!='\0';i++) str[i]=scanf("%c",str[i]); 【答案】C 2.对于以下定义正确的叙述为(   ) char x[]="abcdefg"; char y[]={'a','b','c','d','e','f','g'}; A.数组x和数组y等价 B.数组x和数组y的长度相同 C.数组x的长度大于数组y的长度 D.数组x的长度小于数组y的长度 【答案】C 3.串采用节点大小为1的链表作为其存储结构,是指(     ) A.链表的长度为1 B.链表中只存放一个字符 C.链表中每个节点的数据域中只存放一个字符 D.以上都不对 【答案】C 4.char string[ ]= "this is a string!";该变量的存储形式是(   ) A.this is a string! B.\0 C.this is a string! \0 D.string 【答案】C 5.有如下程序 main(   ) { char ch[2][5]={"6937","8254"}; int i,j;long s=0; for(i=0;i<2;i++) for(j=0;ch[i][j]>'\0';j++) s=10*s+ch[i][j]-'0'; printf("%ld ",s); } 该程序的输出结果是_____。(   ) A.69825 B.693825 C.6385 D.69378254 【答案】D 【详解】该程序使用双重循环遍历字符数组 ch,将其中的字符按照十进制转换计算出整数 s。 在外层循环中,i 从 0 到 1 遍历表示数组的行数,即第一行和第二行。 在内层循环中,j 遍历当前行的字符,条件是 ch[i][j] 大于字符串的结尾标识符 ‘\0’。 循环体内的操作是将字符转换成数字,并将其累加到结果 s 中。 具体而言,根据 ASCII 码表,字符 ‘0’ 对应的 ASCII 值为 48,所以通过 ch[i][j] - ‘0’ 将字符转换成相应的数字。 通过累加操作 s = 10 * s + (ch[i][j] - ‘0’),将每个字符转换成数字并左移一位。 最后,使用 printf() 函数将结果 s 输出。 6.下面关于串的叙述中,正确的是(   ) A.串是一种特殊的线性表 B.串中元素只能是字母 C.空串就是空白串 D.串的长度必须大于零 【答案】A 7.以下给字符数组str定义和赋值正确的是(   ) A.char str[10]; str={"China!"}; B.char str[ ]={"China!"}; C.char str[10]; strcpy( str,"abcdefghijkl"); D.char str[10]={"abcdefghijkl"}; 【答案】B 8.当接受用户输入的含有空格的字符串时,应使用 函数。(     ) A.gets( ) B.getchar( ) C.scanf( ) D.printf( ) 【答案】A 9.有如下程序 main() { char ch[80]="123abcdEFG*&"; int j;long s=0; puts(ch); for(j=0;ch[j]>'\0';j++) if(ch[j]>='a'&&ch[j]<='z') ch[j]=ch[j]-'b'+'B'; puts(ch); } 该程序的功能是(     ) A.测字符数组ch的长度 B.将数字字符串ch转换成十进制数 C.将字符数组ch中的小写字母转换成大写 D.将字符数组ch中的大写字母转换成小写 【答案】C 10.设有数组定义:char array[]="China";则strlen(array)的值为(     ) A.4 B.5 C.6 D.7 【答案】B 11.两个字符串相等的条件是(   ) A.串的长度相等 B.含有相同的字符集 C.都是非空串 D.两个串的长度相等且对应位置的字符相同 【答案】D 12.有如下程序 main() { char a[10]={'1','2','3',0,'5','6','7','8','9','\0'}; printf("%s ",a); } 该程序的输出结果是(    ) A.123 B.1230 C.123056789 D.1230567890 【答案】C 13.设有数组定义:char array[10]= "China";则数组array所占的存储空间为(     ) A.4个字节 B.5个字节 C.6个字节 D.7个字节 【答案】C 14.执行以下程序段的输出结果是(   )     char s[ ]={"012xy"};     int i,n=0;     for(i=0;s[i]!='\0';i++)     if(s[i]>='a'&&s[i]<='z')n++;     printf("%d",n); A.0 B.2 C.3 D.5 【答案】B 【详解】s[0] = '0':不是小写字母,n 仍为 0。 s[1] = '1':不是小写字母,n 仍为 0。 s[2] = '2':不是小写字母,n 仍为 0。 s[3] = 'x':是小写字母,n 变为 1。 s[4] = 'y':是小写字母,n 变为 2。 s[5] = '\0':循环终止。 15.执行以下程序段的输出结果是(   ) char arr[2][4]; strcpy(arr[0],"you"); strcpy(arr[1],"me"); arr[0][3]='&'; printf("%s ",arr); A.you&me B.you C.me D.err 【答案】A 16.执行以下程序段的输出结果是(   ) int i;char a[ ]="How are you!"; for(i=0;a[i];i++) {if(a[i]==' ') {strcpy(a,&a[i+1]);i=0;}} printf("%s",a); A.you! B.Howareyou! C.areyou! D.are you! 【答案】A 17.执行以下程序段的输出结果是(   ) char s[ ]="Beijing"; printf("%d ",strlen(strcpy(s,"China"))); A.5 B.7 C.12 D.14 【答案】A 18.执行以下程序段的输出结果是(   ) char a[10]="abc",b[10]="012",c[10]="xyz"; strcpy(a+1,b+2); puts(strcat(a,c+1)); A.a12xyz B.12yz C.a2yz D.bc2yz 【答案】C 19.执行以下程序段的输出结果是(   ) char x[ ]="STRING"; x[0]=0;x[1]='\0';x[2]='0'; printf("%d %d ",sizeof(x),strlen(x)); A.6 1 B.7 0 C.6 3 D.7 1 【答案】B 20.若有char str[5] = "hello";,则问题在于(    ) A.长度不足 B.类型错误 C.语法正确 D.未初始化 【答案】A 二、程序设计题(本大题共4小题,每题10分,共40分) 21.将字符串sour中连续的数字字符和其前面的符号转换为若干个十进制整数(可正,可负),再计算这些整数的和。    #include<stdio.h>    #include<ctype.h>    void apart(sour) {         int i,sum,sign=1,s;         i=sum=0;         while(a[i])         {        /*******space*******/        /*******space*******/         }          printf("%d ",sum); } int main() {          char sour[100]={"kn--.23,q,-37.&#%%-18'w94jAF5aS"};          apart(sour);          return 0; } 【答案】               while(!isdigit(a[i]) && a[i])                {                      sign=a[i]=='-'?-1:1;                      i++;                }                s=0;                while(isdigit(a[i]))                      s=s*10+a[i++]-'0';                s=s*sign;                if(s!=0) sum+=s; 【详解】从数组里读值,当未读取到结束字符且为非数字字符时,判断当前的字符时候是否是-,若是-则sign=-1,否则sign=1。再循环读取所有的数字字符凑成整数,先取出来的数字字符所占据的权值更高,所以考察反序。 22.编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。所谓回文是指顺读和倒读都一样的字符串。如"XZYKYZX"是回文。 #include<stdio.h> #include<string.h> void main() {          char s[50];          int hw(char *s);          gets(s);          if(hw(s))               printf("是回文! ");          else               printf("不是回文! "); } int hw(char *s) {        int flag=1;          char *p,*q; /*******space*******/ /*******space*******/ } 【答案】p=s,q=s+strlen(s)-1           while(*p==*q && p<q)           {                p++;                q--;           }           if(p>=q) flag=1;           else flag=0; return flag; 【详解】判断字符串是否是回文有多种方法,方法之一是利用一个指针指向开头,另一个指针指向结尾,循环判断两个指针所对应的值是否相等,一旦相等,则前面的指针向后走,后面的指针向前走,当两个指针相遇或者前指针走到后指针后面时,则该字符串是回文串。 23.函数fun的功能是:删除s所指字符串中所有的小写字母c。 #include<stdio.h> void fun(char *s) {      int i,j;      /*******space*******/      /*******space*******/      s[j]='\0' } void main(){      char s[80];      printf("【Enter a string:】");      gets(s);      fun(s);      printf("【The string after deleted : 】 ");      puts(s); } 【答案】for(i=0,j=0;s[i]!=='\0';i++)      {          if(s[i]!=='c'){              s[j++]=s[i];                 } } 【详解】读取s字符串里的所有字符,将所有不等于字符c的挑出重新存入原字符串即可,注意存完之后一定要重新封0。 24.题目:函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。例如,若给a输入字符串: ABCDEFGHIJK,调用函数后,字符数组b中的内容为: ABC DEF GHI JK。    #include <stdio.h>    void fun(char *a, char *p)    {         int   i, k=0;         while(*p)         {                 i=1;                 while( i<=3 && *p ) /*******space*******/                 /*******space*******/         }         b[k]='\0'; } void main() {   char  a[80],b[80];           printf("【Enter a string:】");             gets(a);           fun(a,b);           printf("【The string after insert space:】");             puts(b); } 【答案】{ b[k]=*p;                       k++; p++; i++;                 }                   if(*p)                 {                      b[k]=' '; k++; } 试卷第6页,共6页 试卷第5页,共6页 学科网(北京)股份有限公司 $

资源预览图

第21卷 字符数组的定义和使用 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计知识考点双析卷》
1
第21卷 字符数组的定义和使用 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计知识考点双析卷》
2
第21卷 字符数组的定义和使用 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计知识考点双析卷》
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。