C语言程序中,正常情况下按ENTER键为运行键。
如果出现按ENTER键换行的现象肯定是C语言代码有异常,仔细查询错误。
例如:
#include <stdioh>
void main ()
{
int a,b,c;
printf("输入两个数:\n");
scanf("%d%d",&a,&b); //注意scanf里面的格式
c=a+b;
printf("%d",c);
}
668977
c=2
进 case c-'2' -- case 0:
case 1: 打 c+4 输出 6 (2+4=6)
进 case 2: 打 c+4 输出 6 (2+4=6), break 退出
[66]
c=4
进 case c-'2' -- case 2:
打 c+4 输出 8 (4+4=8), break 退出
[8]
c=7
进 case c-'2' -- case 5: default:
打 c+2 输出 9,退出
[9]
c=3
进 case c-'2' -- case 1: 打 c+4 输出 7
进 case 2: 打 c+4 输出 7 (3+4=7), break 退出
[77]
10。程序运行时键盘输入9,则输出的结果是10。当以前缀形式出现时,贝U 先进行加一或减一 *** 作,再取值,当以后缀形式出现时,则先取值,再进行加一或减一 *** 作。判断条件中if (a++回答于 2022-12-17
首先提醒一下这位兄弟:scanf("%d,%d",&a,&b);
谭浩强的教材里面这里有错误,scanf里面应该是 scanf("%d%d",&a,&b);否则你输入时就应该输入。
然后这是因为你到运行环境不同。你应该是在DEV下面运行的,还要加上这样的语句:#include<stdlibh> system("pause");
我已经调试过了,没有问题,希望能帮助你。
$R 或 $r
试试
帮助里面有说明
看附图
程序段(Program segment)就是一段程序,可以是一个子过程SUB,一个函数FUNCTION,或者是面向对象程序设计中的一个方法。程序都是从上到下施行的。
以ASP为例
第一种:
<%
if 条件 then
responsewrite "2"
responsewrite "5"
responsewrite "4"
responsewrite "2"
responsewrite "1"
responsewrite "2"
responsewrite "3"
else
responsewrite "else"
end if
%>
第二种:
<%
if 条件 then
call isdo '调用子过程
else
responsewrite "else"
end if
sub isdo
responsewrite "2"
responsewrite "5"
responsewrite "4"
responsewrite "2"
responsewrite "1"
responsewrite "2"
responsewrite "3"
end sub
%>
这两种的施行结果是一样的,但是第二种代码显的直观很多,可读性强。因为你中间的代码如果不止这些比这多得多的话,读程序的人就很难找到ELSE,这时候最好用子过程。
需要两次的原因:
while (getline(cin, line)) //程序停(阻塞)在这里等待输入。你输入后,返回一个长度(非零值)
{
cout << line << endl; // 程序执行
} //到这里后,程序将继续回到while (getline(cin, line)) 处等待。为什么?C语言就这么规定的
第二次输入回车,getline(cin, line)返回0,退出while。修改:直接去掉while。
int main()
{
string line;
// read line at time until end-of-file
getline(cin, line);
cout << line << endl;
return 0;
}
斗胆问一下:
1 您当初要while,想让他干什么??
2 您很了解while的行为规则吗??
可以用WinApi实现,需要包含windowsh。
需要两个模块,一个是检测回车键的模块,一个是模拟输入指令的模块。
检测回车键,有两个函数可以用: GetKeyState和GetAsyncKeyState,两个函数的参数都是虚拟键码,虚拟键码可以在网站上查询:虚拟键码 | Microsoft Learn
两个函数的返回值相同:返回一个short型的数,short型是16位有符号的数据类型,如果要查询的键被按下,返回值最高位被置1,则这个数表示负数,所以可以用<0或>0来判断。
两个函数的区别在于,GetKeyState返回的不是键盘真实状态,而是程序获得的键盘消息。简单地说,如果程序没有获得焦点,则无法获得按键信息,返回的是没有按键的状态。而GetAsyncKeyState返回的是按键的真实状态。
将GetAsyncKeyState放入循环,每次循环检测有没有按下回车键,如果按下则模拟输入指令;每次循环后Sleep一段时间,节约系统资源。
模拟输入指令同样有两种方法:向指定窗口发送按键信息sendMessage和模拟按键
由于我测试的软件无法用第一个方法,我只介绍第二个方法。
模拟按键就像真实按键一样,只有目标窗口获得焦点时,按键信息才会被目标窗口接收到。因此,一方面,程序不能获得焦点,只能用GetAsyncKeyState函数;另一方面,我们需要让目标窗口获得焦点。
让目标窗口获得焦点。最简单的方法是手动 *** 作,点击一下。当然也可以用FindWindow函数,或者由程序启动目标程序并获得句柄,然后调用winapi使其获得焦点。由于需求是按回车键开始模拟按键,手动 *** 作即可,这里不多赘述。
模拟按键一般使用函数Keybd_event。函数有4个参数,一般情况下,第2、4个参数置0即可,第1个参数是按键的虚拟键码,第3个参数是按键状态,0是按下,KEYEVENTF_KEYUP是抬起。注意按下和抬起之间建议Sleep几毫秒,否则目标窗口可能无法获取到按键信息。
模拟鼠标点击一般使用mouse_event,一般与SetCursorPos(x,y)函数一起使用。与Keybd_event类似,mouse_event有5个参数。第1个为dwFlags,如下图。第2、3个参数分别表示鼠标的相对位置,一般置0。第4个参数是dwData,滚轮移动数量,正值向前,负值向后。第5个参数一般置0。
使用方法与Keybd_event函数相似。用SetCursorPos(x,y)函数将鼠标光标移到指定位置(距离屏幕左边x,距离屏幕上边y),用mouse_event模拟鼠标点击。也可以先用mouse_event鼠标按下后,再用SetCursorPos(x,y)模拟鼠标拖动。最好中间也Sleep几毫秒。
GetKeyState_百度百科
GetAsyncKeyState_百度百科
以上就是关于C语言程序运行时按ENTER键是换行是怎么回事全部的内容,包括:C语言程序运行时按ENTER键是换行是怎么回事、若运行以下程序时,从键盘输入2473,回车,则程序的运行结果是、程序运行时键盘输入9<回车>等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)