/*
本程序应 习题-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;
}
C primer plus 第六版 第九章 第七题 编程练习答案
版权声明:转载请注明来源~ https://blog.csdn.net/Lth_1571138383/article/details/80536240
猜你喜欢
转载自blog.csdn.net/Lth_1571138383/article/details/80536240
今日推荐
周排行