鱼C论坛

 找回密码
 立即注册
查看: 1997|回复: 1

为什么我用dev c++输入a=5,b=5,没有结果,而且没有报错,

[复制链接]
发表于 2019-10-20 15:18:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

#include<stdio.h>
int main()    //模仿strncmp函数
{
int a,b,n,d;
scanf("%d",&a,&b);
char star1[a];
char star2[b];
printf("请输入\n");
for(n=0;n<a-1;n++)
        scanf("%c",&star1[n]);
star1[a-1]='\0';
printf("请输入\n");
for(n=0;n<b-1;n++)
        scanf("%C",&star2[n]);
star2[b-1]='\0';
do
{
        n=0;
     d=star1[n]-star2[n];
        n+=1;
  } while(d=0&&n!=a-1);
printf("%d",d);
return 0;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-20 15:58:35 | 显示全部楼层
本帖最后由 jackz007 于 2019-10-20 16:15 编辑

         这句代码有错:
scanf("%d",&a,&b);

         在 star1[0] == star2[0] 的情况下,这个代码无疑会是死循环,必须把 n = 0 放循环外头!
        do {
                n = 0                                          ;
                d = star1[n] - star2[n]                        ;
                n +=1                                          ;
        } while(d = 0 && n! = a - 1)                           ;

     此外,如果 a、b 不一样大,而且,a > b,则把 a 用作 star2 的下标,会导致下标超界。

     所以,代码应该这么修改:
#include<stdio.h>

int main()    //模仿strncmp函数
{
        int a , b , e , n , d                                                 ;
        char c                                                                ;
        scanf("%d%d" , & a , & b)                                             ;
        e = (a > b) ? a : b                                                   ;
        char star1[e]                                                         ;
        char star2[e]                                                         ;
        for(n = 0 ; n < e ; n ++) star1[n] = 0 , star2[n] = 0                 ;
        printf("请输入:")                                                     ;
        fflush(stdin)                                                         ;
        for(n = 0 ; n < a - 1 && (c = getchar()) != '\n' ; n ++) star1[n] = c ;
        star1[n - 1] ='\0'                                                    ;
        a = n                                                                 ;
        printf("请输入:")                                                     ;
        fflush(stdin)                                                         ;
        for(n = 0 ; n < b - 1 && (c = getchar()) != '\n' ; n ++) star2[n] = c ;
        star2[n - 1] = '\0'                                                   ;
        b = n                                                                 ;
        e = (a > b) ? a : b                                                   ;
        for(n = 0 ; n < e && ! (d = star1[n] - star2[n]) ; n ++)              ;
        printf("%d\n" , d)                                                    ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-4 15:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表