Sue. 发表于 2021-9-27 20:01:08

来个大佬

#include <stdio.h>
#include <string.h>
int main()
{char a,b;
int c;
        printf("请输入第一个字符串:");
        scanf("%s",&a);
        getchar();
        printf("请输入第二个字符串:");
        scanf("%s",&b);
        getchar();
        printf("请输入比较的字符数:");
        scanf("%d",&c);
        getchar();
        if(!strncmp(a,b,c))
        {
                printf("这两个字符串完全相等!");
               
        }
       
        else if(a>b)
       
                {
               
               
        printf("比较的结果是:%d\n",a-b);       
        }

        else if(a<b)
        {
       
                printf("比较的结果是:%d\n",b-a);
               
               
               
        }       
       
       
       
       
       
        return 0;
}                                                                                             能帮忙指一下错误吗{:10_299:} 显示一堆警告,也打印不出目标效果

Sue. 发表于 2021-9-27 20:01:52

https://fishc.com.cn/forum.php?mod=viewthread&tid=70626&extra=page%3D1%26filter%3Dtypeid%26typeid%3D570

这个的课后作业

Sue. 发表于 2021-9-27 20:03:04

顺带问一下字符串的ASICⅡ码计算应该怎么表示{:10_316:}是直接让两个字符串相减吗

二路货 发表于 2021-9-27 22:54:50

%s是字符串,你定义的变量是字符,你要定义成字符数组或者字符指针

bszs 发表于 2021-9-28 10:37:03

你定义的 char a,b;
a和b中只能存放字符,而不是字符串,
这样定义 char a;
char b;
" else if(a>b)
      
                {
               
               
      printf("比较的结果是:%d\n",a-b);"
这个多余了,字符串比较函数可以直接判断是否相等

黄jz 发表于 2021-9-28 10:57:14

你定义的是字符变量,只能存一个字符。应该定义一个字符数组,用while循环,getchar()输入

扼言abc 发表于 2021-9-28 11:25:31

char a, b; 定义的是字符变量。但是你在后面输入scanf函数中使用%s,这代表输入的是字符串。这是定义变量与输入形式不一致的问题

Sue. 发表于 2021-9-28 16:11:55

谢谢大佬们~~但改过来后计算结果不一样,计算环节出了啥问题{:10_266:}

bszs 发表于 2021-9-28 16:39:43

Sue. 发表于 2021-9-28 16:11
谢谢大佬们~~但改过来后计算结果不一样,计算环节出了啥问题

把改过的代码发出来看看

bszs 发表于 2021-9-28 17:35:54

本帖最后由 bszs 于 2021-9-28 17:39 编辑

#include <stdio.h>                  //为什么不用scanf而用getchar进行输入,是因为scanf在读取到空格时便停止读取,对于第三个girl friend
#include <string.h>                   //的判断如果遇到空格的话则不会对后面的friend进行判断,而且后面的friend会遗留在缓冲区内,影响b的
                                    //赋值
int main()
{
    char a,b;
    int i,c,x=0,y=0;
      printf("请输入第一个字符串:");
      for(i=0;(a=getchar())!='\n';i++);    //for后面带分号是因为赋值的过程在判断条件内,后面不需要语句
      a='\0';                              //由于是一个字符一字符赋值的,没有'\0',而a内存放的是'\n',手动把它赋值成'\0'即可
      printf("请输入第二个字符串:");
      for(i=0;(b=getchar())!='\n';i++);
      b='\0';
      printf("请输入比较的字符数:");
      scanf("%d",&c);
      if(strncmp(a,b,c)>0)
      {
            for(i=0;i<c;i++)
            {
                x+=a-b;
            }
            printf("%d",x);
      }
      else if(strncmp(a,b,c)<0)
      {
            for(i=0;i<c;i++)
            {
                y+=a-b;
            }
            printf("%d",y);
      }
      else printf("0");
}
这是我自己写的,我也是小白,提供个思路
你看看下面这篇就能明白scanf 和getchar的区别了
https://blog.csdn.net/weixin_44551646/article/details/98076863?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163049156016780366543090%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163049156016780366543090&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-98076863.first_rank_v2_pc_rank_v29&utm_term=getchar&spm=1018.2226.3001.4187

Sue. 发表于 2021-9-28 20:45:56

bszs 发表于 2021-9-28 17:35
这是我自己写的,我也是小白,提供个思路
你看看下面这篇就能明白scanf 和getchar的区别了
https://blo ...

好的谢谢{:10_298:}
页: [1]
查看完整版本: 来个大佬