程序设计基础(C语言版)习题
第01章 绪论
一.选择题
1.以下叙述中正确的是________
A)程序设计的任务就是编写程序代码并上机调试
B)程序设计的任务就是确定所用数据结构
C)程序设计的任务就是确定所用算法
D)以上三种说法都不完整
    参考答案:D
【解析】 程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。所以选项A)B)C)说法都不完整。
2.以下关于简单程序设计的步骤和顺序的说法中正确的是。
A)确定算法后,整理并写出文档,最后进行编码和上机调试
B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档
C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档
D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构
    参考答案:B
【解析】设计一个能解决实际问题的计算机程序需要经过以下几个过程:① 建立模型。② 算法设计:给出解决问题的步骤,即算法。③ 算法表达:选择一种表达算法的工具,对算法进行清晰的表达。④ 编写程序:选择一种程序设计语言,把以上算法程序化,这称为编写程序。⑤ 程序调试:对编写好的程序进行调试,修改程序中的错误。⑥ 程序文档编写与程序维护。综上所述,B)选项是符合上述描述的,其他选项不恰当。
3.以下叙述中正确的是________
A)C程序的基本组成单位是语句
B)C程序中的每一行只能写一条语句
C)简单C语句必须以分号结束
D)C语句必须在一行内写完
    参考答案:C
【解析】函数是C程序的基本组成单位;C语言书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。故本题答案为C)
4.以下叙述中正确的是。
A)C程序中的注释只能出现在程序的开始位置和语句的后面
B)C程序书写格式严格,要求一行内只能写一个语句
C)C程序书写格式自由,一个语句可以写在多行上
D)C语言编写的程序只能放在一个程序文件中
    参考答案:C
【解析】在C语言中,注释可以加在程序中的任何位置,选项A)错误。C程序可以分模块写在不同的文件中,编译时再将其组合在一起,选项D)错误。C程序的书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。所以正确答案为选项C)
5.以下关于C语言的叙述中正确的是。
A)C语言中的注释不可以夹在变量名或关键字的中间
B)C语言中的变量可以在使用之前的任何位置进行定义
C)C语言算术表达式的书写中,运算符两侧的运算数类型必须一致
D)C语言的数值常量中夹带空格不影响常量值的正确表示
    参考答案:A
【解析】C语言中注释可以放在任何位置,但不能夹在变量名或关键字中间,选项A正确;C语言中的变量要在使用之前定义,C标准规定定义位置在相关程序块的首部,选项B错误;C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选项C错误;C语言数值常量中不允许存在空格,选项D错误。
6.以下关于C语言数据类型使用的叙述中错误的是。
A)若要准确无误差地表示自然数,应使用整数类型
B)若要保存带有多位小数的数据,应使用双精度类型
C)若要处理如"人员信息"等含有不同类型的相关数据,应自定义结构体类型
D)若只处理""""两种逻辑值,应使用逻辑类型
    参考答案:D
【解析】C语言中没有逻辑类型,若只处理""""两种逻辑值,可以使用整型数"1""0"表示,故选D
第02章 基本数据类型
一.选择题
1.有以下定义:int along bdouble xy;则以下选项中正确的表达式是。
A)a%(int)(xy)    B)ax!=y    C)(a*y)%b    D)yxyx
    参考答案:B
【解析】A)选项中如果xy的值相等那么取余时就会有除数为0的情况。C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。D)选项表达式本身就错误,不能给表达式赋值。所以,本题答案为B)。
2.有以下程序
#include<stdio .h>
main()
{ int stA10double B6
  ssizeof(A) tsizeof(B)
  printf("%d%d\n"st)
}
VC6平台上编译运行,程序运行后的输出结果是
A)2,4      B)4,4      C)4,8      D)10,6
    参考答案:C
【解析】sizeof的作用就是返回一个对象或者类型所占的内存字节数。在VC6中整型占4个字节,双精度实型占8个字节,所以选C)。
3.若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是。
A)a=a++,i++;            B)i=(a+k)<=(i+k);
C)i=a%11;                D)i=!a;
    参考答案:C
