1、【
单选题
】
下列程序的输出结果是( )。
#included stdi0.h>
#included string.h>
void fun(int b[])
{ static int i=0;
do
{ b[i]+=b[i+1];
}while(++i<2);
}
main()
{ int k,a[5]={1,3,5,4,9};
fun(a);
for(k=0;k<5;k++)printf("%d",a[k]);
}
[1分]
、
13579
、
48579
、
48549
、
48999
答案:
2、【
单选题
】
若有定义:“int a=4,b=5;float x=3.4,y=2.1;”,则下列表达式的值为( )。
(float)(a+b)/2+(int)x%(int)y;
[1分]
、
5.5
、
55
、
5.500000
、
55.00000
答案:
3、【
单选题
】
已知大写字母A的ASCII码是65,小写字母a的ACSII码是97。下列能将变量C中的大写字母转换为对应小写字母的语句是( )。
[1分]
、
c=(c-'A')%26+'A'
、
c=c+32
、
c=c-'A'+'A'
、
c=('A'+C)%26-'a'
答案:
4、【
单选题
】
一个关系中属性个数为1时,称此关系为( )。
[1分]
、
对应关系
、
单一关系
、
一元关系
、
二元关系
答案:
5、【
单选题
】
下列叙述中正确的是( )。
[1分]
、
软件测试应该由程序开发者来完成
、
程序经调试后一般不需要测试
、
软件维护只包括对程序代码的维护
、
以上三种说法都不对
答案:
6、【
单选题
】
有以下程序
int fun(int x,int y){return(x+y);} main()
{ int a=1,b=2,C=3,sum;
sum=fun((a++,b++,a+b),c++
printf("%d\n",sum);)
执行后的输出结果是( )。
[1分]
答案:
7、【
单选题
】
面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是( )。
[1分]
、
模拟现实世界中不同事物之间的联系
、
强调模拟现实世界中的算法而不强调概念
、
使用现实世界的概念抽象地思考问题从而自然地解决问题
、
不强调模拟现实世界中的算法而强调概念
答案:
8、【
单选题
】
有以下程序:
viod fun(int a,int b,int c)
{ a=456:b=567;c=678;}
main()
{ int x=10,y=20,z=30;
fun(x,y,z):
printf("%d,%d,%d\n",x,y,z);
}
输出的结果是( )。
[1分]
、
30,20,10
、
10,20,30
、
456,567,678
、
678,567,456
答案:
9、【
单选题
】
以下叙述中错误的是( )。
[1分]
、
改变函数形参的值,不会改变对应实参的值
、
函数可以返回地址值
、
可以给指针变量赋一个整数作为地址值
、
当在程序的开头包含文件stdi0.h时,可以给指针变 量赋NULL
答案:
10、【
单选题
】
有下列函数定义:
fun(float h)
{ printf("%f,%f\n",h,h*h);)
该函数的类型是( )。
[1分]
、
int类型
、
float类型
、
void类型
、
函数无类型说明,定义有错
答案:
11、【
单选题
】
下列函数的类型是( )。
fun(double x)
{ float y;
y=3*x-4:
return y;
}
[1分]
、
int
、
不确定
、
void
、
float
答案:
12、【
单选题
】
函数fseek(pf,OL,SEEK END)中的SEEK ENE 代表的起始点是( )。
[1分]
、
文件开始
、
文件末尾
、
文件当前位置
、
以上都不对
答案:
13、【
单选题
】
有以下程序
#include
main()
{int y=9;
for(;y>0;y--)
if(y%3==0)printf("%d",--y);
}
程序的运行结果是( )。
[1分]
、
741
、
963
、
852
、
875421
答案:
14、【
单选题
】
以下程序的输出结果是( )。
main( )
{ int i,a[4] [4]一{{1,3,5),{2,4,6},{3,5,7}};
printf("%(1%d%d%d\n".a[O][3],a[1][2],a[2]
[1],a[3][0];
}
[1分]
、
0650
、
1470
、
5430
、
输出值不定
答案:
15、【
单选题
】
下列选项不符合良好程序设计风格的是( )。
[1分]
、
源程序要文档化
、
数据说明的次序要规范化
、
避免滥用goto语句
、
模块设计原则是高耦合、高内聚
答案:
16、【
单选题
】
C语言结构体类型变量在程序执行期间,( )。
[1分]
、
所有成员一直驻留在内存中
、
没有成员驻留在内存中
、
部分成员驻留在内存中
、
只有一个成员驻留在内存中
答案:
17、【
单选题
】
为了提高软件的独立性,模块之间最好是( )。
[1分]
、
控制耦合
、
公共耦合
、
内容耦合
、
数据耦合
答案:
18、【
单选题
】
下列叙述中正确的是( )。
[1分]
、
break语句只能用于switch语句体中
、
continue语句的作用是使程序的执行流程跳出包含它的所有循环
、
break语句只能用在循环体内和switch语句体内
、
在循环体内使用break语句和continue语句的作用相同
答案:
19、【
单选题
】
以下程序执行后sum的值是( )。
main()
{ int i,sum;
for(i=1;i<6;i++)sum+=i:
printf("1%d\n",sum):
}
[1分]
答案:
20、【
单选题
】
有下列程序:
int funl(double a){return a*=a;)
int fun2(double x,double y)
{ double a=0,b=0;
a=funl(x);b=funl(y);return(int)(a+h);
}
main()
{double w;w=fun2(1.1,2.0),……)
程序执行后变量w中的值是( )。
[1分]
答案:
21、【
单选题
】
以下只有在使用时才为该类型变量分配内存的存储类型说明是( )。
[1分]
、
auto和static
、
auto和register
、
register和static
、
extern和register
答案:
22、【
单选题
】
在深度为5的满二叉树叶中,叶子结点的个数为( )。
[1分]
答案:
23、【
单选题
】
若有定义“float a=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为( )。
[1分]
、
两个语句都是将变量a的值赋予变量P
、
*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P
、
*p=a是将变量a的值赋予变量b,而&a是使P指向变量a
、
两个语句都是使P指向变量a
答案:
24、【
单选题
】
下列数据结构中,能用二分法进行查找的是( )。
[1分]
、
顺序存储的有序线性表
、
结性链表
、
二叉链表
、
有序线性链表
答案:
25、【
单选题
】
数据的存储结构是指( )。
[1分]
、
数据所占的存储空间
、
数据的逻辑结构在计算机中的存放形式
、
数据在计算机中的顺序存储方式
、
存储在计算机外存中的数据
答案:
26、【
单选题
】
若有以下程序:
int a=1,b=2:
a=a^b:
b=b^a:
则执行以上语句后a和b的值分别是( )。
[1分]
、
a=1,b=2
、
a=3,b=l
、
a=3,b=2
、
a=2.b=1
答案:
27、【
单选题
】
下列叙述中正确的是( )。
[1分]
、
一个逻辑数据结构只能有一种存储结构
、
逻辑结构属于线性结构,存储结构属于非线性结构
、
一个逻辑数据结构可以有多种存储结构,且各种存诸结构不影响数据处理的效率
、
一个逻辑数据结构可以有多种存储结构,且各种存诸结构影响数据处理的效率
答案:
28、【
单选题
】
若二维数组a有m列,则在a[i][j]前的元素个数为( )。
[1分]
、
i*m+j-1
、
i*m+j
、
J*m+i
、
i*m+j+1
答案:
29、【
单选题
】
若执行以下程序时从键盘上输入9,则输出结果是( )。
main( )
{ int n;
scanf(”%d”,&n);
if(n++<10)printf(”/%d\n”,n);
else printf(”%d\n”,n--);
}
[1分]
答案:
30、【
单选题
】
下列程序的输出结果是( )。
#include
int fun(int a)
{ int b=0;
static int c=4:
a=c++:b++;
return(a):
main()
{ int a=2,i,c;
for(i=0:i<2;i++)
c=f(a+1):
printf("%d\n",c);
}
[1分]
答案:
31、【
单选题
】
软件生命周期是指( )。
[1分]
、
软件产品从提出、实现、使用维护到停止使用退役的过程
、
软件从需求分析、设计、实现到测试完成的过程
、
软件的开发过程
、
软件的运行维护过程
答案:
32、【
单选题
】
有以下程序段
int j;float y;char name[50]:
scanf("%2d%f%s",&i,&.y,name):
当执行上述程序段,从键盘上输入55566 7777abc后,y 的值为( )。
[1分]
、
55566.0
、
566.0
、
7777.0
、
566777.0
答案:
33、【
单选题
】
下列程序执行后的输出结果是( )。
void func(int*a,int b[])
{ b[0]=*a+b;}
main()
{ int a,b[5];
a=0.b[0]=3;
func(&a,b);printf("%d\n",b[0]);
}
[1分]
答案:
34、【
简答题】
请补充函数proc(),函数proc()的功能是求7的阶乘。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#inelude<STDIO.h>
long proc(int n)
{
if(【1】)
return(n*proc(【2】);
else if(【3】)
return 1;
}
void main()
{
int k=7;
printf("%d!=%1d\n",k,proc(k));
}
[18分]
解析:
【1】n>1【2】n-1 【3】n==1
35、【
简答题】
下列给定程序中,函数proc()的功能是计算正整数m 各位上数字的平方和。
例如,输入498,则输出应该是161。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<STDLIB.h>
#include<STDIO.h>
#include<CONIO.h>
long proc(10ng m)
{
//****found****
long sum=1;
do
{
sum+=(m%10)*(m%10);
m/=l0;
//****found****
}
while(m)
return(sum);
}
void main()
{
long n;
system("CLS");
printf("Please enter a number:");
scanf("%1d",&n);
printf("\n%ld\n",proc(n));
}
[24分]
解析:
1.错误:long sum=1;
正确:long sum=0;
2.错误:while(m)
正确:while(m);
36、【
简答题】
假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。
例如,若字符串中的内容为****a*bc*def*g** **,删除后,字符串中的内容则应当是a*bc*def*g** **。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<STDIO.h=:{>
#include<CONIO.h>
woid proc(char*st r)
{
}
void main()
char str[81];
printf("Enter a string:\n");
gets(str);
proc(str):
printf("The string after deleted:\n");
puts(str);}
[18分]
解析:
void proc(char*str)
{
char*p=str:
while(*p=='*')p++;//通过P的移动来达
到使P指向第一个不是*号的字符
for#;*p!='\0 ';p++,str++#//把从第一个
不是*号的字符放到a中 ‘
*str=* P: *str='\0 ';
//最后用'\0'作为字符串结束标志
}