黑马程序员——ios基础---练习:1

时间:2022-03-31 12:49:32

C1C2-----------------------------------------------------------------------------

 一、改错:

 #include <stdio.h>

  

 int main()

 {

     float score;

     int age;

      

     scanf("%d %d\n", score, age);//scanf必须接收地址,不能用\n,并且score应该接受实数用f

 //   scanf("%d,%f",&age,score);

     printf("age%dscore%d\n", age, score);

     return 0;

 }

  

  

 2.

 #include <stdio.h>

  

 int main()

 {

     int a = 10++;//10++是自加运算。是不能放到=右边的。

 //int a = 10;

      

     int b = 10.0 % 2;//b是一个实数不应有不应该用10.0

                      //int b = 10%2;

 return 0;

 }

 3、分析题

 说出下列程序的输出结果(不要运行程序)

 #include <stdio.h>

  

 int main()

 {

     int a = 20;

     int score = a + 100;

     printf("%d\n", score);//120

      

     {

         int score = 50;

         {

             score = 10;

             printf("%d\n", score);//10

         }

         a = 10;

     }

      

     {

         score = a + 250;

         int score = 30;

         printf("%d", score);//30

     }

      

     printf("%d\n", score);//260

     return 0;

 }

  

  

 .编程题

 1、接受用户从键盘上输入的两个字符,然后输出他们

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 char a;

 char b;

 scanf("%c %c",&a,&b);

 

 printf("字符1:%c 字符2:%c\n",a,b);

 

 printf("Hello, World!\n");

 

 return 0;

 }

 

 2、接受用户从键盘上输入的两个双精度浮点数,然后输出他们

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 double a;

 double b;

 

 scanf("%lf,%lf",&a,&b);

 

 printf("实数1:%lf 实数2:%lf\n",a,b);

 

 printf("Hello, World!\n");

 

 return 0;

 }

 

 3、接受用户从键盘上输入的两个单精度浮点数,然后输出他们(保留两位整数))

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 float a;

 float b;

 

 scanf("%f,%f",&a,&b);

 

 printf("实数1:%f 实数2:%f\n",a,b);

 

 printf("Hello, World!\n");

 

 return 0;

 }

 

 4、用户从键盘上输入两个整数,然后输出他们和

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 int a = 0;

 int b = 0;

 printf("请输入两个整数并以逗号分隔:\n");

 

 scanf("%d,%d",&a,&b);

 

 printf("两数之和为:%d\n",a+b);

 

 printf("Hello, World!\n");

 

 return 0;

 }

 

 5、用户从键盘上输入两个整数,然后输出他们差

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 int a = 0;

 int b = 0;

 printf("请输入两个整数并以逗号分隔:\n");

 

 scanf("%d,%d",&a,&b);

 

 printf("两数之差为:%d\n",a-b);

 

 printf("Hello, World!\n");

 

 return 0;

 }

 

 6、用户从键盘上输入两个整数,输出他们的商

 

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 int a = 0;

 int b = 0;

 

 printf("请输入两个整数并以逗号分隔:\n");

 

 scanf("%d,%d",&a,&b);

 

 printf("两数之商为:%d\n",a/b);

 

 printf("Hello, World!\n");

 

 return 0;

 }

 7、用户从键盘上输入两个整数,输出他们的余数

 

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 int a = 0;

 int b = 0;

 

 printf("请输入两个整数并以逗号分隔:\n");

 

 scanf("%d,%d",&a,&b);

 

 printf("余数为:%d\n",a%b);

 

 printf("Hello, World!\n");

 

 return 0;

 }

 

 8、在控制台输出 %

 

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 printf("%%");

 

 return 0;

 }

 



#include <stdio.h>


int main(int argc, const char * argv[]) {

    

    float a,b;

    scanf("%f%f",&a,&b);

    

    printf("%f %f",a,b);

    

    printf("%%");

    

    

    return 0;

}


C3------------------------------------------------------------------------------

