2 lex glimmer lex_glimmer 于 2016.04.17 21:55 提问

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

4个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.17 22:10
已采纳

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

lex_glimmer
lex_glimmer 谢谢^ω^
2 年多之前 回复
CSDNXIAON
CSDNXIAON   2016.04.17 22:02

C语言基础问题
c语言基础问题
【C语言最基础的输出问题】
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

qq_27416233
qq_27416233   2016.04.18 15:46

写的麻烦了. 你可以全部转化为小写的.之后再把ASC数值加在一起 ,

qq_27416233
qq_27416233 回复lex_glimmer: 留个联系方式.我也在 研究C一起研究
2 年多之前 回复
lex_glimmer
lex_glimmer 好棒的创意
2 年多之前 回复
herozhangbz
herozhangbz   2016.04.17 23:05

有这么麻烦么?写一个toupper或者tolower函数然后直接==看是否相等

herozhangbz
herozhangbz 理解错了……
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言基础面试题(一)
1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值 int a = 4; (A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++); a = ? 答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a; 改后答案依次为9,10,10,11 2.某32位系统下, C++程序
C语言大数问题
关于大数学习的一些小思路:    (    本文以大数整数加法为例)        从小学开始我们就一直在学习加减乘除,很多场合下我们都能够运用自如,并且理论上如果我们休息充足,材料充足而且大脑不短路,手速快的情况下,我们可以算出来任意长度的两个数字的加减乘除的结果,但是毕竟现实当中我们是没有这么多时间的,人的一生很短暂,于是我们便要把这个重任交给我们手中的计算机来解决啦~        那么在学...
C语言面试基础题以及答案
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。 2. 用预处理指令写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。 3.你怎么样用C编写死循环呢? 4. 用变量a给出下面的定义 a)一个整型数(An integer) b)一个指向整型数的指针(A pointer to an integer) c)一个指向指针的的指针,它指向的指针是
C语言 - ACM题目:软件版本问题
题目描述 相信大家一定有过在网上下载软件而碰到多个不同版本的情况。一般来说,软件的版本号由三个部分组成,主版本号(Major Version Number),子版本号(Minor Version Number)和修订号(Revision_Number)。当软件进行了重大的修改时,主版本号加一;当软件在原有基础上增加部分功能时,主版本号不变,子版本号加一;当软件仅仅修正了部分bug时,主版本
C语言的容易遗忘的基础知识
1.在结构体中,符号->的前面是指针变量,符号.的前面是普通变量.   程序中a->b等价于(*a).b 2.枚举enum中第一个元素默认值为0,后面元素依次加一.若是中间元素有赋值的,那其后元素继续依次加一 未完待续...
c语言入门:比较三个数的大小
if(a>b) { max=a; } else { max=b; } if(c>max) { max = c; } 这是最容易理解的方法在之前判断两个数大小的基础上,在if语句中嵌套一个if语句,经过多次判断得出最大数。 这样可以再引用函数中将引用的函数变为max(a,b,c)或者在比较两个数的函数在主程序里变为max=ma
c语言基础面试题
原文: c语言基础面试题 链接:http://bbs.51cto.com/thread-811556-1.html 1. 写一个函数判断当前系统的字节序。 2. 如何用c语言执行shell命令,如何实现管道和重定向功能?要求不能使用system()函数。 3. 函数的自动变量保存在哪里?如果一个int型自动变量未初始化,它的值会是0吗?
c语言基础,常用的几个练习小题目
c语言基础,常用的几个练习小题目//打印菱形 void ling(){ int a[7][7]; for (int i=0; i<=3;i++) { for (int j=0; j<=3; j++) { if (i+j<3) { a[i][j]=' '; } els
经典动态规划问题--数字三角形 POJ--1163
经典动态规划问题--数字三角形 POJ--1163
C语言——A+B+C问题
题目描述 这是一个非常简单的题目,意在考察你编程的基础能力。千万别想难了哦。输入为一行,包括了用空格分隔的三个整数 AA、BB、CC(数据范围均在-40−40 ~ 4040 之间)。输出为一行,为“A+B+CA+B+C”的计算结果。 输入样例 22 1 3 输出样例 26 题目来源:计蒜客(https://www.jisuanke.com/) 我的代码 #includ