嘉兴学院C语言程序设计专升本

本试卷为嘉兴学院C语言程序设计专升本,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计专升本

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

(  A  )
1、要求通过while循环不断读人字符,当读入字母n时结束循环,若变量已正确定义,下列正确的程序段是________。
A、while((ch=getchar())!='N')printf(”%c”,ch);
B、while(ch=getchar()!='N')printf(”%c”,ch);
C、while(ch=getchar()=='N')printf(”%c”,ch);
D、while((ch getchar())=='N')printf(”%c”,ch);
(  B  )
2、下列程序的运行结果是________。
#define ADD(x)X+X
main()
{
int m=1,n=2,k=3: int s=ADD(m+n)*k;
printf("s=%d",s):
}
A、sum=18
B、sum=10
C、sum=9
D、sum=25
(  A  )
3、执行语句"for(i=1;i++<4;); "后,变量i的值是________。
A、3
B、4
C、5
D、不定
(  A  )
4、有以下程序
struct stu
{
char name[10];
int num;
};
void f(char *name, int num)
{
struct stu s[2]={{"sundan",20044},{"penghua",20045}};
num = s[0].num;
strcpy(name, s[0].name);
}
main()
{
struct stu s[2]={{"yangsan",20041},{"lisiguo",20042}},*p;
p=&s[1];
f(p->name, p->num);
printf("%s %d\n", p->name, p->num);
}
程序运行后的输出结果是________。
A、SunDan 20042
B、SunDan 20044
C、LiSiGuo 20042
D、YangSan 20041
(  B  )
5、有如下程序 int a[10]={ 1,2,3,4,5,6,7,8,9,10 },*p=a; 则数值为9的表达式是________。
A、*P+9
B、*(P+8)
C、*P+=9
D、P+8
(  D  )
6、分析以下程序 , 下列说法正确的是______。
main()
{
int x=5,a=0,b=0;
if(x=a+b) printf("* * * *\n");
else printf("# # # #\n");
}
A、有语法错,不能通过编译
B、通过编译,但不能连接
C、输出 * * * *
D、输出 # # # #
(  A  )
7、若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假设 a[0] [0]位于数组的第一个位置上) ________。
A、i*m+j
B、j*m+I
C、i*m+j-1
D、i*m+j+1
(  B  )
8、下面程序段的功能是________。
…… int a[]= {4,0,2,3,1},i,j,t;
for(i=0;<5;i++)
{
t=a[i];
j=i;
j--;
}
while(j>=0&&t>a[j])
{
a[j+1]=a[j];
j--;
a[j+1] =t;
}
……
A、对数组a进行插入排序(升序)
B、对数组a进行插入排序(降序)
C、对数组a进行选择排序(升序)
D、对数组a进行选择排序(降序)
(  A  )
9、数据和程序以______进制代码形式存放在存储器中。
A、二
B、八
C、十
D、十六
(  D  )
10、下列描述中,正确的一条是______。
A、关系表达式的值是一个逻辑值,即“真”或“假”,可以赋给一个逻辑变量
B、在C语言中,判断一个量是否为:真”时,以0代表“假”,以1代表“真”.
C、设a=3、b=4、c=5,则表达式!(x=&&(y=&&0的值为0
D、一个数组的各个数组元素可属于不同的数据类型
(  C  )
11、字面常量42、4.2、42l的数据类型分别是________。
A、long,double,int
B、long,float,int
C、int,double,long
D、int,float,long
(  C  )
12、若a和b均是整型变量并已正确赋值,正确的switch语句是________。
A、15
B、50
C、55
D、5
(  D  )
13、若采用双符号位判断溢出,当结果的符号位为11时,表示 (13) 。
A、结果为正溢出
B、结果正,无溢出
C、结果负溢出
D、结果为负,无溢出
(  C  )
14、null是指 ________。
A、0
B、空格
C、未知的值或无任何值
D、空字符串
(  C  )
15、以下叙述正确的是________。
A、在C语言程序中,main函数必须位于程序的最前面
B、C语言程序的每行中只能写一条语句
C、C语言本身没有输入输出语句
D、在对一个C语言程序进行编译的过程,可发现注释中的拼写错误
(  D  )
16、以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:
#include<stdio.h> findmax(int*s,int t,int*k)
{
int p;
for(p=0,*k=p;p<t;p++) if(s[p]>s[*k])________;
}
main()
{
int a[10],i,k;
for(i=0;i<10;i++)scanf("%d",&a[i]);
findmax(a,10,&k);
printf("%d,%d\n",k,a[k]);
}
A、k=p
B、*k=p-s
C、k=p-s
D、*k=p
(  D  )
17、若有定义:int x,y;
char a,b,c;
并有以下输入数据(此处\u代表空格):1\u2\ua\ub\uc,那么能给x赋整数1,给y赋整数2,给a赋字符a,给b赋字符b,给c赋字符c的正确程序段是________。
A、scanf("x=%d y=%d",&x,&y);a=getchar();b=getchar();c=getchar();
B、scanf("%d %d",&x,&y);a=getchar();b=getchar();c=getchar();
C、scanf("%d%d%c%c%c,&x,&y,&a,&b,&c);
D、scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);
(  C  )
18、若有定义:
struct keyword
{
char key[20];
int id;
}
kw[] = {"void", 1, "char", 2, "int", 3, "float", 4, "double", 5 };
则printf("%c,%d\n", kw[3].key[0], kw[3].id);
语句的输出结果为________。
A、i 3
B、n 3
C、f 4
D、l 4
(  B  )
19、int (*p)[6]; 它的含义为________。
A、具有6个元素的一维数组
B、定义了一个指向具有6个元素的一维数组的行指针变量
C、指向整型指针变量
D、指向6个整数中的一个的地址
(  C  )
20、a,b 为整型变量,二者均不为 0,以下关系表达式中恒成立的是()。
A、a*b/a*b==1
B、a/b*b/a==1
C、a/b*b+a%b==a
D、a/b*b==a

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

(   T  )
1、c语言中字符串的结束符是’\0’。 ( ) 
(   T  )
2、在多层循环中,continue语句只结束本次循环,而不是终止整个循环的执行。 
(   F  )
3、文件包含命令中,只能包含扩展名为.h的文件。 
(   T  )
4、执行以下语句后,输出2.50。printf("%.2f", (double)5/2); 
(   F  )
5、在c语言程序中,函数名和圆括号可以省略。 
(   F  )
6、c语言中浮点型常量指数表示形式中,e或e后面的指数部分可以是非整数。 
(   F  )
7、文件指针和位置指针都是随着文件的读写操作在不断改变。 
(   T  )
8、在定义数组时,有时候可以将该数组的维数省略。 
(   F  )
9、在标准c中,没有逻辑型数据,故不能使用逻辑表达式。 
(   T  )
10、在定义函数时,若函数类型为" void",则表示该函数 没有返回值 ; 若函数参数为" void",则表示该函数 没有参数 。( ) 

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

1、下面程序段的运行结果是________.
int i=1,s=3;
do
{
s+=i++;
if(s%7==0)continue;
else ++i;
}
while(s<15);
printf("%d",i);
2、在c语言中,标识符是由英文字母、( )、下划线组成的。
3、在c语言中,按函数在程序中出现的位置可分为以下三种调用方式:函数语句、函数表达式和函数________。
4、c 语言规定,可执行程序的开始执行点是________。
5、在c语言中,将字符串中小写字母转换成大写字母的函数是_____________。

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

1、有定义int a=-1;则pirntf("%d,%o",a,a")的输出结果是________。
2、mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。 int mystrlen(char *str)
{
int i;
for(i=0; ________!=‘\0';i++);
return( ________);
}
3、下列给定程序中函数fun()的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:l,1,2,3,5,8,13,21,… 例如,若给n输入7,则该项的斐波拉契数值为13。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构! 试题程序:
long fun(int g) (
switch(g);
{
case 0:
return 0;
case 1:case 2: return 1;
}
return(fun(g-1)+fun(g-2)); )
void main()
{
long fib;
int n;
printf("input n:");
scanf("%d",&n);
printf("n=%d\n",n);
fib=fun(n);
printf("fib=%d\nkn",fib);
}
4、请阅读并分析以下程序,该程序的输出结果是:
#include <stdio.h>
main( )
{
int n[3][3], i, j;
for(i=0;i<3;i++ )
for(j=0;j<3;j++ )n[i][j]=i+j;
for(i=0;i<2;i++ )
for(j=0;j<2;j++ )n[i+1][j+1]+=n[i][j];
printf("%d\n", n[i][j]);
}

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

1、编写程序:将字符数组a中下标值为奇数的元素从小到大排列,其它元素不变
例如:当a数组中的字符串为:"clanguage"时,程序的输出结果为:cgalgnaue()
2、已知学生的记录由学号和学习成绩构成N名学生的数据已存入a结构体数组中。试编写函数fun函数的功能是找出成绩最低的学生记录通过形参返回主函数规定只有一个最低分在主函数中调用fun,使用结构体实现
3、已知银行定期存款利率为r=2.25%,输入存款本金x、存款年数n,输出本利之和y=x(1+r)(1+r)...(1+r),共n个(1+r)。