《明解C语言》示例代码和练习代码[第9章]

来源:互联网 发布:用友u8软件免费下载 编辑:程序博客网 时间:2024/06/05 04:53

第9章 字符串的基本认识


示例代码:


示例代码9-1

/*    显示字符串字面长度 */#include <stdio.h>int main(void){    printf("sizeof(\"123\")        = %u\n",        (unsigned)sizeof("123"));    printf("sizeof(\"AB\\tC\")      = %u\n",        (unsigned)sizeof("AB\tC"));    printf("sizeof(\"abc\\0def\")   = %u\n",        (unsigned)sizeof("abc\0def"));        return (0);    }

示例代码9-2

/*    保存字符串的数组 */#include <stdio.h>int main(void){    char str[4];        //保存字符串的数组        str[0] = 'A';       // 赋值    str[1] = 'B';       // 赋值    str[2] = 'C';       // 赋值    str[3] = '\0';      // 赋值        printf("字符串str为%s。\n", str);        // 显示        return(0);  }

示例代码9-3

/*    保存字符串的数组(初始化) */#include <stdio.h>int main(void){    char str[] = "ABC";        //初始化            printf("字符串str为%s。\n", str);        // 显示        return (0); }

示例代码9-4

/*    询问名字并显示问候语(读取字符串) */#include <stdio.h>int main(void){    char name[40];        printf("请输入您的名字:");    scanf("%s", name);        printf("您好, %s 先生/女士!!\n", name);            return (0);}

示例代码9-5

/*    格式化字符串“12345”并显示 */#include <stdio.h>int main(void){    char str[] = "12345";        printf("%s\n",    str);        // 原样输出    printf("%3s\n",   str);        // 至少显示3位     printf("%.3s\n",  str);        // 最多显示3位     printf("%8s\n",   str);        // 右对齐     printf("%-8s\n",  str);        // 左对齐        return (0);   }

示例代码9-6

/*    字符串数组 */#include <stdio.h>int main(void){    int i;    char cs[][6] = {"Turbo", "NA", "DOHC"};        for (i = 0; i < 3; i++)        printf("cs[%d] = \"%s\"\n", i, cs[i]);              return (0);}

示例代码9-7

/*    读取并显示字符串数组 */#include <stdio.h>int main(void){    int i;    char cs[3][128];        for (i = 0; i < 3; i++) {        printf("cs[%d]: ", i);        scanf("%s", cs[i]);    }            for (i = 0; i < 3; i++)        printf("cs[%d] = \"%s\"\n", i, cs[i]);            return (0);}

示例代码9-8

/*    判断字符串的长度 */#include <stdio.h>// 返回字符串str的长度unsigned str_length(const char str[]){    unsigned len = 0;        while (str[len])        len++;         return (len);        } int main(void){    char st[100];        printf("请输入字符串:");    scanf("%s", st);        printf("字符串%s的长度为%u。\n", st, str_length(st));        return (0);   }

示例代码9-9

/*    依次显示字符串中的字符 */#include <stdio.h>// 显示字符串(不换行)void put_string(const char str[]){     unsigned i = 0;          while (str[i])         putchar(str[i++]);} int main(void){    char str[100];        printf("请输入字符串:");    scanf("%s", str);        put_string(str);    putchar('\n');        return (0);    }

示例代码9-10

/*    计算字符串中的数字字符数 */#include <stdio.h>// 将字符串str中的数字字符保存至数组cntvoid str_dcount(const char str[], int cnt[]) {    unsigned i = 0;    while (str[i]) {        if (str[i]) {            if (str[i] >= '0' && str[i] <= '9')                cnt[str[i] - '0']++;            i++;        }    }     }int main(void){    int i;    int dcnt[10] = {0};    char str[100];        printf("请输入字符串:");    scanf("%s", str);        str_dcount(str, dcnt);        puts("数字字符的出现次数");    for (i = 0; i < 10; i++)        printf("'%d' : %d\n", i, dcnt[i]);        return (0);    }

示例代码9-11

/*    字符串数组 (函数版)*/#include <stdio.h>// 显示字符串数组void put_strary(const char st[][6], int n){    int i;    for (i = 0; i < n; i++)        printf("st[%d] = \"%s\"\n", i, st[i]);     } int main(void){    char cs[][6] = {"Turbo", "NA", "DOHC"};        put_strary(cs, 3);              return (0);}

示例代码9-12

/*    显示字符串数组 */ #include <stdio.h>// 显示字符串数组(逐个显示字符)void put_strary2(const char st[][6], int n){    int i;        for (i = 0; i < n; i++) {    int j = 0;    printf("st[%d] = \"", i);        while (st[i][j])        putchar(st[i][j++]);            puts("\"");}} int main(void){    char cs[][6] = {"Turbo", "NA","DOHC"}; put_strary2(cs, 3);return (0);} 

示例代码9-13

