【试题053】C语言条件表达式例题合集

1.条件运算符的一般形式:条件?表达式1:表达式2

若条件成立执行表达式1,不成立执行表达式2

2.结合性:右结合(唯一的三目运算符)

3.题目:

设int a=3,b=4,c;执行语句c= (a>b) ?--a: b++;后,b,c的值是?

  int a = 3,b = 4,c;
  printf("%d\n", (c = (a > b) ? --a : b++));//4
  printf("b=%d\n", b);
  //分析:(a > b),3<4条件不成立
  //执行b++=4
  //输出b=5

4.题目:

设int a=3;,值为1的表达式是? A a%3 B 3-++a C(a++)%3 D a>3?2:1

  • 分析:A: a%3=3%3=0
  • B: 3-++a=3-4=-1
  • C:(a++)%3=3%3=0
  • D: a>3?2:1→3不大于3条件为假,输出1

5.题目: 下列程序段执行后,变量m的值为 ? int w=1,x=2,y=3,Z=4,m; m=(w<x)?w:z

m=(m<y)?m:y

m=(m<z)?m:z

  • 分析:m=(w<x)?w:z ,w<x=1<2为真,输出m=1
  • m=(m<y)?m:y ,m<y=1<3为真,输出m=1
  • m=(m<z)?m:z ,m<z=1<4为真,输出m=1

6.题目:int x=10,a=0,b=25;条件表达式x<1?a+10:b的值是 ?

  • 分析:x<1=10<1为假
  • 输出b=25

7.题目:若定义了x=100;则表达式x++>100?x+20: x+10的值是 ?♥(注意!!本题有陷阱)

  • 分析:x++是++在后先参与运算再增1
  • 所以x++>100=100>100为假
  • 此时x=101,输出x+10=101+10=111

8.题目:设int a=1,b=3,c;执行语句c=(a!=b)?++a:b++;后c的值是?

  • 分析:(a!=b)→1! =3为真
  • 输出++a=2

9.题目:

设int a=4;,表达式的值不为8的是 ? A. a*=a-2 B. a--,3a-1 C. a>1?++a*2 : 3a D. a+=a

  • 分析:A:a*=a-2→a=a*(a-2)→a=a2=42=8
  • B:a—=4,执行3**a-1时a=3,带入式子33-1=8
  • C:a>1→4>1为真输出++a2→a=52=10
  • D:a+=a→a=a+(a)→a=4+4=8

10.题目:

下列程序段执行后的输出结果是?

int k=4,a=3,b=2,c=1; printf("%d\n",k<a?k:c<b?c:a):

  • k<a?k:c<b?c:a是一个嵌套条件表达式,记住右结合,从右至左
  • 那么执行顺序是:
  • 首先c<b?c:a→c<b=1<2为真输出c=1
  • 接着k<a?k:1→k<a=4<3为假输出1

11.题目:设int a=1,b=2,c=3,d=4,f;(!注意有坑♥)

执行语句f=(a!=b)?c++:d++;后f的值是 ?

  • 分析:a!=b→1≠2为真输出c++=3

12.题目:

设int x,y;

条件运算符求x和y中最大值的C语言表达式是?

  • x>y?x:y

13.题目:

求a、b和c的最大值并输出。 #include <stdio.h> int f (int, ) /第一空/ { return( ?y:x); }/第二空 void main() { int a=3,b=4,c=5,d; =f (f(a,b),f (a,c) ) ; /第三空/ printf("%d\n",d); }

#include <stdio.h>

int f(int x, int y)//自定义f函数声明

{   return(  y > x ? y : x);    } 


int main() {   
  //求a、b和c的最大值并输出
        int a = 3,b = 4,c = 5,d;//实参
    d = f(f(a, b),f(a, c)); //函数调用
       printf("%d\n",d);
  
}

14.题目:

程序分析题:阅读下列程序,写出输出结果 #include<stdio.h>

float fun (float x, float y, float z) { float min; min=x<y?x:y; if(z<min) min=z; return min; } int main(void) { float a=-3.1,b=2,c=1.4,d=5.0; printf("%5.1f,%5.1f\n", fun(a,b,c), fun(b,c,d));

return 0; }

#include <stdio.h>
float fun(float x, float y, float z)
{   //自定义float类型的fun函数   三个形式参数x,y,z
  float min;
  min = x < y ? x : y;   //条件表达式求最小值
  if (z < min) min = z;
  return min;
}
int main(void) {
  float a = -3.1, b = 2, c = 1.4, d = 5.0; //定义float类型的变量a,b,c,d
  printf("%5.1f,%5.1f\n", fun(a, b, c), fun(b, c, d));//调用fun函数并输出结果

  return 0;
//分析:fun(a, b, c)调用fun函数,a<b=-3.1<2为真,返回min=-3.1,接着1.4<-3.1为假,min值不变还是-3.1
//fun(b, c, d)调用fun函数,b<c=2<1.4为假,返回min=1.4,接着5.0<1.4为假,min值不变还是1.4
//关于%5.1f占位符:%f是指以小数形式输出,5表示输出数据所占的域宽(正数右对齐),.1表示保留1位小数
}

截图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中,我们可以使用顺序栈结构来实现中缀表达式转后缀表达式的操作。这可以通过遍历中缀表达式的每个字符,并按照一定的规则将其转换为后缀表达式来完成。 中缀表达式转后缀表达式的原因是为了更方便地进行计和处理。逆波兰式(也叫后缀表达式)将运符写在操作数之后,避免了括号的使用和运符的优先级问,使得表达式的计更加直观和简单。 在转换中缀表达式到后缀表达式的过程中,我们可以使用堆栈来辅助实现。按照以下规则进行操作: 1. 遍历中缀表达式的每个字符。 2. 若遇到操作数,直接输出到后缀表达式中。 3. 若遇到运符,判断运符的优先级: - 若堆栈为空,或者堆栈顶部元素为左括号'(',直接将运符入栈。 - 若堆栈顶部元素的优先级小于当前运符,将当前运符入栈。 - 若堆栈顶部元素的优先级大于或等于当前运符,将堆栈顶部的运符依次弹出并输出到后缀表达式中,直到堆栈为空或者遇到左括号'('为止,然后将当前运符入栈。 4. 若遇到左括号'(',直接入栈。 5. 若遇到右括号')',将堆栈顶部的运符依次弹出并输出到后缀表达式中,直到遇到左括号'(',然后将左括号弹出但不输出。 6. 遍历结束后,将堆栈中剩余的运符依次弹出并输出到后缀表达式中。 通过以上规则,我们可以将中缀表达式转换为后缀表达式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [c语言实现中缀表达式转后缀并求](https://download.csdn.net/download/kongchengyeyu/10336788)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C语言中缀表达式转后缀表达式](https://blog.csdn.net/m0_55124878/article/details/120423212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [C语言实现中缀表达式到后缀表达式的转换](https://blog.csdn.net/DarkSide_/article/details/104182084)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值