新疆农业大学往年C语言程序设计期末样卷

本试卷为新疆农业大学往年C语言程序设计期末样卷,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

C语言程序设计期末样卷

一、单项选择题 (共20题,每题2分,共计40分)

(  A  )
1、与 y=(x>0?1:x<0?-1:0); 的功能相同的if语句是________。
A、if (x>0) y=1;
else if(x<0)y=-1;
else y=0;
B、if(x)
if(x>0)y=1;
else if(x<0)y=-1;
else y=0;
C、y=-1
if(x)
if(x>0)y=1;
else if(x==0)y=0;
else y=-1;
D、y=0;
if(x>=0)
if(x>0)y=1;
else y=-1;
(  D  )
2、以下叙述中正确的是________。
A、do-while语句构成的循环不能用其他语句构成的循环来代替
B、do-while语句构成的循环只能用break语句退出
C、用do-while语句构成循环时,只有在while后的表达式为非零时结束循环
D、用do-while语句构成循环时,只有在while后的表达式为零时结束循环
(  A  )
3、c语言结构体类型变量在程序执行期间,________。
A、所有成员一直驻留在内存中
B、没有成员驻留在内存中
C、部分成员驻留在内存中
D、只有一个成员驻留在内存中
(  C  )
4、若有定义"float a=25,b,*p=&b;",则下列对赋值语句"*p=a;"和"p=&a;"的正确解释为( )。
A、两个语句都是将变量a的值赋予变量P
B、*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P
C、*p=a是将变量a的值赋予变量b,而&a是使P指向变量a
D、两个语句都是使P指向变量a
(  C  )
5、以下选项中不合法的用户标识符是________。
A、_123
B、printf
C、A$
D、Dim
(  C  )
6、以下叙述正确的是 。
A、在对一个C程序进行编译的过程中,可发现注释中的拼写错误
B、在C程序中,main函数必须位于程序的最前面
C、C语言本身没有输入输出语句
D、C程序的每行中只能写一条语句
(  B  )
7、以下程序的输出结果是
main()
{
char cf[3][5]={"aaaa","bbb","cc"};
printf("\"%s\"\n",ch[1]);
}
A、"AAAA"
B、"BBB"
C、"BBBCC"
D、"CC"
(  D  )
8、程序段如下:则以下说法中正确的是:
int k=5;
do
{
k--;
}
while(k<=0);
A、循环执行 5 次
B、循环是无限循环
C、循环体语句一次也不执行
D、循环体语句执行一次
(  A  )
9、程序中有下面的说明和定义
struct abc
{
int x ;
char y ;
}
struct abc s1 , s2 ;
则会发生的情况是______。
A、编译出错
B、程序将顺利编译、连接、执行
C、能顺利通过编译、连接、但不能执行
D、能顺利通过编译、但连接出错
(  A  )
10、下面不是c语言整型常量的是________。
A、081
B、01
C、-32768
D、0x81
(  A  )
11、下面关于形参与实参的说法,正确的是________。
A、形参与实参的个数、类型、顺序都应一一对应
B、形参与实参的个数可以不必相同,少一个多一个程序一样执行
C、形参与实参的类型可以不同,不影响运算结果
D、形参与实参的类型个数相同,而顺序不同,计算机可以自动进行匹配,所以形参的顺序无所谓,只要各种形参类型的数量与实参相同即可
(  B  )
12、串是任意有限个 (46) 。
A、符号构成的集合
B、字符构成的序列
C、字符构成的集合
D、符号构成的序列
(  C  )
13、下面程序的输出结果是
#include<stdio.h>
main()
{
int a[]=1,2,3,4,5,6,7,8,9,0,*p;
p=a;
printf("%d\n",*p+9);
}
A、0
B、1
C、10
D、9
(  D  )
14、以下正确的字符串常量是________。
A、"\\\"
B、'abc'
C、Olympic Games
D、""
(  D  )
15、以下关于排序算法的叙述中,正确的是________。
A、冒泡排序法中,元素的交换次数与元素的比较次数一定相同
B、冒泡排序法中,元素的交换次数不少于元素的比较次数
C、简单选择排序中,关键字相同的记录在排序前后的相对位置一定不变
D、简单选择排序中,关键字相同的记录在排序前后的相对位置可能交换
(  B  )
16、设a=5、b=6、c=10、d=8、m=2、n=5,执行(m=a>b)&&(n=c>d)后n的值为______。
A、1
B、5
C、3
D、4
(  A  )
17、以下程序结果为:______。
void add( )
{
static int x=3;
x++;
printf("%d",x);
}
main( )
{
int i;
for(i=0;i<3;i++)add( );
}
A、456
B、444
C、555
D、345
(  B  )
18、运行下述程序段后, i 值为4 的是________。
A、int i=1,j=0;
B、inti=1 ,j=1;I=j=((i=3)++); i+=i+=2;
C、int i==0,j=0;
D、int i=0 , j=1;15(i=2,i+(j=2)); (j==1)?i+=3:i=2;
(  D  )
19、有字符数组a[80]和b[80],则正确的输出语句是________。
A、puts(a,b);
B、printf("%s,%s",a[],b[]);
C、putchar(a, b);
D、puts(a),puts(b);
(  B  )
20、设 p1 和 p2 是指向同一个字符串的指针变量,c 为字符变量,则以下不能正确执行的赋值语句是()。
A、c=*p1+*p2;
B、p2=c;
C、p1=p2;
D、c=*p1*(*p2);

