目录

  • 1 第一章  C语言概述
    • 1.1 第一节  C语言的产生和发展
    • 1.2 第二节  C语言的特点
    • 1.3 第三节  两个简单的C程序
    • 1.4 第四节  C程序的上机步骤
    • 1.5 第五节  Dev-C++介绍
    • 1.6 第六节  VC2010学习版介绍
    • 1.7 第七节  宏定义和文件包含
    • 1.8 本章小结
    • 1.9 本章单元测试
  • 2 第二章  基本数据类型与简单程序设计
    • 2.1 第一节  C语言的基本数据类型
    • 2.2 第二节  常量
    • 2.3 第三节  变量
    • 2.4 第四节  赋值语句
    • 2.5 第五节  数据输出
    • 2.6 第六节 数据输入
    • 2.7 第七节  运算符
    • 2.8 第八节  常用的数学函数
    • 2.9 第九节  顺序结构程序设计
    • 2.10 本章小结
    • 2.11 本章单元测试
  • 3 第三章  分支结构程序设计
    • 3.1 第一节  关系表达式和逻辑表达式
    • 3.2 第二节  if单分支语句
    • 3.3 第四节  if双分支语句
    • 3.4 第五节  if多分支语句
    • 3.5 第六节  case多分支语句
    • 3.6 第七节  分支结构程序设计实例
    • 3.7 本章小结
    • 3.8 本章单元测试
    • 3.9 书中本章习题答案
  • 4 第四章  循环结构程序设计
    • 4.1 第一节  While循环
    • 4.2 第二节  do ... while循环
    • 4.3 第三节  for循环
    • 4.4 第四节  多重循环
    • 4.5 第五节  break语句和continue语句
    • 4.6 第六节  循环结构程序设计实例
    • 4.7 本章小结
    • 4.8 书中本章习题答案
  • 5 第五章 数组
    • 5.1 第一节  一维数组的定义和使用
    • 5.2 第二节  二维数组的定义和使用
    • 5.3 第三节  字符数组的定义和使用
    • 5.4 第四节  数组的应用举例
    • 5.5 本章小节
    • 5.6 书中本章习题
  • 6 第六章  函数
    • 6.1 第一节  函数的定义
    • 6.2 第二节  函数的调用
    • 6.3 第三节 数组作为函数参数
    • 6.4 第四节  变量的作用域
    • 6.5 第五节 变量的存储类别
    • 6.6 第六节 函数应用实例
  • 7 第七章 结构体和共用体
    • 7.1 第一节  概述
    • 7.2 第二节  定义结构体变量的方法
    • 7.3 第三节 结构体变量的引用
    • 7.4 第四节 结构体数组
    • 7.5 第五节 共用体
    • 7.6 第六节  结构体和共用体应用实例
  • 8 第八章 指针
    • 8.1 第一节  指针的概念
    • 8.2 第二节  指向简单变量的指针
    • 8.3 第三节 指向数组的指针变量
    • 8.4 第四节  指向字符串的指针变量
    • 8.5 第五节 指针作为函数参数
    • 8.6 第六节  指向结构体的指针变量
    • 8.7 第七节 指针应用实例
  • 9 第九章  文件
    • 9.1 第一节  文件概述
    • 9.2 第二节  文件的打开和关闭
    • 9.3 第三节 文件的读/写函数
    • 9.4 第四节  文件定位函数
    • 9.5 第五节  文件应用实例
    • 9.6 本章小节
    • 9.7 本章习题
  • 10 附录
    • 10.1 附录A  基本字符ASCII码表(0~127)
    • 10.2 附录B  运算符优先级表
    • 10.3 附录C 常用C库函数表
    • 10.4 附录D  编译常见错误提示
    • 10.5 附录E  常见C语言英语单词
    • 10.6 附录F  如何从十进制转换为二进制
    • 10.7 附录G  如何把二进制数转化为十进制数
    • 10.8 附录H  什么是编译器
    • 10.9 附录I  与编译器相关的几个知识点
  • 11 数组
    • 11.1 一维数组
    • 11.2 二维数组
    • 11.3 字符数组
    • 11.4 常见问题集锦
    • 11.5 配套课件
    • 11.6 配套实训
  • 12 第一章 C语言程序设计基础
    • 12.1 程序设计语言的发展及其特点
      • 12.1.1 为什么要学习C语言
      • 12.1.2 什么是程序设计语言
      • 12.1.3 程序设计语言发展的三个阶段
    • 12.2 C语言的发展及其特点和应用
      • 12.2.1 C语言的发展史
      • 12.2.2 C语言的特点
      • 12.2.3 C语言的应用以及其他语言的关系
    • 12.3 C语言程序的基本结构
      • 12.3.1 最简单的C语言程序
      • 12.3.2 计算输入的两个整数的和
      • 12.3.3 练习:计算输入的两个整数的和
    • 12.4 编制C语言程序的基本步骤
      • 12.4.1 编写C程序的步骤
      • 12.4.2 VC6.0集成开发环境介绍
      • 12.4.3 建立工程操作演示
      • 12.4.4 练习:我们编的第一个程序
      • 12.4.5 程序调试
    • 12.5 习题
  • 13 基本数据类型、运算符与表达式
    • 13.1 预备知识
      • 13.1.1 计算机系统组成
      • 13.1.2 计算机中数的表示及进制转换
    • 13.2 C语言的数据类型
    • 13.3 常量、变量和标识符
      • 13.3.1 标识符
      • 13.3.2 常量
      • 13.3.3 变量
    • 13.4 简单数据类型与表示范围
      • 13.4.1 整型数据
      • 13.4.2 整数在内存中的表示
      • 13.4.3 整型变量
      • 13.4.4 整数常量的分类
      • 13.4.5 实型数据
      • 13.4.6 字符型数据和字符串常量
      • 13.4.7 简单数据类型的表示范围
      • 13.4.8 简单的数据输出
    • 13.5 运算符与表达式
      • 13.5.1 赋值运算符、赋值表达式
      • 13.5.2 强制类型转换符
      • 13.5.3 算术运算符、算术表达式
      • 13.5.4 自增自减运算符、符号运算符
      • 13.5.5 算术运算符中数据类型转换规则
      • 13.5.6 位运算符、位运算表达式
      • 13.5.7 逗号运算符、逗号表达式
      • 13.5.8 其他运算符:sizeof运算符
      • 13.5.9 关系运算符与表达式
      • 13.5.10 逻辑运算符与表达式
      • 13.5.11 条件运算符与表达式
    • 13.6 运算符的优先级和结合性
  • 14 基本输入输出和顺序程序设计
    • 14.1 程序的控制结构
    • 14.2 格式化输出printf
    • 14.3 格式化输入scanf
    • 14.4 字符数据的非格式化输入输出
    • 14.5 顺序程序设计举例
  • 15 选择结构程序设计
    • 15.1 C程序中语句的分类
    • 15.2 关系运算符、逻辑运算符、条件运算符
      • 15.2.1 关系运算符和关系表达式
      • 15.2.2 逻辑运算符和逻辑表达式
      • 15.2.3 条件运算符和条件表达式
    • 15.3 选择结构的程序设计
      • 15.3.1 if语句
      • 15.3.2 switch语句
    • 15.4 选择结构程序设计举例
      • 15.4.1 例1 计算员工当月薪水
      • 15.4.2 例2 判定闰年
      • 15.4.3 例3  简单表达式计算
  • 16 循环结构程序设计
    • 16.1 循环结构的程序设计
      • 16.1.1 while语句
      • 16.1.2 do-while语句
      • 16.1.3 for语句
      • 16.1.4 循环嵌套
      • 16.1.5 break与continue语句
      • 16.1.6 exit()函数
    • 16.2 循环结构类型的选择及转换
    • 16.3 循环结构程序设计举例
  • 17 数组
    • 17.1 一维数组
      • 17.1.1 一维数组的定义
      • 17.1.2 一维数组的引用
      • 17.1.3 一维数组的赋值
      • 17.1.4 应用实例1:字符统计
      • 17.1.5 应用实例2:冒泡排序
      • 17.1.6 应用实例3:选择排序
      • 17.1.7 应用实例4:斐波那契数列
    • 17.2 二维数组及多维数组
      • 17.2.1 二维数组的定义、引用和赋值
      • 17.2.2 二维数组的应用举例
    • 17.3 字符串与数组
      • 17.3.1 字符串的本质
      • 17.3.2 字符及字符串操作的常用函数
      • 17.3.3 字符串的应用举例
      • 17.3.4 字符串数组
      • 17.3.5 字符串数组的应用举例
    • 17.4 数组综合应用举例
  • 18 函数
    • 18.1 函数的概述
    • 18.2 函数的定义和调用
    • 18.3 函数参数的传递方式
    • 18.4 变量的作用域和生存期
    • 18.5 变量的存储类型
    • 18.6 函数的嵌套与递归调用
    • 18.7 函数的作用域
    • 18.8 函数的封装
    • 18.9 函数应用综合举例
    • 18.10 本章习题
  • 19 指针
    • 19.1 指针与指针变量的概念
    • 19.2 指针变量的定义和引用
    • 19.3 指针和地址运算
    • 19.4 指针与数组
      • 19.4.1 数组的指针和指向数组的指针变量
      • 19.4.2 指向多维数组的指针——数组指针
      • 19.4.3 元素为指针的数组——指针数组
    • 19.5 指针与字符串
    • 19.6 指针与动态内存分配
    • 19.7 多级指针
    • 19.8 指针作为函数参数
    • 19.9 指针作为函数的返回值——指针函数
    • 19.10 本章习题
  • 20 VC6  Debug
    • 20.1 VC6  Debug
