编写C程序以查找给定字符串是否为Lucky

时间:2015-04-14 03:22:47

标签: c string function pointers

如果字符串中字符的ASCII值之和是偶数,则称字符串是幸运的。该函数接受一个指向字符串的指针并返回一个int 如果字符串是幸运的,则返回值为1,否则返回0。

我尝试过以下代码,但在执行时我遇到了一些错误。

#include<stdio.h>
#include<string.h>
int checklucky(char *a);
int main()
{
    int c;
    c=checklucky(char *a);

    if(c==1)
        printf("%s is lucky",a);
    else
        printf("%s is not lucky",a);

    return 0;
}

int checklucky(char *a)
{
    char name[100];
    int sum=0,len,i;
    a=name;

    printf("Enter the input string\n");
    scanf("%s",name);

    len=strlen(name);

    for(i=0;i<len;i++)
    {
        sum=sum+name[i];
    }

    if(sum%2==0)
        return (1);
    else
        return (0);
}

示例输入和输出1:

Enter the input string
anitha
anitha is not lucky

3 个答案:

答案 0 :(得分:3)

此行不正确,不应编译

c=checklucky(char *a);

您声明checklucky接受指向输入字符串的指针,但实际上您正在checklucky内收集该输入字符串。将该部分移动到main,然后传入字符串。

int main()
{
    int c;
    char name[100];
    scanf("%s",name);

    c=checklucky(name);

然后

int checklucky(char *a)
{
    int sum=0,len,i;

    len=strlen(a);
    // etc.  Refer to a rather than name, 
    // or change the method parameter's name to name.

答案 1 :(得分:0)

Eric J.已经说过你的错误了。

您可以在main()中获取输入字符串,并将指针传递给被调用的函数。您可以通过多种方式修改代码以使其正常运行。

下面是一种方法(它试图保持代码与原始代码类似)

 #include<stdio.h>
 #include<string.h>
 int checklucky( char *);
 int main()
 {
    int c;
    char a[100];
    printf("Input string: ");
    scanf("%s",a);

    c=checklucky(a);

    if(c==1)
        printf("%s is lucky\n",a);
    else
        printf("%s is not lucky\n",a);

    return 0;
}

int checklucky(char *a)
{
    char *name;
    int sum=0,len,i;
    name=a;

    // printf("Enter the input string\n");
    // scanf("%s",name);

    len=strlen(name);

    for(i=0;i<len;i++)
   {
       sum=sum+name[i];
   }

   if(sum%2==0)
       return (1);
  else
       return (0);
}

答案 2 :(得分:0)

sub SomeSub()
    On Error Goto TestFailed

    'Some code

    'Some code

    'Some code

Exit sub

TestFailed:
    'Some code here to alert you to and/or handle the fallout of the error.
End sub