C程序设计习题参考答案

习 题 一
1. 填空题
计算机程序设计语言按其发展可分为三类,即 机器语言 汇编语言 高级语言
C程序是由 函数 构成的,一个C程序中至少包含 1个main函数。因此, 函数是C程序的基本单位。
C程序注释是由 /*    */ 所界定的文字信息组成的。
函数体一般包括 函数首行 c语言中逗号表达式的用法 函数体 
在任何C程序中都必须且只能有一个主函数, 主函数名必须为 main
2. 判断下列各个叙述的正确与否
C程序的执行总是从该程序的main函数开始,在main函数最后结束【
C程序的注释部分可以出现在程序任何位置,它对程序的编译和运行不起任何作用但可以增加程序的可读性【
由“/*”与“*/”界定的注释必须在同一行【
通过了编译、连接的程序就是正确的程序
有计算结果输出的程序一定是正确的程序
编译错误是语法错误,运行结果错误是逻辑错误
编译时在信息窗口出现包含“error”的信息,说明程序存在警告性错误
源程序每次修改后,都必须重新编译、连接
3. 简答题
算法的含义、特点是什么?
解答:算法是解题方法的精确描述。有穷性、确定性、有多或零个输入、有1或多个输出、有效性。
写出一个C程序的基本结构。
由编译预处理命令、注释、1个main和若干个自定义函数构成,函数格式如下:
    函数类型 函数名(类型标识符 形参,类型标识符 形参,...)
    {  类型声明语句; 执行语句部分; }
写出在你使用的计算机系统上,进入C环境以及运行、调试程序的简要步骤。
输入x后计算其正弦值的源程序如下。编译信息是否表示有致命性错误?应如何修改?
解答:致命性错误为第6行函数sin未声明,应加入编译预处理命令 #include <math.h>
4. 编程题
请上机调试、运行本章课本上C语言程序例题4~6(注释部分可以不必输)
仿照例6编程,输入两个变量后,输出其中较大的值。
    #include <stdio.h>
    void main()
  int a, b;
      printf("请输入A,B的值:\n");
      scanf("%d%d",&a,&b) ;
      if(a>b) printf("%d\n",a); else printf("%d\n",b);
    }
仿照例题编程,输入圆柱体的半径和高,计算并输出圆柱体的体积。
    #include <stdio.h>
    void main()
  float r, h, v;
      printf("请输入半径、高的值:\n");
      scanf("%f%f",&r,&h);
      v=r*r*3.141593*h;
      printf("%f\n",v);
    }
习 题 二
1. 将下列程序上机运行,写出你所使用的C语言处理系统中shortint以及long类型数据的字长和数值范围。
      #include <stdio.h>
      void main()
    {  printf("short类型数据的字长为:%d\n",sizeof(short));
        printf("int类型数据的字长为:%d\n",sizeof(int));
        printf("long类型数据的字长为:%d\n",sizeof(long));
      }
解答:VC++环境下,分别为2、4、4
2. 仿照题1编程,测试floatdouble类型数据的字长。
      #include <stdio.h>
      void main()
    {  printf("float类型数据的字长为:%d\n",sizeof(float));
        printf("double类型数据的字长为:%d\n",sizeof(double));
      }
3. 判断下列各个叙述的正确与否。
C的long类型数据可以表示任何整数
任何变量都必须要声明其类型
C的任何类型数据在计算机内都是以二进制形式存储的
scanf函数中的格式符“%d”不能用于输入实型数据
格式符中指定宽度时,从缓冲区中读入的字符数完全取决于所指定的宽度
按格式符“%d”输出float类型变量时,截断小数位取整后输出
按格式符“%6.3f”输出ii=123.45)时,输出结果为 23.450
scanf函数中的格式符“%f”能用于输入double类型数据
4. 指出下列各项中那些是C的常量,对合法的C常量请同时指出其类型。
10,150      007      -0x3d      π      1e0      e1      o7o8
'x'        'xo'    1.52e0.5    sin(3)    0xf16    "X"      '\007'
1.414E+2    2.54    '\\'        'a'
解:007整型,-0x3d整型,1e0实型,'x'字符型,0xf16整型,"X"字符串
  '\007'字符型,1.414E+2实型,2.54实型,'\\'字符型,'a'字符型
5. 指出下列各项中那些是C的标识符(可作变量名)。
x_1      X_2    High    printf    β      3DS      i/j
e2      -e2    count    Int      number  $23      next_
解:x_1X_2Highe2countIntnumbernext_
6. 根据条件,写出下列各题的输出结果。
int i=234,j=567; 函数printf("%d%d\n",i,j) 的输出结果是 234567
int i=234; float x=-513.624;
  函数printf("i=%5d  x=%7.4f\n",i,x) 的输出结果是 i=  234  x=-513.6240
float alfa=60,pi=3.1415926535626;  函数printf("sin(%3.0f*%f/180)\n",alfa,pi)
  的输出结果是 sin( 60*3.141592/180)
char ch='$',float x=153.45;
  函数printf("%c%-8.2f\\n",ch,x) 的输出结果是 $153.45  \n
int d=27; 函数printf("%-5d,%-5o,%-5x\n",d,d,d)的输出结果是 27  ,34  ,1b
float x1=13.24,x2=-78.32;  函数printf("x(%d)=%.2f  x(%d)=%.2f\n",1,x1,2,x2)
  的输出结果是 x(1)=13.24  x(2)=-78.32
7. 根据下列条件写出变量i1(int类型)、c1(char类型)、f1(float类型)、d1(double类型)的当前值。
执行scanf("%d%c%f%lf",&i1,&c1,&f1,&d1)时输入52$9.17 3.1415926535 后。
  i1为52,c1为'$',f1为9.17,d1为3.1415926535
  执行scanf("%d$%c%f%lf",&i1,&c1,&f1,&d1)时输入52$9.17 3.1415926535 后。
  i1为52,c1为'9',f1为0.17,d1为3.1415926535
8.下列源程序输入x、y后,输出x的y次方。运行时无编译、连接错误,但输入不同格式的两组数据输出结果却不同,哪一组是对的?请说明原因。
解答:第1组输入数据错误,因为格式串中有“,”所以键盘输入数据x、y之间也一定以逗号为间隔符。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。