/*    对字符串的英文字符进行大小写转换 */#include <ctype.h>#include <stdio.h>// 将字符串中的英文字符转换为大写字母void str_toupper(char str[]){    unsigned i = 0;while (str[i]) {str[i] = toupper(str[i]);i++;}} // 将字符串中的英文字符转换为小写字母void str_tolower(char str[]){    unsigned i = 0;while (str[i]) {str[i] = tolower(str[i]);i++;}}int main(void){char str[100];printf("请输入字符串:");scanf("%s", str);str_toupper(str);printf("大写字母:%s\n", str);str_tolower(str);printf("小写字母:%s\n", str);return (0);}


练习代码:


练习代码e9-1

/*    保存字符串的数组(初始化) */#include <stdio.h>int main(void){    char str[] = "ABC\0DEF";                  //初始化            printf("字符串str为%s。\n", str);        // 显示        return (0); }

练习代码e9-2

/*    将str变成空字符串 */#include <stdio.h>int main(void){    char str[] = "ABC";        str[0] = '\0';        printf("字符串str为%s。\n", str);        system("pause");    return (0);    }

练习代码e9-3

/*    编写如下函数,若字符串str中含有字符c(若含有多个,以先出现的为准),    则返回该元素的下标值,否则返回-1 */#include <stdio.h>int str_char(const char str[], int c){    int i = 0;    while (str[i]) {        if (c == str[i])            break;        i++;    }        if (!str[i])    i = -1;                return (i);}int main(void){    char st[10];    char ch;    int pos;        printf("请输入字符串:");    scanf("%s", st);        getchar();        // 清除缓存         printf("\n请输入要查找的字符:");    scanf("%c", &ch);          pos = str_char(st, ch);         if (-1 == pos)        printf("\n在字符串%s中未出现字符%c。\n", st, ch);    else        printf("\n在字符串%s中字符%c首次出现在第%d位。\n", st, ch, pos + 1);            return (0);}

练习代码e9-4

/*    编写如下函数,    返回字符串str中字符c的个数(没有则返回0) 。 */#include <stdio.h>int str_chnum(const char str[], int c){    int num = 0;    int len = 0;        while (str[len])        if (c == str[len++])    num++;       return (num);}int main(void){    char st[10];    char ch;        printf("请输入字符串:");    scanf("%s", st);        getchar();        // 清除缓存         printf("\n请输入要查找的字符:");    scanf("%c", &ch);        printf("\n在字符串%s中字符%c出现了%d次。\n", st, ch, str_chnum(st, ch));    return (0);}

练习代码e9-5

/*    依次显示字符串中的字符 */#include <stdio.h>// 显示字符串(不换行)void put_string(const char str[]){     unsigned i = 0;          while (str[i])         printf("%c", str[i++]);} int main(void){    char str[100];        printf("请输入字符串:");    scanf("%s", str);        put_string(str);    putchar('\n');        return (0);    }

练习代码e9-6

/*    编写如下函数,使字符串str显示no次。     void put_stringn(const char str[], int no) {}*/#include <stdio.h>void put_stringn(const char str[], int no){    while (no--)        puts(str);     }int main(void){    char str[100];    int n;        printf("请输入字符串:");    scanf("%s", str);        printf("请输入重复次数:");    scanf("%d", &n);        put_stringn(str, n);    putchar('\n');        return (0);    }

练习代码e9-7

/*    编写put_rstring函数,实现字符串的逆向输出。 */#include<stdio.h>void  put_rstring(const char str[]){    int i = 0;        while (str[i])        i++;        while (i + 1) {        putchar(str[i]);        i--;    }      }int main(void){    char str[100];        printf("请输入字符串:");    scanf("%s", str);        printf("\n输入字符串的逆向是:");    put_rstring(str);        putchar('\n');        return (0);    }

练习代码e9-8

/*    编写如下函数,实现字符串str的逆向保存。    void rev_string(char str[]) {} */#include <stdio.h>void rev_string(char str[]){    int n = 0;    int i;    char t;        while (str[n])    n++;        n--;        for (i = 0; i < n / 2; i++) {        t = str[i];             str[i] = str[n - i];        str[n - i] = t;    }}int main(void){    char str[100];        printf("请输入字符串:");    scanf("%s", str);        printf("\n字符串现在的顺序是:%s", str);        rev_string(str);         printf("\n字符串现在的顺序是:%s\n", str);        return (0); }

练习代码e9-9

/*    编写如下函数,将字符串str转换为空字符串。void null_string(char str[]) {} */#include <stdio.h>// 将字符串str转换为空字符串void null_string(char str[]){str[0] = '\0';}int main(void){char str[100];printf("请输入字符串:");scanf("%s", str);printf("\n字符串是:%s\n", str);null_string(str);printf("转换为空字符串后:%s\n", str);return (0); }

练习代码e9-10

/*    编写如下函数,将字符串str中的数字字符全部删除。void del_digit(char str[]) {} */#include <stdio.h>// 将字符串str中的数字字符全部删除void del_digit(char str[]){    unsigned i = 0;    unsigned j;        while (str[i])  {    if (str[i] >= '0' && str[i] <= '9') {    j = i;         while (str[j]) {            str[j] = str[j + 1];            j++;}  i--;       }     i++;}} int main(void){char str[100];printf("请输入字符串:");scanf("%s", str);printf("\n字符串是:%s\n", str);del_digit(str);printf("删除数字后的字符串是:%s\n", str);return (0);}
0 0
原创粉丝点击