永发信息网

c语言中printf到底是到了那个语句就执行还是程序结束后才一起执行呢

答案:3  悬赏:20  手机版
解决时间 2021-02-27 03:04
  • 提问者网友:却不属于对方
  • 2021-02-26 06:22
#include<stdio.h>
int main()
{int op1=0,op2=0,result;
char ch,op;
int flag=0;
//按字符读入四则运算
while((ch=getchar())!='\n')
{
while(ch!='=') //等号结束四则运算的输入
{ if(ch>='0'&&ch<='9') //操作数的处理
//flag:0第一个操作数,1第二个操作数
if(!flag) op1=op1*10+ch-'0';
else op2=op2*10+ch-'0';
else if(ch=='+'||ch=='-'||ch=='*'||ch=='/')//操作符处理
{op=ch; flag=1;} //转换操作数

ch=getchar();
}
switch(op)
{ case '+': result=op1+op2;break;
case '-': result=op1-op2;break;
case '*': result=op1*op2;break;
case '/': result=op2?op1/op2:0;break;
}
printf("%d%c%d=%d\t",op1,op,op2,result);
flag=0;op1=0,op2=0; //初始化下一四则运算式

}
putchar('\n');
return 0;
}
感觉这个例子把我弄晕了,末尾的输出整个等式,为什么是最后按了回车键之后几个等式的值整体出现呢,这样我连续输入result什么的值难道不会改变吗...
最佳答案
  • 五星知识达人网友:鸽屿
  • 2021-02-26 06:28
#include<stdio.h>
int main()
{int op1=0,op2=0,result;
 char ch,op;
 int flag=0;
 //按字符读入四则运算


while((ch=getchar())!='\n')
{
  while(ch!='=') //等号结束四则运算的输入
 {  if(ch>='0'&&ch<='9') //操作数的处理
   //flag:0第一个操作数,1第二个操作数 
        if(!flag) op1=op1*10+ch-'0';
         else op2=op2*10+ch-'0';
else  if(ch=='+'||ch=='-'||ch=='*'||ch=='/')//操作符处理
{op=ch; flag=1;}  //转换操作数

  ch=getchar();
}


switch(op)
 {  case '+': result=op1+op2;break;
    case '-': result=op1-op2;break;
case '*': result=op1*op2;break;
case '/': result=op2?op1/op2:0;break;
 }

 printf("%d%c%d=%d\t",op1,op,op2,result);
  flag=0;op1=0,op2=0;  //初始化下一四则运算式

}
putchar('\n');
 return 0;
}这里的循环是一环套一环的,在执行完两个循环后才做的打印语句,而又因为这里套在一个大的循环之下,所以打印完了还是会回到第一个循环下的。
全部回答
  • 1楼网友:空山清雨
  • 2021-02-26 08:30
你要是要输一个出一个结果的话还是加循环吧。因为while((ch=getchar())!='\n')所以一回车循环就结束了
  • 2楼网友:骨子里都是戏
  • 2021-02-26 07:40

你想干什么?循环吗?循环的话看你的架势是想用

while(n<10){//循环10次

}

如果不想循环的话,你上面这个就输出

这是什么

就结束了。

想循环的话,把while加在

printf上面

把printf和n++包起来。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