1. //  条件运算符和条件表达式  
  2. 有一种 if 语句:  
  3. if (a>b)  
  4.     max=a;  
  5. else 
  6.     max=b;  
  7.  
  8. 可以把上面的 if 语句改写成:  
  9. max=(a>b)?a:b;  
  10. 赋值号右侧的"(a>b)?a:b"是一个"条件表达式""?"是条件运算符。  
  11. 如果(a>b)条件为真,则条件表达式的值等于a;否则取值b。  
  12.  
  13. 条件运算符由两个符号(?和:)组成,必须一起使用。  
  14. 要求有3个操作对象,称为三目(元)运算符。  
  15.  
  16. 条件表达式的一般形式为:  
  17. 表达式1?表达式2:表达式3  
  18.  
  19. //  选择结构的嵌套  
  20. #include "stdafx.h"  
  21.  
  22.  
  23. int _tmain(int argc, _TCHAR* argv[])  
  24. {  
  25.     int x,y;  
  26.     scanf_s("%d",&x);  
  27.     if(x<0)  
  28.         y=-1;  
  29.     else 
  30.         if(x==0) y=0;  
  31.         else y=1;  
  32.         printf("x=%d,y=%d\n",x,y);  
  33.     return 0;  
  34. }  
  35.  
  36. #include "stdafx.h"  
  37.  
  38.  
  39. int _tmain(int argc, _TCHAR* argv[])  
  40. {  
  41.     int x,y;  
  42.     scanf_s("%d",&x);  
  43.     if(x>=0)  
  44.         if(x>0) y=1;  
  45.         else    y=0;  
  46.     else        y=-1;  
  47.     printf("x=%d,y=%d\n",x,y);  
  48.     return 0;  
  49. }  
  50.  
  51. //  用switch语句实现多分支选择结构  
  52. switch 语句是多分支选择语句。  
  53. #include "stdafx.h"  
  54.  
  55.  
  56. int _tmain(int argc, _TCHAR* argv[])  
  57. {  
  58.     char grade;  
  59.     scanf_s("%c",&grade,1);  
  60.     printf("Your score:");  
  61.     switch(grade)  
  62.     {  
  63.     case 'A' :printf("85~100\n");break;  
  64.     case 'B' :printf("70~84\n");break;  
  65.     case 'C' :printf("60~69\n");break;  
  66.     case 'D' :printf("<60\n");break;  
  67.     default:printf("enter data error!\n");  
  68.     }  
  69.     return 0;  
  70. }  
  71.  
  72. /*等级grade定义为字符变量,从键盘输入一个大写字母,赋给变量grade,switch得到grade的值  
  73. 并把它和各case中给定的值('A','B','C','D'之一)相比较,  
  74. 如果和其中之一相同(称为匹配),则执行该case后面的语句(即printf语句)。  
  75. break语句,它的作用是使流程转到switch语句的末尾(即右花括号处)*/ 
  76.  
  77. #include "stdafx.h"  
  78.  
  79.  
  80. int _tmain(int argc, _TCHAR* argv[])  
  81. {  
  82.     void action1(int,int),action2(int,int);  
  83.     char ch;  
  84.     int a=15,b=23;  
  85.     ch=getchar();  
  86.     switch(ch)  
  87.     {  
  88.     case 'a':  
  89.     case 'A':action1(a,b);break;  
  90.     case 'b':  
  91.     case 'B':action2(a,b);break;  
  92.     default:putchar('\a');  
  93.     }  
  94.     return 0;  
  95. }  
  96.  
  97. void action1(int x,int y)  
  98. {  
  99.     printf("x+y=%d\n",x+y);  
  100. }  
  101.  
  102. void action2(int x,int y)  
  103. {  
  104.     printf("x*y=%d\n",x*y);  
  105. }  
  106.  
  107. //  选择结构程序综合举例  
  108. 判断某一年是否为闰年  
  109. 1.  
  110. #include "stdafx.h"  
  111.  
  112.  
  113. int _tmain(int argc, _TCHAR* argv[])  
  114. {  
  115.     int year,leap;  
  116.     printf("enter year:");  
  117.     scanf_s("%d",&year);  
  118.     if(year%4==0)  
  119.     {  
  120.         if(year%100==0)  
  121.         {  
  122.             if(year%400==0)  
  123.                 leap=1;  
  124.             else 
  125.                 leap=0;  
  126.         }  
  127.         else 
  128.             leap=1;  
  129.     }  
  130.     else 
  131.         leap=0;  
  132.     if(leap)  
  133.         printf("%d is ",year);  
  134.     else 
  135.         printf("%d is not ",year);  
  136.         printf("a leap year.\n");  
  137.     return 0;  
  138. }  
  139.  
  140. 2.  
  141. #include "stdafx.h"  
  142.  
  143.  
  144. int _tmain(int argc, _TCHAR* argv[])  
  145. {  
  146.     int year,leap;  
  147.     printf("enter year:");  
  148.     scanf_s("%d",&year);  
  149.     if(year%4!=0)  
  150.         leap=0;  
  151.     else if(year%100!=0)  
  152.         leap=1;  
  153.     else if(year%400!=0)  
  154.         leap=0;  
  155.     else 
  156.         leap=1;  
  157.     if(leap)  
  158.         printf("%d is ",year);  
  159.     else 
  160.         printf("%d is not ",year);  
  161.         printf("a leap year.\n");  
  162.     return 0;  
  163. }  
  164.  
  165. 3.  
  166. #include "stdafx.h"  
  167.  
  168.  
  169. int _tmain(int argc, _TCHAR* argv[])  
  170. {  
  171.     int year,leap;  
  172.     printf("enter year:");  
  173.     scanf_s("%d",&year);  
  174.     if((year%4==0&&year%100!=0)||(year%400==0))  
  175.         leap=1;  
  176.     else 
  177.         leap=0;  
  178.     if(leap)  
  179.         printf("%d is ",year);  
  180.     else 
  181.         printf("%d is not ",year);  
  182.         printf("a leap year.\n");  
  183.     return 0;  
  184. }  
  185.  
  186. 4.  
  187. #include "stdafx.h"  
  188.  
  189.  
  190. int _tmain(int argc, _TCHAR* argv[])  
  191. {  
  192.     int year;  
  193.     bool leap;  
  194.     scanf_s("%d",&year);  
  195.     if(year%4==0)  
  196.     {  
  197.         if(year%100==0)  
  198.         {  
  199.             if(year%400==0)  
  200.                 leap=true;  
  201.             else 
  202.                 leap=false;  
  203.         }  
  204.         else 
  205.             leap=true;  
  206.     }  
  207.     else 
  208.         leap=false;  
  209.  
  210.     if(leap==true)  
  211.         printf("%d is ",year);  
  212.     else 
  213.         printf("%d is not ",year);  
  214.         printf("a leap year.\n");  
  215.     return 0;  
  216. }  
  217.  
  218. 求ax*x+bx+c=0方程的解  
  219. #include "stdafx.h"  
  220. #include "math.h"  
  221.  
  222.  
  223. int _tmain(int argc, _TCHAR* argv[])  
  224. {  
  225.     double a,b,c,disc,x1,x2,realpart,imagpart;  
  226.     scanf_s("%lf,%lf,%lf",&a,&b,&c);  
  227.     printf("The equation");  
  228.     if(fabs(a)<=1e-6)  
  229.         printf("is not a quadratic\n");  
  230.     else 
  231.     {  
  232.         disc=b*b-4*a*c;  
  233.         if(fabs(disc)<=1e-6)  
  234.             printf("has two equal roots:%8.4f\n",-b/(2*a));  
  235.         else 
  236.             if(disc>1e-6)  
  237.             {  
  238.                 x1=(-b+sqrt(disc))/(2*a);  
  239.                 x2=(-b-sqrt(disc))/(2*a);  
  240.                 printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2);  
  241.             }  
  242.             else 
  243.             {  
  244.                 realpart=-b/(2*a);  
  245.                 imagpart=sqrt(-disc)/(2*a);  
  246.                 printf("%8.4f+%8.4fi\n",realpart,imagpart);  
  247.                 printf("%8.4f-%8.4fi\n",realpart,imagpart);  
  248.             }  
  249.     }  
  250.     return 0;  
  251. }  
  252.  
  253. 运输公司对用户计算运输费用  
  254. #include "stdafx.h"  
  255.  
  256.  
  257. int _tmain(int argc, _TCHAR* argv[])  
  258. {  
  259.     int c,s;  
  260.     float p,w,d,f;  
  261.     printf("please enter price,weight,discount:");  
  262.     scanf_s("%f,%f,%d",&p,&w,&s);  
  263.     if(s>=3000)c=12;  
  264.     else       c=s/250;  
  265.     switch(c)  
  266.     {  
  267.     case 0: d=0;break;  
  268.     case 1: d=2;break;  
  269.     case 2:  
  270.     case 3: d=5;break;  
  271.     case 4:  
  272.     case 5:  
  273.     case 6:  
  274.     case 7: d=8;break;  
  275.     case 8:  
  276.     case 9:  
  277.     case 10:  
  278.     case 11: d=10;break;  
  279.     case 12: d=15;break;  
  280.     }  
  281.     f=p*w*s*(1-d/100);  
  282.     printf("freight=%10.2f\n",f);  
  283.     return 0;