C语言读程序题,求大神疑难解答程序包下载!

19:32 提问
求大神帮忙看一下c语言字符题目~~
从键盘上输入一个满足格式(形如“ A1,234 ” )要求的字符串(其长度不超过20),编程将其从分割符(“,”)位置分割成两个部分(如 A1 和 234 两个字符串),并在屏幕上分两行顺序显示分割后的结果(输入输出格式示例如下)。
输入: A 1, 234
输出 1 : A1
输出 2 : 234
方法1:不真正分隔,只是寻找分隔标志(逗号),然后用'\n'替代实现分两行输出。
方法2:真正以逗号作为分隔符,将字符串分成两个子串。
#include&stdio.h&
int main()
char c[100],a=0,b=0,d=0,i=0;
while(c[i]!=',');
{printf("%c",c[i]);
printf('\n');
while(c[i]!='\0')
{printf("%c",c[i]);
printf('\n');
我写的代码输出不了结果 请问为啥
按赞数排序
#include &stdio.h&
int main()
char c[100],a=0,b=0,d=0,i=0;
while(c[i]!=',') //这有问题
printf("%c",c[i]);
printf("\n");
//这有问题
while(c[i]!='\0')
printf("%c",c[i]);
printf("\n");
//这有问题
可以试着用 scanf 代替 gets 试试看
题主,请看您代码的最后一句【printf('\n');】,这一句很明显是个错误,因为里面的【'\n'】表示一个字符,而printf函数的第一个参数必须是字符串形式!
所以最后一句代码应该改成【printf("\n");】,因为双引号里面的内容才代表一个字符串
还有,中间的那行也是【printf('\n');】同样的错误,两个都改过来就可以运行了
int main()
char c[100],a=0,b=0,d=0,i=0;
while(c[i]!=',');
{printf("%c",c[i]);
printf('\n');
while(c[i]!='\0')
{printf("%c",c[i]);
printf('\n');
//加上 return 0;
#include&stdio.h&
int main()
char c[100],a=0,b=0,d=0,i=0;
while(c[i]!=',');
{printf("%c",c[i]);
printf('\n');
while(c[i]!='\0')
{printf("%c",c[i]);
printf('\n');
//加上 return 0;
我想知道你用的是什么编译器,gets()函数在ISO/IEC (C11)标准中被移除
int main()
char c[100], a = 0, b = 0, d = 0, i = 0;
while ((c[i] = getchar()) != '#')
while (c[i] != ',')
printf("%c", c[i]);
printf("\n");
while (c[i] != '#')
printf("%c", c[i]);
printf("\n");
while多了一个分号啊,成了死循环
while(c[i]!=',');
i=0,c[0]!=','为真,因此执行while,而没有循环体,所以继续下次检测c[0]!=',',为真,以此重复
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐C程序运行崩溃,面试题,求大神解释解决思路 - C语言当前位置:& &&&C程序运行崩溃,面试题,求大神解释解决思路C程序运行崩溃,面试题,求大神解释解决思路www.MyException.Cn&&网友分享于:&&浏览:0次C程序运行崩溃,面试题,求大神解释
#include&string.h&
int&main()
char&*str=&a;
strcpy(str,"hello");
puts(str);
}------解决思路----------------------你的str指向了a,a只有一个字节,.....溢出了,可能出错也可能不出错,------解决思路----------------------只分配一个字节,空间不足,应该这样修改:
#include&stdio.h&
int&main()
&&&&char&a[10];
&&&&char*&str&=&(char*)a;
&&&&strcpy(str,&"hello");
&&&&puts(str);
&&&&return&0;
------解决思路----------------------使用了非法内存,你只有一个字符(1B)是申请的,可以合法使用,而后面你使用了多个空间,因此崩溃!------解决思路----------------------这是一个典型的栈溢出问题。
C语言运行时内存分为2块,堆内存和栈内存。所有的函数在发生调用关系时,会自动在栈内存上进行展开,就是生成一些数据,我们称之为上下文,展开的地址顺序很奇怪,是由高址向低地址空间展开的。
运行时发生函数调用时,栈上会存放一些数据,这些数据分为2个部分。在这里,你可以认为函数调用就是一个超级版本的goto语句,它跳到被调用函数的首地址,等执行完了,再跳回来。
为了完成整个过程,编译器需要建立上下文,比如,传给被调用函数的参数,最重要的是,被调用函数执行完之后,它返回的地址。这些都是数据,存储在栈上。这是第一部分的数据。另一部分数据,则是被调用函数在执行过程中,自己生成的一些临时变量,比如LZ提供的代码中的变量:&char&a;&char*&str;
现在我们再看LZ提供的如下代码语句:
strcpy(str,"hello");
显然,地址越界了,现在的a&的值应该是'h',然后呢,‘ello’这四个字节就把一些其它的内存覆盖了,最大的可能性就是覆盖了main函数的返回地址。现在,当程序返回后,发现所在的指令地址在一个莫名其妙的地方,如果你的运气不错,这个地方不是可执行区域,那么操作系统会为你捕获这个异常,引发一个访址异常,程序崩溃。如果你的运气比较糟糕,这仍然是一个可执行区域,那么,恭喜你,You&have&been&hacked!
12345678910
12345678910
12345678910 上一篇:没有了下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 396 人关注过本帖
标题:这个程序很简单,但是我不知道怎么解决这个问题!求大神指点!
等 级:新手上路
帖 子:20
结帖率:100%
&&已结贴√
&&问题点数:10&&回复次数:6&&&
这个程序很简单,但是我不知道怎么解决这个问题!求大神指点!
#include &stdio.h&
&&& int main()
&&&&&&&&printf(&&&&&&&&&&&&&&&&&&&&&&&&&性格测试(一)\n&);
&&&&&&&&printf(&这个测试是菲尔博士在著名女黑人欧普拉的节目里做的,满准确的。答覆是依现在的您,不要依过去的您。这是一个目前很多大公司人事部门实际采用的测试。\n\n\n&);
&&&&&&&&int ch1,ch2;
&&&&&&&&int mark=0;
&&&&&&&&printf(&1.你什么时感觉最好?\na)早晨&&b)下午及傍晚&&c)夜里\n请输入你的选择:&);
&&&&&&&&scanf(&%c&,&ch1);
&&&&&&&&if(ch1=='a')
&&&&&&&&&&&&mark+=2;
&&&&&&&&}else if(ch1=='b')
&&&&&&&&&&&&mark+=4;
&&&&&&&&}else if(ch1=='c')
&&&&&&&&&&&&mark+=6;
&&&&&&&&}else
&&&&&&&&&&&&printf(&你的输入有误!视为不选!&);
&&&&&&&&printf(&\n&);
&&&&&&&&printf(&2.你走路时是……\na)大步的快走&&b)小步的快走\nc)不快,仰著头面对著世界&&d)不快,低著头&&e)很慢\n请输入你的选择:&);
&&&&&&&&scanf(&%c&,&ch2);
&&&&&&&&if(ch2=='a')
&&&&&&&&&&&&mark+=6;
&&&&&&&&}else if(ch2=='b')
&&&&&&&&&&&&mark+=4;
&&&&&&&&}else if(ch2=='c')
&&&&&&&&&&&&mark+=7;
&&&&&&&&}else if(ch2=='d')
&&&&&&&&&&&&mark+=2;
&&&&&&&&}else if(ch2=='e')
&&&&&&&&&&&&mark+=1;
&&&&&&&&}else
&&&&&&&&&&&&printf(&你的输入有误!视为不选!\n&);
&&&&&&&&printf(&\n&);
&&&&&&&&printf(&%d&,mark);
&&&&&&&&system (&pause&);
&&&&&&&&return 0;
编译之后第一道题很正常,第二道题就不能读取答案了,也就是说后续的题也不能做了。求解怎么破!
[此贴子已经被作者于 22:12编辑过]
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
ch1,ch2定义为int但用字符方式读取是不正确的方式。
char ch1,ch2,
scanf(&%c&,&ch1);
ch=getchar();
scanf(&%c&,&ch2);
ch=getchar();
&&&唯实惟新 至诚致志
来 自:广州
等 级:论坛游侠
帖 子:40
专家分:118
没有添加 stdlib.h
还有 你输入的时候要按回车键
程序将回车键作为你对第二题的输入
&printf(&\n&);
&在这个后面加入 getchar();
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1317
专家分:6927
很简单,少年你没有清空缓冲区啊
#include &stdio.h&
int main()
&&& printf(&&&&&&&&&&&&&&&&&&&&&&&&&性格测试(一)\n&);
&&& printf(&这个测试是菲尔博士在著名女黑人欧普拉的节目里做的,满准确的。答覆是依现在的您,不要依过去的您。这是一个目前很多大公司人事部门实际采用的测试。\n\n\n&);
&&& char ch1,ch2;
&&& int mark=0;
&&& printf(&1.你什么时感觉最好?\na)早晨&&b)下午及傍晚&&c)夜里\n请输入你的选择:&);
&&& scanf(&%c&,&ch1);
&&& fflush(stdin);
&&& if(ch1=='a')
&&&&&&&&mark+=2;
&&& }else if(ch1=='b')
&&&&&&&&mark+=4;
&&& }else if(ch1=='c')
&&&&&&&&mark+=6;
&&&&&&&&printf(&你的输入有误!视为不选!&);
&&& printf(&\n&);
&&& printf(&2.你走路时是……\na)大步的快走&&b)小步的快走\nc)不快,仰著头面对著世界&&d)不快,低著头&&e)很慢\n请输入你的选择:&);
&&& scanf(&%c&,&ch2);
&&& fflush(stdin);
&&& if(ch2=='a')
&&&&&&&&mark+=6;
&&& }else if(ch2=='b')
&&&&&&&&mark+=4;
&&& }else if(ch2=='c')
&&&&&&&&mark+=7;
&&& }else if(ch2=='d')
&&&&&&&&mark+=2;
&&& }else if(ch2=='e')
&&&&&&&&mark+=1;
&&&&&&&&printf(&你的输入有误!视为不选!\n&);
&&& printf(&\n&);
&&& printf(&%d分&,mark);
&&& return 0;
等 级:新手上路
帖 子:20
回复 4楼 hjx1120
虽然不知道什么是缓冲区(我是新手)。。。不过竟然真的可以。。真是太感谢了!!
等 级:新手上路
帖 子:20
回复 3楼 z
根据您的指导问题得到了完美的解决。O(∩_∩)O谢谢。
等 级:新手上路
帖 子:20
回复 2楼 qq
根据您的指导,问题得到了完美的解决。O(∩_∩)O谢谢
版权所有,并保留所有权利。
Powered by , Processed in 0.302077 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reservedc语言阅读程序题_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
c语言阅读程序题
&&c语言阅读程序题
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩29页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢(明儿再说吧)
(我不中意你呀)
第三方登录:

我要回帖

更多关于 程序员 菜鸟 大神 的文章

 

随机推荐