C语言程序设计试题及答案【完整版】
《C语言程序设计》 卷考核班级
学生数 印数 考核方式 闭卷 考核时间 120 分钟
(本试卷包括第一卷和第二卷答卷时间总共120分钟)
第一卷
第一部分基础知识20项共40分
1一个C语言程序是由 组成的。
A主程序 B子程序 C函数 D过程
2转换说明符%x的输出形式是 。
A十进制 B八进制 C十六进制 D二进制
3若a、b均为int型变量且a=100则关于循环语句for(b=100;a!=b;++a,++b)
printf ( “ ------------“) ;的正确说法是 。
A循环体只执行一次 B死循环
C循环体一次也不执行 D输出-----------
4若x、y、z均为int 型变量则执行下列语句后的z值为 。
x=1; y=2; z=3; z=(x>y)?z :y ; z = (z
5下面标识符中合法的用户标识符为 。
AP#Ad B12a Cchar D_int
6 ‘A’ + 3 的结果是 。
A’A’ B’D’的ASCⅡ码 C65 D3
7语句char str[20];说明str是一个字符串最多能表示 。
A20个字符 B19个字符 C18个字符 D21个字符
8将int 型变量n转换成float型变量的方法是 。
Afloat n B(float)n Cfloat(n) D21个字符
9以下不正确的描述是 。
A 使用while和do-while循环时循环变量初始化的操作应在循环语句之前完成
B while循环是先判断表达式后执行循环体语句
C do-while和for循环均是先执行循环体语句后判断表达式
D for、while、do-while循环中的循环体均可以由空语句构成
10在循环中使用break 语句的功能是 。
A 使程序的执行跳出break所在的那一重循环
B 使程序执行结束
C 跳出包含此break语句的所有循环
D 终止本次循环继续下次循环
11下面是一个初始化指针的语句int *px = &a;其中指针变量的名字应该是 。
A*pz Ba Cpx D&a
12若指针 px为空指针则 。
Apx指向不定 Bpx的值为零
Cpx的目标为零 Dpx的地址为零
13对于语句int *px[10],以下说法正确的是 。
A. px是一个指针指向一个数组数组的元素是整数型。
B. px是一个数组其数组的每一个元素是指向整数的指针。
C. A和B均错但它是C语言的正确语句。 D. C语言不允许这样的语句。
14具有相同基类型的指针变量P和数组变量Y下列写法
中不合法的是 。
AP = Y B*P = Y[i]
CP + &Y[i] DP = &Y
15已知static int a[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p,则表达式 *(p[0]+1)+**(q+2)的
值是 。
A5 B4 C6 D7
16已知for(;n>=1;n--),下列语句实现将S2所指字符数组中前n个字符复制到S1所指字符
数组中其中代码不正确的是 。
A*S1++=*S2++ BS1[n-1]=S2[n-1]
C*S1+n-1=*(S2+n-1) D*++S1=*++S2
17调用函数的实参与被调用函数的形参应该有如下关系 。
A只要求实参和形参个数相等 B只要求形参和实参顺序相同
C只要求实参和形参数据类型相同 D上述三点均需具备
18联合体成员的数据类型 。
A相同 B可以不同也可以相同
C长度一样 D是结构体变量
19由系统分配和控制的标准输出文件为 。
A键盘 B磁盘 C打印机 D显示器
20C语言标准库函数fread(fd,buffer,n)的功能是 。
A从文件fd中读取长度不超过n个字节的数据送入buffer指向的内存区域
B从文件fd中读取长度不超过n-1个字节的数据送入buffer指向的内存区域
C从文件fd中读取长度不超过n个字符送入buffer指向的内存区域
D从文件fd中读取长度不超过n-1个字符送入buffer指向的内存区域
第二部分简单程序12项共30分
21下列程序
main()
{ int x,y,z;
x=y=2;z=3;
y=z++-1;
printf(“%d\t%d\t”,x,y);
y=++x-1;
printf(“%d \t%d\n”,x,y);
y=z---1;
printf(“%d\t%d\t”,z,y);
y=--z-1;
printf(“%d\t%d\n”,z,y);
}
运行后输出的数据为???_______。
A. 3 1 4 2 B. 3 1 3 3 C. 2 2 3 2 D. 2 1 3 2
2 4 1 3 2 4 2 2 3 3 2 1 1 3 1 2
22.下列程序
main() { int i,j;char *a,c;
a=”computer”;
printf(“%s”,a);
for(i=0,j=7;i
*(a+i)=*(a+j);
a[j]=c;
}
printf(“->%s\n”,a);
c=a[j-1,i=2+j];
printf(“a[%d]=%c\n”,i,c);
}
运行后输出的数据为___ .
A. computer->computer B. computer->retupmoc
a[3]=u a[5]=m
C. computer->retupmoc D. computer->retupmoc
a[4]=p a[2]=t
23.下列程序
int sum(int n)
{ int p=1,s=0,i;
for(i=1;i<=n;i++) s+=(p*=i);
return s;
}
main()
{ printf(“sum(5)=%d\n”,sum(5));
}
运行后输出的数据为_ ___
A.sum(5)=151 B.sum(5)=152 C.sum(5)=153 Dsum(5)=155
24.下列程序
main()
{ static int a[]={5,6,7,3,2,9};
int s1,s2,i,*ptr;
s1=s2=0;
ptr=&a[0];
for(i=0;i<5;i
+2=2) { t=*i; printf(“%s\n”,s2); 环顺序访问字符串s1的每个字符当从某个字符开
ruct ex 符合此要求的函数调用
i][j]>'\0'j+=2) ___(6)____str2[20]*p1,*p2 中0 i 10. int a[10]={0123456789} 序的输出结果是__________ 全局量t.x和t.s的正确结果为__________ 一个选项是正确的请将正确选项涂写
0。 4}}; fname"w" C测试覆盖率 D测试出错误的多少 的是 。
{ s1+=*(ptr+i);
s2+=*(ptr+i+1);
}
printf(“s1=%d,s2=%d\n”,s1,s2);
}
运行后输出的数据为_____
A.s1=18,s2=14 B.s1=14,s2=32 C.s1=14,s2=18 D.s1=15,s2=19
25.下列程序
int c=1; main()
{static int a=5;int b=6;
printf(“a=%d b=%d c=%d\n”,a,b,c);
func();
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
func();
}
func()
{ static int a=4;int b=10;
a+=2;
c+=10;
b+=c;
printf((“a=%d,b=%d,c=%d\n”,a,b,c);
}
运行后输出的数据为_ ___.
A. a=5 b=6 c=1 B. a=5 b=6 c=1
a=6 b=21 c=11 a=7 b=17 c=11
a=5 b=6 c=11 a=5 b=6 c=11
a=8 b=31 c=21 a=9 b=17 c=21
C. a=5 b=6 c=1 D. a=5 b=6 c=1
a=6 b=21 c=11 a=7 b=17 c=11
a=6 b=21 c=11 a=7 b=17 c=11
a=8 b=31 c=21 a=9 b=38 c=21
26已知
struct student
{char name;
int student_n;
char grade;
};
struct student temp,*p=&temp;
https://www.360docs.net/doc/a37961235.html,=”chou”;
则下面不正确的是_______。
表达式 值
A.p→name chou
B.(*p)→name+2 h
C.*p→name+2 e
D.*(p→name+2) o
27.下列程序
#define MAX 10
main()
{ int i,sum,a[ ]={1,2,3,4,5,6,7,8,9,10};
sum=1;
for(i=0;i
}
程序运行结果是:
A.SUM=55 B.SUM=-54 C.SUM=-55 D.SUM=54
28.下列程序
void inv(int*x,int n)
{int *p,t,*i,*j,m=(n-1)/2;
i=x;
j=x+n-1;
p=x+m;
for(;i
*i=*j;
*j=t;
}
return;
}
main( )
{ static int i,a[10]={3,7,9,11,0,6,7,5,4,2};
inv(a,10);
for(i=0;i<10;i++)
printf(“%d,”,a[i]);
}
程序运行结果:
A.0,2,3,4,5,6,7,7,9,11 B.11,9,7,7,6,5,4,3,2,0
C.3,7,9,11,0,6,7,5,4,2 D.2,4,5,7,6,0,11,9,7,3
29.下列程序
main()
{ int a[10],b[10],*pa,*pb,i;
pa=a;pb=b;
for(i=0;i<3;i++,pa++,pb++)
{*pa=i;*pb=2*i;
printf(“%d\t%d\n”,*pa,*pb);
}
printf(“\n”);
pa=&a[0];
pb=&b[0];
for(i=0;i<3;i++)
{*pa=*pa+i;
*pb=*pb*i;
printf(“%d\t%d\n”,*pa++,*pb++);
}
}
运行后输出的数据为______。 A. 0 0 B.0 0 C. 0 0 D. 0 0
1 2 1 2 1 2 2 2
2 4 2 4 2 4 2 4
0 0 0 0 0 0 0 0
2 2 2 2 1 2 1 2
4 8 2 4 2 4 4 8
30.下列程序
copy_string(from,to)
char *from,*to;
{ while(*from) *to++=*from++;
*to=?\0?;
}
main()
{ static char s1[ ]=”c_program.”;
static char s2[80];
copy_string(s1,s2)
printf(“%s\n”,s2)
copy_string(“123”,s2);
}
运行后输出的数据为 。
A. c_program 123 B.123 C. c_program123 D. c_program
123
31.下列程序
#include
main()
{ char a[40],b[40];
int i,j;
printf(“Enter the string:”);
scanf(“%s”,a);
i=j=0;
while(a[i]!=?\0?)
{ if(!(a[i]>=?\0?&&a[i]<=?9?))
{ b[j]=a[i]; j++;
}
++i;
}
b[j]=?\0?;
printf(“%s”,b);
}
运行后输出的结果是 。
A. 把键盘输入的字符串显示在屏幕上
B. 把键盘输入的字符串中的数字字符删掉然后显示该字符串
C. 把键盘输入的字符串中的字符0和9删掉然后显示该字符串 D. 只保留由键盘输入的字符串中的字母数字然后显示该字符串
32下列程序
#include
main()
{ char a[80];
int i,j;
printf(“Enter the string:”);
scanf(“%s”,a);
i=0;
while(a[i]!=?\0?)
{ if(a[i]>=?A?&&a[i]<=?Z?)
a[i]=a[i]-?A?+?a?;
}
printf(“%s”,a);
}
运行后输出的结果是 。
A. 把键盘输入的字符串中的大写字母变换成小写字母然后显示变换后的字符串。
B. 把键盘输入的字符串中的数字字符删除掉然后显示该字符串。
C. 把键盘输入的字符串中的小写字母变换成大写字母然后显示变换后的字符串。
D. 把键盘输入的字符串原封不动地显示在屏幕上。
第二卷
说明1第二卷含二大题均属填空题每题各有5个空栏在阅读和理解原题程序的基
础上在空栏处填入适当的字符、语句以构成一个正确的C语言程序。
2每空栏填对得3分两大题共10个空栏全填对得30分。
试题一
一个整数称为完全平方数是指它的值是另一个整数的平方。如81是个完全平方数因为
它是9的平方。下列程序是在三位的正整数中寻找符合下列条件的整数它既是完全平方数
且三位数字中又有两位数字相同例如14412*12、67626*26等从程序中找出并输
出所有满足上述条件的三位数。
程序如下
main()
{ int n,k,a,b,c;
for(k=1; ;k++)
{______①______
if(n<100) _____②_____
if(n<999) _____③_____
a=n/100;
b=_____④_____
c=n%10,
if(flag(a,b,c))
printf(“n=%d=%d*%d\n”,n,k,k); }
}
flag_____⑤_____
{ return(!(x-y)*(x-z)*(y-z));
}
试题二
以下程序所列函数replace(char *s1,char *s2,char str1,char *str2)的功能是将已知字符串s1中
的所有与字符串str1相同的子串替换成字符串str2并将替换后所生成的新的字符串存于字
符数组s2中。
说明生成字符串s2的过程是一个循
始不能构成与str1相同的子字符时就把该字符拷贝到数组s2当从某个字符开始能构成
一个与str1相同的子字符串时就将字符串str2的各字符拷贝到字符数组s2并继续访问
字符串s1中那个子串之后的字符直至字符串s1被访问完毕字符复制即告结束。
下列程序运行的结果是输出
ABCXYZdefg abABCXYZd abab
程序如下
replace(char *s1,char *s2,char *str1,char *str2)
{ char *t0,*t1,*t2;
while( ⑥ )
{ for(t0=s1,t1=str1;*t1!=’\0’&& ⑦ ;t0++,t1++);
if(*t1!=?\0?)
*s2++= ⑧ ;
else { for(t1=str2;*t1!=?\0?;)
*s2++= ⑨ ;
⑩ ;}
}
*s2=?\0?;
}
main()
{ char s1[]=”abcdefg ababcd abab.”;
char s2[80];
replace(s1,s2,”abc”,”ABCXYZ”);
printf(“%s\n”,s2);
}
参考答案 第一卷
一基础知识20项共40分
1.C 2.C 3.C 4.A 5.D 6.B 7.B 8.B 9.C 10.A 11.C 12.B 13.B 14.D 15.A 16.D 17.D 18.B 19.D 20.A
二简单程序
21.C 22.B 23.C 24.C 25.A 26.B 27.B 28.D 29.A 30.D 31.B 32.A
第二卷 试题一①n=k*k ②continue③break④n%100/10或(n-100*a)/10或n/10-(n/100)*10⑤int x,int y,int z
试题二
⑥*s1或s1!=’\0’ ⑦*t0==*t1或*t1==*t0 ⑧*s1++
⑨*t1++ ⑩s1=t0或s1=s1+strlen(str1) 《C语言程序设计》 卷考核班级
学生数 印数 考核方式 闭卷 考核时间 120 分钟
(本试卷包括第一卷和第二卷答卷时间总共120分钟)
第一卷
说明(1)第一卷全部为选择题每题可供选择的答案中只有一个正确答案。
(2)答本卷的题目时要在标准答题纸上编号对应的栏口中用铅笔将正确答案涂黑。在试题上直接
勾划不得分。
(3)本卷共分70分其中第1—26题每题2分第27—32题每题3分。
第一部分基础知识(20题共40分)
1、一个C语言的源程序中 。
(A)必须有一个主函数 (B)可以有多个主函数
(C)必须有主函数和其他函数 (D)可以没有主函数
2、下列数据中,为字符串常量的是 。
(A)‘A’ (B)“house” (C)How do you do (D)’$abc’
3、若有定义int a=8b=5c执行语句c=a/b十0.4后c的值为 。
A)1.4 (B)1 (C)2.0 (D)2
4、设有int x=11则表达式(x++*l/3)的值为 。
(A)3 (B)4 (C)11 (D)12
5、执行x=5>1+2&&2||2*4<4-!0后x的值为 。
(A)-l (B)O (C)1 (D)5
6、以下变量x、y、z均为double类型且已正确赋值不能正确表示数学式子(x)/(y×z)的c语言表达式
是 。
(A)x/y*z (B)x*(1/(y*z)) (C) x/y*1/z (D)x/y/z
7、设有以下说明语句
st
{int xfloat y; char z}example;
则下面的叙述不正确的是 。
(A)struct是结构体类型的关键字 (B)example是结构体类型名
(C)xyz都是结构体成员名 (D)struct ex是结构体类型
8、假定w、x、y、z、m均为int型变量有如下程序段
w=1;x=2y=3;z=4
m=(w
(A)4 (B)3 (C)2 (D) 1
9、在调用函数时如果实参是简单变量它与对应形参之间的数据传递方式是 。
(A) 地址传递 (B) 单向值传递
(C) 由实参传给形参再由形参传回实参 (D) 传递方式由用户指定
10、以下定义语句中错误的是 。
(A)int a[]={12} (B) char *a[3];
(C)char s[10]="text" (D) int n=5,a[n];
11、下列程厅执行后的输出结果是 。
main()
{ char arr[2][4] strcpy(arr,"you")strcpy(arr[1],"me");
arr[0][3]='&' printf("%s\n",arr)
}
(A)you&me (B)you (C) me (D)err
12、标有/* */的语句的执行次数是 。
int yi
for(i=Oi<20i++)
{ if(i%2==0)
continue;
y+=i; /* */
}
(A) 20 (B) 19 (C) 10 (D) 9
13、若用数组名作为函数调用的实参传递给形参的是 。
(A) 数组的首地址 (B) 数组第一个元素的值
(C) 数组中全部元素的值 (D) 数组元素的个数
14、下列语句执行后的结果是 。
y=5p=&yx=*p++
(A) x=5y=5 (B) x=5y=6 (C) x=6y=5 (D) x=6y=6
15、执行下面的语句后表达式*(p[0]+1)+**(q+2)的值为 。
int a[]={5,4,3,2,1}*p[]={a+3,a+2,a+1,a}**q=p
(A) 8 (B) 7 (C) 6 (D) 5
16、经过下面的语句后
int ia[10]*p
定义后下列语句中合法的是 。
(A) p=100 (B) p=a[5] (C) p=a+2 (D) p=&(i+2)
17、若有以下说明和语句则对pup中sex域的正确引用方式是 。
struct pupil
{char name[20]
int sex
}pup*p
p=&pup
(A)p.pup.sex (B)p->pup.sex (C)(*p).pup.sex (D)(*p).sex
18、若已定义了如下的共用体类型变量x则x所占用的内存字节数为 。
union data
{ int i;
char ch
double f;
}x
(A) 7 (B) 11 (C)8 (D) 10
19、若有下面的说明和定义
struct test
{ int m1char m2;float m3;
union uu{ char u1[5];int u2[2];}ua;
} myaa 则sizeof(struct test)的值是 。
(A) 12 (B) 16 (C) 14 (D)9
20、若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作下面
是 。
(A)fopen("A\\user\\abc.txt""r") (B) fopen("A\\user\\abc.txt""r+")
(C)fopen("A\\user\\abc.txt","rb") (D) fopen("A\\userl\\abc.txt""w")
第二部分简单程序(12题共30分)
21、以下程序的运行情况是 。
main()
{int i=1,sum=0
while(i<10)
sum=sum+1;
i++;
printf("i=%d,sum=%d"i,sum)
}
(A) i=10sum=9 (B) i=9,sum=9 (C) i=2sum=l (D) 运行出现错误
22、若输入B以下程序的运行结果为 。
main()
{ char grade scanf("%c",&grade)
switch(grade)
{case 'A':printf(">=85");
case 'B'
case 'C'printf(">=60")
case 'D'printf("<60")
defaultprintf("error")}
}
(A)>=85 (B)>=60 (C)>=60<60error (D) error
23.有如下程序 main()
{ int x=23;
do
{ printf("%d"x--);}while(!x)
}
该程序的执行结果是 。
(A)321 (B)23 (C)不输出任何内容 (D)陷入死循环
24.有如下程序
int func(int a,int b)
{ return (a+b)}
main()
{int x=2y=5,z=8r;
r=func(func(xy)z) printf("%d\n",r)
}
该程序的输出结果是 。
(A) 12 (B) 13 (C)14 (D)15 25.以下程序的输出结果是 。
main()
{ int ab
for(a=1b=1a<=100a++)
{ if(b>=10) break
if(b%3==1)
{ b+=3continue}
}
printf("%d\n",a);
}
(A)101 (B) 6 (C)5 (D)4
26.以下程序的输出结果是 。
int ab
void fun()
{ a=100b=200;}
main()
{ int a=5b=7
fun()
printf("%d%d\n"ab)
}
(A) 100200 (B)57 (C)200100 (D)75
27.下面的程序执行后文件testt中的内容是 。
#include
void fun(char *fname,char *st)
{ FILE *myf; int i;
myf=fopen(fname,"w");
for(i=0i
}
main()
{ fun("test.t","new world");fun("test.t","hello,");}
(A) hello (B)new,worldhello (C) new,world (D)hello,rld
28.以下程序的运行结果是 。
#include
main(){
static char s[30]="abcdefg"
static char t[]="abcd"
int i,j
i=0
while(s[i]!='\0')
i++;
j=0;
whi1e(t[j]!='\0')
{ s[i+j]=t[j] j++ }
s[i+j]='\0'
printf("%s\n"s)
}
(A) abcdabcdefg (B)abcdefg (C)abcd (D)abcdefgabcd 29.有如下程序
main()
{ char ch[2][5]={"6937""8254"},*p[2];
int i, j, s=0
for(i=0i<2;i++) p[i]=ch[i];
for(i=0i<2i++)
for(j=0p[
s=10*s+p[i][j]-'0'
printf("%d\n"s);
}
该程序的输出结果是 。
(A)69825 (B)63825 (C)6385 (D)693825
30.若已建立如下图所示的单向链表结构
在该链表中,指针p,s分别指向图中所示结点则不能将s所指的结点插入到链表末尾仍构成单向链表的语
句组是 。
(A) p=p->next;s->next=p;p->next=s;
(B) p=p->next;s->next=p->next;p->next=s;
(C) s->next=NULL;p=p->next;p->next=s
(D) p=(*p).next;(*s).next=(*p).next; (*p).next =s;
31.请选择正确的运行结果填入 中。
include
int x,y
num()
{
int a=15,b=10
int xy
y=a-b
y=a+b;
return
}
main()
{ int a=7,b=5
x=a+b
y=a-b;
num() printf("%d%d\n"xy)
}
(A) 12,2 (B) 5,25 (C)2,12 (D)不确定
32.以下程序的输出结果是 。 #define M(x,y,z) x*y+z
main()
{ int a=1b=2c=3
printf("%d\n"M(a+b,b+c,c+a)) }
(A)19 (B)17 (C)15 (D)12
第二卷
说明(1)第二卷含两大题均属填空题每题各有5个空栏在阅读和理解原题程序的基础上在空栏处
填入适当的字符、语句以构成一个正确的C语言程序。
(2)每空栏填对得3分两大题共10个空栏全对得30分。
试题一
有一函数实参传来一个字符串统计此字符串中字母、数字、空各和其他字符的个数在主函数中
输入字符串以及输出上述的结果。
int letter,digit,space,others /*是全局变量*/
main()
{int count(char _____(1)_____);
char text[80]
printf("\nlnput string\n")
____(2)___
printf("string")
puts(text)
letter=O
digit=O
space=O
others=O
_____(3)_____;
printf("letter%d,digit%d,space%d,other%d\n",letter,digit
space,others); }
int count(char str[])
{int i
for(i=Ostr[i]!='\0'i++)
if((____(4)____>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
letter++ else if(str[i]>='0'&&str[i]<='9')
digit++
else if(str[i]==' ')
space++
else
____(5)____
}
试题二
把下列程序补充完整实现两个字符串的比较即自己写个strcmp函数函数原型
为int strcmp(char *p1,char *p2) 设p1指向字符串s1p2指向字符串s2。要求当s1=s2时返回值为0。当sl<>s2时返回它们两者的
第一个不同的字符的ASCII码差值(如“BOY”与“BAD”第二个字母不同“O”与“A”之差为79-65=14)
如果s1>s2则输出正值如果sl
{ int m
char
printf("Input two string\n")
scanf("%s",strl)
scanf("%s"___(7)______);
p1=&strl[0];
p2=_____(8)_____;
m=strcmp(p1,p2)
printf("result:%d,\n",m);
}
strcmp(char ___(9)_____,char *p2)
/*两个字符串比较的函数*/
{ int i
____(10)______
while(*(pl+i)==*(p2+i))
if(*(p1+i++)=='\0') return(0)
return(*(pl+i)-*(p2+i)); /*不等时返回结果为第一个不等字符ASCII码的差值*/
}
参考答案
第一卷
第一部分基础知识
1.A 2.B 3.B 4.A 5.C 6.A 7.B 8.D 9.B 10.D
11.A 12.C 13.A 14.A 15.D 16.C 17.D 18.C 19.A 20.B
第二部分简单程序
21.D 22.C 23.B 24.D 25.D 26.B 27.A 28.D 29.C 30.A 31.A 32.D
第二卷
试题一
1、str[] 2、gets(text)或scanf(“%s”,text) 3、count(text)
4、str[i] 5、others++
试题二6、str1[20] 7、str2 8、&str2[0] 9、*p1 10、i=0 C语言程序设计》 卷考核班级
学生数 印数 考核方式 闭卷 考核时间 120 分钟
(本试卷包括第一卷和第二卷答卷时间总共120分钟)
第一卷 本卷共70分其中第1~26题每题2分第27~32题每题3分。
第一部分基础知识
1、 一个C语言程序是从______开始执行的。
A、程序中的第一个语句 B、包含文件头文件的第一个函数
C、名为main的函数 D、程序中的第一个函数
2、 语句while(!E) { ??}中的条件E等价于_____
A、E==0 B、E!=1 C、E!=0 D、~E
3、 若有以下类型说明语句
char w;
int x;
float y;
double z;
则表达式w*x+z-y的结果为_____类型。
A、float B、double C、int D、char
4、 一个函数返回值的类型是由____决定的
A、return语句中的表达式类型 B、定义函数时所指定的函数类型
C、调用该函数的函数的类型 D、调用函数时临时类型
5、 设x、y、z和k都是int型变量则执行下列表达式后变量x的值为_____.
x=(y=4,z=16,k=32);
A、4 B、16 C、32 D、52
6、 有以下程序
main( )
{ int i=10,j=1;
printf(“%d,%d\n”,i--,++j);
}
执行后输出的结果是________
A、92 B、102 C、91 D、101
7、 以下指针s的指字符串的长度为_______
char *s=”\t\?Name \\Address\n”;
A、19 B、15 C、18 D、-12
8、 设有语句int a=3则执行了语句a+=a-=a*a后变量a的值是____
A、3 B、0 C、9 D、-12
9、 对于下面的for循环语句可以断定它____。
for(x=0,y=0;(y!=123)&&(x<4);x++)
printf(“--------“);
A、是无限循环死循环 B、循环次数不定
C、共执行4次循环 D、共执行3次循环
10、 设有以下语句则_______不是对a数组元素的正确引用其
int *p=a;
A、a[p-5] B、*(&a[i]) C、a[i] D、*(a+i)
11、 为了判断两个字符串s1和s2是否相等应当使用______
A、if(s1==s2) B、if(s1=s2)
C、if(strcmp(s1,s2)) D、if(strcmp(s1,s2)==0)
12、 对于C语言程序中的函数下列叙述中正确的是______
A、函数的定义不能嵌套但函数调用可以嵌套
B、函数的定义可嵌套但函数的调用不能嵌套
C、函数的定义和调用均不能嵌套
D、函数的定义和调用均可嵌套
13、 有以下程序
main()
{ int i;
for(i=0;i<3;i++)
switch(i)
{ case 1: printf(“%d”,i);
case 2: printf(“%d”,i);
default: printf(“%d”,i);
}
}
执行后输出的结果是______
A、011122 B、012 C、012020 D、120
14、 假定有以下变量定义int k=7, x=12;则能使值为3的表达式是____
A、x%=(k%=5) B、x%=(k-k%5)
C、x%=(k-k%5) D、(x%=k)-( k%=5)
15、 以下程序的输出结果是_____
main()
{ int x=4,y=8;
x+=y;y+=x;
printf(“%d %d\n”,x,y);
}
A、12 20 B、4 8 C、12 12 D、8 4
16、 有以下程序执行后输出的结果是_____
main()
{ int x[8]={876500}*s;
s=x+3;
printf(“%d\n”, s[2]);
}
A、随机值 B、0 C、5 D、6
17、 以下函数的功能是______
fun(char *s1,char *s2)
{ int i=0;
while(s1[i]==s2[i] &&s2[i]!=?\0?) i++;
return(s1[i]==?\0?&&s2[i]==?\0?);
}
A、将s2所指字符串赋给s1
B、比较s1和s2所指字符串的大小若s1比s2的大函数值为1否则函数值为0
C、比较s1和s2所指字符串是否相等若相等函数值为1否则函数值为0
D、比较s1和s2所指字符串的长度若s1比s2的长函数值为1否则函数值为0
18、 以下叙述中正确的是____
A、全局变量的作用域一定比局部变量的作用域范围大
B、静态static类型变量的生存期贯穿于整个程序的运行期间
C、函数的形参都属于全局变量
D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值
19、 有以下程序执行后输出的结果是____
main()
{ int i=1,j=1,k=2;
if ((j++||k++)&&i++)
printf(“%d, %d,%d\n”,i,j,k);
}
A、1,1,2 B、2,2,1 C、2,2,2 D、2,2,3
20、 以下函数abc的功能是____
int abc(char *ps)
{ char *p;
p=ps;
while(*p++);
return (p-ps);
}
A、比较两个字符串的大小 B、求字符串的长度
C、将串ps复制到串p中 D、以上三种说法都不对
第二部分简单程序
21、 以下程序的输出结果是_____
main( )
{ int i=10,j=10;
printf(“%d ,%d\n”,++i+j++,j--);
}
A、2110 B、2010 C、219 D、209
22、 以下程
main( )
{ int m=5;
if (m++>5)
printf(“%d\n”,m);
else
printf(“%d \n”,m--);
}
A、7 B、6 C、5 D、4 23、 当a=1, b=3, c=5, d=4时执行下面一段程序后x的值为____
if (aif(c
else if(a
else
x=3;
else
x=6;
else x=7;
A、1 B、2 C、3 D、6
24、 以下程序企图把从终端输入的字符输出到名为abc.txt的文件中直到从终端读入字符
#号时结束输入和输出操作但程序有错。出错的原因是_______
#include
main( )
{ FILE *fout;
char ch;
fout=fopen( ?abc.txt?,?w?);
ch=fgetc(stdin);
while(ch!=?#?)
{fputc(ch,fout);
ch=fgetc(stdin);
}
fclose(fout);
}
A、函数fopen调用形式有误 B、输入文件没有关闭
C、函数fgetc调用形式有误 D、文件指针stdin没有定义
25、 有以下程序执行后输出结果是______
main()
{union {unsigned int n;
unsigned char c;
}ul;
ul.c=?A?;
printf(“%c\n”,ul.n);
}
A、产生语法错 B、随机值 C、A D、65
26、 有以下程序执行后输出结果是_____
main()
{ int m[ ][3]={1,4,7,2,5,8,3,6,9};
int i,k=2;
for(i=0; i<3; i++)
printf(“%d ”, m[k][i]); }
A、4 5 6 B、2 5 8 C、3 6 9 D、7 8 9
27、 以下程序运行后输出结果是_______
int func(int a, int b)
{ static int m=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
main()
{ int k=4,m=1,n;
n=func(k, m);
printf(“%d, ”, n);
n=func(k, m);
printf(“%d ”, n);
}
A、8, 15 B、8, 16 C、8, 17 D、8, 8
28、 在执行以程序时如果从键盘上输入ABCdef则输出结果为____
#include
main( )
{ char ch;
while((ch=getchar())!=?\n?)
{ if(ch>=?A?&&ch<=?Z?)
ch=ch+32;
else if(ch>=?a? && ch<=?z?)
ch=ch-32;
printf(“%c”,ch);
}
printf(“\n”);
}
A、ABCdef B、abcDEF C、abc D、DEF
29、 有以下程序执行后输出结果是____
int *f(int *x, int *y)
{ if(*x<*y)
return x;
else
return y;
}
main( )
{ int a=7,b=8,*p,*q,*r;
p=&a;
q=&b;
r=f(p,q);
printf(“%d,%d,%d\n”,*p,*q,*r); }
A、7, 8, 8 B、7, 8, 7 C、8, 7, 7 D、8, 7, 8
30、 下面程序的输出结果是_____
fun(char *s, int p1, int p2)
{ char c;
while (p1
s[p1]=s[p2];
s[p2]=c;
p1++;p2--;
}
}
main( )
{ char a[ ]=”ABCDEFG”, k, *p;
fun(a, 0, 2);
fun(a, 4, 6);
printf(“%s\n”,a);
}
A、ABCDEFG B、DEFGABC C、GFEDCBA D、CBADGFE
31、 以下程序的运行结果是____
#include
long func(int x)
{ long p;
if(x==0||x==1)
return (2);
p=x*func(x-1);
return (p);
}
main( )
{
printf(“%d \n”,func(4));
}
A、8 B、12 C、24 D、48
32、 下面的程序运行后
struct tree
{ int x;
char *s;
}t;
func(struct tree t)
{ t.x=10;
t.s=”computer”;
return(0);
}
main() { t.x=1;
t.s=”minicomputer”;
func(t);
printf(“%d, %s ”, t.x, t.s);
}
A、10, computer B、1, computer C、1, minicomputer D、10, minicomputer
第二卷
说明1第二卷均为填空题在阅读和理解原题程序的基础上在空栏处填入适当的字符、
语句以构成一个正确的C语言程序。
2答本卷的题目时要在本卷答题纸上编号对应的栏目中用钢笔或圆珠笔书写。用铅
笔答题无效在试题上直接答题者无效。请勿在第一卷的答题卡上填写本卷答案。
3每空栏3分共10个空栏共30分。
试题一 下列程序是求1+1/2+1/4+??+1/50的值。
#include “stdio.h”
main( )
{ int i=2;
float sum=1;
while (___(1)_____)
{ sum=sum+1.0/i;
_____(2)_______;
}
printf(“sum=%f”, sum);
}
试题二 下列函数用于统计一行字符中的单词个数单词之间用空格分隔。
word_num(char str[ ])
{
int i, num=0, word=0;
for(i=0; str[i]!=____(3)___; i++)
if(____(4)______==? ?)
word=0;
else if(word==0)
{ word=1;
______(5)______;
}
return(num);
}
试题三 以下函数的功能是删除字符串s中的所有数字字符。
void dele (char *s)
{ int n=0,i;
for(i=0; s[i]; i++) if(____(6)_____)
s[n++]=s[i];
s[n]=____(7)_____;
}
试题四 以下程序的功能是从键盘输入若干个学生的成绩统计计算出平均成绩并输出
低于平均分的学生成绩用输入负数结束输入。
main( )
{ float x[1000], sum = 0.0, ave, a ;
int n=0, i;
printf(“Enter mark:\n”);
scanf(“%f”,&a);
while(a>=0.0 && n<1000)
{
sum =____(8)____;
x[n]=___(9)_____;
n++;
scanf(" % f ", &a);
}
ave= sum / n ;
printf(“Output: \n”);
printf(“ave=%f\n”,ave);
for(i=0; i
printf("% f\n”,x[i]);
}
参考答案
第一卷
一、基础知识 1.C 2.A 3.B 4.B 5.C 6.B 7.B 8.D 9.C 10.A
11.D 12.A 13.A 14.D 15.A 16.B 17.C 18.B 19.C 20.B 二、简单程序 21.B 22.B
23.B 24.A 25.C 26.C 27.C 28.B 29.B 30.D
31.D 32.C
第二卷
1、 i<=50
2、 i+=2或i=i+2
3、 ‘\0’
4、 str[i]
5、 num++
6、 !(s[i]>='0'&&s[i]<='9')
7、 '\0'
8、 sum+a
9、 a
10、 (x[i]
一、选择题每小题2分共70分
下列各题A、B、C、D四个选项中只有
在答题卡相应位置上答在试卷上不得分。
1数据的逻辑结构可以分为 。
A静态结构和动态结构 B物理结构和存储结构
C线性结构和非线性结构 D紧凑结构和松散结构
2对线性表采用顺序存储的优点是 。
A便于随机存取 B便于进行插入和删除操作
C需要的存储空间不必连续 D方便线性表的扩充
3设具有n个结点的完全二叉树的第1层为根结点若一个结点i满足2i>n则该结点
没有 。
A左子结点 B右子结点
C左子结点和右子结点 D左子结点、右子结点和兄弟结点
4快速排序算法的平均时间复杂度为 。
AOn BOn2 COnlog2n DOlog2n!
5在面向对象的程序设计方法中描述对象静态和动态特征的三要素是 。
A封装、继承和重载 B属性、事件和方法
C数据、代码和接口 D内聚、耦合和驱动
6软件测试的目的是 。
A证明软件的正确性 B找出软件系统中存在的所有错误
C证明软件系统中存在错误 D尽可能多地发现软件系统中的错误
7软件开发范型的作用是 。
A为了控制软件需求的易变性 B作为一种软件工程方法学
C作为一种项目管理方法 D作为需求分析的指导
8在数据库三级模式结构中描述数据库中全体数据的全局逻辑结构和特征的是 。
A外模式 B内模式 C存储模式 D模式
9在数据库技术中面向对象数据模型是一种 。
A概念模型 B结构模型 C物理模型 D逻辑模型
10数据库DB、数据库系统DBS、数据库管理系统DBMS三者之间的关系是
。
ADBS包括DB和DBMS BDBMS包括DB和DBS
CDB包括DBS和DBMS DDBS就是DB也就是DBMS
11阅读以下程序
main
{ int x
scanf”%d”&x
ifx - - <5printf”%d\n”x
else prinff”%d\n”x++ }
程序运行后如果从键盘上输入5则输出结果是 。
A3 B4 C5 D6
12假定WXYz和m均为int型变量有如下程序段
w=1x=2y=3z4 m=w
A4 B3 C2 D1
13t为int型变量进入下面的循环之前t的值为
whilet-1
{……}
则以下叙述中正确的是 。
A循环控制表达式的值为0 B循环控制表达式的值为1
C循环控制表达式不合法 D以上说法都不对
14以下程序的输出结果是 。
main
{ int num=0
whilenum<=2
{ num++printf”%d\n”num} }
A1 B1 C1 Dl
2 2 2
3 3
4
15以下各选项企图说明一种新的类型名其中正确的是 。
Atypedef vl int Btypedef v2=int
Ctypedef int v3 Dtypedef v4int
16在调用函数时如果实参是简单变量它与对应形参之间的数据传递方式是 。
A地址传递 B单向值传递
C由实参传给形参再由形参传给实参 D传递方式由用户指定
17以下函数值的类型是
funfloat x
{ float y
y=3*x-4
return y }
Aint B不确定 Cvoid Dfloat
18设有以下函数
fint a
{ int b=0;
static int c=3;
b++c++
returna+b+c }
如果在下面的程序中调用该函数则输出结果是 。
main
{ int a=2i
fori=0i<3i++
printf"%d\n"fa }
A7 B7 C7 D7
8 9 10 7 9 11 13 7
19以下程序的输出结果是 。
main
{ char c='Z'
printf"%c",c-25 }
Aa BZ Cz-25 DY
20以下选项中非法的字符常量是 。
A'\t' B'\17' C"\n" D'\xaa'
21若有说明int i,j=2*p=&i,则能完成i=j赋值功能的语句是 。
Ai=*p B*p=*&j Ci=&j Di=**p
22以下定义语句中错误的是 。
Aint a[ ]={1,2} Bchar *a[3] Cchar s[10]="test"Dint n=5a[n]
23假设int型变量占两个字节的存储单元若有定义int x[10]={024}则数组x在
内存中所占字节数为 。
A3 B6 C10 D20
24以下程序的输出结果是 。
main
{ int ia[10]
fori=9i>=0i- -
a[ i ]=10 - i
printf"%d%d%d"a[2]a[5]a[8] }
A258 B741 C852 D369
25以下数组定义中不正确的是 。
Aint a[2][3] Bint b[][3]={0123}
Cint c[100][100]={0} Dint d[3][]={{12}{123}{123
26以下程序的输出结果是 。
main
{int a[4][4]={{l35}{246}{357}}
prinff"%d%d%d%d\n"a[0][3]a[1][2]a[2][1]a[3][0] }
A0650 B1470 C5430 D输出值不确
27以下程序的输出结果是 。
#include
main
{char st[20]="hello\0\t\?\\";
printf"%d%d\n"stdenstsizeofst }
A9 9 B5 20 C13 20 D20 20
28以下程序的输出结果是 。
amovepint *pint *a[3]int n
{ int i,j
fori=0i
}
main { int *pa[3][3]={{135}{246}}
p=int *malloc100
amovepp,a,3
printf"%d%d\n"p[2]p[5]
freep
}
A56 B25 C34 D程序错误
29以下程序的输出结果是 。
struct HAR
{ int xy
struct HAR *p} h[2]
main
{ h[0].x=lh[0].y=2
h[1].x=3h[1]y=4
h[0].p=&h[1]h[1].p-h
printf"%d%d\n"h[0].p->xh[1].p->y
}
A12 B23 C14 D32
30以下程序的输出结果是 。
main
{ int ab
fora=lb=la<=100a++
{ ifb>=10break
ifb%3==1
{ b+=3continue}
}
printf"%d\n"a
}
A101 B6 C5 D4
31以下程序的输出结果是 。
union myun
{ struct { int xy,z}u
int k}a
main
{ a.u.x=4a.u.y=5a.u.z=6
a.k=0;
printf"%d\n"a.u.x
}
A4 B5 C6 D0
32以下程序的输出结果是 。
int ab
void fun
{ a=100b=200}
main { int a=5b=7
fun
printf"%d%d\n"ab
}
A100200 B57 C200100 D75
33以下程序的输出结果是 。
#define Mx,y,z x*y+z
main
{ int a=lb=2c=3
printf"%d\n",Ma+bb+cc+a
}
A19 B17 C15 D12
34整型变量X和Y的值相等且为非0值则以下选项中结果为0的表达式是 。
Ax||y Bx|y Cx&y Dx^y
35下面的程序执行后文件testt中的内容是 。
#include
#include
void funchar *fnamechar *st
{ FILE *myf
int i
myf=fopen
fori=0i
fclosemyf
}
main
{ fun"testt""new world"
fun"testt""hello"
}
Ahello Bnew worldhello Cnew world Dhello,world
二、填空题每空2分共30分
请将每一个空的正确答案写在答题卡[1]至[15]序号的横线上答在试卷上不得分。
1算法的复杂性指的是 [1] 和空间复杂性。
2设栈S的初始状态为空队列Q的初始状态如下图所示
a1 a2 a3 a4
↑ ↑
队头 队尾
对栈S和队列Q进行如下两步操作:①Q中的元素依次出队并压入栈S中直至Q为空
②依次弹出S中的元素并进入Q直至S为空。在上述两步操作后队列Q的状态是 [2] 。
3面向对象程序设计使用的对象是 [3] 的封装体。
4在关系数据库中关系模型的三类完整性是指 [4] 、参照完整性和用户定义的
完整性。
5为数据库建立索引是一种以牺牲 [5] 换取提高数据库访问速度的策略。
6以下函数的功能是求x的y次方请填空。 double fundouble xint y
{ int i
double z
fori=1z=xi
return z;
}
7设有以下程序
main
{ int a,bk=4m=6*pl=&k*p2=&m
a=p1==&m
b=*p1/*p2+7
printf"a=%d\n"a;
printf"b=%d\n",b;
}
执行该程序后a的值为 [7] ,b的值为 [8] 。
8若已定义int a[10]l以下fun函数的功能是在第一个循环中给前10个数组
元素依次赋1234, 56789, 10在第二个循环中使a数组前10个元素中的值
对称折叠变成1, 234554, 32, 1。请填空。
funint a[ ]
{ int i;
fori=li<=10i++ [9] =i;
fori=0;i<5i++ [10] =a[i]
}
9以下程序运行后的输出结果是 [11] 。
main
{ char s[ ]="9876"*p
forp=s;pprintf"%s\n",p;
}
10若有定义语句char s[l00]d[100]int j=0i=0且s中已赋字符串请填空以
实现字符串拷贝。注意不得使用逗号表达式。
whiles[i]
{ d[j]= [l2] ;
j++
d[j]=0;
}
11以下程序段用于构成个简单的单向链表,请填空。
struct STRU
{ int xy
float rate;
[13] p;
}ab
a.x=0;a.y=0;a.rate=0a.p=&b; b.x=0;b.y=0;b.rate=0b.p=NULL
12若有如下结构体说明
struct STRU
{ int a,b;
char c;
double d;
struct STRU plp2
};
请填空以完成对t数组的定义t数组的每个元素为该结构体类型。
[14] t[20];
13以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾然后调用
ftell函数返回当前文件位置指针的具体位置从而确定立件长度请填空。
FILE *myf
long fl
myf= [15] "test.t""rb";
fseekmyf,0,SEEK_END;
fl=ftellmyf
fclosemyf
printf"%ld\n",f1;
参考答案
一、选择题
1. C 2.A 3. A 4.C 5.B 6.D 7.D 8. D 9.B 10.A
11.B 12.D 13.B 14.B 15.C 16.B 17.A 18.A 19.A 20.C
21.B 22.D 23.D 24. C 25.D 26.A 27.B 28.A 29.D 30.D
31.D 32.B 33.D 34.D 35.A
二、填空题
[1] 时间复杂性 [2] a4a3a2a1 [3] 数据和代码 [4] 实体完整性
[5] 存储空间 [6] x [7]0 [8] 7
[9] a[i-1] [10] a[i-9] [11] 9876 [12] s[i++]
[13] struct STRU * [14] struct STRU [15] fopen 《C语言程序设计》 卷考核班级
学生数 印数 考核方式 闭卷 考核时间 120 分钟
一、选择题每小题2分共70分
1在数据结构中数据的存储结构可以是 。
A线性结构和非线性结构 B内部结构和外部结构
C顺序结构和链式结构 D静态结构和动态结构
2下面关于线性表的叙述中错误的是 。
A线性表采用顺序存储必须占用一片连续的存储单元
B线性表采用顺序存储便于进行插入和删除操作
C线性表采用链接存储不必占用一片连续的存储单元
D线性表采用链接存储可以动态分配存储空间
3在一棵树中若一个结点是叶结点则它没有 。
A左子结点 B右子结点
C左子结点和右子结点 D左子结点、右子结点和兄弟结点
4成功的二分查找算法的时问复杂度为 。
AOlog2n BO log2n COn DO
5结构化程序设计方法使用的三种基本程序控制结构是 。
A顺序、选择和循环 B输入、处理和输出
C模块、函数和过程 D入口、出口和接口
6在软件质量因素中软件在异常条件下仍能运行的能力称为软件的 。
A安全性 B健壮性 C可靠性 D有效性
7白盒测试法重视 的度量。
A测试用例多少 B测试路径多少
8在数据库设计中用关系模型来表示实体与实体间的联系。关系模型的结构是 。
A层次结构 B二维表结构 C网络结构 D封装结构
9数据库管理系统能实现对数据库中数据的查询、插入、修改和删除这类功能称为 。
A数据定义功能 B数据管理功能 C数据操纵功能 D数据控制功能
10在关系数据库标准语言SQL中实现数据检索的语句或命令为 。
ASELECT BLOAD CFETCH DSET
11以下程序执行后sum的值是 。
A15 B14 C不确定 D0
main
{ int i,sum
fori=li<6;i++sum+=i
printf"%d\n",sum
}
12有以下程序段
int x=3
do
{ printf"%d"x -=2;}while!--x;
其输出结果是 。
A1 B3 0 Cl-2 D死循环
13若变量c为char类型能正确判断出c为小写字母的表达式是 。
A'a'<=c<='z' Bc>='a'||c<='z' C'a'<=cand'z'>=c Dc>='a'&&c<='z'
14以下所列的各函数首部中,正确的是 。
Avoid playvar a:Integer var bInteger Bvoid playint ab
Cvoid playint a,int b Dsub playa as integer b as integer
15以下程序的输出结果是 。
A0 B29 C31 D无定值
funint x int yint z
{z=x*x+y*y}
main
{ int a=31;
fun5,2a
printf"%d"a;
}
16下列程序段的输出结果是
A2 l 4 3 B1 2 1 2 c1 2 3 4 D2 1 1 2
void funint *xint *y
{ printf"%d%d",*x*y;*x=3;*y=4}
main
{ int x=1,y=2
fun&y,&x
printf"%d%d"xy
}
17下列程序的输出结果是 。
A非法 Ba[4]的地址 C5 D3
main
{ char a[10]={9,8,7,6,5,4,3,2,1,0}*pa+5
printf"%d",*-- p
}
18下列程序的运行结果是 。
A6 3 B3 6 C编译出错 D0 0
void funint *a, int *b
{ int *k;
k=a ; a=b ; b=k; }
main
{ int a=3,b=6*x=&a*y=&b;
funxy;
printf"%d%d",a,b;
}
19 下面程序的输出结果是 。
A0 B1 C10 D9
main
{ int a[]={1,2,3,4,5,6,7,8,9,0}*p;
p=a;
printf"%d\n"*p+9 }
20当调用函数时实参是一个数组名则向函数传送
A数组的长度 B数组首地址 C数组每一个元素的地址 D数组每个元素的值
21设有以下说明语句
struct ex
{ int xfloat y char z}example
则下面的叙述中不正确的是 。
Astruct是结构体类型的关键字 Bexample是结构体类型名
Cx,y,z都是结构体成员名 Dstruct ex是结构体类型名
22以下只有在使用时才为该类型变量分配内存的存储类说明是 。
Aauto和static Bauto 和register Cregister和static Dextern和register
23若fp是指向某文件的指针且已读到文件末尾则库函数feoffp的返回值是 。
AEOF B-1 C非零值 DNULL
24以下程序的输出结果是 。
A20 B21 C22 D23
main
{ int i,ka[10]p[3]
k=5
fori=0;i<10;i++a[i]=i;
fori=0i<3i++p[i]=a[i*(i+1)];
fori=0i<3i++k+=p[i]*2;
printf"%d\n",k;
}
25以下程序的输出结果是 。
A1,5,9 B1,4,7 C3,5,7 D3,6,9,
main
{ int ix[3][3]={1,2,3,4,5,6,7,8,9}
fori=0i<3i++printf"%d"x[i][2-i]
}
26以下程序的输出结果是 。
A14 B19 C20 D21
main
{ int a[3][3]={{12}{34}{5,6}},i,js=0
fori=li<3i++
forj=0;jprintf"%d\n"s
}
27 以下程序的输出结果是 。
AABCD BA CREFG DEFGH
FGH EFG JK IJKL
KL IJ O
M
main
{ char w[][10]={"ABCD","EFGH","IJLKL","MNOP"},k; fork=1k<3k++printf"%s\n"w[k];
}
28 当执行下面的程序时如果输入ABC,则输出结果是 。
AABC6789 BABC67 C12345ABC6 DABC456789
#include "stdioh"
#include "stringh"
main
{ char ss[10]="12345"
getsssstrcatss"6789"printf"%s\n",ss;
}
29假定以下程序经编译和连接后生成可执行文件PROG.EXE如果在此可执行文件所在
目录的DOS提示符下键入PROG ABCDEFGH IJKL〈回车〉则输出结果为 。
AABCDEFG BIJKL
CABCDEFGHIJKL DIJKLABCDEFGH
mainint argcchar *argv[ ]
{ while - - argc>0printf"%s"argv[argc];
printf"\n"
}
30 以下程序的输出结果是 。
A1 B2 C3 D4
long funint n
{ long s
ifn==1||n==2s=2
else s=n-funn-1
return s
}
main
{ printf"%ld\n"fun3; }
31以下程序的输出结果是 。
A16 B2 C9 D1
#define SQR(X) X*X
main
{ int a=16k=2m=l
a/=SQRk+m/SQRk+m
printf"%d\n"a
}
32若定义了以下函数
void f??
{ ……
*p=double *malloc10*sizeofdouble
}
p是该函数的形参要求通过p把动态分配存储单元的地址传回主调函数则形参p的
正确定以应当是 。
Adouble *p Bfloat **p Cdouble **P Dfloat *p 33以下程序的输出结果是 。
A10 B11 C51 D60
struct st
{ int x int *y}*p
int dt[4]={10203040}
struct st aa[4]={50&dt[0]60&dt[0]60&dt[0]60&dt[0]}
main
{ p=aa
printf"%d\n"++p->x
}
34假定建立了以下链表结构指针p和q分别指向如图所示的结点则以下可以将q
所从链表中删除并释放该结点的语句组是 。
Afreeqp->next=q->next
B*p.next=*qnextfreeq
Cq=*qnext*pnext=qfreeq
Dq=q->nextp->next=qp=p->nextfreep;
data next
head……
↑p ↑q
35以下程序的输出结果是 。
A0 B1 C2 D3
main
{ int x=05char z='a'
printf"%d\n"x&1&&z<'Z'
}
二、填空题每空2分共30分
请将每一个空的正确答案写在答题卡[ 1 ]至[15]序号的横线上答在试卷上不得分。
1算法是求解某个问题所用的一系列操作规则的精确描述。一个算法必须具有 [ l ]、确
定性、可行性和输入输出。
2用一维数组表示线性表L=a1a2??an,假定向表中插入任一元素的概率相同都
为1/n则插入一个元素平均需移动的元素个数为 [2] 。
3结构化程序设计使用顺序、选择和循环三种基本控制结构它们的共同特点是[3] 。
4数据模型有概念数据模型和结构数据模型两类。实体联系模型E—R模型属于[4] 数
据模型。
5关系数据库的规范化理论要求关系数据库中的关系必须满足起码的要求即每个属性
都是 [5] 的。
6下列程序的输出结果是 [6] 。
main
{ int a=l b=2
a=a+bb=a-ba=a-b
printf"%d%d\n"a,b;
}
7用以下语句调用库函数malloc使字符指针s