书中本章习题答案



第三章    分支结构程序高计    习题

一、填空题

1、C语言的关系运算符中属于高优先级组的有                、         、           ;低优先级组的有                      、                  。关系表达式是用                    连接两个子表达式组成的式子。

2、 "A&&B"的含义为                            ,"A||B"的含义为                           ,"!A"的含义为                                         。3种逻辑运算符的优先级从高到低的次序为             

3、若a=7, b=6, c=12,则表达式"a+b<c && a>b"的值为                 。

4、设a=3,b=4,c=5,则逻辑表达式"!(a+b)+c-1 && b+c/2”的值为                      ,"a+b>c && (b=c)"的值为               ,"!(a+b) && !c || 1"的值为             。

填空题答案如下:

1、高:>、>=、<=、<   低:==、!= ;  关系运算符

2、与运算、或运算、非运算、    非运算 > 与运算 > 或运算

3、0

4、  1、 1、 1

二、选择题

1、已知a=9, b=8, c=7,则执行下列程序段后,a、b、c的值分别为           。

  1. if( a>c)

  2.      {    a=b; b=c; c=a;  }

  3. else

  4.       a=c;  c=b;  b=a;

A.  9, 8, 8        B.  9, 8, 7      C.  8, 8, 7       D. 8, 7, 8

