0

这就是我到目前为止所拥有的。

#include <stdio.h>
#include <stdlib.h>

int main(void) {
   int  value;
   char c='Z';
   char alph[30]="there is a PROF 1 var orada";
   char freq[27];
   int i;

   // The function isAlphabetic will accept a string and test each character to 
   // verify if it is an alphabetic character ( A through Z , lowercase or uppercase)
   // if all characters are alphabetic characters then  the function returns 0.  
   // If a nonalphabetic character is found, it will return the index of the nonalpabetic
   // character. 

   value = isAlphabetic(alph);

   if (value == 0) 
       printf("\n The string is alphabetic");
   else 
       printf("Non alphabetic character is detected at position %d\n",value);
   return EXIT_SUCCESS;
}

int isAlphabetic(char *myString) {
}

我感到困惑的是,我将如何让程序扫描字符串以准确检测非字母字符的位置(如果有)?我猜它首先会涉及首先计算字符串中的所有字符?

4

4 回答 4

3

不会通过代码提供答案(就像其他人所做的那样),但请考虑:

  1. C 中的字符串只不过是一个字符数组和一个空终止符。
  2. 例如,您可以使用 [](即 input[i])遍历数组中的每个项目,以根据 ASCII 表检查其值。
  3. 一旦找到一个非字母的值,您的函数就可以退出。

当然还有其他方法可以解决这个问题,但我的假设是,在这个级别上,如果你开始使用一堆你没有学过的库/工具,你的教授会有点怀疑。

于 2013-01-25T16:47:48.437 回答
2

让我们一次一个地回答你的问题:

...我将如何让程序扫描字符串...

“通过字符串扫描”意味着你用循环给猫剥皮:

char xx[] = "ABC DEF 123 456";
int ii;

/* for, while, do while; pick your poison */
for (ii = 0; xx[ii] != '\0'; ++ii)
{
    /* Houston, we're scanning. */
}

...检测...

“检测”意味着您通过某种比较给猫剥皮:

char a, b;
a == b; /* equality of two char's */
a >= b; /* greater-than-or-equal-to relationship of two char's */
a < b;  /* I'll bet you can guess what this does now */

...正是非字母字符所在的位置...

好吧,由于您的索引,通过扫描,您将知道“确切的位置”。

于 2013-01-25T16:49:59.583 回答
0

从第一个字母扫描到最后一个字母。从设置为 0 的计数器变量开始。每次移动到下一个字符时,执行 counter++;这将为您提供非字母的索引。如果您发现任何非字母字符,请返回 counter 本身。

于 2013-01-25T16:53:53.030 回答
0

我会给你一个提示:

#include <stdio.h>

int main()
{
        char c = '1';
        printf("%d",c-48); //notice this
        return 0;
}

输出:1

现在应该足够自己解决了:)

于 2013-01-25T17:00:25.803 回答