内容发布更新时间 : 2025/11/4 9:42:04星期一 下面是文章的全部内容请认真阅读。
bonus=i*0.1; else if(i<=)
bonus=bonus1+(i-)*0.075; else if(i<=)
bonus=bonus2+(i-)*0.05; else if(i<=)
bonus=bonus4+(i-)*0.03; else if(i<=)
bonus=bonus6+(i-)*0.015; else
bonus=bonus10+(i-)*0.01; printf(\ }
3.由键盘输入三个整数a、b、c,用条件运算符求出其中最大值和最小值。
【分析与提示】首先比较输入的a,b 的大小,并把大数装入max, 小数装入min 中,然后再与c 比较,若max 小于c,则把c 赋予max;如果c 小于min,则把c 赋予min。因此max 内总是最大数,而min 内总是最小数。最后输出max 和min 的值即可。
参考代码: main( ) {
int a,b,c,max,min;
scanf(\max=a>b?a:b ;
max=max>c?max:c; min=a
min=min printf(\最大值为:%d,最小值为:%d\\n\}  4.有一函数:                  x     (x<1)           y=   2x-1   (1≤x<10)    3x-11   (x≥10)  编一程序,输入一个x值,输出y值。     【分析与提示】本题考查if语句的嵌套,应当注意if与else的配对关系。从最内层开始,else总是与它上面最近的(未曾配对的)if 配对。  参考代码:   main( ) { float  x,y;  printf(\请输入x的值 \\n\scanf(\if(x<1)  y=x; else    if(x>=10)  y=3*x-11;    16  else  y=2*x-1;  printf(\}   5.从键盘上输入星期号,并显示该日期的英文名字。 【分析与提示】本实例知识点:switch语句。  switch语句的控制流程是:首先计算表达式的值,然后依次与每一个case中的常量值进行比较,一旦发现了某个能够匹配的值,就执行该case后面的语句组,直到遇到break语句为止。如果表达式的值与所有case中的常量都不匹配,则执行default后面的语句组。  参考代码:  main( ) { int  xqh; char ywm;   printf(\请输入星期号(1~7):\\n\scanf(\switch(xqh)  { case  1:  printf(\  case  2:  printf(\ break;   case  3:  printf(\ break;   case  4:  printf(\ break;   case  5:  printf(\ break;   case  6:  printf(\case  7:  printf(\  default:printf(\}   }  6.某市不同车牌的出租车3公里的起步价和计费分别为:夏利7元/公里,3公里以外2.1元/公里;富康8元/公里,3公里以外2.4元/公里;桑塔纳9元,3公里以外2.7元/公里。编程:从键盘输入乘车的车型及行车公里数,输出应付车资。  【分析与提示】可设三个变量,分别表示乘车的车型、行车公里数和应付车资,根据乘车的车型和行车公里数,计算出应付的车资。  参考代码:  main( ) {  int  cx;            /*定义乘车的车型变量cx */   float  gl, cf;        /*定义行车公里数变量gl、应付车资变量cf */ printf(\夏利\\n \\t2-富康\\n \\t3-桑塔纳\\n\printf(\请输入车型(1-3): \scanf(\ printf(\请输入行车公里数: \scanf(\switch(cx)    17  { case  1:  if(gl<=3) cf=7.0;  else  cf=7+(gl-3)*2.1 ;break;    case  2:  if(gl<=3) cf=8.0;  else  cf=8+(gl-3)*2.4 ;break;   case  3:  if(gl<=3) cf=9.0;  else  cf=9+(gl-3)*2.7 ;   }  printf(\应付车资为%.1f\\n\ }      7.给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字。如原数为12345,则逆序为54321。  【分析与提示】本题的思路是:设5个变量,分别代表个位、十位、百位、千位和万位。从个位起,依次将各个位取出来,按取出的顺序组合成新的数据,并记录当前取出的数字的个数。  参考代码:  #include \main( ) {  unsigned x,m,n=0,w=0;  unsigned ge=0,shi=0,bai=0,qian=0,wan=0; printf(\请输入一个正整数\scanf(\m=x;  ge=m; m=m/10; w=1; n=ge; if(m)   {shi=m; m=m/10; w=2; n=n*10+shi;   if(m)    {bai=m; m=m/10; w=3; n=n*10+bai;    if(m)     {qian=m; m=m/10; w=4; n=n*10+qian;     if(m)       {wan=m; w=5; n=n*10+wan;}     }    }   }  printf(\为%u位数\printf(\正整数的原序为:%u\printf(\正整数的逆序为:%u\ }  注:当该程序输入一个较大的5位数时,输出结果就不正确了,思考为什么?动手试一下怎样修改该程序。  第5章  循环结构程序设计    18  一、填空题  1.下面程序的功能是用“辗转相除法”求两个正整数的最大公约数。请填空。       #include        int r,m,n;         scanf(\,&m,&n);        if(m 【分析与提示】辗转相除法:两数相除,若不能整除,则以除数作为被除数,余数作为除数,继续相除,直到余数为0时,当前除数就是最大公约数。     【解答】(1)r=m;m=n;n=r;   (2)r=m%n;   二.运行程序写结果  1.下列程序运行的运行结果为       。 #include  int y=10; do {y--;        }while(--y);        printf(\,y--);  }  【分析与提示】注意 y-- 与y--的运算顺序。 【解答】 0  2.下列程序运行的运行结果为       。 main() {   int x=3,y=6,z=2;  while(x++!=(y-=1)) {  z+=1; if(y printf(“%d,%d,%d\\n”,x,y,z); } }  【解答】4,5,3  3.下列程序运行的运行结果为       。 main() {    19   int a=1,b=0;  for( ;a<3 ;a++) switch(a++) {  case 1:b--; case 2:b++;  case 3:b+=3;break; }  printf(“%d\\n”,b); }  【解答】3  4.下列程序运行的运行结果为       。 main() {   int x=10,y=10,i;  for(i=0;i<2 ;y=i++) printf(“MM”,x--,y); }  【解答】10  10  9   0 三. 编程题  1.求s=1+2+4+8+…+64的值。  【分析与提示】本题为数学项求和问题,数学项间的关系为:第n项的值为第n-1项的值2倍。参考代码:  main( ) {   int i,s=0,t=1;  while(t<=64)  { s=s+t;    t=2*t;   }   printf(\ }  2.求s=1+1/2+1/3+…+1/100的值。  【分析与提示】本题为分数数学项求和问题,要想得到每一项的正确结果,分式中的分子、分母至少要有一个为实型数据。  参考代码: main( )          {int i;   float s=0,t;           for(i=1;i<=100;i++)          { t=1.0/i;  s=s+t;           }          printf(\   20