2、有以下程序段:

  1. if(x>y)   

  2.         z=1;

  3. else   if(x>0)  

  4.         z=2;

  5. else

  6.         z=3;

要得到z=2的结果,满足条件的一组数是                       。

    A.  x=-1, y=-2    B. x=-2, y=-1   C.  x=2, y=1   D.  x=2,y=3

3、如果x大于1并且小于或等于10,则为真,否则为假,正确的表达式是         。

     A.  1<x<=10      B   x>1 || x<=10    

     C.  x>1 && x<=10    D. x>1 && x<10

4、与表达式"x>10 && x-y!=10 "等价的式子是                       

     A. x>(10 && (x-(y!=10)))      B. (x>10) && ((x-y)!=10)    

     C. x>((10 &&  x)-(y!=10))      D. ((x>10) && (x-y))!=10

5、以下表达式中满足""的是                    。

(1) !x%2!=0   (2) x%2==0   (3) (x/2*2-x)==0   (4) !(x%2)

A. (1)(2)(3)      B. (2)(3)(4)      C. (1)(3)(4)     D.(1)(2)(4) 

6、下列表达式中值为真的有                   

      A.  a=0      B.  b=3>4      C.  b=3+4==5     D.  (float)1/2

答案:

1、D     2、D    3、C    4、B      5、B   6、D

