上海体育学院2022年C语言程序设计专升本模拟

本试卷为上海体育学院2022年C语言程序设计专升本模拟,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计专升本模拟

一、单项选择题 (共50题,每题2分,共计100分)

(  D  )
1、有以下程序
void fun(int*a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/
{
int t,i,j;
for(i=0;i<n一1;j++) for(j=i+1;j<n;j++) if(a[i]
}
main()
{
int c[10]={1,2,3,4,5.6,7,8,9,0 },i;
fun(c+4.6): for(i=0;i<10;i++)printf("%d,",c[i]);
printf("n"):
}
}
程序运行的结果是________。
A、1,2,3,4,5,6,7,8,9,0,
B、0,9,8,7,6,5,1,2,3,4,
C、0,9.8,7.6,5,4,3,2,1.
D、1,2,3,4,9,8,7,6,5,0,
(  D  )
2、若已定义:int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素的引用不正确的是________。
A、a[p-a]
B、*(&a[i])
C、p[i]
D、*(*(a十i))
(  B  )
3、已知大写字母a的ascil码是65,小写字母a的acsii码是97。下列能将变量c中的大写字母转换为对应小写字母的语句是________。
A、c=(c-'A')%26+'A'
B、C=c+32
C、c=c-'A'+'A'
D、c=('A'+C)%26—'a'
(  C  )
4、有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数):
main()
{
char a[10]="abc",b[10]="012",c[10]="xyz";
strcpy(a+1,b+2);
puts(strcat(a,c+1));
}
程序运行后的输出结果是________。
A、al2xyz
B、12yz
C、a2yz
D、bc2yz
(  B  )
5、若变量已正确定义,有以下程序段 i—o;
do printf("%d,",i);
while(i++);
printf("%d",i) 其输出结果是________。
A、0,0
B、0,1
C、1,1
D、程序进入无限循环
(  D  )
6、对下面程序段,描述正确的是________。 for(t=1;t<=100;t++)
{
scanf("%d",&x);
if (x<0) continue;
printf("%d\n",t);
}
A、当x<0时,整个循环结束
B、当x>=0时,什么也不输出
C、printf函数永远也不执行
D、最多允许输出100个非负整数
(  C  )
7、以下叙述中不正确的是________。
A、空字符串(即两个双引号连写)只占一个存储单元
B、字符型常量可以放在字符型变量中
C、字符型常量可以放在字符串变量中
D、字符型常量可以与整数混合运算,而字符串常量不可以
(  D  )
8、阅读下面的程序
main()
{
int i,j;
char ch;
scanf("%d%c%f",&i,&ch,&j);
printf("%d%2c%7.2f",i,ch,j);
}
如果从键盘上输入 123a123x.12<回车> 则程序的运行结果是________。
A、123a123.00
B、123 a 123.12
C、123a123.12
D、123 a 123.00
(  C  )
9、若有定义语句:int a[2][3],*p[3]; 则以下语句中正确的是________。
A、p=a;
B、p[0]=a;
C、p[0]=&a[1][2];
D、p[I]=&a;
(  D  )
10、不合法的常量是: 。
A、‘ \2 ’
B、" "
C、‘ 3 ’
D、‘ \483 ’
(  A  )
11、程序中有下面的说明和定义
struct abc
{
int x ;
char y ;
}
struct abc s1 , s2 ;
则会发生的情况是______。
A、编译出错
B、程序将顺利编译、连接、执行
C、能顺利通过编译、连接、但不能执行
D、能顺利通过编译、但连接出错
(  B  )
12、执行下面程序中的输出语句后 , 输出结果是 ________.
#include<stdio.h>
void main()
{
int a;
printf("%d\n",(a=3*5,a*4,a+5));
}
A、65
B、20
C、15
D、10
(  A  )
13、以下哪个不是c语言中的有效标识符
A、34a
B、-AB
C、A-B
D、A25
(  D  )
14、若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是________。
A、a[g-c]
B、a[4]
C、a['d'-'c']
D、a['d'-c]
(  D  )
15、若已定义: int a[]= { 0,1,2,3,4,5,6,7,8,9 },*p=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是________。
A、a[p-a]
B、*(&
C、p
D、a[10]
(  B  )
16、在7位ascii码中,除了表示数字、英文大小写字母外,还有几个字符和符号
A、63
B、66
C、80
D、32
(  C  )
17、下列语句中执行跳转功能的语句是________。
A、for语句
B、while语句
C、continue语句
D、switch语句
(  D  )
18、下列字符串中,正确的c标识符是________。
A、foo-1
B、2b
C、new
D、256
(  B  )
19、在下面的运算符中,不是算术运算符的是________。
A、++
B、==
C、%
D、+
(  A  )
20、已知[x/2]补=c6h,计算机的机器字长为8位二进制编码,则[x]补= (11) 。
A、8CH
B、18H
C、E3H
D、F1H
(  B  )
21、关于过程、自定义函数的调用,正确的叙述是________。
A、实参的数量必须等于形参的数量,它们是一对应的关系
B、实参的数量可以少于形参的数量,多余的形参取逻辑假
C、实参的数量可以多于形参的数量,多余的实参被忽略
D、实参的数量可以多于形参的数量,多余的实参取逻辑假
(  A  )
22、下列程序的运行结果是________
#include<stdio.h>
main()
{
int x=5,a=1,b=2,c=5,d=0;
if(a<b) if(b!=3) if(!c) x=1;
else if(d) x=l;
else x=-1;
printf("%d",x);
}
A、-1
B、0
C、1
D、不确定的值
(  B  )
23、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是
struct node char data;
struct node*next;
a,b,*p=&a,*q=&b;
A、next=q;
B、next=&b;
C、p->next=&b;
D、(*p).next=q;
(  D  )
24、数字字符0的ascii值为48,若有以下程序
main() {
char a=’1’,b=’2’;
printf("%c,b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是______。
A、3,2
B、3,1
C、2,1
D、2,2
(  D  )
25、以下程序调用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
(  C  )
26、以下关于链式存储结构的叙述中哪一条是错误的?
A、结点除自身信息外还包括指针域,因此存储密度小于顺序存储结构
B、逻辑上相邻的结点物理上不必邻接
C、可以通过计算直接确定第i个结点的存储地址
D、插入、删除运算操作方便,不必移动结点
(  D  )
27、若x,y均定义成int型,z定义为double型,以下不合法的scanf函数调用语句是________。
A、scanf(“%d %x, %le”, &x, &y, &z);
B、scanf(“%2d *%d, %lf” &x, &y, &z);
C、scanf(“%x %*d %o”, &x, &y);
D、scanf(“%x %o%6.2f”, &x, &y, &z);
(  A  )
28、有如下程序
main()
{
int x=1,a=5,b=5;
switch(x)
{
case 0: b--;
case 1: a--;
case 2: a--;
b--;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是______。
A、a=3,b=4
B、a=3,b=3
C、a=4,b=5
D、a=4,b=4
(  A  )
29、执行以下程序后,test.txt文件的内容是(若文件能正常打开)______。
#include <stdio.h>
main()
{
file *fp;
char *s1="fortran",*s2="basic";
if((fp=fopen("test.txt","wb"))==null)
{
printf("can't open test.txt file\n");
exit(1);
}
fwrite(s1,7,1,fp);
/*把从地址s1开始的7个字符写到fp所指文件中*/fseek(fp, 0l,seek_set);
/*文件位置指针移到文件开头*/fwrite(s2,5,1,fp);
fclose(fp);
}
A、Basican
B、BasicFortran
C、Basic
D、FortranBasic
(  C  )
30、以下scanf函数调用语句中不正确的是__。
struct pupil
{
char name[20];
int age;
int sex;
}
pup[5], *p=pup;
A、scanf("%s", pup[0].name);
B、scanf("%d", &pup[0].age);
C、scanf("%d", p->age);
D、scanf("%d", &(p->sex));
(  B  )
31、关于数据类型存储大小从小到大正确的是________。
A、sizeof(char)<sizeof(short int)<sizeof(int)<sizeof(float)
B、sizeof(char)<sizeof(short int)<sizeof(int)<sizeof(double)
C、sizeof(char)<sizeof(int)<sizeof(long int)<sizeof(float)
D、sizeof(char)<sizeof(unsigned int)<sizeof(long int)<sizeof(double)
(  B  )
32、设变量定义为 int a[2]={1,3}
, *p=&a[0]+1;
,则*p的值是________。
A、2
B、3
C、4
D、&a[0]+1
(  A  )
33、以下叙述中正确的是________。
A、只要适当地修改代码,就可以将 do-while 与 while 相互转换
B、对于 for(表达式 1;表达式 2;表达式 3)循环体首先要计算表达式 2 的值,以便决定是否开始循环
C、对于 for(表达式 1;表达式 2;表达式 3)循环体,只在个别情况下才能转换成 while 语句
D、如果根据算法需要使用无限循环(即通常所称的"死循环"),则只能使用 while 语句
(  B  )
34、设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为________。
A、EOF
B、非0值
C、0
D、NULL
(  C  )
35、下列if语句中,不正确的是________。
A、if(x>y);
B、if(x==y) x+=y;
C、if(x!=y) scanf("%d",&x) else x=1;
D、if(x
(  D  )
36、对于 if(表达式)语句,以下说法正确的是________。
A、“表达式”的值只能是整数值
B、在“表达式”中不能调用返回整数的函数
C、在“表达式”中不能含有函数调用
D、“表达式”可以是算术表达式
(  C  )
37、sizeof(float)是________。
A、一种函数调用
B、一个不合法的表示形式
C、一个整型表达式
D、一个浮点表达式
(  C  )
38、若有定义: char str1[10] = "aaaaaaa";
char str2[10] = "bbbbb";
将字符串str2连接到str1,则下列描述中正确的是________。
A、strcat(str1,str2)可以将字符串str2连接到str1中
B、strncat(str1,str2,strlen(str2))可以将字符串str2连接到str1中
C、strncat(str1,str2,2)可以将字符串str2的前两个字符连接到str1中
D、strncat(str1,str2,4)可以将字符串str2的前四个字符连接到str1中
(  C  )
39、经下列语句定义后,sizeof(x),sizeof(y),sizeof(a),sizeof(b)在 微机上的值分别为________。
char x=65;
float y=7.3;
int a=100;
double b=4.5;
A、2,2,2,4
B、1,2,2,4
C、1,4,4,8
D、2,4,2,8
(  B  )
40、下列表达式中,可作为c合法表达式的是________。
A、[3,2,1,0]
B、(3,2,1,0)
C、3=2=1=0
D、3/2/1/0
(  B  )
41、下列运算符中优先级最高的是________。
A、<
B、+
C、&&
D、!=
(  C  )
42、以下描述中正确的是________。
A、由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B、do-while 循环由do开始,用while结束,在 while(表达式)后面不能写分号
C、在 do-while 循环体中,一定要有能使 while 后面表达式的值变为零("假")的操作
D、do-while 循环中,根据情况可以省略 while
(  A  )
43、设a=3,b=2,则表达式a^b>>2的值的二进制表示为________。
A、00000011
B、00000110
C、00000100
D、10
(  D  )
44、以下对一维数组a 的正确说明是________。
A、int n; scanf("%d",&n); int a[n];
B、int n=10,a[n];
C、int a(10);
D、#define SIZE 10int a[SIZE];
(  B  )
45、若有说明: static int a[3][4];
则数组中各元素________。
A、可在程序的运行阶段得到初值0
B、可在程序的编译阶段得到初值0
C、不能得到确定的初值
D、可在程序的编译或运行阶段得到初值0
(  D  )
46、下面描述正确的是________。
A、两个字符串包含的字符个数相同时,才能比较字符串
B、字符个数多的字符串比字符个数少的字符串大
C、字符串"STOP" 与"STOP■"相等
D、字符串"That" 小于字符串"The"
(  A  )
47、以下程序的运行结果是________。
void sub (int x,int y,int *z)
{
*z=y-x;
}
main()
{
int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%4d,%4d,%4d",a,b,c);
}
A、5, 2, 3
B、-5, -12, -7
C、-5, -12, -17
D、5, -2, -7
(  C  )
48、下列符号中,可以作为变量名的是________。
A、+c
B、*X
C、_DAY
D、next-day
(  D  )
49、下述c 语言转义符中( )是非法的。
A、'\b'
B、'\037'
C、'\0xf '
D、'\''
(  A  )
50、以下叙述中正确的是________。
A、构成C程序的基本单位是函数
B、可以在一个函数中定义另一个函数
C、main()函数必须放在其他函数之前
D、函数定义的格式是K&R格式