沈阳大学计算机C语言练习

本试卷为沈阳大学计算机C语言练习,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

计算机C语言练习

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

(  D  )
1、若已定义: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))
(  C  )
2、下列描述中不正确的是________。
A、字符型数组中可能存放字符串。
B、可以对字符型数组进行整体输入、输出。
C、可以对整型数组进行整体输入、输出。
D、不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
(  C  )
3、以下程序段________. x=-1;
do
{
x=x*x;
}
while(!x);
A、是死循环
B、循环执行二次
C、循环执行一次
D、有语法错误
(  C  )
4、以下选项中可作为c语言合法整数的是________。
A、10110B
B、0386
C、0Xffa
D、x2a2
(  C  )
5、以下叙述正确的是________。
A、C语言程序将从源程序中第一个函数开始执行
B、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C、C语言规定必须用min作为主函数名,程序将从开始执行,在此结束
D、min可作为用户标识符,用以命名任意一个函数作为主函数
(  C  )
6、以下选项中,能用作用户标识符的是________。
A、void
B、8_8
C、_0_
D、unsigned
(  A  )
7、阅读以下程序
#include <stdio.h>
main()
{
int case;
float printf;
printf("请输入2个数:");
scanf("%d %f",&case,&printf);
printf("%d %f\n",case,printf);
}
该程序在编译时产生错误,其出错原因是________。
A、定义语句出错,case是关键字,不能用作用户自定义标识符
B、定义语句出错,printF不能用作用户自定义标识符
C、定义语句无错,scanf不能作为输入函数使用
D、定义语句无措,printf不能输出case的值
(  D  )
8、程序段如下:则以下说法中不正确的是: 。
#include <stdio.h>
main()
{
int k=2,;
while(k<7)
{
if(k%2)
{
k=k+3;
printf( " k=%d\n " ,k);
continue;
}
k=k+1;
printf( " k=%d\n " ,k);
}
}
A、k=k+3; 执行一次
B、k=k+1; 执行 2 次
C、执行后 k 值为 7
D、循环体只执行一次
(  C  )
9、设有说明 int (*ptr)[m]; 其中 ptr 是______。
A、M 个指向整型变量的指针
B、指向 M 个整型变量的函数指针
C、一个指向具有 M 个整型元素的一维数组的指针
D、具有 M 个指针元素的一维指针数组,每个元素都只能指向整型量
(  B  )
10、下面程序输出数组中的最大值,由 s 指针指向该元素 .
void main ()
{
int a[10]={6 , 7 , 2 , 9 , 1 , 10 , 5 , 8 , 4 , 3 , } , *p , *s ;
for ( p=a , s=a ; p-a<10 ; p++ )
if (________) s=p ;
printf ( "the max : %d" , *s ):
}
则在 if 语句中的判断表达式应该是______。
A、p>s
B、*p>*s
C、a[p]>a[s]
D、p-a>p-s
(  A  )
11、若 x 和 y 都是 int 型变量 ,x=100,y=200, 且有下面的程序片段 : printf("%d",(x,y)); 上面程序片段的输出结果是 _________.
A、200
B、100
C、100 200
D、输出格式符不够 , 输出不确定的值
(  A  )
12、在c语言中,以下说法不正确的是________。
A、在C程序中,整数和实数都能被准确无误地表示出来
B、在C程序中,任何一个变量名都代表存储器中的一个位置
C、静态变量的生存期与整个程序的运行期相同
D、C语言中,任何变量都必须先声明才能进行引用
(  D  )
13、下列函数原型声明中错误的是________。
A、void Fun(int x=0,int y=0);
B、void Fun(int x,int y);
C、void Fun(int x,int y=0);
D、void Fun(int x=0,int y);
(  B  )
14、二维数组m[i,j]的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i范围从0到4,列下标,i的范围从0到5。m按行存储时元素m[3,5]的起始地址与m按列存储时元素( )的起始地址相同。
A、M[2,4)
B、M[3,4)
C、M[3,5]
D、M[4,4)
(  D  )
15、设a为int型变量,执行下列赋值语句后,a的取值分别为 ( )
a=125.534; a=20.0/3; a=20%3; a=(int)125%521%4; a=5<<2;
A、125,6.666666,2,1,1
B、125,6,2,1,1
C、125.534,6.666666,2,1,20
D、125,6,2,1,20
(  C  )
16、变量a所占的内存字节数是______。
union u{
char st[4];
int i;
long l;
};
struct A {
int c;
union u;
} a;
A、4
B、5
C、6
D、8
(  D  )
17、表达式a+=a-=a=9的值是________。
A、9
B、-9
C、18
D、0
(  B  )
18、下列选项中,值为1的表达式是________。
A、1-'0'
B、1-'\0'
C、'1'-0
D、'\0','0'
(  B  )
19、有以下程序段:
int j;
float y;
char name[50];
scanf("%2d%f%s",&j,&y,name);
当执行上述程序段,从键盘上输入55566 7777abc后,y的值为
A、55566.0
B、566.O
C、7777.O
D、566777.0
(  B  )
20、请读程序段:char str[]="abcd",*p=str; printf("%d\n",*(p+4));
程序段的输出结果是 ______。
A、68
B、0
C、字符D的地址
D、不确定的值
(  A  )
21、以下程序:
#include<stdio.h>
main() {
char str[10];
scanf("%s",&str);
printf("%s\n",str);
}
运行上面的程序,输入字符串how are you,则程序的执行结果是________。
A、how
B、how are you
C、h
D、howareyou
(  D  )
22、数字字符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
(  C  )
23、若有如下定义并赋值: char ch='a', a; 则执行语句"printf("%d",a=ch+2.6); "后的输出结果是________。
A、c
B、d
C、99
D、100
(  C  )
24、有以下程序
#include<stdio.h>
main ()
{
int i, j, x = 0;
for (i = 0; i < 2; i++)
x++;
for (j = 0; j <= 3; j++)
{
if (j % 2)
continue;
x++;
x++;
}
printf ("x=%d\n", x);
}
程序执行后的输出结果是______。
A、x=8
B、x=4
C、x=6
D、x=12
(  C  )
25、若有定义:float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是________。
A、switch(x) {
case 1.0 : printf("*\n");
case 2.0 : printf("**\n");
}
B、switch((int)x); {
case 1 : printf("*\n");
case 2 : printf("**\n");
}
C、switch(a+b) {
case 1: printf("*\n");
case 2+1: printf("**\n");
}
D、switch(a+b) {
case 1 : printf("*\n");
case c : printf("**\n");
}
(  D  )
26、以下与函数fseek(fp,0l,seek_set)有相同作用的是______。
A、feef(fp)
B、tell(fp)
C、fgetc(fp)
D、rewind(fp)
(  B  )
27、已知英文字母m的ascii码值为6dh,那么,码值为4dh的字母是______。
A、N
B、M
C、P
D、L
(  D  )
28、下面关于数组的初始化正确的是________。
A、chara[]='a','b','c'
B、chara[2]='a','b','c'
C、chara[2][3]='a','b','e','d','e','f'
D、chara[]="a","b","c"
(  A  )
29、若已有定义语句:inta,b, c; 且变量已正确赋初值,则以下选项中正确的赋值语句是________。
A、a = (b = c) + 8;
B、(a = b) = c = 9;
C、a = (b == c) = 'A';
D、a + b = c + 1;
(  B  )
30、设ch是char型变量,其值为c,且有下面的表达式ch=(ch>='a'&&ch<='z')?(ch+32):ch上面表达式的值是______。
A、C
B、c
C、Z
D、z
(  C  )
31、设 float f[10]; 则f数组中下标最大的元素的正确表示为________。
A、f[10]
B、f[0]
C、f[9]
D、f(9)
(  B  )
32、阅读下列程序:
main( )
{
int n[3],i,j,k;
for(i=0;i<3;i++)n[i]=0;
k=2;
for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]=n[i]+1;
for(i=0;i<3;i++)printf(''%d'',n[i]);
printf(''\n'');
}
运行该程序,其输出结果是________。
A、230
B、330
C、123
D、321
(  D  )
33、下面定义结构变量的语句中错误的是________。
A、struct student{
int num; char name[20];
} s;
B、struct {
int num; char name[20];
} s;
C、struct student{
int num; char name[20];
};
struct student s;
D、struct student{
int num; char name[20];
};
student s;
(  B  )
34、在c语言中,不允许有常量的数据类型是________。
A、整型
B、结构型
C、字符型
D、字符串
(  D  )
35、以下叙述中正确的是________。
A、逻辑"或”(即运算符||)的运算级别比算术运算要高
B、C 语言的关系表达式:0<x<10 完全等价于:(0<x)&&(x<10)
C、逻辑"非”(即运算符!)的运算级别是最低的
D、由&&构成的逻辑表达式与由||构成的逻辑表达式都有“短路”现象
(  A  )
36、以下关于逻辑运算符两侧运算对象的叙述中正确的是________。
A、可以是任意合法的表达式
B、只能是整数 0 或非 0 整数
C、可以是结构体类型的数据
D、只能是整数 0 或 1
(  C  )
37、以下for语句构成的循环执行了______次。
#include <stdio.h>
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{
int i,n=0;
for(i=1;i<=NUM;i++)
{
N++;
printf("%d",n);
}
printf("\n");
}
A、5
B、6
C、8
D、9
(  C  )
38、调试程序是指对程序进行
A、编辑
B、编译
C、查错和排错
D、连接
(  C  )
39、在c语言的函数中,下列正确的说法是________。
A、必须有形参
B、形参必须是变量名
C、可以有也可以没有形参
D、数组名不能作形参
(  A  )
40、下列字符序列中,是c语言保留字的是________。
A、sizeof
B、include
C、scanf
D、sqrt
(  B  )
41、下列数据中属于"字符串常量"的是________。
A、ABC
B、"ABC"
C、'ABC'
D、'A'
(  A  )
42、若有 int a[10], *p=a;
,且 a 数组已赋值,则与 a[4]不等价的表达式为________。
A、p+4
B、*(p+4)
C、*(a+4)
D、p[4]
(  B  )
43、下列程序的输出结果是________。 int b=2;
int func(int *a)
{
b += *a;
return(b);
}
main()
{
int a=2, res=2;
res += func(&a);
printf("%d \n",res);
}
A、4
B、6
C、8
D、10
(  A  )
44、c风格的注释* c 风格的注释,也称块注释或多行注释,以 ▁▁▁ 开始,以 ▁▁▁ 结束。
A、/* 和 */
B、{ 和 }
C、[ 和 ]
D、( 和 )
(  D  )
45、若有代数式|x3+lgx|,则正确的c 语言表达式是________。
A、fabs(x*3+log 10(x))
B、abs(pow(x,3)+log10(x))
C、abs(pow(x,3)0)+log10(x))
D、fabs(pow(x,3)0)+log 10(x))
(  D  )
46、若有说明: int a[3][4]={0};则下面正确的叙述是()。
A、只有元素 a[0][0]可得到初值 0
B、此说明语句不正确
C、数组 a 中各元素都可得到初值,但其值不一定为 0
D、数组 a 中每个元素均可得到初值 0
(  C  )
47、当顺利执行了文件关闭操作时,fclose 函数的返回值是()。
A、-1
B、TRUE
C、0
D、1
(  B  )
48、以下程序段的输出结果为()。
for(i=4;i>1;i--)
for(j=1;j
A、无
B、######
C、#
D、###
(  C  )
49、以下叙述中错误的是________。
A、C语句必须以分号结束
B、复合语句在语法上被看作一条语句
C、空语句出现在任何位置都不会影响程序运行
D、赋值表达式末尾加分号就构成赋值语句
(  C  )
50、以下叙述中正确的是 ()。
A、C语言比其他语言高级
B、C语言可以不用编译就能被计算机识别执行
C、C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D、C语言出现的最晚,具有其他语言的一切优点