天津商业大学C语言专升本
本试卷为天津商业大学C语言专升本,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言专升本
一、理论基础 (共20题,每题1分,共计10分)
(  B  ) 
1、有以下程序段 int j;
float y;
char name[50];
scanf("%2d%f%s",&j,&y,name);
当执行上述程序段,从键盘上输入55566 7777abe后,y的值为( )。
(  A  ) 
2、语句while(!e); 中的表达式!e等价于( )。
(  D  ) 
3、表达式3.6-5/2+1.2+5%2的值是________。
(  D  ) 
4、英文小写字母d的ascii码为100,英文大写字母d的ascii码为
(  C  ) 
5、若 x=0 , y=3 , z=3, 以下表达式值为 0 的是________。
(  D  ) 
6、设int b=2; 表达式(b<<2)/(b>>1)的值是________。
(  A  ) 
7、以下程序段中与语句k=a>b ? (b>c ? 1:0):0; 功能等价的是________。
(  C  ) 
8、设int i=2,j=1,k=3,则表达式i&&(i+j)&k|i+j的值是________。
(  C  ) 
9、用高级程序设计语言编写的程序称为________。
(  B  ) 
10、下列赋值语句错误的是________。
(  A  ) 
11、若有说明语句:char c=‘\72’; 则变量c________。
(  A  ) 
12、某c语言程序中,x是一个浮点型变量,m是一个值为正整数的整型常量,表达式x%m(x被m除取余数)在 (1) 时会报错,这是一种 (2) 错误。(1)处填________。
(  C  ) 
13、下面判断正确的是________。
(  C  ) 
14、下列标识符,不合法的是________。
(  A  ) 
15、以下选项中不能作为c语言合法常量的是______。
(  D  ) 
16、c语言表达式( )的值不等于1。
(  C  ) 
17、该语句打印结果为(每个d后都有空格)printf("%d ", printf("%d ", printf("%d ", 43)));
(  B  ) 
18、执行下面的程序段int x=5; char z='a'; int b; b=((x&15)&&(z<'a') ); 后,b的值为________。
(  C  ) 
19、以下数据中,不正确的数值或字符常量是()。
(  B  ) 
20、下列标识符中,不合法的 C语言用户自定义标识符是()。
二、控制结构 (共10题,每题1分,共计10分)
(  A  ) 
1、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是________。
(  A  ) 
2、有如下程序:
main ()
{
int x = 1, a = 0, b = 0;
switch (x)
{
case 0:
b++;
case 1:
a++;
case 2:
a++;
b++;
}
printf ("a = %d, b = %d\n", a, b);
}
该程序的输出结果是________。
(  A  ) 
3、以下程序的输出结果是
main()
{
int a=0,i;
for(i=;i<5;i++)
{
switch(i)
{
case 0: case 3:a+=2;
case 1: case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a);
}
(  A  ) 
4、if语句的基本形式是:if(表达式)语句,以下关于"表达式"值的叙述中正确的是______。
(  D  ) 
5、若a和b均是整型变量并已正确赋值,正确的switch语句是________。
(  A  ) 
6、switch语句不能用于下列哪种数据类型 ( )
(  C  ) 
7、有以下程序
main()
{
int i=1,j=1,k=2;
if((j++‖k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是________。
(  C  ) 
8、下述语句中,_____中的if语句语法是错误的。 ( )
(  A  ) 
9、分析下列程序:
#include<stdio.h>
main()
{
int*p1,*p2,*p;
int a=6,b=9;
p1=&a;
p2=&b;
if(a<b)
{
p=p1;
p1=p2;
p2=p;
}
printf("%d,%d",*p1,*p2);
printf("%d,%d",a,b);
}
程序的输出结果为________。
(  B  ) 
10、将三个数排序需要比较________次。
三、循环结构 (共10题,每题1分,共计10分)
(  B  ) 
1、若 i 为整型变量 , 则以下循环语句的循环次数是 ____. for(i=2;i==0;) printf("%d",i--);
(  A  ) 
2、下列关于宏操作的叙述错误的是________。
(  A  ) 
3、下列关于continue和break的描述正确的是________。
(  D  ) 
4、若a、b为int型变量,则执行以下语句后a的值为( )
a=1;
b=10;
do
{
b-=a;
a++;
}
while(b-->0);
(  D  ) 
5、有以下程序
main()
{
int i=0,s=0;
for(;;)
{
if(i==3‖i==5) continue;
if(i==6) break;
i++;
s+=i;
}
;
printf("%d\n",s);
}
程序运行后的输出结果是________。
(  C  ) 
6、运行下面程序时,从键盘输入字母h,则输出结果是
#include<stdio.h>
main()
{
char ch;
ch=getchar();
switch(ch) {
case ’h’: printf("hello!\n");
case ’g’: printf("good morning!\n");
default : printf("bye_bye!\n");
}
}
(  B  ) 
7、设有以下程序段: int k=0; while(k=1) k--; 则以下叙述中正确的是________。
(  B  ) 
8、下面程序的功能是将从键盘输入的偶数写成两个素数之和。请选择填空。
#include <stdio.h>
#include <math.h>
main()
{
int a, b, c, d;
scanf("%d", &a);
for (b = 3, b <= a / 2; b += 2)
{
for (c = 2; c <= sqrt(c); c++) if (b % c == 0) break;
if (c > sqrt(b)) d = ________;
else continue;
for (c = 2; c <= sqrt(d); c++) if (d % c == 0) break;
if (c > sqrt(d)) printf("%d=%d+%d\n", a, b, d);
}
}
(  C  ) 
9、下面程序的运行结果是________。
main( )
{
int cl=2,c2=0;
while(!c2--)printf(''%d%d'',cl--,c2);
}
(  A  ) 
10、在 C语言中,为了结束由 while 语句构成的循环,while 后一对圆括号中表达式的值应该为()。
四、数组/指针数组 (共10题,每题1分,共计10分)
(  D  ) 
1、若已定义: int a[4][3]=(1,2,3,4,5,6,7,8,9,10,1i,12),(*prt) [3]=a,*p=a[0];则能够正确表示数组元素a[1][2]的表达式是________。
(  D  ) 
2、有数组:char a[ ]="this is an egg"; 。请问该数组到底占了几个字节?
(  A  ) 
3、下面关于数组的初始化正确的是________。
(  C  ) 
4、关于数组的叙述中,下列说法不正确的是________。
(  B  ) 
5、二维数组a的每个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。若a按行先存储,元素a[8,5]的起始地址与当a按列先存储时的元素( )的起始地址相同。设每个字符占一个字节。
(  D  ) 
6、下面关于数组的描述错误的是________。
(  D  ) 
7、已知三个字符为a、z和8,按它们的ascii码值升序排序,结果是________。
(  A  ) 
8、以下能正确定义二维数组的是______。
(  A  ) 
9、已定义两个字符数组a,b,则以下正确的输入格式 是________。
(  A  ) 
10、若有如下定义和语句,且 0<=i<5,下面( )是对数值为 3 数组元素的引用
int a[]={1,2,3,4,5},*p,i;
p=a;
五、字符串/字符串指针 (共10题,每题1分,共计10分)
(  D  ) 
1、以下正确的字符串常量是________。
(  C  ) 
2、设有定义:char s[81]; int i=0; 以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是________。
(  D  ) 
3、char *s="\t\\name\\address\n"; 指针 s 所指字符串的长度为: 。
(  D  ) 
4、表达式x+1>x是________。
(  A  ) 
5、下列哪个是c语言的有效标识符
(  B  ) 
6、设有以下程序段: int a[5]=0,*p,*q; p=a; q=a; 则下列选项中,合法的运算是________。
(  A  ) 
7、下列合法的字符型常量是________。
(  B  ) 
8、字符串"xyz"在内存占用的字节数是______。
(  A  ) 
9、下面不正确的字符串常量是________。
(  A  ) 
10、char a[]="This is a program.";输出前 5 个字符的语句是()。
六、函数/函数指针 (共10题,每题1分,共计10分)
(  C  ) 
1、有以下程序片段: y=-1; if(x!=0) if(x>0) y=1; else y=0; 其能正确表示的数学函数关系是________。
(  B  ) 
2、下列函数定义中,会出现编译错误的是________。
(  D  ) 
3、设有宏定义:#define IsDIV(k,n) ((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&& IsDIV(m,7)为真时所要表达的是________。
(  A  ) 
4、c 语言的基本构成单位是: 。
(  C  ) 
5、若有以下调用语句,则不正确的fun函数的首部是________。
main() {
…
int a[50],n;
…
fun(n, &a[9]);
…
}
(  C  ) 
6、函数的值通过return语句返回,下面关于return语句的形式描述错误的是________。
(  B  ) 
7、若有以下说明和定义 fun(int*c)
{
...
}
main()
{
int(*a)()=fun,(*b)(),w[10],c;
}
在必要的赋值之后,对fun()函数的正确调用语句是______。
(  D  ) 
8、有以下程序:
voidf(int *x,int * y)
{
int t;
t= *x;
*x= *y;
*y=t;
}
main()
{
int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;
q=&a[7];
while(p)
{
f(p,q);
p++;
q--;
}
for(i=0;i<8;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是______;
(  C  ) 
9、sizeof(float)是________。
(  D  ) 
10、一个c语言程序是由____构成。
七、指针 (共10题,每题1分,共计10分)
(  C  ) 
1、对下述程序的判断中,正确的是________。
main()
{
char*p,s[256];
p=s ;
while(strcmp(s,"the end"))
{
printf("input the string:");
gets(s);
while(*p) putchar(*p++);
}
}
(  B  ) 
2、c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为________.
(  B  ) 
3、下列数据中为字符串常量的是________。
(  C  ) 
4、若调用一个函数,且此函数中没有return语句,则正确的说法是该函数________。
(  B  ) 
5、以下程序段的执行结果为
#define PLUS(X,Y)X+Y
main()
{
int x=1,y=2,z=3,sum;
sum=PLUS(x+y,z)*PLUS(y,z);
printf("SUM=%d",sum);
}
(  A  ) 
6、设有以下函数
f(int a) {
int b=0;
static int c=3;
b++;
c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是______。
main() {
int a=2,i;
for(i=0;i<3;i++)printf("%d\n"f(a));
}
(  B  ) 
7、有以下程序段:char c1,c2,c3; scanf("%c%c%c",&c1,&c2,&c3); 若要给 c1、c2、c3 分别输入字母 a bc,则以下对输入形式的描述正确的是________。
(  A  ) 
8、经过下列的语句 int j,a[10],*p; 定义后,下列语句中合法的是________。
(  C  ) 
9、若有定义:char *p1,*p2,*p3,*p4,ch; 则不能正确赋值的程序语句为________。
(  A  ) 
10、以下叙述中正确的是________。
八、结构体 (共10题,每题1分,共计10分)
(  C  ) 
1、有以下程序
struct stu
{
char name[10];
int num;
int score;
}
;
main( )
{
struct stu s[5]={{"yangsan",20041,703} , {"lisiguo",20042,580 , {"wangyin",20043,680}, {"sundan",20044,550}, {"penghua",20045,537}},*p[5],*t;
int i,j;
for(i=0;i<5;i++) p[i]=&s[i];
for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->score>p[j]->score)
{
t=p[i];
p[i]=p[j];
p[j]=t;
}
printf("5d %d\n",s[1].score,p[1]->score);
}
执行后输出结果是________。
(  C  ) 
2、设有以下说明语句 struct stu
{
int a ;
float b ;
}
stutype ;
则下面的叙述不正确的是______。
(  C  ) 
3、以下对 c 语言中共用体类型数据的叙述正确的是______。
(  C  ) 
4、设
struct data
{
int a;
float b;
} c,*p=&c;
,引用正确的是________。
(  C  ) 
5、设有以下语句:
typedef struct tt { char c; int a[4]; } cin; 则下面叙述中正确的是________。
(  D  ) 
6、有以下结构体说明、变量定义和赋值语句
struct std
{
char name[10];
int age;
char sex;
}
s[5],*ps;
ps=&s[0];
则以下scanf函数调用语句中错误引用结构体变量成员的是________。
(  B  ) 
7、下列程序的输出结果是________。
#include <stdio.h>
struct abc
{
int a, b, c, s;
} ;
main ()
{
struct abc s[2] = { {1, 2, 3}, {4, 5, 6} };
int t;
t = s[0].a + s[1].b;
printf ("%d\n", t);
}
(  A  ) 
8、设有如下说明:
typedef struct
{
int n;
char c;
double x;
}
std;
则以下选项:能正确定义结构体数组并赋初值的语句是________。
(  C  ) 
9、下面哪个不是关键字?
(  A  ) 
10、在C语言中,下面那种数据类型不属于构造类型____
九、程序题 (共10题,每题1分,共计10分)
(  C  ) 
1、若有以下程序:
main()
{
int k=2,i=2,m;
m=(k+=i*=k);
printf("%d,%d\n",m,i);
}
执行后的输出结果是________。
(  A  ) 
2、有以下程序
main( )
{
char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"} ;
printf("%d\n",strlen(p[4]));
}
执行后输出结果是________。
(  B  ) 
3、语句 int i=2.8*6; 中整型常量i定义后赋初值的结果是________。
(  C  ) 
4、若有如下定义并赋值: char ch='a', a; 则执行语句"printf("%d",a=ch+2.6); "后的输出结果是________。
(  D  ) 
5、有以下程序
main()
{
char a,b,c,*d;
a='\';
b='\xbc';
c='\0xab';
d="\0127";
printf("%c%c%c%c\n",a,b,c,*d);
}
编译时出现错误,以下叙述中正确的是________。
(  B  ) 
6、程序片段:short i=65536; printf("%d\n",i);
的输出结果是________。
(  B  ) 
7、有以下程序
void f(int *q)
{
int i=0;
for( ;i<5;i++) (*q)++;
}
main()
{
int a[5]={1,2,3,4,5},i;
f(a);
for(i=0;i<5;i++) printf("%d,",a[i]);
}
程序运行后的输出结果是______。
(  C  ) 
8、有以下程序
#include <stdio.h>
#include <stdlib.h>
int fun(int n)
{
int *p;
p=(int*)malloc(sizeof(int));
*p=n;
return *p;
}
main()
{
int a;
a=fun(10);
printf("%d\n",a+fun(10));
}
程序的运行结果是______。
(  B  ) 
9、以下程序的运行结果是________。
main( )
{
int a=5 ,p;
if(p=a!=0)printf( "n%"d,p);
elseprintf("%d\n",p+2);
}
(  D  ) 
10、main()
{
int x=3,i;
for(i=0;i<3;i++) printf(""%d"",f(x));
}
int f(int a)
{
int b=0;
static c=3;
b++;
c++;
return(a+b+c);
}
执行此程序后屏幕上显示的结果是________。
相关标签:
- C语言
 - 天津商业大学
 - 专升本