练习11-1

/*
用指针实现的字符串的改写
*/ #include <stdio.h> int main(void)
{
char* p = ""; printf("p = \"%s\"\n", p); p = ""+; /* OK! */ printf("p = \"%s\"\n", p); return ;
}

只能输出“56”,因为p指向的地址+1后,整体往后移了一位,所以读到的内容从“456”变成了“56\0".

练习11-2

/*
字符串数组
*/ #include <stdio.h> int main(void)
{
int i;
char a[][] = { "LISP", "C", "Ada" };
char* p[] = { "PAUL", "X", "MAC","SKTNB"};//用 sizeof(a) / sizeof(a[0])表示数组元素个数
for (i = ; i <( sizeof(a) / sizeof(a[]));i++)
printf("a[%d] = \"%s\"\n", i, a[i]); for (i = ; i < (sizeof(p) / sizeof(p[])); i++)
printf("p[%d] = \"%s\"\n", i, p[i]); return ;
}

练习11-3

/*
复制字符串
*/ #include <stdio.h> /*--- 将字符串s复制到d ---*/
char* str_copy(char* d, const char* s)
{
char* t = d; while (*d++ = *s++)
;
return t;
} int main(void)
{
char str[] = "ABC";
char tmp[]; printf("str = \"%s\"\n", str); printf("复制的是:", tmp);
scanf("%s", tmp); puts("复制了。");
printf("str = \"%s\"\n", str_copy(str, tmp)); return ;
}

练习11-4

#include <stdio.h>

void put_string(const char* s) {
putchar(*s);
while (*s++)
{
putchar(*s);
} } int main() {
char s[] ;
printf("请输入字符串:");
scanf("%s",s);
put_string(s);
}

练习11-5

#include <stdio.h>

int str_chnum(const char* s,int c) {

    int cnt = ;

    while (*s != NULL) {

        if (*s == c) {
cnt++;
}
*s++;
}
return cnt; } int main() {
char s[] ;
char c ;
printf("要计数的字符是:");
scanf("%c", &c);
printf("请输入字符串:");
scanf("%s",s); printf("%d", str_chnum(s, c));
}

练习11-6

#include <stdio.h>

char *str_chnum(const char* s,int c) {

    while (*s++) {
char* t = s; if (*s == c) {
return t;
break;
} } return NULL;
} int main() {
char s[] ;
char c ;
printf("要计数的字符是:");
scanf("%c", &c);
printf("请输入字符串:");
scanf("%s",s); printf("%s", str_chnum(s, c));
}

练习11-7

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

练习11-8

#include <stdio.h>
#include<stdlib.h> int strtoi( const char* nptr )
{
int sign = , num = ;
if (*nptr == '-') {
sign = -;
nptr++;
}
while (*nptr)
{
num = num * + (*nptr - '');
nptr++;
}
return num * sign;
} int main() {
char c[];
printf("请输入字符串:");
scanf("%s", c);
int m = strtoi(c);
printf("%d",m);
}

明解C语言 入门篇 第十一章答案的更多相关文章

  1. 明解C语言 入门篇 第五章答案

    练习5-1 /* 依次把1.2.3.4.5 赋值给数组的每个元素并显示(使用for语句) */ #include <stdio.h> int main(void) { int i; ]; ...

  2. 明解C语言 入门篇 第四章答案

    练习4-1 #include <stdio.h> int main(void) { int no; int x; do{ printf("请输入一个整数:"); sca ...

  3. 明解C语言 入门篇 第三章答案

    练习3-1 #include <stdio.h> int main() { int x; int y; puts("请输入两个整数."); printf("整 ...

  4. 明解C语言 入门篇 第十三章答案

    练习13-1 /* 打开与关闭文件 */ #include <stdio.h> int main(void) { ]; FILE* fp; printf("请输入你要打开的文件& ...

  5. 明解C语言 入门篇 第七章答案

    练习7-1 #include <stdio.h> int main() { int n; printf(,, ); //此行显示结果为 4 3 6 因为1的字节就是为4,而-1的字节也是4 ...

  6. 明解C语言 入门篇 第六章答案

    练习6-1 /* 求两个整数中的最小值 */ #include <stdio.h> /*--- 返回三个整数中的最小值 ---*/ int min2(int a, int b) { int ...

  7. 明解C语言 中级篇 第四章答案

    练习4-1 /* 珠玑妙算 */ #include <time.h> #include <ctype.h> #include <stdio.h> #include ...

  8. 明解C语言 中级篇 第三章答案

    练习3-1 /* 猜拳游戏(其四:分割函数/显示成绩)*/ #include <time.h> #include <stdio.h> #include <stdlib.h ...

  9. 明解C语言 入门篇 第二章答案

    练习2-1 #include <stdio.h> int main() { int x; int y; int percent; puts("请输入两个整数"); pr ...

随机推荐

  1. 如何使用re模块进行测试用例的参数化

    import re import os from scripts.handle_mysql import HandleMysql from scripts.handle_config import H ...

  2. 黄聪:Mysql开启InnoDB引擎出现1067错误的解决办法

    在my.ini文件添加下面这行: innodb_force_recovery = 1 可以解决:InnoDB: Attempted to open a previously opened tables ...

  3. 【CF528E】Triangles 3000(计算几何)

    [CF528E]Triangles 3000(计算几何) 题面 CF 平面上有若干条直线,保证不平行,不会三线共点. 求任选三条直线出来围出的三角形的面积的期望. 题解 如果一定考虑直接计算这个三角形 ...

  4. DevExpress 使用 GridControl 时,数据源无法立即更新的问题

    背景 在使用 DevExpress 的 GridControl 为其实现 Checkbox 列,发现如果勾选了三行的数据,在遍历 GridControl 绑定的数据源时 Checkbox 列的数据仅有 ...

  5. C#中对文件进行选择对话框打开和保存对话框进行复制

    场景 通过文件选择对话框选择文件 复制文件到指定路径 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号霸道的程序猿获取编程相关电子书.教 ...

  6. c# jetbrains rider使用一段时间后

    先上一个官方的对比图吧.https://www.jetbrains.com/rider/compare/rider-vs-visual-studio/index.html 功能上直接超越visual ...

  7. JS基础语法---冒泡顺序

    冒泡排序: 把所有的数据按照一定的顺序进行排列(从小到大,从大到小) 1. 画图帮助理解如下: 2. 从小到大排序: var arr = [10, 0, 100, 20, 60, 30]; //循环1 ...

  8. SQL学习_WHERE 数据过滤

    1.比较运算符 SQL:SELECT name, hp_max FROM heros WHERE hp_max > 6000 SQL:SELECT name, hp_max FROM heros ...

  9. 炫彩字and鼠标爱心

    <!DOCTYPE html> <style type="text/css"> body{ background-color: black; } #zx { ...

  10. Angular 学习笔记(二)

    控制器: 就像 JavaScript 里的构造函数一般,用来增强作用域(scope),当一个控制器通过 ng-controller 指令来添加到 DOM 中时, ng 会调用该控制器的构造函数来生成一 ...