南京财经大学计算机C语言
本试卷为南京财经大学计算机C语言,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
计算机C语言
一、理论基础 (共20题,每题1分,共计10分)
( A )
1、为表示关系:x≥y≥z,应使用的c语言表达式是________。
( B )
2、若变量a、i已正确定义,且i已正确赋值合法的语句是________。
( C )
3、能正确表示"当x的取值在[1,10]和[100,11o]范围内为真,否则为假"的表达式是________。
( D )
4、若变量c为char类型,能正确判断出c为小写字母的表达式是________。
( D )
5、表达式3.6-5/2+1.2+5%2的值是________。
( D )
6、不合法的常量是: 。
( B )
7、一个字符的ascii码占用的存储空间为________。
( D )
8、下列运算符中,优先级最高的是________。
( B )
9、设x=1,y=2,z=3,则表达式y+=z--/++x的值是________。
( D )
10、已知小写英文字母"a"的ascii码值为61h,现字母"g"被存放在某个存储单元中,若采用偶校验(假设最高位作为校验位),则该存储单元中存放的十六进制数是______。
( D )
11、若采用双符号位判断溢出,当结果的符号位为11时,表示 (13) 。
( B )
12、关于二进制的说法中,正确的是________。
( B )
13、有如下程序段int *p,a=6,b=2; p=&a; a=*p+b; 执行该程序段后,a的值为______。
( B )
14、以下说法正确的是________。
( D )
15、一个5位的二进制数能够表示的最大值为?
( A )
16、设a=5、b=6、c=7、d=8、m=1、n=1,执行(m=a>b)&&(n=c>d)后n的值为______。
( C )
17、调试程序是指对程序进行
( D )
18、若int 类型数据占2 字节,则以下语句的输出为________。int k=32768;
printf(''%d,%u\n'',k,k);
( D )
19、在 C语言中,能代表逻辑值“真”的是()。
( D )
20、若有说明:int a[3][4];则数组 a 中各元素()。
二、控制结构 (共10题,每题1分,共计10分)
( C )
1、运行以下程序后,如果从键盘上输入china#<回车>, 则输出结果为
#include <stdio.h>
main( )
{
int v1=0,v2=0;
char ch;
while ((ch=getchar( ))!='#') switch(ch)
{
case 'a': case 'h': default: v1++;
case 'o': v2++;
}
printf("%d,%d\n",v1,v2);
}
( C )
2、若所用变量都已正确定义,则在以下选项中,非法的表达式是________。
( A )
3、在c程序中,判逻辑值时,用"非0"表示逻辑值"真",又用"0"表示逻辑值"假"。在求逻辑值时,逻辑真和逻辑假可分别表示为
( C )
4、下述语句中,_____中的if语句语法是错误的。 ( )
( A )
5、下列程序的运行结果是________。
main()
{
int a=-5,b=1,c=1;
int x=0,y=2,z=0;
if(c>0)x=x+ y;
if(a<=0)
{
if(b>0) if(c<=0)y=x-y;
}
else if(c>0)y=x-y;
else z=y;
printf("%d,%d,%d\n",x,y,z);
}
( C )
6、若有定义:float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是________。
( C )
7、下列程序的输出结果是______。
#include<stdio.h>
main()
{
int a=0,b=1,c=2;
if(++a>0 || ++b>0) ++c;
printf("%d,%d,%d",a,b,c);
}
( A )
8、选择出合法的if语句(设int x,a,b,c;)________。
( C )
9、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
( B )
10、将三个数排序需要比较________次。
三、循环结构 (共10题,每题1分,共计10分)
( B )
1、若变量已正确定义,有以下程序段
int i=0;
do
printf("%d,",i);
while(i++);
printf("%d",i) 其输出结果是________。
( B )
2、定义如下变量: int n=10; 则下列循环的输出结果是________。 while(n>7)
{
n--;
printf("%d\n",n);
}
( C )
3、有如下程序
#include<stdio.h>
void main( )
{
int i,sum=0;
for(i=1;i<=3;sum++) sum+=i;
printf("%d\n",sum);
}
该程序的执行结果是 _____________.
( C )
4、在下列选项中,没有构成死循环的程序是________。
( C )
5、程序的基本控制结构是______。
( C )
6、若有循环:
int x=5,y=20;
do { y-=x; x++; }
while(++x<--y);
则循环体将被执行________。
( D )
7、下列语句哪些不属于循环语句?
( A )
8、以下程序段,while循环执行的次数是 int k=0; while(k=1) k++ ;
( C )
9、下面程序段。x=3;
do
{
y=x--;
if(!y)
{
printf("*");
continue;
}
printf("#");
}
while(1<=x<=2);
( C )
10、下面程序的运行结果是________。
main( )
{
int cl=2,c2=0;
while(!c2--)printf(''%d%d'',cl--,c2);
}
四、数组/指针数组 (共10题,每题1分,共计10分)
( D )
1、下列选项中,能够正确定义数组的语句是________。
( C )
2、若有说明语句"int a[5],*p=a; ",则对数组元素的正确引用是________。
( C )
3、给出以下定义 : char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为 __________.
( C )
4、以下一维数组 a 的正确定义是 __________ .
( A )
5、执行完语句int [] x= new int [25]; 后,则下列哪项说法是正确的
( D )
6、下面关于数组的描述错误的是________。
( C )
7、设有定义语句int a []= { 66,77,99 },则下列对此语句的叙述中错误的是________。
( B )
8、有以下程序
main()
{
int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;
for(i=0;i<3;i++)
for(k=i+1;k<4;k++)
if(a[i][i]<a[k][k])
{
t=a[i][i];
a[i][i]=a[k][k];
a[k][k]=t;
}
for(i=0;i<4;i++)
printf("%d,",a[0][i]);
}
程序运行后的输出结果是________。
( C )
9、下面程序段的执行结果是________。
#include<stdio.h>
main()
{
int a[5][5],i,j;
for(i=1;i<5;i++) for(j=1;j<5;j++) a[i][j]=(i<j)*(j/i);
for(i=1;i<5;i++) {
for(j=1;j<5;j++) printf("%2d",a[i][j]);
printf("\n");
}
}
( B )
10、c语言中,数组名代表________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( B )
1、c语言中,下列不合法的字符串常量是________。
( C )
2、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是________。
( D )
3、以下正确的字符串常量是________。
( C )
4、下面程序段的运行结果是 char *s="abcde"; s+=2; printf("%d",s);
( A )
5、以下选项中合法的c语言字符常量是________。
( A )
6、以下不能将s所指字符串正确复制到t所指存储空间的是______。
( C )
7、下列表达式中,类型可以作为int型的是________。
( D )
8、宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个______
( A )
9、下面不正确的字符串常量是________。
( C )
10、判断两个字符串是否相等,正确的表达方式是
六、函数/函数指针 (共10题,每题1分,共计10分)
( D )
1、对下面程序段,描述正确的是________。 for(t=1;t<=100;t++)
{
scanf("%d",&x);
if (x<0) continue;
printf("%d\n",t);
}
( A )
2、设有以下函数:
void fun(int n,char *s)
{
……
}
则下面对函数指针的定义和赋值均正确的是________。
( A )
3、在 c 语言中,当函数调用时 。
( A )
4、c 语言规定,除主函数外,程序中各函数之间 ______.
( C )
5、若有以下调用语句,则不正确的fun函数的首部是________。
main() {
…
int a[50],n;
…
fun(n, &a[9]);
…
}
( B )
6、所有在函数中定义的变量及函数的形式参数,都属于________。
( A )
7、下列程序的运行结果是________。
#include<stdio.h>
void sub(int*s,int*y) {
static int m=4;
*y=s[0];
m++;
}
void main() {
int a[]=1,2,3,4,5,k;
int x;
printf("\n");
for(k=0;k<=4;k++)
{
sub(a,&x);
printf("%d,",x);
}
}
( D )
8、函数调用结束后,形式参数( )
( A )
9、下面叙述中错误的是________。
( C )
10、c语言规定,在一个源程序中,main函数的位置________。
七、指针 (共10题,每题1分,共计10分)
( C )
1、设有定义:"double x[10],*p=x; ",以下能给数组x下标为6的元素读人数据的正确语句是________。
( D )
2、若调用一个函数,且此函数中没有return语句,则正确的说法是________。
( A )
3、阅读以下程序
#include <stdio.h>
main()
{
int case;
float printf;
printf("请输入2个数:");
scanf("%d %f",&case,&printf);
printf("%d %f\n",case,printf);
}
该程序在编译时产生错误,其出错原因是________。
( B )
4、关于过程、自定义函数的调用,正确的叙述是________。
( D )
5、若已定义:int a[9],*p=a; 并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是________。
( D )
6、要定义一个字符串,下列选项中错误的是________。
( B )
7、若有定义:int *p[3]; ,则以下叙述中正确的是______。
( C )
8、c 语言主要是借助以下哪种手段来实现程序的模块化()
( B )
9、若有下列定义,则对a数组元素地址的正确引用是________。 int a[5],*p=a;
( D )
10、若char a[10]; 已正确定义,以下语句中不能从键盘上给a数组的 所有元素输入值的语句是________。
八、结构体 (共10题,每题1分,共计10分)
( B )
1、有以下程序
struct stu
{
char name[10];
int num;
float totalscore;
};
void f(struct stu *p)
{
struct stu s[2]={{"sundan",20044,550} ,{"penghua",20045,537}}, *q=s;
++p ;
++q;
*p=*q;
}
main()
{
struct stu s[3]= {{"yangsan",20041,703},{"lisiguo",20042,580}};
f(s);
printf("%s %d %3.0f\n", s[1].name, s[1].num, s[1].totalscore);
}
程序运行后的输出结果是________。
( A )
2、有以程序
#include <stdio.h>
#include <string.h>
typedef struct
{
char name[9];
char sex;
float score[2];
} stu;
void f( stu a)
{
stu b={"zhao" ,’m’,85.0,90.0} ;
int i;
strcpy(a.name,b.name);
a.sex=b.sex;
for(i=0;i<2;i++) a.score[i]=b.score[i];
}
main()
{
stu c={"qian",’p’,95.0,92.0};
f(c);
printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]);
}
程序的运行结果是________。
( B )
3、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是________。
struct stu {
int i;
int name;
} st,*p; p=&st;
( C )
4、以下对结构体类型变量的定义中,不正确的是________。
( A )
5、有以下程序
struct s
{
int n;
int a[20];
};
void f(int *a,int n)
{
int i;
for(i=0;i<n-1;i++)a[i]+=i;
}
main()
{
int i;
struct s s={10,{ 2,3,1,6,8,7,5,4,10,9}};
f(s.a,s.n);
for(i=0; i<s.n; i++)printf("%d,",s.a[i]);
}
程序运行后的输出结果是________。
( D )
6、有以下结构体说明、变量定义和赋值语句
struct std
{
char name[10];
int age;
char sex;
}
s[5],*ps;
ps=&s[0];
则以下scanf函数调用语句中错误引用结构体变量成员的是________。
( A )
7、设有如下定义:
struct sk
{
int a;
float b;
}
data,*p;
若要使p指向data中的a域,正确的赋值语句是________。
( B )
8、有以下程序
struct stu
{
char num[10];
float score[3];
};
main( )
{
struct stu s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;
int i;
float sum=0;
p=s;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%.2f\n",sum);
}
程序运行后的输出结果是________。
( A )
9、在C语言中,下面那种数据类型不属于构造类型____
( A )
10、结构体类型的定义允许嵌套是指()。
九、程序题 (共10题,每题1分,共计10分)
( C )
1、若有以下程序段: int r=8; print("%d\n",r>>1); 输出结果是________。
( A )
2、有以下程序:
void fun2(char a,char b)
{
printf("%c%c",a,b);
}
char a='a',b='b';
void fun1( )
{
a='c';
b='d';
}
main()
{
fun1( );
printf("%c%c",a,b);
fun2('e','f');
}
程序的运行结果是________。
( A )
3、有以下程序
#define f(x) x*x
main( )
{
int i;
i=f(4+4)/f(2+2);
printf("%d\n",i);
}
执行后输出结果是________。
( B )
4、有以下程序
#include <stdio.h>
void fun( int *a,int *b)
{
int *c;
c=a;
a=b;
b=c;
}
main()
{
int x=3, y=5, *p=&x, *q=&y ;
fun(p,q);
printf("%d,%d,",*p,*q);
fun(&x,&y);
printf("%d,%d\n",*p,*q);
}
程序运行后输出的结果是________。
( D )
5、有以下程序
#include <stdio.h>
main()
{
int a[ ]={1,2,3,4} ,y,*p=&a[3];
--p;
y=*p;
printf("y=%d\n",y);
}
程序的运行结果是________。
( D )
6、下列程序的执行结果是 ___________.
#include <stdio.h>
void main( )
{
int x=0,y=1,z=0;
if (x=z=y) x=3;
printf("%d,%d\n",x,z);
}
( D )
7、以下程序的输出结果是______。
main()
{
char a[]="programming",b[]="language";
char *p1,*p2;
int i;
p1=a;
p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i))
printf("%c",*(p1+i));
}
( C )
8、以下程序段的输出结果是________。 int a=1234; float b=123.456; double c=12345.54321; printf("%2d,%2.1f,%2.1f",a,b,c);
( B )
9、下面程序的输出结果是______。
main( )
{
int b[]={1,2,3,4,5,6,7,8,9,0},*q;
q=b;
printf("%d\n",*(q+0));
}
( B )
10、下列程序段的执行结果是输出________。
x=3;
do {
printf("%2d",x--);
} while(!x);
相关标签:
- C语言
- 南京财经大学