一、填空题

  

 1 int x=9,y=8; 表达式x == y + 1的结果是1

 2 定义int x, y; 执行y =(x = 1, ++x, x + 2);, y的值是4

 3 定义int x = 10, y, z; 执行y = z = x; x = y == z; 后, x的结果是1

 4 int a=1,b=2,c,d,e; 执行

 c=(-a++)+(++b);

 d=(b--)+(++a)-a;

 e=(a/(++b))-(a/(--a));

 请问a,b,c,d,e的结果是:2,3,2,3,0

  

 5 int a=2,b=3,c,d,e,f; 执行

 c=(a++>= --b);

 d=(a==++b);

 e=(a--!=b);

 f=(++a>b--);

 请问a,b,c,d,e,f的结果是:3,2,1,1,0,0

  

 6.以下程序运行后的输出结果是200

 #include ”stdio.h”

 main()

 {

     int x=10, y=20, t=0;

      

     if (x==y) t=x; x=y; y=t;

      

     printf("%d,%d\n",x,y);

 }

  

 7.执行以下语句后,xy的值分别为100

 

 int x,y,z;

 x=y=z=0;

 ++x || ++y && ++z;// 逻辑或||段路

 printf("%d,%d,%d",x,y,z);

  

 8 已有定义:int x=3, y=4, z=5; 则表达式!(x+y)+z-1 && y+z/2的值是1//!(x+y)得值为0

 

 9 a=5,b=6,c=7,d=8,m=2,n=2, 则执行(m=a>b) && (n=c>d)n的值为2 //逻辑与&&短路m0,后面不用看了。

  

 10 xyz都是int类型变量,且x=3,y=4,z=5, 则下面的表达式中,值为0的表达式为(D  )。

 A’x’ && ’y’                      Bx<=y

 Cx||y+z && y-z                      D!((x<y)&&!z||1)

  

 11 以下关于运算符优先顺序的描述中正确的是(    c  )。

 A.关系运算符<算术运算符<赋值运算符<逻辑与运算符

 B.逻辑与运算符<关系运算符<算术运算符<赋值运算符

 C.赋值运算符<逻辑与运算符<关系运算符<算术运算符

 D.算术运算符<关系运算符<赋值运算符<逻辑与运算符

  

 12 下列运算符中优先级最高的是(   c  )。

 A<           B&&          C+            D!=

  

 13 能正确表示x的取值在[-58,-40]并且[40,58]范围内为真,否则为假的表达式是(   c )。

 A(x>= -58) && (x<= -40) && (x>=40) && (x<=58)

 B(x>= -58) || (x<= -40) || (x>=40) || (x<=58)

 C(x>= -58) && (x<= -40) || (x>=40) && (x<=58)

 D(x>= -58) | |(x<= -40) && (x>=40) || (x<=58)

  

 14.若希望当x的值为奇数时,表达式的值为x的值为偶数时,表达式的值为。则以下不能满足要求的表达式是( c    )。

 Ax%2==1                             B!(x%2==0)

 C!(x%2)                              Dx%2

  

 15.已知 x=45, y=’a’, z=0; 则表达式(x>=z && y<’z’ || !y)的值是(  C1  )。

 A0                                   B.语法错

 C1                                   D

  

 16.执行以下语句后,的值为( A0   )。

  

 int x,y,z;

  

 x=y=z=0;

  

 ++x || ++y && ++z;

  

 A0              B1             C2             D.不确定值

  

 17.设以下变量均为int类型,则值不等于7的表达式是( C  )。

 A(m=n=6, m+n, m+1)

 B(m=n=6, m+n, n+1)

 C(m=6, m+1, n=6, m+n)

 D(m=6, m+1, n=m, n+1)

  

 18.假设所有变量均为整型,则表达式(x=2, y=5, y++, x+y)的值是(  8 )。

 A7           B8            C6               D2

  

 19.设xy均为float型变量,则不正确的赋值语句是(  C  )。

 A++x ;                                     Bx*=y-2;

 Cy=(x%3)/10; c实数不能取余                   Dx=y=0;

  

 20.若xy均定义为int 型,z定义为double型,以下不合法的scanf()函数调用语句为(  d)。

 Ascanf”%d%lx%le”&x,&y,&z;

 Bscanf (”%2d*%d%lf ”, &x, &y, &z);

 Cscanf(”%x%*d%o”, &x,&y);

 Dscanf(”%x%o%6.2f”, &x,&y,&z);

  

 21.有如下程序段:

 int  x1, x2;

 char  y1, y2;

 scanf("%d%c%d%c", &x1, &y1, &x2, &y2);

 若要求x1x2y1y2的值分别为1020AB,正确的数据输入是(  a   )。(注:└┘代表空格)

 A10A└┘20B                                 B10└┘A20B

 C10 └┘A└┘20└┘ B                            D10A20└┘B

  

 22.若变量已正确说明为float类型, 要通过语句scanf("%f %f%f", &a, &b, &c);a赋予10.0 b赋予22.0 c赋予33.0 不正确的输入形式为( b  )。

 A10<回车>                                 B10.0,22.0,33.0<回车>

 22<回车>

 33

 C10.0<回车>                                D10   22<回车>

 22.0    33.0<回车>                            33<回车>

  

 23.有如下程序,若要求x1x2y1y2的值分别为1020AB,正确的数据输入是(    d  )。(注:└┘代表空格)

 int  x1, x2;

 char  y1, y2;

 scanf("%d%d", &x1,&x2);

 scanf("%c%c", &y1,&y2);

 A1020AB                                    B10└┘20└┘ABC

 C10└┘20<回车>                                     D10└┘20AB

 AB

  

 24.有如下程序段,对应正确的数据输入是(    a  )。

 float x,y;

 scanf("%f%f", &x,&y);

 printf("a=%f,b=%f", x,y);

 A2.04<回车>                           B2.04,5.67<回车>

 5.67<回车>

 CA=2.04,B=5.67<回车>                  D2.055.67<回车>

  

 


