Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 比较字符串的字符_C_String - Fatal编程技术网

C 比较字符串的字符

C 比较字符串的字符,c,string,C,String,如何使用if比较字符串的每个字符,string[i]i是hat字符串序列的数字。这个程序的思想是给字母赋值,比如a=1,b=2,如果我在控制台a,b,a,b中写一个单词,我会得到1+2+1+2的和。 我想比较字符串的每个字符,直到字符串结束。大概是这样的: #include <stdio.h > int main () { char string1[20]; char a='a', b='b', g='g', X='X', i='i', H='H', V='V

如何使用if比较字符串的每个字符,string[i]i是hat字符串序列的数字。这个程序的思想是给字母赋值,比如a=1,b=2,如果我在控制台a,b,a,b中写一个单词,我会得到1+2+1+2的和。 我想比较字符串的每个字符,直到字符串结束。大概是这样的:

#include <stdio.h >


int main ()
{
    char string1[20];


    char a='a', b='b', g='g', X='X', i='i', H='H', V='V', d='d', e='e', v='v', z='z', E='E', T='T', I='I', k='k', l='l', m='m', n='n', o='o', p='p', j='j', r='r', s='s', t='t', u='u', f='f', q='q', R='R', y='y', S='S', w='w', C='C', W='W', x='x', h='h', c='c', J='J', Z='Z';




    int rigi;
    int sum;

    printf (" my word is:\n");
    scanf( "%19s ", string1);



     sum=0;
       for (rigi = 0; string1[rigi] !='\0'; rigi++)
    {

    if (string1[rigi]==a ) {sum= sum +1;} else
    if (string1[rigi]==b ) {sum= sum +2;} else
    if (string1[rigi]==g ) {sum= sum +3;} else
    if (string1[rigi]==d ) {sum= sum +4;} else
    if (string1[rigi]==e ) {sum= sum +5;} else
    if (string1[rigi]==v ) {sum= sum +6;} else
    if (string1[rigi]==z ) {sum= sum +7;} else
    if (string1[rigi]==E ) {sum= sum +8;} else
    if (string1[rigi]==T ) {sum= sum +9;} else
    if (string1[rigi]==i ) {sum= sum +10;} else 
    if (string1[rigi]==k ) {sum= sum +20;} else
    if (string1[rigi]==l ) {sum= sum +30;} else
    if (string1[rigi]==m ) {sum= sum +40;} else
    if (string1[rigi]==n ) {sum= sum +50;} else
    if (string1[rigi]==I ) {sum= sum +60;} else
    if (string1[rigi]==o ) {sum= sum +70;} else
    if (string1[rigi]==p ) {sum= sum +80;} else
    if (string1[rigi]==J ) {sum= sum +90;} else
    if (string1[rigi]==r ) {sum= sum +100;} else
    if (string1[rigi]==s ) {sum= sum +200;} else
    if (string1[rigi]==t ) {sum= sum +300;} else
    if (string1[rigi]==V ) {sum= sum +400;} else
    if (string1[rigi]==u ) {sum= sum +0;} else
    if (string1[rigi]==f ) {sum= sum +500;} else
    if (string1[rigi]==q ) {sum= sum +600;} else
    if (string1[rigi]==R ) {sum= sum +700;} else 
    if (string1[rigi]==y ) {sum= sum +800;} else
    if (string1[rigi]==S ) {sum= sum +900;} else
    if (string1[rigi]==C ) {sum= sum +1000;} else
    if (string1[rigi]==c ) {sum= sum +2000;} else
    if (string1[rigi]==Z ) {sum= sum +3000;} else
    if (string1[rigi]==w ) {sum= sum +4000;} else
    if (string1[rigi]==W ) {sum= sum +5000;} else
    if (string1[rigi]==x ) {sum= sum +6000;} else
    if (string1[rigi]==X ) {sum= sum +7000;} else
    if (string1[rigi]==j ) {sum= sum +8000;} else
    if (string1[rigi]==h ) {sum= sum +9000;} else
    if (string1[rigi]==H ) {sum= sum +1000;} else
    {sum=0;}

       }

    printf ("%d\n" , sum);
    return 0;

}

您需要初始化变量a和b。 我是这样想的

char a='a', b='b';
检查此代码。我想这就是你需要的

int main ()
{
    char string[20];
    char a='a', b='b';
    int i = 0;
    int sum = 0;
    printf (" my word is:\n");
    scanf ( "%s", string);

    for (i = 0; string[i] !='\0'; i++)
    {
        if (string[i]==a ) 
        {            
             sum= sum + 1;
        } 
        else if (string[i]==b ) 
        {
             sum= sum + 2;
        }
    }
    printf ("%d\n" , sum);
    return 0;

}
为什么不试试这个呢。头文件ctype.h中包含的toascii函数基本上将字符转换为其ASCII值,但由于a的ASCII值为97,我们可以减去96,得到a为1,b为2,以此类推。如果你想,你可以检查字符是大写还是小写,并使其高级化。但现在,我已经包括了一个简单的关于小信只。希望你得到你的答案

    #include<stdio.h>
    #include<ctype.h>
    #include<string.h>
    main()
    {
     int i,value = 0;
     char string[10];
     printf("Enter a word");
     scanf("%s",string);
         for(i=0;i<strlen(string);i++)
     {
    value = value + (toascii(string[i]) - 96);
     }

      printf("the sum is = %d",value);
     }
这就是你想要做的吗??
如果你想要的话,你可以点击勾号。

p.S我在某些地方使用空格[i know]->呃,你发布的代码是无法编译的,而且是无法阅读的?!解释和1=1;和2=2;代码中的警告和错误比代码行中的警告和错误多:sum1只是我给a的一个值character@GiorgiAzizGvimradze,您可以编辑您的帖子,并修复它。在它当前的状态下,甚至没有人会试图帮助你。调试错误!运行时检查失败3-变量i未初始化而正在使用。这是崩溃错误哇,这比我的好,谢谢你,我会试试看,是的,读一下错误,看看你的代码。您没有初始化代码中的变量a、b、i等。为了访问第一个元素,i应该等于零。要将变量a与值“a”进行比较,应使用“a”进行初始化确定。在复制之前请理解我做的,这正是我想要的,这很难。我只是一个初学者:只要试着复制和运行它,看看每一行,如果我们在这里有任何问题,我只学到了,我不能理解操作,但我会尝试运行,如果我得到我想要的东西,这是可行的!!!但我不知道怎么回事…:但我希望我能很快学会。谢谢大家,你们仍然可以批准我的ans接受我的答案问题是每个字符都有其ascii值,例如A=65 A=97,toascii进行转换,我们只需根据需要以自己的方式修改和使用即可