lex_glimmer 2016-04-17 13:55 采纳率: 100%
浏览 1325
已采纳

C语言的比较基础的问题

是要判断两个字符串是否由相同字母组成,大小写不论,字符串中的—也不考虑,例如garden ranged
earth heart
veil evil
Roll_in_the_hay Thrill_a_honey都是正确的
代码如下
#include
#include
char* var(char a[])
{
int i, j = 0;
char b = new char[100];
for(i = 0; i < 100; i++)
{
if(a[i] != '_')
{
b[j] = a[i];
j++;
}
else if(a[i] == '\0')
break;
}
b[j] = '\0';
return b;
}
int judge1(char var1[], char var2[]) //判断是否完全相同
{
unsigned int j;
for(j = 0; j < 26; j++)
{
if(var1[j] != var2[j]) break;
}
if(j == 25) return 0;
else return 1;
}
char
judge2(char var[]) //计算词频
{
char *b = new char[26];
unsigned int i, j, l, k = 65;
for(i = 0; i < 26; i++)
{
l = 0;
for(j = 0; j < strlen(var); i++)
{
if((unsigned int)var[j] == k || (unsigned int)var[j] == k + 32) l++;
}
b[i] = l;
k++;
}
return b;
}
int main()
{
char p1[100];
char p2[100];
scanf("%s%s", p1, p2);
while(getchar() != '\n');
if(judge1(judge2(var(p1)), judge2(var(p2))) == 1) printf("Yes\n");
else printf("No\n");
return 0;
}
现在运行时输入后就卡住不动了,求教大神就是输入比如DOCTOR_WHO TORCHWOOD然后,就没有然后了
小白,没有金币,555555

  • 写回答

3条回答 默认 最新

  • 小灸舞 2016-04-17 14:10
    关注

    var函数里for循环会进行100次,此时i已经是100了
    再执行b[j] = '\0';已经造成越界了
    单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题