永发信息网

c语言 译码打印字符,输入1'字符串2字符串整数转化成二进制,根据索引1输出字符串中的字符

答案:2  悬赏:40  手机版
解决时间 2021-01-10 01:35
  • 提问者网友:回忆在搜索
  • 2021-01-09 12:12
c语言 译码打印字符,输入1'字符串2字符串整数转化成二进制,根据索引1输出字符串中的字符
最佳答案
  • 五星知识达人网友:春色三分
  • 2021-01-09 13:32
把描述写清楚一点,或直接给出题目链接,看的不是很明白追问朋友你好~题目就是这样的,我是全部复制过来的....登陆OJ需要权限,所以只是copy过来....请见谅追答因为你这里的整数没有给出范围,所以,不确定如何检查和处理

“如果索引大于字符串的长度小于,则不输出任何字符” 这段话说的让人不好理解。 是不是索引大于或小于串长都不输出啊?
我再看看追问嗯~那句话确实很费解,这个函数可以追答是这里的错:
        //if(i > length2) //这里应该改成 
        if ( i >= length2 ) //不然会有越界现象
        {
            break;
        }
以下测试代码可以让你看出来:

for(i = 0; i < length3;i++)
{
if(i > length2) //-----未改时
{
break;
}
else
{
if(*(p - i) == '1')
{
printf("[%c]",string[i]);//---你输入15 ab就会看出问题了
}
}
}
全部回答
  • 1楼网友:怙棘
  • 2021-01-09 14:23
#include
#include
#include
#define M 1000
void main()
{
char data[M];
char string[M],temp1[M];
int length1,length2,i;
int temp;
scanf("%s",data);
scanf("%s",string);
length1 = strlen(data);
length2 = strlen(string);
temp = atoi(data);
i = 0;
while(i < length1 && i < length2)
{
if(((temp >> i) & 0x0001) == 0x0001)
{
printf("%c",string[i]);
}
i++;
}
}追问谢谢回答~请问下额的code问题出在哪里了,因为提交次数有限,所以想搞的清楚些...追答不能通过所有测试例,麻烦大侠帮忙看看...
////
通不过的有哪些追问要是能知道就好了,呵呵~3个测试例,有一个没过...追答哪一个测试例没过追问还没试~想找到原因,因为次数有限...感觉问题就出在“如果索引大于字符串的长度小于,则不输出任何字符”,因为我两次改的在这种情况下输出截然不同,又因为每次都能过两个,说明那两次测试点不是这里的输出,那错误的测试例应该就是这个点了了....追答错误的测试例 输入的是什么追问不知道,没有给出,我上边两次输出区别就是,例如输入 3 a ,两次输出分别是 a 和不输出任何字符追答length2 = strlen(string);
length3 = strlen(temp1);
if(length2 > length3)//输入 3 a 时,length2 == 1,length3 ==2,if条件为假,下面的就没有执行了
{
p = temp1 + length3 -1;
for(i = 0;i < length3; i++)
{
if(*(p - i) == '1')
{
printf("%c",string[i]);
}
}
}追问是的~就是不知道题目想让输出什么,kaixingui2012同学的做法和我后来改的那个差不多吧,还有就是J会小于0么,雪ye同学,刚才本机跑了下你的程序,输入13 abcd结果不对,有点事,先出去下,马上回来,欢迎讨论追答#include
#include
#include
#define M 1000
void main()
{
char data[M];
char string[M],temp1[M];
int length1,length2,i;
int temp;
scanf("%s",data);
scanf("%s",string);
length2 = strlen(string);
temp = atoi(data);
i = 0;
while(i < sizeof(int)*8 && i < length2)// 第一个判断有问题 改对了
{
if(((temp >> i) & 0x0001) == 0x0001)
{
printf("%c",string[i]);
}
i++;
}
printf("\n");
}
/////////////////////////////////////////////////////////
你后来改的问题是有的,第一份代码存在的问题是
输入最大索引值比字符串长度大则
if(i > length2)//当 i == length2 时这里不会break;
下面的
printf("%c",string[i]);
就有点问题了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