二、判断题 (共10题,每题2分,共计20分)

(   T  )
1、字符串常量是由一对双引号括起来的字符序列。 
(   T  )
2、c语言中sizeof为运算符。 
(   T  )
3、c语言中简单变量作为实参时,它和对应的形参之间的数据传递方式是单向值传递。 
(   T  )
4、函数形参的存储单元是动态分配的。 
(   F  )
5、一个数组是由连续的一块内存单元组成的,指针变量就是这块连续内存单元的首地址 
(   T  )
6、某文件中定义的静态全局变量的作用域是本文件。 
(   T  )
7、c 语言具有简洁明了的特点。 
(   F  )
8、在switch 语句中必须使用break 语句 
(   T  )
9、选择结构( if 语句)和循环结构都可以使用嵌套形式 
(   T  )
10、指针变量,只能作为函数的形参,不可以作函数的实参 

三、填空题 (共5题,每题4分,共计20分)

1、字符串函数___________用于把一个字符串写入指定的磁盘文件中。
2、语句主要是实现次数循环结构,while语句主要是实现当型循环结构。
3、局部变量的作用域是从定义的位置起,到( )结束止。
4、输入求数组有几个元素的语句(arr,size)
5、C标准库函数中,字符串的处理函数包含在______头文件中,数学函数包含在math.h头文件中。

四、程序分析题 (共4题,每题5分,共计20分)

1、有以下程序
main()
{
char c;
while((c=getchar())!='?') putchar( --c );
}
程序运行时,如果从键盘输入:ydg?n?<回车>,则输出结果为 ________ 。
2、有以下程序
#include <string.h>
main()
{
char a[]={'a','b','\0'};
int j;
j=strlen(a);
printf("%d\n",j);
}
程序运行后的输出结果是________。
3、以下程序的运行结果是________。
main()
{
int a = 2, b = 3, c;
c = a;
if (a > b) c = 1;
else if (a == b) c = 0;
else c = -1;
printf("%d\n", c);
}
4、当运行以下程序时,从键盘输入1 2 3 4 5 -1<cr>, 则下面程序的运行结果是________。
#include <stdio.h>
main()
{
int k = 0, n;
do
{
scanf("%d", &n);
k += n;
}
while (n != -1);
printf("k=%d n=%d\n", k, n);
}

五、编程题 (共3题,每题0分,共计50分)

1、编程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入当输入数据为-1时表示输入结束,使用结构体实现。
2、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
3、给定一个只包括 '(',')','{','}' 字符的10位长度的字符串s,编写一个函数判断字符串是否顺序闭合。例如:'()[]()[]()[]()[]()[]'为true, '(](](](](]'为false