【解析】C语言中取余运算符两侧的操作数只能是整型(若为char型,则会自动转换成整型)
4.有以下程序:
#include  <stdio.h>
main()
{ int aprintf输出格式中符号的含义1b0
  printf("%d"bab)
  printf("%d\n"a2*b);
}
程序运行后的输出结果是________
A)0,0      B)1,0   
C)3,2      D)1,2
    参考答案:D
【解析】 执行第一个printf语句时,bab1,所以输出1,执行第二个printf语句时,a2*b=2,所以输出结果为2
5.若有定义语句:int a=3b=2c=1;,以下选项中错误的赋值表达式是。
A)a=(b=4)=3    B)a=b=c+1    C)a=(b=4)+c    D)a=1+(b=c=4)
    参考答案:A
【解析】在A)选项中,赋值语句b=4先把4赋值给整型变量b,之后执行(b=4)=3是把常量3赋值给常量4,但是由于C语言规定赋值运算符的左侧只能是变量,不能是常量或者表达式,因此A)选项错误。
6.有以下定义:int along bdouble xy;则以下选项中正确的表达式是。
A)a%(int)(xy)    B)ax!=y    C)(a*y)%b    D)yxyx
    参考答案:B
【解析】A)选项中如果xy的值相等那么取余时就会有除数为0的情况。C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。D)选项表达式本身就错误,不能给表达式赋值。所以,本题答案为B)。
7.若有定义语句:int x10;,则表达式x-=xx的值为________
A)20            B)10   
C)0              D)10
    参考答案:B
【解析】 x-=xx可化为:xx(xx),由于x初始值为10,所以计算后,x1020=-10,因此选B)
二.填空题
1.以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。请填空。
#include<stdio.h>
main()
{int x=256;
printf("%d-%d-%d\n",__,x/10%10,x/100);
}
    参考答案:x%10
【解析】x=256x%10=6
2.以下程序运行后的输出结果是   
#include<stdio.h>
main()
{  int a
a=(int)((double)(3/2)+0.5+(int)1.99*2)
printf("%d\n"a)
      }
    参考答案:3
【解析】本题中3/2=1(double)(3/2)=1(int)1.99*2=1*2=2,因此(int)(1+0.5+2)=(int)3.5=3
3.若有定义语句:int a5;,则表达式:a++的值是____
    参考答案:5
【解析】 a++的含义是在使用a值以后,使a值加1,所以a++的值为5
4.若有语句double x17int y;,当执行y(int)(x/5)%2;之后y的值为____
    参考答案:1
【解析】 y(int)(x/5)%2(int)(3.4)%23%21
5.设变量ab已正确定义并赋初值。请写出与a-=ab等价的赋值表达式 ____
    参考答案:a=-b
【解析】a-=ab等价于aa(ab),等价于a=-b
第03章 顺序结构
.选择题
1.有以下程序
#include<stdio.h>
main()
{char a,b,c,d;
scanf("%c%c",&a,&b);
c=getchar();d=getchar();
printf("%c%c%c%c\n",a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意,回车也是一个字符)
12<CR>
34<CR>
则输出结果是
A)1234        B)12        C)12            D)12
                            3              34
    参考答案:C
【解析】程序根据用户输入分别给字符型变量abcd赋值为'1''2''<CR>''3',因此输出到屏幕得到选项C中的格式。
2.有以下程序段:
char ch
int k
ch=′a′;
k12
printf("%c%d"chchk)
printf("k%d\n"k)
已知字符aASCII码值为97,则执行上述程序段后输出结果是
A)因变量类型与格式描述符的类型不匹配输出无定值
B)输出项与格式描述符个数不符,输出为零或不定值
C)a,97,12k12
D)a,97k12
    参考答案:D
【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出。所以第一个输出语句输出的结果为a,97,第二个输出语句输出的结果为k12,所以选项D)为正确答案。