参考答案
第 8 章字符、字符数组与字符串
一、选择题
二、编程题
略。
习题
一、选择题
(1)char类型的变量存储时占据( A )个字节。
A)1 B)2 C)4 D)8 (2)以下选项中,不合法字符常量的是( C )。
A)'\\ ' B)'\xbb' C)'\019' D)'c' (3)已定义变量char c,( C )不能正确地给该变量赋值。
A)c=97 B)c='A' C)c=''B'' D)c='A'+6 (4)以下关于输入输出格式说明符的说法正确的是( A )。
A)%c是char数据的输入输出格式符
B)%d是char数据的输入输出格式符
C)%s是char数据的输入输出格式符
D)%f是char数据的输入输出格式符
(5)已知数字字符'0'的ASCII值为48。以下程序运行后的输出结果是( B )。#include<stdio.h>
void main()
{ char a='4',b='5';
b=b+2;
printf("%c,",b);
printf("%d",b-a);
}
A)5,4 B)7,3 C)5,1 D)4,5 (6)以下选项中,( B )是正确的字符串。
一个完整的c语言程序A)'hello' B)"hello " C)hello D)'h' (7)以下语句中,( D )能够正确定义字符数组并存入字符串。
A)char str[]={'\064'}; B)char str="kx43";
C)char str=''; D)char str[]="\0";
(8)已有定义char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是( C )。
A)数组a和b长度相同B)数组a长度小于数组b长度
C)数组a长度大于数组b长度D)以上说法都不对
(9)以下程序的功能:通过函数fun以字符'@'为结束输入字符并统计输入字符的个数。请填空。
#include <stdio.h>
void main()
{ int m;
for(m=0;getchar()!='@'; ( A ) )
;
printf("%d\n",m);
}
A)m++ B)m-- C)m=1 D)m=m+2 (10)在运行语句“gets(s)”时输入“Tian jin”,数组s得到的是( C )。
A)"T" B)"Tian" C)" Tian jin" D)" Tian j"
(11)在C语言中,字符串的结束标识为( A )。
A)'\0' B)'0' C)'\n' D)'n' (12)strlen("abc\0defg")函数的值为( B )。
A)0 B)3 C)4 D)9 (13)已经有定义“char s1[],
s2[]="abcde";”,能够将字符串s2复制到s1中的语句是( C )。
A)s1=s2 B)s2=s1 C)strcpy(s1,s2) D)strcpy (s2,s1) (14)已经定义“char s[]="Abc12Def";”,运行strupr(s)语句后,字符串s为( C )。
A)"abcdef" B)"ABCDEF" C)"ABC12DEF" D)"abc12def"
(15)已经定义“char s1[]="abcde",
s2[]="abcdE";”,函数strcmp(s1,s2)的值是( A )。
A)正数B)负数C)0 D)真(16)以下程序的运行结果是( D )。
#include <stdio.h>
#include <string.h>
void main()
{ char s1[100]="12345",s2[10]="678",s3[]="90";
strcat(strcpy(s1,s2),s3);
puts(s1);
}
A)12345678 B)1234590C)90D)67890(17)以下程序在运行时,输入CDEF<;回车>BADEF<;回车>QTHRG<;回车>,则运行结果是( C )。
#include <stdio.h>
#include <string.h>
void main()
{ int i;
char s[10],t[10];
gets(t);
for(i=0;i<2;i++)
{ gets(s);
if (strcmp(t,s)<0)
strcpy(t,s);
}
puts(t);
}
A)CDEF B)BADEF C)QTHRG D)t (18)以下程序的运行结果是( A )。
#include <stdio.h>
void main()
{ char s[]="abcd1234ABCD";
int i,n=0;
for(i=0;s[i]!='\0';i++)
if (s[i]>='a'&&s[i]<='z') n++;
printf("%d",n);
}
A)4 B)8C)12D) 0 (19)以下程序将字符串s 中的数字字符复制到t 数组中,请将程序补充完整。
#include <stdio.h>
void fun(char s[],char t[])
{ int i,j;
for(i=0,j=0; ( A ) ;i++)
if (s[i]>='0'&&s[i]<='9')
{ ( D ) ;
j++;
}
t[j]='\0';
}
void main()
{ char s[100]="abc334455hj",t[100];
( C ) ;
puts(t);
}
A)s[i]!='\0'B)t[i]!='\0' C)s=0D)t=0
A)s[j]=t[i]B)s[I]=t[j] C)t[i]=s[j]D)t[j]=s[i]
A)fun(s[],t[]) B)fun(t[],s[])C)fun(s,t) D)fun(t,s) (20)以下程序的功能只保留字符串的小写字母,请将程序补充完整。
#include <stdio.h>
void fun(char s[])
{ int i,j;
for(i=0,j=0;s[i]!='\0';i++)
if ( ( A ) )
{ s[j]=s[i];
( B ) ;
}
s[j]='\0';
}
void main()
{ char s[100]="abc123abc123abc";
( D ) ;
puts(s);
}
A)s[i]>='a'&&s[i]<='z' B)s[i]>='0'&&s[i]<='9'
C)s[i]>='A'&&s[i]<='Z D)s[i]>=a&&s[i]<=z
A)j=i B)j++ C)i++ D)i=j
A)fun=s B)fun(s[]) C)fun(s[100]) D)fun(s)
二、编程题
1.编写程序,输入字符串,分别统计其中大写字母、小写字母和数字字符的个数。
2.编写程序,输入字符串str2,将其中所有小写字母复制到字符串数组str1中。例如,str2为"aa11bb22cc33de44AA55BB",生成的str1为"aabbccde"。
3.定义函数int upr_len(char
str[]),其功能是统计字符串中大写字母的个数。在main()函数中输入字符串,调用fun()求大写字母个数。
4.定义函数fun(),将形参字符串中的所有小写字母变为大写字母,而大写字母变为小写字母。在main()函数中输入字符串,调用fun()对输入的字符串进行相应变换。
5.编写函数void str_inv(char
str[]),将字符串str反序。例如,原字符串为"abcdefg",则反序后为"gfedcba"。在main()函数中输入字符串,调用函数str_inv()将字符串反序并输出。
6.编写函数int str_cmp(char s1[], char
s2[]),用于比较两个字符串的大小。函数返回值为第一个对应位置不相同的元素的ASCII 码值的差s1[i]-
s2[i],如果两个字符串相等,则函数值为0。在main()函数中,输入两个字符串,调用函数str_cmp()进行比较。
7.编写函数replace(char s[], char c1, char
c2),将字符串s中所有字符c1替换为字符c2。在main()函数中输入字符串、字符c1和字符c 2,调用函数replace(),完成字符替换。
8.定义函数void str_encrypt (char
str[]),能够将str按照以下规则进行加密。加密规则为A→E,a→e,B→F,b→f,…,V→Z ,v→z,W→A,w→a,X→B,x→b,…,Z→D,z→d,其他字符不变。例如,输入“Chin a Tianjin 2010”,加密后为“Glmre Xmernmr
2010”。在main()函数中输入字符串调用fun()对输入的字符串进行加密。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论