C primer plus 第六版 第九章 第七题 编程练习答案

版权声明:转载请注明来源~ https://blog.csdn.net/Lth_1571138383/article/details/80536240

Github 地址:这里这里φ(>ω<*)

/*
    本程序应 习题-7 建立。
  题目要求: 编写一个函数,从标准输入中读取字符,直到遇到文件结尾。
              程序要报告每个字符是否是字母,如果是,还要报该字母在字符表中的数值位置。
    例如 c 和 C 在字母表中的位置都是 3 。
          合并一个函数,以一个字符作为参数,如果该字符是字母则返回一个数值位置,否则返回-1。
*/
#define _CRT_SECURE_NO_WARNINGS


#include<stdio.h>
#include<ctype.h>


int read(char ch);


int main(void)
{
int i = 0;       // 循环用。


int p = 0;       // 保存子函数返回值。


char file[200];


// 读取输入。
printf("Please input ( Use char '#' to quit) :");

scanf("%c", &file[i]);


for (i = 1; file[i-1] != '^'; i++)
{
scanf("%c", &file[i+1] );
}
putchar('\n');


// 调用子函数判断。
for (i = 0; file[i] != '^'; i++)
{
p = read( file[i] );
if (p == -1)
{
printf("Is not char . %d \n", p);
}
else
{
printf("The %c is %d.\n", file[i], p);
}
}


printf("\nBye !\n");
getchar();


return 0;
}


int read(char ch)
{
int i = 0;        // 循环用。
int p = 0;        // 不为字符时返回 -1 。
char change = 0;  // 保存 小写转大写字母 的结果。


if ( ( ch >= 'a'&& ch <= 'z' ) || ( ch >= 'A' && ch <= 'Z' ) )
{
// 实参为字符时,处理字符。


if (ch >= 'a' || ch <= 'z')
{
// 如果为小写。小写转大写。
change = toupper(ch);

for (i = 0; i < (change - 64); i++)
{
// 该循环为本题核心思想。


// 为实现输出 当前字母在字母表中的位置。 将 小写字母转大写, 
// 并用 大写字母的ASCII码 的相应位置 减去 大写A之前的 64 个ASCII码值,
// 即可得到一个大写字母的字母表。 (小写方法一样。)
// 最后用 i 自加得出 当前字母在字母表中的位置。
;
}


p = i;
}
else
{
for (i = 0; i < (ch - 64); i++)
{
;
}


p = i;
}
}
else
{
p = -1;
}


return p;
}

猜你喜欢

转载自blog.csdn.net/Lth_1571138383/article/details/80536240