zoukankan      html  css  js  c++  java
  • C语言程序设计笔记2分支结构

    C语言程序设计-笔记2-分支结构

    例3-1  简单的猜数游戏。输入你所猜的整数(假定1-100),与计算机产生的被猜数比较,若相等,显示猜中;若不等,显示与被猜数的大小关系。

    /*简单的猜数游戏*/

    #include<stdio.h>

    int main(void)

    {

          int mynumber=38;         //计算机指定被猜的数

          int yournumber;

         

          printf("Input your number:");

          scanf("%d",&yournumber);

          if(yournumber==mynumber)

          {

               printf("Good Guess!\n");

          }   

          else if(yournumber>mynumber) 

          {

               printf("Too big!\n");

          }

          else

          {

               printf("Too small!\n");

          }

         

          return 0;

    }

    例3-2  奇偶分家。输入一个正整数n,再输入n个非负整数,统计奇数和偶数各有多少个?

    #include<stdio.h>

    int main(void)

    {

          int count_odd=0,count_even=0;

          int i,n,number;

         

          printf("Enter n:");

          scanf("%d",&n);

          printf("Enter %d numbers:",n);

          for(i=1;i<=n;i++)

          {

               scanf("%d",&number);

               if(number%2==0)

               {

                     count_even++;

               }

               else

               {

                     count_odd++;

               }

          }   

               printf("odd:%d,even:%d\n",count_odd,count_even);

              

               return 0;

         

    }

    例3-3  统计指定数量学生的平均成绩与不及格人数。输入一个非负整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的学生人数。

    #include<stdio.h>

    int main(void)

    {

          int count,i,n;

          double score,total;

         

          printf("Enter n:");

          scanf("%d",&n);

          total=0;

          count=0;

          for(i=1;i<=n;i++)

          {

               printf("Enter score #%d:",i);

               scanf("%lf",&score);

               total=total+score;

               if(score<60)

               {

                     count++;

               }

          }

          if(n!=0)

          {

               printf("Average=%.2f\n",total/n);

          }

          else

          {

               printf("Average=%.2f\n",0.0);

          }

          printf("Number of failures=%d\n",count);

         

          return 0;

    }

    例3-4  分段计算居民水费。继续讨论例2-4中提出的分段计算水费的问题,虽然实际生活中不会出现月用水量x小于0的情况,但程序运行时如果不慎输入一个负数,水费计算将会出错。为了完善分段计算水费的程序,现将居民应交水费y(元)与月用水量x(吨)的函数关系式修正如下,并编程实现。

    y=f(x)=

    #include<stdio.h>

    int main(void)

    {

          double x,y;  //x--shuiliang  y--shuifei

         

          printf("Enter x:");

          scanf("%lf",&x);

          if(x<0)

          {

               y=0;

          }

          else if(x<=15)

          {

               y=4*x/3;

          }

          else

          {

               y=2.5*x-10.5;

          }

          printf("f(%.2f)=%.2f\n",x,y);

         

          return 0;

    }

    例3-5  求解简单的四则运算表达式。输入一个形如“操作数 运算符 操作数“的四则运算表达式,输出运算结果,要求对除数为0的情况作特别处理。

    /*求解简单的四则运算表达式*/

    #include<stdio.h>

    int main(void)

    {

          double value1,value2;

          char op;

         

          printf("Type in an expression:");

          scanf("%lf%c%lf",&value1,&op,&value2);

          if(op=='+')

          {

               printf("%.2f\n",value1+value2);

          }

          else if(op=='-')

          {

               printf("%.2f\n",value1-value2);

          }

          else if(op=='*')

          {

               printf("%.2f\n",value1*value2);

          }

          else if(op=='/')

          {

               if(value2!=0)

               {

                     printf("%.2f\n",value1/value2);  

               }

               else

               {

                     printf("Divisor can not be 0!\n");

               }

          }

          else

          {

               printf("Unknown operator!\n");

          }

         

          return 0;

         

    }

    例3-char 输入8个字符,然后将这些字符输出,输出时在字符之间加一个减号,首尾没有。

    #include<stdio.h>

    int main(void)

    {

          char ch;

          int first=1,k;

          printf("Enter 8 characters:");

          for(k=1;k<=8;k++)

          {

               ch=getchar();

               if(first==1)

               {

                     putchar(ch);

                     first=0;

               }

               else

               {

                     putchar('-');

                     putchar(ch);

               }

          }

         

          return 0;

    }

    例3-6   写出满足下列条件的C语言表达式。

    1)     Ch是空格或者回车。

    2)     year是闰年,即year能被4整除但不能被100整除,或year能被400整除。

    解答:

    1)     ch==’ ‘ || ch==’\n’;

    2)     year%4==0 && year%100!=0 || year%400==0;

    例3-7  统计英文字母和数字字符。输入一个正整数n,再输入n个字符,统计其中英文字母、数字字符和其他字符的个数。

    #include<stdio.h>

    int main(void)

    {

          int digit,letter,other,i,n;

          char ch;

         

          digit=letter=other=0;

          printf("Enter n:");

          scanf("%d",&n);

          getchar();

          printf("Enter %d characters:",n);

          for(i=1;i<=n;i++)

          {

               ch=getchar();

               if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))

               {

                     letter++;

               }

               else if(ch>='0'&&ch<='9')

               {

                     digit++;

               }

               else

               {

                     other++;

               }

          }

         

          printf("letter=%d,digit=%d,other=%d\n",letter,digit,other);

         

          return 0;

    }

    例3-8  查询自动售货机中商品的价格。假设自动售货机出售4种商品:薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),售价分别是每份3.0、2.5、4.0和3.5元。在屏幕上显示以下菜单(编号和选项),用户可以连续查询商品的价格,当查询次数超过5次时,自动退出查询;不到5次时,用户可以选择退出。当用户输入编号1-4,显示相应商品的价格(保留1位小数);输入0,退出查询;输入其他编号,显示价格为0。

    [1] Select crisps

    [2] Select popcorn

    [3] Select chocolate

    [4] Select cola

    [5] Exit

    #include<stdio.h>

    int main(void)

    {

          int choice,i;

          double price;

         

          printf("[1] Select crisps\n");

          printf("[2] Select popcorn\n");

          printf("[3] Select chocolate\n");

          printf("[4] Select cola\n");

          printf("[0] exit\n");

          for(i=1;i<=5;i++)

          {

               printf("Enter choice:");

               scanf("%d",&choice);

               if(choice==0)

               {

                     break;

               }

               switch(choice)

               {

                     case 1:price=3.0;break;

                     case 2:price=2.5;break;

                     case 3:price=4.0;break;

                     case 4:price=3.5;break;

                     default:price=0.0;break;

               }

              

              

                    

               printf("price=%0.1f\n",price);    

              

          }

          printf("Thanks\n");

          return 0;

    }

    例3-9  两个数的简单计算器。编写一个简单计算器程序,可根据输入的运算符,对两个整数进行加、减、乘、除和求余运算,请对除数为0的情况作特别处理。要求使用switch语句编写。

    #include<stdio.h>

    int main(void)

    {

          int value1,value2;

          char op;

         

          printf("Type in an expression:");

          scanf("%d%c%d",&value1,&op,&value2);

          switch(op)

          {

               case '+':

                     printf("=%d\n",value1+value2);

                     break;

               case '-':

                     printf("=%d\n",value1-value2);

                     break;  

               case '*':

                     printf("=%d\n",value1*value2);

                     break;  

               case '/':

                     if(value2!=0)

                     {

                          printf("=%d\n",value1/value2);  

                     }

                     else

                     {

                          printf("Divisor can not be 0!\n");

                     }

                     break;  

               case '%':

                     if(value2!=0)

                     {

                          printf("=%d\n",value1%value2);

                     }

                     else

                     {

                          printf("Divisor can not be 0!\n");

                     }

                     break;  

               default:

                     printf("Unknown operator\n");

                     break;  

          }

         

          return 0;

    }

    例3-10  输入一个正整数n,再输入n个字符,分别统计出其中空格或回车、数字字符和其他字符的个数。要求使用switch语句编写。

    #include<stdio.h>

    int main(void)

    {

          int blank,digit,i,n,other;

          char ch;

         

          blank=digit=other=0;

          printf("Enter n:");

          scanf("%d",&n);

          getchar();

          printf("Enter %d characters:",n);

          for(i=1;i<=n;i++)

          {

               ch=getchar();

               switch(ch)

               {

                     case ' ':

                     case '\n':

                          blank++;

                          break;

                     case '0':

                     case '1':

                     case '2':

                     case '3':

                     case '4':

                     case '5':

                     case '6':

                     case '7':

                     case '8':

                     case '9':

                          digit++;

                          break;

                     default:

                          other++;

                          break;

                               

               }

          }

          printf("blank=%d,digit=%d,other=%d\n",blank,digit,other);

         

          return 0;

    }

    例3-11 改写下列if语句,使else和第一个if配对。

    if(x<2)

          if(x<1)  y=x+1;

          else  y=x+2;

    解:

    1)     使用大括号

    if(x<2){

          if(x<1)  y=x+1;}

          else  y=x+2;

    2)     加else

    if(x<2)

          if(x<1)  y=x+1;

          else;

          else  y=x+2;

     

    参考资料

    C语言程序设计/何钦铭,颜晖主编.---4版.---北京:高等教育出版社,2020.9

  • 相关阅读:
    P2043 质因子分解
    CODE[VS] 3164 质因数分解
    借过
    CODE[VS] 1165 字符串的展开 || P1098 字符串的展开
    CODE[VS] 1144 守望者的逃离 || P1095 守望者的逃离
    CODE[VS] 2914 吹空调
    AC日记
    AC日记
    山科日记—回文
    山科日记—编写函数myFloor和myCeil(编程题)
  • 原文地址:https://www.cnblogs.com/halflife/p/15522155.html
Copyright © 2011-2022 走看看