c语言简单程序。有什么错误啊。。。 #include<stdio.h> int main() {i

c语言简单程序。有什么错误啊。。。 #include<stdio.h> int main() {i,第1张

这个程序没错,运行结果也是合情合理的,只不过不是你预期的,那是因为你没有理解输入输出流的概念,重点是这个流的含义,以及没有理解某些特殊字符,比如回车和换行。

你这个程序2次循环,每一次循环输入两个字符,然后分别打印2个字符。

但是你忽略了回车,你每一次输入2个字符之后,要按一下回车字符,而scanf读取2个字符,那么按下的回车并没有被读取,直到下一次循环时回车才会被读取。

所以第二个循环的时候,假如你输入了 x y 回车。 那么实际上a和b存入的值是 a = 回车 b = ‘x'。

注解:

键盘输入的任何数据,都按顺序一个一个排好队等待程序读取,这个队就是输入流。你按下了,如果程序没有读取,则数据一直在那里等待。 你输入 “12回车” 输入流的数据如下

’1‘,’2‘, ’\r‘ 。。

所以'\r'会干扰你的下一次循环。scanf 参数如果是 %c 表示一次从输入流取一个字符。

回车和换行都是特殊字符,回车 = ’\r‘ 换行 = '\n'

改一下程序实现你要的效果,如下。

#include<stdioh>

int main()

{

int i;

char a,b,n;

for (i=1;i<=2;i++)

{

scanf("%c%c%c",&a,&b,&n);

printf("a=%c,b=%c,enter=0x%X\n",a,b,n);

}

printf("enter any key to exit !!\n");

getchar();

return 0;

}

你为什么要写成这样呢,getline我觉得不太好用,具体为什么这里会出问题我再仔细看看,但是想你需要输入的格式来看,改成这样就可以了,我试过没有问题:

getline(cin,command);

//seperate transaction type

typeTran=commandsubstr(0);

//seperate transaction amount

tran=atoi(commandsubstr(2)c_str());

直接将这一部分改为cin>>typeTran>>tran;就完全正常

嗯,问题找到了,可能是由于上一个cin,导致键盘缓冲区中留有一个换行符,所以执行下来后会导致getline(cin,command);直接get到一个换行符,那么tran=atoi(commandsubstr(2)c_str());显然就越界了,因为command就是一个换行符,substr的下标越界。那么修正的话在getline之前清空键盘缓冲区就可以了,测试了没有问题。

cout<<endl<<"Enter a transaction : ";//input a transaction

fflush(stdin);//这里清空键盘缓冲区

getline(cin,command);

//seperate transaction type

typeTran=commandsubstr(0,1);//这里注意,得到第一个字符,那么偏移量为0,获取字符数应该为1,所以需要修改,否则typeTran就和command一样了

//seperate transaction amount

tran=atoi(commandsubstr(2)c_str());

嗯嗯,这样就没问题了

中文全角分号要改成英文半角分号。

如下:

#include <stdioh>

main()

{

double a,b,area;

a=2,b=3;

area=ab;

printf("area=%f\n",area);

}

另外,为了符合标准C,建议这么写:

#include <stdioh>

int main()

{

double a,b,area;

a=2,b=3;

area=ab;

printf("area=%f\n",area);

return 0;

}

以上就是关于c语言简单程序。有什么错误啊。。。 #include<stdio.h> int main() {i全部的内容,包括:c语言简单程序。有什么错误啊。。。 #include<stdio.h> int main() {i、简单c++程序出错。大侠过来看看、c语言初学者按照教材写了一个很简单的程序,为什么会有一个错误求找出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/10174185.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存