南京体育学院C语言期末练习
本试卷为南京体育学院C语言期末练习,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言期末练习
一、理论基础 (共20题,每题1分,共计10分)
( B )
1、已知大写字母a的ascil码是65,小写字母a的acsii码是97。下列能将变量c中的大写字母转换为对应小写字母的语句是________。
( C )
2、以下有4组用户标识符,其中合法的一组是________。
( D )
3、下列判断正确的是________。
( B )
4、以下选项中不属于字符常量的是________。
( B )
5、c 语言共用体类型变量在程序运行期间 。
( A )
6、在 c 语言中 , 以下叙述不正确的是 ___________.
( C )
7、下列数据中,不合法的c语言实型数据的是________。
( C )
8、设x、y、t均为int型变量,则执行语句x=y=3; t=++x||++y; 后,y的值为______。
( A )
9、以下字符常量中不合法的一项是________。
( D )
10、按照运算符功能的划分,运算符==属于________。
( B )
11、现代计算机中采用二进制数制是因为二进制数的优点是______。
( B )
12、下列选项中非法的字符常量是________。
( B )
13、已知英文字母m的ascii码值为6dh,那么字母q的ascii码值是________。
( C )
14、能正确表示"当x的取值在[l,10]或[200,210]范围内为真,否则为假的表达式是________。
( B )
15、假设i和j是整型变量,以下语句( ) 的功能是在屏幕上显示形如i * j = i*j的一句乘法口诀。例如,当i=2,j=3时,显示2 * 3 = 6。
( A )
16、以下选项中合法的 c 语言赋值语句是________。
( C )
17、执行下列语句后变量x和y的值是________。 y=10; x=y++;
( D )
18、以下选项中正确的 c 语言常量是________。
( C )
19、如下说法不正确的是________。
( D )
20、设已定义整型变量k,则下面的程序输出为________。k=017 ; s=111; printf ( ''%d'', ++k); printf ( ''%x\n'' ,s++);
二、控制结构 (共10题,每题1分,共计10分)
( C )
1、在嵌套使用if语句时,c语言规定else总是________。
( C )
2、设a、b、e、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值是________。
( D )
3、c语言对嵌套的if语句的规定是:else总是与 配对。
( C )
4、有以下程序
main( )
{
char k;
int i;
for(i=1;i<3;i++)
{
scanf("%c",&k);
switch(k)
{
case ‘0’: printf("another\n");
case ‘1’: printf("number\n");
}
}
}
程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是________。
( A )
5、以下程序的输出结果是
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 )
6、在c程序中,判断逻辑值时,分别用( )表示逻辑值"真"、"假"。
( A )
7、在c程序中,判逻辑值时,用"非0"表示逻辑值"真",又用"0"表示逻辑值"假"。在求逻辑值时,逻辑真和逻辑假可分别表示为
( C )
8、以下叙述中正确的是________。
( A )
9、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",a,b);}
该程序的输出结果是( )
( C )
10、结构化程序设计所规定的三种基本控制结构是()。
三、循环结构 (共10题,每题1分,共计10分)
( D )
1、有以下程序:
main()
{
int i,n=0: for(i=2;i<5;i++)
{
do
{
if(i%3) continue: n++;
}
while(!i);
n++;
}
printf("n=%d\n",n);
}
程序执行后输出结果是________。
( D )
2、给定下面的代码: int i=1,j=10;
do
{
if(i++>--j) continue;
}
while(i<5) 执行完之后,i与j的值分别是多少 ( )
( C )
3、以下说法中不正确是________。
( B )
4、以下选项中与if(a==1)a++; else a=b; 语句功能不同的语句是________。
( B )
5、有下列程序:
#include<stdio.h>
main()
{
int a=6,b=7,m=1;
switch(a%2)
{
case 0:m++;
break;
case 1:m++;
switch(b%2)
{
defaut:m++;
case0:m++;
break;
}
}
printf("%d\n",m);
}
程序运行后的输出结果是________。
( D )
6、分析下列程序,其最终执行结果是______。
main()
{
int n[3],i,j,k;
for(i=0;i<3;i++)n[i]=o;
k=2;
for(i=0;i<k;i++) for(j=0;j<k;j++) n[j]=n[i]-1;
printf("%d\n",n[0]);
}
( B )
7、有如下程序
#define N 4
#define M N+2
#define NUM 2*M+1
main()
{
int i;
for(i=1;i<=NUM;i++)printf("%d\n",i);
}
该程序中的for循环执行的次数是______。
( A )
8、设有以下代码其中,循环体 a 与循环体 b 相同,以下叙述正确的是________。
( C )
9、判断关键字* ▁▁▁▁▁ 不是关键字。
( B )
10、以下程序的执行结果是 main()
{ int x = 0, s = 0;
while( !x != 0 ) s += ++x;
printf( "%d ",s ); }
四、数组/指针数组 (共10题,每题1分,共计10分)
( B )
1、若有定义"int b[8],*p=b;",则p+6表示( )。
( B )
2、若二维数组a有m列,则在a[i][j]前的元素个数为( )。
( D )
3、下列选项中,能正确定义数组的语句是________。
( D )
4、以下函数findmax拟实现在数组中查找最大值并作为函数值返回, 但程序中有错导致不能实现预定功能
#define MIN -2147463647
int findmax(int x[],int n)
{
int i,max;
for(i=0;i<n;i++)
{
max=MIN;
if(max<x[i]) max=x[i];
}
return max;
}
造成错误的原因是________。
( A )
5、设有如下程序段 char s[20]= "bejing",*p; p=s; 则执行p=s; 语句后,以下叙述正确的是________。
( B )
6、定义如下一维数组:int a[5],*p; 则下列描述错误的是________。
( A )
7、在c语言中,若函数调用时实参是数组名,则传递给对应形参的是______。
( C )
8、若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
for(i=0;i<3;i) p[i]=&a[i*4];
pp=p
则对数组元素的错误引用是________。
( C )
9、下面程序的输出结果是______。
main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int(*p)[4]=a,i,j,k=0;
for(i=0;i<3;i++) for(j=0;j<2;j++) k=p[i][j];
printf("%d\n",k);
}
( C )
10、下列关于c语言字符数组描述正确的是________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( D )
1、char *s="\t\\name\\address\n"; 指针 s 所指字符串的长度为: 。
( C )
2、在下列各项中,运算级别最低的为________。
( D )
3、下列字符串中,正确的c标识符是________。
( B )
4、下列类型的数据不可以存储在可变型变量中的是________。
( C )
5、下列的程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,程序空白处应该填写的是________。
#include<stdio.h>
main()
{
char sl[]="chinese",s2[]="japnese";
int i;
for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++) if(s1[i]=s2[i]&&i<7) ____________________;
}
( A )
6、以下选项中合法的c语言字符常量是________。
( D )
7、下列字符常量的写法中,正确的是________。
( C )
8、请读程序片段(字符串内没有空格字符):printf("%d\n",strlen("ats\n012\1\\") );
上面程序片段的输出结果是______。
( C )
9、若有定义: char str1[10] = "aaaaaaa"; char str2[10] = "bbbbb"; 将字符串str2连接到str1,则下列描述中正确的是________。
( A )
10、下面不正确的字符串常量是________。
六、函数/函数指针 (共10题,每题1分,共计10分)
( C )
1、#define能作简单的替代,用宏来替代计算多项式5*X*x 4-5*x+5的值的函数f,正确的宏定义语句为( )。
( D )
2、若调用一个函数,且此函数中没有return语句,则正确的说法是________。
( B )
3、下面函数的功能是______。 sss ( char *s , char *t )
{
while (( *s ) && ( *t ) && ( *t++== *s++ )) ;
return ( *s-*t ) ;
}
( B )
4、在一个c语言程序中,________。
( D )
5、若有以下函数调用语句:fun(m+n,x+y,f(m+n,z,(x,y))); 在此函数调用语句中实参的个数是________。
( B )
6、下面的描述中错误的是________。
( D )
7、若x,y均定义成int型,z定义为double型,以下不合法的scanf函数调用语句是________。
( D )
8、以下关于 c 语言的叙述中正确的是________。
( C )
9、关于return语句,下列正确的说法是________。
( A )
10、以下叙述中正确的是________。
七、指针 (共10题,每题1分,共计10分)
( 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"):
}
}
程序运行的结果是________。
( B )
2、若函数中有定义语句:int k; 则
( C )
3、程序流程图中指有箭头的线段表示的是________。
( D )
4、设有如下定义:
struck sk
{
int a;
float b;
} data;
int *p;
若要使p指向data中的a域,正确的赋值语句是________。
( B )
5、设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是________。
( D )
6、________不属于程序的基本控制结构。
( D )
7、以下叙述中正确的是________。
( B )
8、以下程序的输出结果为________。
main()
{
int a=1,b=2,c=3,d=4,e=5;
printf("%d\n",func((a+b,b+c,c+a),(d+e)));
}
int func(int x,int y)
{
return(x+y);
}
( B )
9、int a[10]; 给数组a的所有元素分别赋值为1、2、3、……的语句是________。
( B )
10、c语言程序中必须有的函数是________。
八、结构体 (共10题,每题1分,共计10分)
( D )
1、有以下定义和语句
struct workers
{
int num;
char name[20];
char c;
srruct
{
int day;
int month;
int year;
}
s;
};
struct workers w,*pw;
pw=&w 能给w 中year 成员赋1980 的语句是________。
( C )
2、设有以下说明语句 struct stu
{
int a ;
float b ;
}
stutype ;
则下面的叙述不正确的是______。
( A )
3、程序中有下面的说明和定义
struct abc
{
int x ;
char y ;
}
struct abc s1 , s2 ;
则会发生的情况是______。
( C )
4、设
struct data
{
int a;
float b;
} c,*p=&c;
,引用正确的是________。
( B )
5、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是 struct node char data; struct node*next; a,b,*p=&a,*q=&b;
( D )
6、有以下结构体说明、变量定义和赋值语句
struct std
{
char name[10];
int age;
char sex;
}
s[5],*ps;
ps=&s[0];
则以下scanf函数调用语句中错误引用结构体变量成员的是________。
( B )
7、以下对枚举类型名的定义中正确的是________。
( B )
8、c语言中,定义结构体的保留字是________。
( D )
9、当定义一个结构体变量时,系统为它分配的内存空间是________。
( A )
10、在C语言中,下面那种数据类型不属于构造类型____
九、程序题 (共10题,每题1分,共计10分)
( D )
1、有以下程序
main()
{
int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d %d %d ",i,j,k);
}
程序运行后的输出结果是________。
( D )
2、以下程序的输出结果是________。
main( )
{
int x=11,y=11;
printf("%d%d\\n",x--,--y);
}
( D )
3、有以下程序
#include<stdio.h>
int f(int x);
main() {
int n=1,m;
m=f(f(f(n)));
printf("%d\n",m);
}
int f(int x) {
return x*2;
}
程序运行后的输出结果是________。
( D )
4、以下程序的输出结果是______。
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));
}
( A )
5、有以下程序:
main()
{
char a,b,c,d;
scanf("%c,%c,%d,%d",&a,&b,&c,&d);
printf("%c,%c,%c,%c\n",a,b,c,d);
}
若运行时从键盘上输入:6,5,65,66<回车>,则输出结果是 ______。
( B )
6、程序片段:short i=65536; printf("%d\n",i);
的输出结果是________。
( D )
7、有以下程序
main()
{
int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++) p[i]=i;
for(i=0;i<3;i++) printf("%d",a[1][i]);
}
程序运行后的输出结果是______。
( C )
8、有以下程序
main()
{
char *s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
执行后输出结果是______。
( C )
9、下列程序执行后的输出结果是________。
main()
{
char x=0xFFFF;printf(”%d”,x--);
}
( B )
10、下面程序的运行结果是________。
main( )
{
static int a[3][3]={{3,2,1},{4,5,6},{-2,9,1}};
int i,j,sum=0;
for(i=0;i<3;i++)for(j=0;j<3;j++)
{
if(i==j)sum=sum+a[ij[j]];
}
printf(''sum=%d'',sum);
}
相关标签:
- C语言
- 南京体育学院
- 期末练习