#include <stdio.h>


int main(int argc, const char * argv[]) {

    // insert code here...

    printf("Hello, World!\n");

    return 0;

}


C4----------------------------------------------------------------------------

一、改错题

 1.

 #include <stdio.h>

  

 int main() {

      

     int a = 10;

      

     switch (a){

         

 case 0:

         

 int b = 20 + a;

            

  break;

 //如果case中定义了新的变量应该用大括号括住{}

 

         

 case 2:

  break;

    

 }

      

     return 0;

 }

  

 二、分析题

 1. 判断输出结果

 int x = 2,y=3;

 switch(x)

 {

     case 2:

         y++;

     case 3:

         y+=2;

     case 4:

         y+=3;

     default:

         y = 0;

         break;

 }

 printf("y=%d\n", y);//y=0 case后没有break语句。语句会往下执行。

  

 2. 判断输出结果

 int x = 1,y = 1;

 if(x++==2 && ++y==2) {

     x =7;

 }

 printf("x=%d, y=%d\n", x, y);//短路x = 2; y = 1

  

 3. 判断输出结果

 int x = 1,y = 1;

 if(x++==2 || ++y==2) {

     x =7;

 }

 printf("x=%d, y=%d\n", x, y);//x = 7;y = 2

  

 4.以下程序的运行结果是(2)。

 #include ”stdio.h”

 main()

 { int a=1;

     if (a++>1) printf(”%d\n”, a);

     else      printf(”%d\n”, a--);

 }

  

  

 

  

 6.执行以下程序段后,变量x,y,z的值分别为()。

 

 int a=1,b=0, x, y, z;

 x=(--a==b++)?--a++b;

 y=a++;

 z=b;//x =-1, y= -1,z = 1

  

 7.以下程序的输出结果是(c)。

 #include ”stdio.h”

 main()

 {

     int a=5, b=4, c=6, d;

     printf(”%d\n”, d=a>b? a>c?a:c :b);

 }

  

 8.若abc1c2xy均为整型变量,正确的switch 语句是( d  )。

 Aswitch (a+b);                    Bswitch a

 {

 case 1: y=a+b; break;               {  case c1: y=a-b; break;

 case 0: y=a-b;                        case c2: x=a*d; break;

     break;                       default: x=a+b;

 }                                 }

 Cswitch (a*a+b*b)                 Dswitch(a-b)

 { case 3:                          {  default: y=a*b; break;

 case 1: y=a+b; break;                 case 3: x=a+b; break;

 case 3: y=b-a; break;                 case 10: case 11: y=a-b; break;

 }

 }

  

 9.执行下列程序,输入为3的数出结果是(3,4)。

 #include ”stdio.h”

 main()

 {

     int k;

     scanf(”%d”, &k);

     switch(k)

     { case 1: printf(”%d\n”, k++);

         case 2: printf(”%d\n”, k++);

         case 3: printf(”%d\n”, k++);

         case 4: printf(”%d\n”, k++);

             break;

         default: printf(”Full!\n”);

     }

 }

  

 

  

 11.以下程序的运行结果是(2)。

 #include ”stdio.h”

 main()

 {

     int a=2,b= -1,c=2;

     if (a<b)

         if (b<0)

             c=0;

         else c++;

      

     printf(”%d\n”,c);

 }

  

 

  

 13 若从键盘输入58,则输出结果是_____58,58,58___

 #include ”stdio.h”

 main()

 {

     int a;

     scanf(”%d”, &a);

     if (a>50)  printf(”%d”, a);

     if (a>40)   printf(”%d”,a);

     if (a>30)  printf(”%d”,a);

 }

  

 

 三、编程题

 1.利用简单分支选择语句判断输入的一个整数是否是偶数

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 

 int a,b;

 

 

 scanf("%d",&a);

 

 b = a%2;

 switch (b) {

 case 0:

 printf("您输入的是偶数");

 break;

 

 default:

 printf("您输入的是奇数");

 break;

 }

 

 2.编写一个程序,要求从键盘上输入某学生的四科成绩,求出该学生的最高分和最低分

 

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 

 int a,b,c,d;

 

 scanf("%d,%d,%d,%d",&a,&b,&c,&d);

 

 int max,min;

 

 max = min = a;

 

 if (b>max) {

 max = b;

 }else if (b<min) {

 

 min = b;

 

 }

 

 if (c>max) {

 max = c;

 }else if (c<min) {

 

 min = c;

 

 }

 

 if (d>max) {

 max = d;

 }else if (d<min) {

 

 min = d;

 

 }

 

 printf("max = %d min = %d\n",max,min);

 

 return 0;

 }

 

  3、已知某公司员工的工资底薪为500,员工销售的软件金额与提成方式如下:

  销售额 ≤2000            没有提成

  2000 < 销售额 ≤ 5000    提成8%

  5000 < 销售额 ≤ 10000   提成10%

  销售额 ≥ 10000          提成12%

  利用switch

 

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 int beta = 500;

 

 printf("请输入销售金额:");

 int money;

 

 scanf("%d",&money);

 

 int a = money/1000 ;

 

 if (money>2000 && money%1000!=0) {

 a += 1;

 }

 

 switch (a) {

 case 0:

 case 1:

 case 2:

 printf("工资为:%d\n",beta);

 break;

 

 case 3:

 case 4:

 case 5:

 printf("工资为:%d\n",+money*8/100);

 break;

 

 case 6:

 case 7:

 case 8:

 case 9:

 case 10:

 printf("工资为:%d\n",beta+money*10/100);

 break;

 

 default:

 printf("工资为:%d\n",beta+money*12/100);

 break;

 }

 

 return 0;

 }

   

 4、题目:程序运行的时候提示下列信息

    请输入相应数字选择需要执行的运算:

    1 加法

    2 减法

 

    用户选择运算后,再提示用户输入两个需要进行运算的整数,输入完毕后就输出运算结果

 

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 printf("请输入数字选择执行的运算\n");

 printf("1 加法 ");

 printf("2 减法\n");

 

 int math;

 

 scanf("%d",&math);

 

 if (math!=1 && math!=2) {

 printf("请好好玩");

 return 0;

 }

 printf("请输入两个整数并用逗号隔开\n");

 

 int a,b;

 

 scanf("%d,%d",&a,&b);

 

 if ((math = 1)) {

 printf("结果为:%d\n",a+b);

 }else if ((math = 2)) {

 

 printf("结果为:%d\n",a-b);

 

 }

 

 return 0;

 }

 5.铁路托运行李规定:行李重不超过50公斤的,托运费按0.15元每公斤计算,如果超过50公斤,超出部分每公斤加收0.1元。编程。

 

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 printf("请输入公斤数:\n");

 

 int weight,money;

 

 scanf("%d",&weight);

 

 

 if (weight<=50) {

 printf("金额为:%d\n",money = weight*0.15);

 }else if (weight>50) {

 

 printf("金额为:%d\n",money = (weight-50)*0.1+7.5 );

 

 }

 

 return 0;

 }

  

 6.3个整数a,b,c,由键盘输入,输出其中最大的数。

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 printf("请输入三个整数用逗号分隔\n");

 

 int a,b,c;

 

 scanf("%d,%d,%d",&a,&b,&c);

 

 int max = 0;

 

 max = a;

 

 if (b>max) {

 

 max = b;

 

 }

 if (c>max) {

 

 max = c;

 

 }

 

 printf("最大值为:%d\n",max);

 

 return 0;

 }

 

 7.有一个函数:x<1的时候,y = x1<=x<10的时候,y=2x-1x>=10的时候,y=3x-11。写一段程序,输入x,输出y值。

 

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 printf("请输入X的值\n");

 

 int x,y;

 

 scanf("%d",&x);

 

 if (x<1) {

 y = x;

 }else if (x>=1 && x<10) {

 

 y = 2*x-1;

 

 }else if (x>=10) {

 

 y=3*x-11;

 

 }

 

 

 return 0;

 }

 

 8.给出一百分制成绩,要求输出成绩等级’A’’B’’C’’D’’E’90分以上为’A’80~89分为’B’70~79分为’C’60~69分为’D’60分以下为’E’

 

 #include <stdio.h>

 

 int main(int argc, const char * argv[]) {

 

 printf("请输入成绩\n");

 

 int score,level;

 

 scanf("%d",&score);

 

 level = score/10;

 

 if (score>100 || score<0) {

 printf("正常点好不\n");

 return 0;

 }

 switch (level) {

 case 6:

 printf("D\n");

 break;

 

 case 7:

 printf("C\n");

 break;

 

 case 8:

 printf("B\n");

 break;

 

 case 9:

 case 10:

 printf("A\n");

 break;

 

 default:

 printf("E\n");

 break;

 }

 return 0;

 }

 

 

 


//9.某个自动加油站有 ‘a’‘b’‘c’三种汽油品种,单价分别为 6.927.377.64(/公升),也提供了自己加协助加两个服务等级,这样用户可以得到5%10%的优惠,请编程序针对用户输入加油量x,汽油品种y和服务类型z‘f’—自动加,‘m’—自己加,‘e’—协助加),(注:‘f’—自动加无优惠),计算应付款pay。(请用多分支选择switch语句)。


#include <stdio.h>


int main(int argc, const char * argv[]) {

    

    printf("请选择汽油品种:a,b,c\n请选择加油量:\n请选择服务类型:f,m,e\n");

    char y,z;

    float x,price = 0.0,pay,help = 0.0;

    

    scanf("%c,%f,%c",&y,&x,&z);

    

    switch (y) {

        case 'a':

            price = 6.92;

            break;

            

        case 'b':

            price = 7.37;

            

        case 'c':

            price = 7.64;

            

    }

    

    

    switch (z) {

        case 'f':

            help = 0;

            break;

        case 'm':

            help = 0.05;

            break;

        case 'e':

            help =0.1;

            break;

            

    }

    

    pay = (x*price)-(x*price*help);

    

    printf("您应付款:%f\n",pay);

    

    return 0;

}