- // 条件运算符和条件表达式
- 有一种 if 语句:
- if (a>b)
- max=a;
- else
- max=b;
- 可以把上面的 if 语句改写成:
- max=(a>b)?a:b;
- 赋值号右侧的"(a>b)?a:b"是一个"条件表达式"。"?"是条件运算符。
- 如果(a>b)条件为真,则条件表达式的值等于a;否则取值b。
- 条件运算符由两个符号(?和:)组成,必须一起使用。
- 要求有3个操作对象,称为三目(元)运算符。
- 条件表达式的一般形式为:
- 表达式1?表达式2:表达式3
- // 选择结构的嵌套
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- int x,y;
- scanf_s("%d",&x);
- if(x<0)
- y=-1;
- else
- if(x==0) y=0;
- else y=1;
- printf("x=%d,y=%d\n",x,y);
- return 0;
- }
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- int x,y;
- scanf_s("%d",&x);
- if(x>=0)
- if(x>0) y=1;
- else y=0;
- else y=-1;
- printf("x=%d,y=%d\n",x,y);
- return 0;
- }
- // 用switch语句实现多分支选择结构
- switch 语句是多分支选择语句。
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- char grade;
- scanf_s("%c",&grade,1);
- printf("Your score:");
- switch(grade)
- {
- case 'A' :printf("85~100\n");break;
- case 'B' :printf("70~84\n");break;
- case 'C' :printf("60~69\n");break;
- case 'D' :printf("<60\n");break;
- default:printf("enter data error!\n");
- }
- return 0;
- }
- /*等级grade定义为字符变量,从键盘输入一个大写字母,赋给变量grade,switch得到grade的值
- 并把它和各case中给定的值('A','B','C','D'之一)相比较,
- 如果和其中之一相同(称为匹配),则执行该case后面的语句(即printf语句)。
- break语句,它的作用是使流程转到switch语句的末尾(即右花括号处)*/
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- void action1(int,int),action2(int,int);
- char ch;
- int a=15,b=23;
- ch=getchar();
- switch(ch)
- {
- case 'a':
- case 'A':action1(a,b);break;
- case 'b':
- case 'B':action2(a,b);break;
- default:putchar('\a');
- }
- return 0;
- }
- void action1(int x,int y)
- {
- printf("x+y=%d\n",x+y);
- }
- void action2(int x,int y)
- {
- printf("x*y=%d\n",x*y);
- }
- // 选择结构程序综合举例
- 判断某一年是否为闰年
- 1.
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- int year,leap;
- printf("enter year:");
- scanf_s("%d",&year);
- if(year%4==0)
- {
- if(year%100==0)
- {
- if(year%400==0)
- leap=1;
- else
- leap=0;
- }
- else
- leap=1;
- }
- else
- leap=0;
- if(leap)
- printf("%d is ",year);
- else
- printf("%d is not ",year);
- printf("a leap year.\n");
- return 0;
- }
- 2.
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- int year,leap;
- printf("enter year:");
- scanf_s("%d",&year);
- if(year%4!=0)
- leap=0;
- else if(year%100!=0)
- leap=1;
- else if(year%400!=0)
- leap=0;
- else
- leap=1;
- if(leap)
- printf("%d is ",year);
- else
- printf("%d is not ",year);
- printf("a leap year.\n");
- return 0;
- }
- 3.
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- int year,leap;
- printf("enter year:");
- scanf_s("%d",&year);
- if((year%4==0&&year%100!=0)||(year%400==0))
- leap=1;
- else
- leap=0;
- if(leap)
- printf("%d is ",year);
- else
- printf("%d is not ",year);
- printf("a leap year.\n");
- return 0;
- }
- 4.
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- int year;
- bool leap;
- scanf_s("%d",&year);
- if(year%4==0)
- {
- if(year%100==0)
- {
- if(year%400==0)
- leap=true;
- else
- leap=false;
- }
- else
- leap=true;
- }
- else
- leap=false;
- if(leap==true)
- printf("%d is ",year);
- else
- printf("%d is not ",year);
- printf("a leap year.\n");
- return 0;
- }
- 求ax*x+bx+c=0方程的解
- #include "stdafx.h"
- #include "math.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- double a,b,c,disc,x1,x2,realpart,imagpart;
- scanf_s("%lf,%lf,%lf",&a,&b,&c);
- printf("The equation");
- if(fabs(a)<=1e-6)
- printf("is not a quadratic\n");
- else
- {
- disc=b*b-4*a*c;
- if(fabs(disc)<=1e-6)
- printf("has two equal roots:%8.4f\n",-b/(2*a));
- else
- if(disc>1e-6)
- {
- x1=(-b+sqrt(disc))/(2*a);
- x2=(-b-sqrt(disc))/(2*a);
- printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2);
- }
- else
- {
- realpart=-b/(2*a);
- imagpart=sqrt(-disc)/(2*a);
- printf("%8.4f+%8.4fi\n",realpart,imagpart);
- printf("%8.4f-%8.4fi\n",realpart,imagpart);
- }
- }
- return 0;
- }
- 运输公司对用户计算运输费用
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- int c,s;
- float p,w,d,f;
- printf("please enter price,weight,discount:");
- scanf_s("%f,%f,%d",&p,&w,&s);
- if(s>=3000)c=12;
- else c=s/250;
- switch(c)
- {
- case 0: d=0;break;
- case 1: d=2;break;
- case 2:
- case 3: d=5;break;
- case 4:
- case 5:
- case 6:
- case 7: d=8;break;
- case 8:
- case 9:
- case 10:
- case 11: d=10;break;
- case 12: d=15;break;
- }
- f=p*w*s*(1-d/100);
- printf("freight=%10.2f\n",f);
- return 0;
- }