二级教材《C语言程序设计》第10章

发布于:2021-12-03 09:17:54

第十章 字符串 * 题 答 案 一、选择题: 题号答案解题思路 10.1BA 所赋的是一个字符数组,由于没有'\0'作为结束,因 此不是字符串;C 赋初值时相当于下标越界。D 中 S 是一个 常量不能被改变。 10.2B 字符串中的最后一个字符是'\0'。 10.3C 每一个'\'后面跟的一个字符与'\'结合构成一个转义字 符。 10.4B*c-='A'-'a'即等于*c+=32,把字母的 ascii 值增加 32, 大写变小写。 10.5C。 10.6A 每循环一次,指针 P 向高位移动一个单元,打印此单 元起的字符串。 10.7D 首先,aa 是指针数组,一维数组,每个数组元素存放 着一个字符串的首地址。为什么不是 C,因为字符数组中含 有的字符数应当是 5。 10.8A 程序中每循环一次取出字符串组中相隔为两个单元 的数字组成一个整型数。 10.9Cp[i]是每个字符串的首地址,以%s 格式输出时,从首 地址的字符起,直到遇到'\0'结束输出,循环进行了 4 次,输

出前四个字符串。 10.10C 看似一样,实不一样,其他三个拷贝均有确定的首地 址可供寻找,独第三个不确定。 二、填空题: 10.11 还没输出就出错了-chp 表示什么?指针前面是不可以加 负号的。如果没有这个负号,则结果是死循环。题目有问题。 10.12XYZA 函数的功能是把每个字符的 ASCII 码值加 23, 超过 25 的从 A 开始。 10.13SO 循环的结果是每次打印一个字符,地址是 p[i]即首 地址所指向的元素。第一次是 p[3],第二次是 p[1],注意 p[1] 是第二个元素。 10.1410 函数的功能是把两个字符串连起来并计算总的有效 字符数。 10.15Itis 函数的功能比较复杂, 主要是注意 j++中表达式的值 以及 j 的值什么时候变,它与 i 的值不是同步变化的。 10.16(strlen(str)-1) j— strlen(str)得到字符串长度,再减 1 得到字符数组的下标号。 10.173 字符串函数对字符串的处理都是以内存中的'\0'为结 束符的。本题中前一个\016 为一个以八进制数表示的转义字 符,当字符串中含有'\0'时,以离首地址最*的为准,end 前 的那个'\0'就成了结束符。

10.18goodgood!sp 指针加 2 后,指向下标为 2 的元素.但是, 下一句 sp="to";使得 sp 指向"to"字符串所在的首地址,并没 有改变 s 数组的内容。 三、编程题: 10.19 解:程序如下: #include "stdio.h" void mygets( char *ch) { int i; char c; for (i=0 ;(c= getchar())!='\n';i++) ch[i]=c; ch[i]='\0'; } void myputs( char *ch) { int i; for( i=0;ch[i]!='\0';i++) putchar(ch[i]); } main() { char s[50]; mygets(s); myputs(s);

} 10.20 解,程序如下: #include "string.h" int ishuiwen(char *s) { int i,j,k; for (i=0,j=(strlen(s)-1);i< j; i++,j--)

if (s[i]==s[j])k=1; else {k=0;break;} return k; } main() { char ch[20]; gets(ch); if (ishuiwen(ch)) printf("%s is",ch); else printf("%s is not.",ch); } 10.21 解,程序如下: #include "stdio.h" #include "string.h" char fundel( char *s,int n) { int i;char k; if (n<0||n>(strlen(s)-1)) k=NULL;

else { k=s[n]; for (i=n ;i<=strlen(s);i++) s[i]=s[i+1]; } return k; } main () { char a[20];int n; printf("input a number:(1-%d)",strlen(a)+1); scanf("%d",&n); printf("\n the delete character is %c.",fundel(a,n-1)); }


相关推荐

最新更新

猜你喜欢