三、阅读程序并写出运行结果

1、 运行如下程序,输出结果为:                             

源程序如下:

  1. #include  <stdio.h>

  2. #include  <conio.h>

  3. main()

  4. {

  5. int  n;

  6. n=12;

  7. if(n>5)

  8. if(n<11)

  9. printf("RIGHT!RIGHT!");

  10. else

  11. printf("LEFT!LEFT!");

  12. }

当n=6时,输出结果为                               

答案:(1)LEFT!LEFT!      (2)RIGTH!RIGHT!

2、   运行如下程序,输出结果为:                            

    

源程序如下:

  1. #include  <stdio.h>

  2. #include  <conio.h>

  3. main()

  4. {

  5. int  x=1, y=0;

  6. switch(x)

  7. {

  8. case  1:

  9. switch(y)

  10. {

  11. case  0:

  12. printf("**1**\n");  break;

  13. case  1:

  14. printf("**

  15. 2**\n");  break;

  16. }

  17. case  2:

  18. printf("**3**\n");

  19. }

  20. }


答案为:


四、程序填空题。

1、以下程序可实现从键盘输入两数a、b并输出其中较大者的功能(不考虑相等的情况)。

  1. #include  <stdio.h>

  2. main( )

  3. {                                                   

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

  5.     if( (                           )

  6.              printf("最大值为:%d\n",a);

  7.     else  

  8.               printf("最大值为:%d年为闰年\n",b);

  9. }

答案为:

   int  a,b;            a>b    

2、以下程序用于判断某一年是否为闰年(判断闰年的方法:能被4整除但不能补100整除或者能被400整除)。

  1. #include  <stdio.h>

  2. main( )

  3. {    int  year;

  4.      printf("请输入年份:“);

  5.      scanf("%d", &year);

  6.     if( (year %4==0) &&                            )

  7.              printf("%d年为闰年\n",year);

  8.     else  if                                  

  9.                printf("%d年为闰年\n",year);

  10.     else

  11.   printf("%d年为平年\n",year);

  12. }

答案为:

    ( year % 100 != 0)            (year % 400 == 0)      

五、编程题。

1、从键盘上输入一个整数,判断并输出它是奇数还是偶数。

源程序1:

  1. #include  <stdio.h>

  2. main( )

  3. {   int   x;

  4.     if( x%2 == 1)

  5.             printf("%d是奇数\n", x);

  6.     else

  7.             printf("%d是偶数\n", x);

  8. }


2、从键盘上输入一个浮点数,输出它的绝对值。

源程序1:

  1. #include   <stdio.h>

  2. main( )

  3. {

  4.       float   x, y;

  5.       printf("请从键盘上输入浮点数x:");

  6.      scanf("%f", &x);

  7.      if(x<0)

  8.            y=-x;

  9.      else

  10.           y=x;

  11.       printf("浮点数%f的绝对值为:%f", x, y);

  12. }



3、从键盘上输入a、b、c三个整 数,输出其中的最小数。

源程序1:

  1. #include   <stdio.h>

  2. main( )

  3. {    int  a, b, c, min;

  4.      printf("请从键盘上输入三个整数(a,b,c):");

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

  6.      min=a;

  7.      if(min>b)

  8.           min=b;

  9.      if(min>c)

  10.           min=c;    

  11.       printf("最小数为:%d", min);

  12. }



4、从键盘上输入a、b、c三个整数,将它们按从小到大的顺序输出。

源程序1:

  1. #include   <stdio.h>

  2. main( )

  3. {    int  a, b, c, t;

  4.      printf("请从键盘上输入三个整数(a,b,c):");

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

  6.      if(a>b)

  7.      {  t=a;  a=b;  b=t;  }

  8.      if(a>c)

  9.      {   t=a; a=c; c=t;   }

  10.      if(b>c)

  11.       {  t=b; b=c; c=t;  }

  12.       printf("从小到大为:%d,%d, %d", a, b, c);

  13. }


5、由键盘输入任意三个数,计算以这三个数为边长的三角形周长(提示:先判断这三个边能否构成三角形,再运用三角形周长公式计算周长)。

源程序1:

  1. #include   <stdio.h>

  2. main( )

  3. {    float  a, b, c, len;

  4.      printf("请从键盘上输入三角形的三边(a,b,c):");

  5.      scanf("%f,%f,%f", &a, &b, &c);

  6.      if( a>0 && b>0 && c>0 && a+b>c && a+c>b && b+c>a)

  7.     {

  8.             len = a+b+c;

  9.             printf("三角形的周长为:%.2f", len);

  10.     }

  11.     else

  12.             printf("不能构成三角形");

  13. }




    6、写一个程 序,从键盘上输入x,y值,判断(x,y)是否在图3-21的斜线区域内。若在则输出TRUE,否则输出FALSE。

    源程序如下:

  14. #include  <stdio.h>

  15. #include  <math.h>

  16. main( )

  17. {

  18.      float  x, y;

  19.      printf("请从键盘上输入两个数(x, y):");

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

  21.      if( fabs(x) <=2 && fabs(y) <= 2)

  22.            printf("TRUE\n");

  23.      else

  24.           printf("FALSE\n");

  25. }


7、输入一个0∽6的倍数,输出星期几。

源程序如下:

  1. #include  <stdio.h>

  2. main( )

  3. {

  4.      int  n;

  5.      printf("请输入0-6的整数:");

  6.      scanf("%d", &n);

  7.      switch(n)

  8.      {

  9.             case  0:

  10.                 printf("星期天\n");  break;

  11.             case  1:

  12.                 printf("星期一\n");  break;

  13.            case  2:

  14.                 printf("星期二\n");  break;

  15.            case  3:

  16.                 printf("星期三\n");  break;

  17.            case  4:

  18.                 printf("星期四\n");  break;

  19.            case  5:

  20.                 printf("星期五\n");  break;

  21.            case  6:

  22.                 printf("星期六\n");  break;

  23.           default:

  24.                 printf("输入有误!\n");  break;

  25.      }

  26. }


8、输入图书的定价和数量,计算购书金额并输出。其中,图书销售策略为:正常情况下按九折出售,超过10本按八五折出售,超过100本按八折出售。

源程序如下:

  1. #include  <stdio.h>

  2. main( )

  3. {

  4.      float  price, money;

  5.      int  num;

  6.      printf("请从键盘上输入图书的定价:");

  7.      scanf("%f", &price);

  8.      printf("请从键盘上输入图书的数量:");

  9.      scanf("%d", &num);

  10.      if( num <= 10)

  11.            money = price * num;

  12.      else  if( num <= 100)

  13.            money = price * num * 0.9;

  14.       else

  15.             money = price * num * 0.85;

  16.      printf("购书金额为:%.2f", money);

  17. }


9、输入月份和订购机票的数量,计算机票优惠并输出。计算规则如表3-3所示。

                                     表3-3   机    票

月份m{ 7, 8, 9 }{ 1∽5, 10, 11 }{ 6, 12 }
数量nn>=20n<20n>=20n<20
优惠率r(%)155302010

源程序如下:

  1. #include  <stdio.h>

  2. main( )

  3. {

  4.      float  r;

  5.      int  num, month;

  6.      printf("请从键盘上输入月份:");

  7.      scanf("%d", &month);

  8.      printf("请从键盘上输入订购机票数量:");

  9.      scanf("%d", &num);

  10.      switch(month)

  11.      {

  12.             case  1:

  13.             case  2:

  14.             case  3:

  15.             case  4:

  16.             case  5:

  17.             case  10:

  18.             case  11:

  19.                     if(num>=20)

  20.                             r =  0.30;

  21.                     else 

  22.                            r = 0.20;

  23.                      break;

  24.             case  7:

  25.             case  8:

  26.             case  9:

  27.                    if(num>=20)

  28.                             r =  0.15;

  29.                     else 

  30.                            r = 0.05;

  31.                      break;

  32.             case  6:

  33.             case  12:

  34.                    r = 0.10;

  35.                      break;

  36.      }

  37.      printf("机票优惠率为:%.2f", r );

  38. }