《明解C语⾔》笔记及课后习题答案【第九章】练习9-1
/*---输出字符数组char str[] = "ABC\0DEF"---*/
#include <stdio.h>
int main(void)
{
char str[] = "ABC\0DEF";
printf("字符串str为\"%s\"。\n", str);
return 0;
}
练习9-2
/*---让该初始化赋值得到的字符串s变成空字符串:char s[] = "ABC"---*/
#include <stdio.h>
int main (void)
{
char s[] = "ABC";
s[0] = '\0';
printf("字符串s为:%s",s);
return 0;
}
练习9-3
/*对代码清单9-7进⾏改写*/
#include <stdio.h>
#define NUMBER 5
int main(void)
{
int i;
char s[NUMBER][128];
for (i = 0; i < NUMBER; i++) {
printf("s[%d]:", i);
scanf("%s", s[i]);
if (strcmp(s[i], "$$$$$") == 0)
break;
}
for(i = 0; i < NUMBER; i++){
if (strcmp(s[i], "$$$$$") == 0)
break;
printf("s[%d] = \"%s\"\n", i, s[i]);
}
return 0;
}
练习9-4
/*---编写⼀个函数,使字符串s为空字符串。---*/ #include <stdio.h>
void null_string(char s[]){
s[0] = '\0';
printf("字符串s为:%s",s);
}
int main(void)
{
char s[] = "HELLOWORLD";
null_string(s);
return 0;
}
练习9-5
/*---编写函数,若字符串s中含有字符c(若含有多个,以先出现的为准),则返回该元素的下标。---*/ #include <stdio.h>
int str_char(const char s[], int c) {
int idx = 0;
while (s[idx]){
if(s[idx] == 'c')
return idx;
idx++;
}
return -1;
}
int main(void)
{
char c;
char s[] = "hellochina";
printf("字符c在字符串%s中的下标为:%d", s, str_char(s,c));
return 0;
}
练习9-6
/*---编写函数,返回字符串s中字符c的个数---*/
#include <stdio.h>
int str_chnum(const char s[], int c){
int num = 0, idx = 0;
while (s[idx]){
if(s[idx] == 'c')
num++;
idx++;
}
return num;
if(num == 0)
return 0;
}
int main(void)
{
char c = 'c';
char s[] = "hellochinanancang";
printf("字符串%s中%c字符的个数为%d", s, c, str_chnum(s, c));
return 0;
}
练习9-7
/*---编写函数,使字符串s显⽰n次。---*/
#include <stdio.h>
void put_stringn(const char s[], int n){
int num, i = 0;
for (num = 0; num < n; num++){
//printf("%s\n",s);
while(s[i]){
putchar(s[i++]);
}
i = 0;
}明解c语言
return 0;
}
int main(void)
{
char s[] = "多重影分⾝之术!";
int n = 100;
put_stringn(s, n);
return 0;
}
练习9-8
/*---编写函数,实现字符串的逆向输出。---*/ #include <stdio.h>
void put_stringr(const char s[]){
int num = 0, i = 0;
while (s [num])
num++;
while (i < num){
putchar(s[num - i -1]);
i++;
}
}
int main(void)
{
char s [] = "hello";
put_stringr(s);
return 0;
}
练习9-9
/*---逆向显⽰字符串s的字符---*/
#include <stdio.h>
void rev_string(char s[]){
int num = 0, i = 0, temp;
while (s [num])
num++;
for(i = 0; i < num/2; i++){
temp = s[i];
s[i] = s[num - i -1];
s[num - i -1] = temp;
}
printf("%s",s);
}
int main(void)
{
char s[] = "hello";
rev_string(s);
return 0;
}
练习9-10
/*---将字符串s中的数字字符全部删除。---*/
#include <stdio.h>
void del_digit(char s[]) {
int num, i = 0, temp ;
while (s[i]) {
if (s[i] >= '0' && s[i] <= '9'){
temp = i;
while(s[temp]) {            //将0~9数字通过遍历使其被最后⼀位元素‘\0’替换。                s[temp] = s[temp + 1];
temp++;
}
i--;
}
i++;
}
printf("%s",s);
}
int main (void)
{
char s[] = "adb34fd43";
del_digit(s);
return 0;
}
练习9-11

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。