《明解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
- 《明解C语言》示例代码和练习代码[第9章]
- 《明解C语言》示例代码和练习代码[第1章]
- 《明解C语言》示例代码和练习代码[第2章]
- 《明解C语言》示例代码和练习代码[第3章]
- 《明解C语言》示例代码和练习代码[第4章]
- 《明解C语言》示例代码和练习代码[第5章]
- 《明解C语言》示例代码和练习代码[第6章]
- 《明解C语言》示例代码和练习代码[第7章]
- 《明解C语言》示例代码和练习代码[第8章]
- 《明解C语言》示例代码和练习代码[第10章]
- 《明解C语言》示例代码和练习代码[第11章]
- 《明解C语言》示例代码和练习代码[第12章]
- 《明解C语言第3版.入门篇》练习代码 第11章
- 《明解C语言第3版.入门篇》练习代码 第12章
- C语言代码示例
- c语言数组及练习代码
- 逆向还原C语言代码 练习1
- c语言-登录代码示例
- 试位法求解非线性方程的根
- Qt:QML:JavaScript 和QML 语法错误表
- HTTP Get,Post请求详解
- Sublime Text 3 + Markdown 配置步骤
- HDOJ2089 不要62(数位DP)
- 《明解C语言》示例代码和练习代码[第9章]
- jQuery的标签标识
- 使用HTML5的页面资源预加载(Link prefetch)功能加速你的页面加载速度
- mysql插入数字都变成2147483647的解决方法
- Android 自定义view(画表盘)
- 线程
- 关于OpenTSDB的Writing Data数据写入
- 《爸爸妈妈》——李荣浩
- Protocol Buffers(Protobuf) 官方文档--Protobuf语言指南