内容正文:
编写说明:湖南省普通高校对口招生专业理论考试《计算机应用类专业综合考纲百套卷》,依据《湖南省普通高校对口招生计算机应用类专业综合知识基本要求及考试大纲》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第78卷,按《计算机编程语言——C语言》范围和要求编写。具体内容为:①字符数组的定义及元素的引用;②字符数组的初始化;③字符数组的输入/输出;④字符串处理函数。
湖南省《计算机应用类专业综合考纲百套卷》 第78卷
《计算机编程语言——C语言》
字符数组的定义和使用
考点训练卷
考试时间60分钟 满分100分
班级________姓名________学号________成绩________
一、单项选择题(本大题共15小题,每题2分,共30分)
1.(2021年)若“char a[ 8 ]=“1234”;int x =strlen (a); y = sizeof (a);”,则x 和 y 的值分别是( )
A. 4, 4 B. 5. 4 C. 4, 5 D.4, 8
【答案】D
【解析】strlen统计\0之前有效字符数为 4,sizeof计算数组总字节数为 8。
2.(2018年)若“char a[6]="abcde";”,执行“printf("%d",strlen(a));”后,输出结果是( )
A.5 B.6 C.7 D.8
【答案】A
【解析】字符串含 5 个有效字符,strlen不计结束符\0,结果为 5。
3.设有定义 char str[6] = {"abcd"};int i;,下列代码段执行后输出结果是( )
for(i = 0; i < 6; i++)
printf("%c", str[i]);
A. abcd B. abcd\0 C. abcd\0\0 D. 乱码
【答案】C
【解析】字符数组部分初始化,未赋值元素自动填充\0,数组共 6 个元素,依次为a、b、c、d、\0、\0。注意,在输出显示时,\0仅占一个空字符位置。
4.已知 char a[10] = "hello";,执行语句 a[2] = '\0'; 后,printf("%s",a); 的输出为( )
A. he B. hello C. he\0llo D. 无输出
【答案】A
【解析】%s遇到\0立即停止输出,字符串从下标 2 处提前截断。
5.关于strlen()和sizeof(),定义char arr[8] = "test";,下列说法正确的是( )
A. strlen(arr)=4,sizeof(arr)=4
B. strlen(arr)=4,sizeof(arr)=8
C. strlen(arr)=5,sizeof(arr)=8
D. strlen(arr)=8,sizeof(arr)=8
【答案】B
【解析】strlen 统计\0前有效字符(4 个);sizeof 计算数组整体内存大小(8 字节)。
6.执行代码:char a[20] = "2026", b[] = "0613"; strcat(a,b);,则printf("%s",a);输出为( )
A. 2026 B. 0613 C. 20260613 D. 2026 0613
【答案】C
【解析】strcat 将源字符串追加到目标末尾,拼接后整体为20260613。
7.已知 char str[15] = "Program";,循环语句 int i=0; while(str[i]!='\0') i++; 执行结束后,变量i的值是( )
A. 6 B. 7 C. 8 D. 15
【答案】B
【解析】字符串共 7 个有效字符,下标 0~6,str[7]为\0,循环终止时i=7。
8.下列关于strcmp(s1,s2)函数的运算规则,说法错误的是( )
A. 逐字符按照 ASCII 码值比较
B. 两字符串完全相等,返回值为 0
C. 若s1前半部分与s2相同,s1更长,则s1大于s2
D. 只能比较英文字符,无法比较数字字符
【答案】D
【解析】strcmp 可比较任意字符(数字、字母、符号),依据 ASCII 码判定大小。
9.strcmp("apple","app") 的返回值为( )
A. 负数 B. 0 C. 正数 D. 随机值
【答案】C
【解析】前 3 个字符一致,短字符串末尾为\0,l的 ASCII 大于\0,故前者更大,返回正数。
10.执行以下程序代码段,程序的输出结果是( )
char s[] = "a1b2c3";
int cnt = 0,i;
for(i=0; s[i]!='\0'; i++)
{ if(s[i] >= '0' && s[i] <= '9')
cnt++; }
printf("%d",cnt);
A. 2 B. 3 C. 4 D. 6
【答案】B
【解析】遍历字符串,统计数字字符,1、2、3共 3 个数字。
11.若 char a[] = "12345", b[3] = "67";,执行strcpy(a,b);后,strlen(a)的值为( )
A. 2 B. 3 C. 5 D. 7
【答案】A
【解析】strcpy 覆盖原字符串,b 存储6、7、\0,复制后 a 有效字符为 2 个。
12.执行以下程序代码段,程序的输出结果是( )
char s1[] = "book", s2[] = "boot";
if(strcmp(s1,s2) > 0)
printf("大于");
else if(strcmp(s1,s2) < 0)
printf("小于");
else
printf("相等");
A. 大于 B. 小于 C. 相等 D. 无输出
【答案】B
【解析】前三个字符一致,第四个kASCII 小于t,s1<s2,输出 “小于”。
13.执行以下程序代码段,程序的输出结果是( )
char str[8];
int i;
for(i = 0; i < 8; i++)
str[i] = 'A';
str[5] = '\0';
printf("%s", str);
A. AAAAA B. AAAAAAAA C. AAAA\0AA D. 乱码
【答案】A
【解析】下标 5 赋值\0,%s遇到结束符停止,输出前 5 个字符。
14.执行以下程序段后,变量count的值为( )
char s[] = "a0b1c2d3";
int i, count = 0;
i = 0;
while(s[i] != '\0')
{ if(s[i] >= '0' && s[i] <= '9')
count = count + 1;
i = i + 1; }
printf("%d", count);
A. 3 B. 4 C. 5 D. 8
【答案】B
【解析】字符串中数字为0、1、2、3,共 4 个。
15.执行以下程序段后,变量num的值为( )
char word[] = "2026-06-13";
int i=0, num = 0;
while(word[i] != '\0')
{ if(word[i] == '-')
num++;
i++; }
printf("%d", num);
A. 1 B. 2 C. 3 D. 4
【答案】B
【解析】字符串内含 2 个-符号,计数结果为 2。
二、阅读程序,写出运行结果(本大题共10小题。每空2分,合计20分)
1.(2025年)下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h> /*strcpy()为字符串复制函数,strcat()为字符串连接函数*/
int main(){
char s[10]="abc";
char t[10]="123";
char p[10]="xyz";
strcpy(s+1,t+1);
printf("string=%s",(strcat(s,p+1)));
return 0;
}
【答案】string=a23yz
2.(2022年)下列程序的运行结果是__________________。
#include "stdio.h"
#include<string.h>
int main(void)
{char a[]="ABCD",b[]="BAD";
int i,j;
for(i=0;i<strlen(b);++i)
{
for(j=0;(j<strlen(a)) && (a[j]!=b[i]);++j)
if(j>=strlen(a))
{
printf("No");
return 0;
}}
printf("Yes");
return 0;
}
【答案】Yes
3.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[20] = "strive";
char t[20] = "123456";
char k[20] = "xyz";
char temp[20];
strcpy(s+2, t+3);
strcat(s, k+2);
strcpy(temp, s+1);
strcpy(s+4, temp);
printf("%s", s);
return 0;
}
【答案】st45t456z
4.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char s1[15] = "78901";
char s2[15] = "abcde";
int i, len;
len = strlen(s1);
for(i = 0; i < len / 2; i++)
{ s1[i] = s2[len - 1 - i]; }
printf("%s", s1);
return 0; }
【答案】ed901
5.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char c[14] = "a1b2c3d4";
int i, sum;
sum = 0;
for(i = 0; c[i] != '\0'; i++)
{ if(c[i] >= '0' && c[i] <= '9')
{ sum = sum + (c[i] - '0');
if(sum > 5)
c[i] = '#'; }
}
printf("%s", c);
return 0; }
【答案】a1b2c#d#
6.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char a[] = "UVWXYZ";
char b[] = "WVAZ";
int i, j, count;
count = 0;
for(i = 0; i < strlen(b); i++)
{ j = 0;
while(j < strlen(a) && a[j] != b[i])
j++;
if(j < strlen(a))
count = count + j; }
printf("%d", count);
return 0; }
【答案】8
7.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char x[25] = "sun";
char y[25] = "moon";
char z[25] = "star";
int len_x, len_z;
len_x = strlen(x);
len_z = strlen(z);
strcpy(x + len_x - 1, y + 1);
strcat(y, z + len_z / 2);
printf("%s|%s", x, y);
return 0; }
【答案】suoon|moonar
8.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char a[] = "STUVWXY";
char b[] = "XTVSY";
int i, j, total;
int len_a, len_b;
len_a = strlen(a);
len_b = strlen(b);
total = 0;
for(i = 0; i < len_b; i++)
{ j = 0;
while(j < len_a && a[j] != b[i]) j++;
if(j < len_a)
{ if(j % 2 == 1)
total += j;
else
total -= j; }
}
printf("%d", total);
return 0; }
【答案】3
9.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char str[40] = "7182930456";
int i, sum, flag;
int len;
len = strlen(str);
sum = 0;
flag = 1;
for(i = 0; i < len; i++)
{ if(flag == 1)
sum += str[i] - '0';
else
sum -= str[i] - '0';
flag = -flag; }
printf("%d", sum);
return 0; }
【答案】13
10.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char m[] = "PQRSTUV";
char n[] = "VPRXQT";
int i, j, res;
int len_m, len_n;
len_m = strlen(m);
len_n = strlen(n);
res = 0;
for(i = 0; i < len_n; i++)
{ j = 0;
while(j < len_m && m[j] != n[i])
j++;
if(j < len_m)
{ if(i % 2 == 0)
res += j;
else
res -= j; }
}
printf("%d", res);
return 0; }
【答案】5
三、程序填空。按照题目要求,将正确内容填入答题卡相应位置,使程序完整(每空2分,共计30分)
1.下列程序的功能是:输入一串英文字符串,将原字符串就地逆序并输出。
#include <stdio.h>
#include <string.h>
int main(void)
{ char str[100];
int len, i, j;
char temp;
gets(str);
len = strlen(str);
i = 0;
j = _______①______;
while(i < j)
{ temp = str[i];
str[i] = str[j];
________②________;
i++;
_________③_______ }
printf("逆序结果:%s
", str);
return 0; }
【答案】①len - 1 ②str[j] = temp ③j--;
2.下列程序的功能是:输入一个字符串,判断该字符串是否为回文(正读、反读完全一致),输出 Yes 或 No。
#include <stdio.h>
#include <string.h>
int main(void)
{ char str[100];
int len, i, flag;
gets(str);
len = strlen(str);
flag = 1;
for(i = 0; i < _______①______; i++)
{ if(_________②_________)
{ flag = 0;
_________③_________ }
}
if(flag == 1) printf("Yes
");
else printf("No
");
return 0; }
【答案】①len / 2 ②str[i] != str[len - 1 - i] ③break;
3.下列程序的功能是:输入字符串,删除其中重复字符,每个字符只保留第一次出现的位置,输出去重后的字符串。
#include <stdio.h>
#include <string.h>
int main(void)
{ char str[100], res[100];
int len, i, j, k, exist;
gets(str);
len = strlen(str);
k = 0;
for(i = 0; i < len; i++)
{ exist = 0;
for(j = 0; j < k; j++)
{ if(___________①_________)
{ exist = 1;
break; }
}
if(exist == 0)
{ _________②________;
k++; }
}
_________③_________
printf("去重结果:%s
", res);
return 0; }
【答案】①str[i] == res[j] ②res[k] = str[i] ③ res[k] = '\0';
4.简易凯撒加密:所有小写字母向后偏移 3 位(a→d,b→e ... x→a,y→b,z→c),大写字母同理,其他字符不变,输出加密后字符串。
#include <stdio.h>
#include <string.h>
int main(void)
{ char str[100];
int len, i;
gets(str);
len = ________①________;
for(i = 0; i < len; i++)
{ if(str[i] >= 'a' && str[i] <= 'z')
{
str[i] = _________②_______;
}
else if(str[i] >= 'A' && str[i] <= 'Z')
{
str[i] = __________③________;
}
}
printf("加密结果:%s
", str);
return 0; }
【答案】①strlen(str) ②(str[i] - 'a' + 3) % 26 + 'a'
③(str[i] - 'A' + 3) % 26 + 'A'
5.下列程序的功能是:输入主字符串和子字符串,统计子串在主串中重叠出现的总次数。
#include <stdio.h>
#include <string.h>
int main(void)
{ char mainStr[200], subStr[50];
int lenM, lenS, i, j, count;
gets(mainStr);
gets(subStr);
lenM = strlen(mainStr);
lenS = strlen(subStr);
count = 0;
for(i = 0; i <= ______①______; i++)
{ for(j = 0; j < lenS; j++)
{ if(__________②_________)
break; }
if(j == lenS)
________③_______; }
printf("子串出现次数:%d
", count);
return 0; }
【答案】①lenM - lenS ②mainStr[i + j] != subStr[j]
③ count++
四、阅读程序:修改程序中的错误,不得增行或删行,也不得更改程序结构。请在答题卡中指出错误代码所在的行号,并给出该行修改后的程序代码。(每空2分,共计20分)
1.下列程序的功能是:输入一句英文(单词以空格分隔),将每个单词内部字符不变,整体单词顺序逆序。
示例:hello world → world hello。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 #include <string.h>
L3 int main(void)
L4 {
L5 char str[200];
L6 int len, i, j, k;
L7 char temp[200];
L8 int pos = 0;
L9 gets(str);
L10 len = strlen(str);
L11 i = len - 1;
L12 while(i >= 0)
L13 {
L14 while(i >= 0 && str[i] != ' ')
L15 i--;
L16 j = i;
L17 while(j < len && str[j] != ' ')
L18 {
L19 temp[pos++] = str[j];
L20 j++;
L21 }
L22 if(i >= 0)
L23 temp[pos++] = ' ';
L24 i--;
L25 }
L26 temp[pos] =1;
L27 printf("单词逆序:%s
", temp);
L28 return 0;
L29 }
【答案】①L16 j = i + 1;
②L26 temp[pos] = '\0';
2.下列程序的功能是:输入字符串与整数 n,将字符串整体左移 n 位,移出的字符补到字符串末尾。
示例:abcd12 左移 2 位 → cd12ab。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 #include <string.h>
L3 int main(void)
L4 {
L5 char str[100], temp[100];
L6 int len, n, i;
L7 gets(str);
L8 scanf("%d", &n);
L9 len = strlen(str);
L10 n = n / len;
L11 for(i = 0; i < n; i++)
L12 temp[i] = str[i];
L13 for(i = 0; i < len - n; i++)
L14 str[i] = str[i + n];
L15 for(i = len - n; i < len; i++)
L16 str[i] = temp[i - len];
L17 str[len] = '\0';
L18 printf("左移结果:%s
", str);
L19 return 0;
L20 }
【答案】①L10 n = n % len;
②L16 str[i] = temp[i - (len - n)];
3.下列程序的功能是:输入以空格分隔的英文句子,找出其中长度最长的单词并输出。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 #include <string.h>
L3 int main(void)
L4 {
L5 char str[200], word[50], maxWord[50];
L6 int len, i, cnt, maxLen;
L7 gets(str);
L8 len = strlen(str);
L9 maxLen = 0;
L10 cnt = 0;
L11 for(i = 0; i <= len; i++)
L12 {
L13 if(str[i] == ' ' && str[i] == '\0')
L14 {
L15 word[cnt] = '\0';
L16 if(cnt > maxLen)
L17 {
L18 maxLen = cnt;
L19 strcpy(word,maxWord);
L20 }
L21 cnt = 0;
L22 }
L23 else
L24 word[cnt] = str[i];
L25 }
L26 printf("最长单词:%s
", maxWord);
L27 return 0;
L28 }
【答案】①L13 if(str[i] == ' ' || str[i] == '\0')
②L19 strcpy(maxWord, word);
③L24 word[cnt++] = str[i];
4.下列程序的功能是:连续重复字符进行压缩,格式:字符+重复次数。
示例:aaabbbcc → a3b3c2。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 #include <string.h>
L3 int main(void)
L4 {
L5 char str[100], res[200];
L6 int len, i, k, count;
L7 gets(str);
L8 len = strlen(str);
L9 k = 0;
L10 i = 0;
L11 while(i > len)
L12 {
L13 count = 1;
L14 while(i + 1 < len || str[i] == str[i+1])
L15 {
L16 count++;
L17 i++;
L18 }
L19 res[k++] = str[i];
L20 res[k++] = count + 0;
L21 i++;
L22 }
L23 res[k] = '\0';
L24 printf("压缩结果:%s
", res);
L25 return 0;
L26 }
【答案】①L11 while(i < len)
②L14 while(i + 1 < len && str[i] == str[i+1])
③L20 res[k++] = count + '0';
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:湖南省普通高校对口招生专业理论考试《计算机应用类专业综合考纲百套卷》,依据《湖南省普通高校对口招生计算机应用类专业综合知识基本要求及考试大纲》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第78卷,按《计算机编程语言——C语言》范围和要求编写。具体内容为:①字符数组的定义及元素的引用;②字符数组的初始化;③字符数组的输入/输出;④字符串处理函数。
湖南省《计算机应用类专业综合考纲百套卷》 第78卷
《计算机编程语言——C语言》
字符数组的定义和使用
考点训练卷
考试时间60分钟 满分100分
班级________姓名________学号________成绩________
一、单项选择题(本大题共15小题,每题2分,共30分)
1.(2021年)若“char a[ 8 ]=“1234”;int x =strlen (a); y = sizeof (a);”,则x 和 y 的值分别是( )
A. 4, 4 B. 5. 4 C. 4, 5 D.4, 8
2.(2018年)若“char a[6]="abcde";”,执行“printf("%d",strlen(a));”后,输出结果是( )
A.5 B.6 C.7 D.8
3.设有定义 char str[6] = {"abcd"};int i;,下列代码段执行后输出结果是( )
for(i = 0; i < 6; i++)
printf("%c", str[i]);
A. abcd B. abcd\0 C. abcd\0\0 D. 乱码
4.已知 char a[10] = "hello";,执行语句 a[2] = '\0'; 后,printf("%s",a); 的输出为( )
A. he B. hello C. he\0llo D. 无输出
5.关于strlen()和sizeof(),定义char arr[8] = "test";,下列说法正确的是( )
A. strlen(arr)=4,sizeof(arr)=4
B. strlen(arr)=4,sizeof(arr)=8
C. strlen(arr)=5,sizeof(arr)=8
D. strlen(arr)=8,sizeof(arr)=8
6.执行代码:char a[20] = "2026", b[] = "0613"; strcat(a,b);,则printf("%s",a);输出为( )
A. 2026 B. 0613 C. 20260613 D. 2026 0613
7.已知 char str[15] = "Program";,循环语句 int i=0; while(str[i]!='\0') i++; 执行结束后,变量i的值是( )
A. 6 B. 7 C. 8 D. 15
8.下列关于strcmp(s1,s2)函数的运算规则,说法错误的是( )
A. 逐字符按照 ASCII 码值比较
B. 两字符串完全相等,返回值为 0
C. 若s1前半部分与s2相同,s1更长,则s1大于s2
D. 只能比较英文字符,无法比较数字字符
9.strcmp("apple","app") 的返回值为( )
A. 负数 B. 0 C. 正数 D. 随机值
10.执行以下程序代码段,程序的输出结果是( )
char s[] = "a1b2c3";
int cnt = 0,i;
for(i=0; s[i]!='\0'; i++)
{ if(s[i] >= '0' && s[i] <= '9')
cnt++; }
printf("%d",cnt);
A. 2 B. 3 C. 4 D. 6
11.若 char a[] = "12345", b[3] = "67";,执行strcpy(a,b);后,strlen(a)的值为( )
A. 2 B. 3 C. 5 D. 7
12.执行以下程序代码段,程序的输出结果是( )
char s1[] = "book", s2[] = "boot";
if(strcmp(s1,s2) > 0)
printf("大于");
else if(strcmp(s1,s2) < 0)
printf("小于");
else
printf("相等");
A. 大于 B. 小于 C. 相等 D. 无输出
13.执行以下程序代码段,程序的输出结果是( )
char str[8];
int i;
for(i = 0; i < 8; i++)
str[i] = 'A';
str[5] = '\0';
printf("%s", str);
A. AAAAA B. AAAAAAAA C. AAAA\0AA D. 乱码
14.执行以下程序段后,变量count的值为( )
char s[] = "a0b1c2d3";
int i, count = 0;
i = 0;
while(s[i] != '\0')
{ if(s[i] >= '0' && s[i] <= '9')
count = count + 1;
i = i + 1; }
printf("%d", count);
A. 3 B. 4 C. 5 D. 8
15.执行以下程序段后,变量num的值为( )
char word[] = "2026-06-13";
int i=0, num = 0;
while(word[i] != '\0')
{ if(word[i] == '-')
num++;
i++; }
printf("%d", num);
A. 1 B. 2 C. 3 D. 4
二、阅读程序,写出运行结果(本大题共10小题。每空2分,合计20分)
1.(2025年)下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h> /*strcpy()为字符串复制函数,strcat()为字符串连接函数*/
int main(){
char s[10]="abc";
char t[10]="123";
char p[10]="xyz";
strcpy(s+1,t+1);
printf("string=%s",(strcat(s,p+1)));
return 0;
}
2.(2022年)下列程序的运行结果是__________________。
#include "stdio.h"
#include<string.h>
int main(void)
{char a[]="ABCD",b[]="BAD";
int i,j;
for(i=0;i<strlen(b);++i)
{
for(j=0;(j<strlen(a)) && (a[j]!=b[i]);++j)
if(j>=strlen(a))
{
printf("No");
return 0;
}}
printf("Yes");
return 0;
}
3.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[20] = "strive";
char t[20] = "123456";
char k[20] = "xyz";
char temp[20];
strcpy(s+2, t+3);
strcat(s, k+2);
strcpy(temp, s+1);
strcpy(s+4, temp);
printf("%s", s);
return 0;
}
4.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char s1[15] = "78901";
char s2[15] = "abcde";
int i, len;
len = strlen(s1);
for(i = 0; i < len / 2; i++)
{ s1[i] = s2[len - 1 - i]; }
printf("%s", s1);
return 0; }
5.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char c[14] = "a1b2c3d4";
int i, sum;
sum = 0;
for(i = 0; c[i] != '\0'; i++)
{ if(c[i] >= '0' && c[i] <= '9')
{ sum = sum + (c[i] - '0');
if(sum > 5)
c[i] = '#'; }
}
printf("%s", c);
return 0; }
6.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char a[] = "UVWXYZ";
char b[] = "WVAZ";
int i, j, count;
count = 0;
for(i = 0; i < strlen(b); i++)
{ j = 0;
while(j < strlen(a) && a[j] != b[i])
j++;
if(j < strlen(a))
count = count + j; }
printf("%d", count);
return 0; }
7.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char x[25] = "sun";
char y[25] = "moon";
char z[25] = "star";
int len_x, len_z;
len_x = strlen(x);
len_z = strlen(z);
strcpy(x + len_x - 1, y + 1);
strcat(y, z + len_z / 2);
printf("%s|%s", x, y);
return 0; }
8.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char a[] = "STUVWXY";
char b[] = "XTVSY";
int i, j, total;
int len_a, len_b;
len_a = strlen(a);
len_b = strlen(b);
total = 0;
for(i = 0; i < len_b; i++)
{ j = 0;
while(j < len_a && a[j] != b[i]) j++;
if(j < len_a)
{ if(j % 2 == 1)
total += j;
else
total -= j; }
}
printf("%d", total);
return 0; }
9.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char str[40] = "7182930456";
int i, sum, flag;
int len;
len = strlen(str);
sum = 0;
flag = 1;
for(i = 0; i < len; i++)
{ if(flag == 1)
sum += str[i] - '0';
else
sum -= str[i] - '0';
flag = -flag; }
printf("%d", sum);
return 0; }
10.下列程序的运行结果是__________________。
#include <stdio.h>
#include <string.h>
int main(void)
{ char m[] = "PQRSTUV";
char n[] = "VPRXQT";
int i, j, res;
int len_m, len_n;
len_m = strlen(m);
len_n = strlen(n);
res = 0;
for(i = 0; i < len_n; i++)
{ j = 0;
while(j < len_m && m[j] != n[i])
j++;
if(j < len_m)
{ if(i % 2 == 0)
res += j;
else
res -= j; }
}
printf("%d", res);
return 0; }
三、程序填空。按照题目要求,将正确内容填入答题卡相应位置,使程序完整(每空2分,共计30分)
1.下列程序的功能是:输入一串英文字符串,将原字符串就地逆序并输出。
#include <stdio.h>
#include <string.h>
int main(void)
{ char str[100];
int len, i, j;
char temp;
gets(str);
len = strlen(str);
i = 0;
j = _______①______;
while(i < j)
{ temp = str[i];
str[i] = str[j];
________②________;
i++;
_________③_______ }
printf("逆序结果:%s
", str);
return 0; }
2.下列程序的功能是:输入一个字符串,判断该字符串是否为回文(正读、反读完全一致),输出 Yes 或 No。
#include <stdio.h>
#include <string.h>
int main(void)
{ char str[100];
int len, i, flag;
gets(str);
len = strlen(str);
flag = 1;
for(i = 0; i < _______①______; i++)
{ if(_________②_________)
{ flag = 0;
_________③_________ }
}
if(flag == 1) printf("Yes
");
else printf("No
");
return 0; }
3.下列程序的功能是:输入字符串,删除其中重复字符,每个字符只保留第一次出现的位置,输出去重后的字符串。
#include <stdio.h>
#include <string.h>
int main(void)
{ char str[100], res[100];
int len, i, j, k, exist;
gets(str);
len = strlen(str);
k = 0;
for(i = 0; i < len; i++)
{ exist = 0;
for(j = 0; j < k; j++)
{ if(___________①_________)
{ exist = 1;
break; }
}
if(exist == 0)
{ _________②________;
k++; }
}
_________③_________
printf("去重结果:%s
", res);
return 0; }
4.简易凯撒加密:所有小写字母向后偏移 3 位(a→d,b→e ... x→a,y→b,z→c),大写字母同理,其他字符不变,输出加密后字符串。
#include <stdio.h>
#include <string.h>
int main(void)
{ char str[100];
int len, i;
gets(str);
len = ________①________;
for(i = 0; i < len; i++)
{ if(str[i] >= 'a' && str[i] <= 'z')
{
str[i] = _________②_______;
}
else if(str[i] >= 'A' && str[i] <= 'Z')
{
str[i] = __________③________;
}
}
printf("加密结果:%s
", str);
return 0; }
5.下列程序的功能是:输入主字符串和子字符串,统计子串在主串中重叠出现的总次数。
#include <stdio.h>
#include <string.h>
int main(void)
{ char mainStr[200], subStr[50];
int lenM, lenS, i, j, count;
gets(mainStr);
gets(subStr);
lenM = strlen(mainStr);
lenS = strlen(subStr);
count = 0;
for(i = 0; i <= ______①______; i++)
{ for(j = 0; j < lenS; j++)
{ if(__________②_________)
break; }
if(j == lenS)
________③_______; }
printf("子串出现次数:%d
", count);
return 0; }
四、阅读程序:修改程序中的错误,不得增行或删行,也不得更改程序结构。请在答题卡中指出错误代码所在的行号,并给出该行修改后的程序代码。(每空2分,共计20分)
1.下列程序的功能是:输入一句英文(单词以空格分隔),将每个单词内部字符不变,整体单词顺序逆序。
示例:hello world → world hello。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 #include <string.h>
L3 int main(void)
L4 {
L5 char str[200];
L6 int len, i, j, k;
L7 char temp[200];
L8 int pos = 0;
L9 gets(str);
L10 len = strlen(str);
L11 i = len - 1;
L12 while(i >= 0)
L13 {
L14 while(i >= 0 && str[i] != ' ')
L15 i--;
L16 j = i;
L17 while(j < len && str[j] != ' ')
L18 {
L19 temp[pos++] = str[j];
L20 j++;
L21 }
L22 if(i >= 0)
L23 temp[pos++] = ' ';
L24 i--;
L25 }
L26 temp[pos] =1;
L27 printf("单词逆序:%s
", temp);
L28 return 0;
L29 }
2.下列程序的功能是:输入字符串与整数 n,将字符串整体左移 n 位,移出的字符补到字符串末尾。
示例:abcd12 左移 2 位 → cd12ab。以下程序只允许修改两行。
L1 #include <stdio.h>
L2 #include <string.h>
L3 int main(void)
L4 {
L5 char str[100], temp[100];
L6 int len, n, i;
L7 gets(str);
L8 scanf("%d", &n);
L9 len = strlen(str);
L10 n = n / len;
L11 for(i = 0; i < n; i++)
L12 temp[i] = str[i];
L13 for(i = 0; i < len - n; i++)
L14 str[i] = str[i + n];
L15 for(i = len - n; i < len; i++)
L16 str[i] = temp[i - len];
L17 str[len] = '\0';
L18 printf("左移结果:%s
", str);
L19 return 0;
L20 }
3.下列程序的功能是:输入以空格分隔的英文句子,找出其中长度最长的单词并输出。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 #include <string.h>
L3 int main(void)
L4 {
L5 char str[200], word[50], maxWord[50];
L6 int len, i, cnt, maxLen;
L7 gets(str);
L8 len = strlen(str);
L9 maxLen = 0;
L10 cnt = 0;
L11 for(i = 0; i <= len; i++)
L12 {
L13 if(str[i] == ' ' && str[i] == '\0')
L14 {
L15 word[cnt] = '\0';
L16 if(cnt > maxLen)
L17 {
L18 maxLen = cnt;
L19 strcpy(word,maxWord);
L20 }
L21 cnt = 0;
L22 }
L23 else
L24 word[cnt] = str[i];
L25 }
L26 printf("最长单词:%s
", maxWord);
L27 return 0;
L28 }
4.下列程序的功能是:连续重复字符进行压缩,格式:字符+重复次数。
示例:aaabbbcc → a3b3c2。以下程序只允许修改三行。
L1 #include <stdio.h>
L2 #include <string.h>
L3 int main(void)
L4 {
L5 char str[100], res[200];
L6 int len, i, k, count;
L7 gets(str);
L8 len = strlen(str);
L9 k = 0;
L10 i = 0;
L11 while(i > len)
L12 {
L13 count = 1;
L14 while(i + 1 < len || str[i] == str[i+1])
L15 {
L16 count++;
L17 i++;
L18 }
L19 res[k++] = str[i];
L20 res[k++] = count + 0;
L21 i++;
L22 }
L23 res[k] = '\0';
L24 printf("压缩结果:%s
", res);
L25 return 0;
L26 }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$