c语言e怎么表示_如何一个月学完c语言

5481486b5cde8727c92cc6525918255c.png

大一的时候,一点都不自律,什么科目都是去那点名后,然后坐在最角落初自个玩手机,特别是程序课,我一个都不懂,有听一两节课还是听不懂,反正就是不懂就对了。课后也没复习。到了期中考,考了才知道我确实废了。不如意以为认真就行,离期末考还有1个月,我当时心态炸了,天啊!期末考咋整,学分怎么办。

我调整了心态好好学,在b站看看关于c语言入门教学视频,其中有个感觉还不错的up主:小甲鱼,内容不全面,只能大概了解下内容。然后针对性的复习,整理笔记。我觉得最重要的是循环程序,过程基础重要,还有那个标识符。编程题真的不能自学出来的,特别复杂,在此建议你们有机会好好学吧,或者多参考些参考书说不定就欧克了。

给你们整理了一些较为重要的知识点:

1.标识符:只能以字母、下划线开头。

2.循环:看if if.......else while do.........while for 等循环语句,注意看他们循环的图形原理。

3.位运算:<< >> ^ ~这些符号的意思

4.指针:说白了就是取地址,就是要你找到地址的。

5.数组:就是让你知道第一维表示行,第二维表示竖。他特喜欢和指针和循环体结合在一起。

6.共同体:具体看书吧,我到现在也不了解。

7.文件:就是了解foropen forclose 等等的结构运行原理。

我其他的也忘了差不多,我在期末考时为了能过,硬是写了37页的选择题,其中也有这个作用吧。这个文件我可以分享给你们,你们也可以去试着做,每个选择题的答案在每个题目前面

C 0101、C语言源程序中,以下叙述正确的是()

A.main函数必须位于文件的开头

B.每行只能写一条语句

C.程序中的一个语句可以写成多行

D.每个语句的最后必须有点号

C 0102、关于C语言的源程序的叙述中,错误的是( )。

A.C语言的源程序由函数构成

B.main函数可以书写在自定义函数之后

C.必须包含有输入语句

D.一行可以书写多个语句 

C 0103、关于C语言数据类型的叙述,正确的是()

A.枚举类型不是基本类型

B.数组不是构造类型

C.变量必须先定义后使用

D.不允许使用空类型

C 0104、C程序中main函数的位置( )

A.必须在最开始

B.必须在系统库函数后面

C.可以在自定义函数后面

D.必须在最后

B 0105、C语言的函数体由( )括起来

A.( ) B. { } C. [ ] D)/* */

D 0106、关于C语言的叙述中,不正确的是( )。

A.C程序可由一个或多个函数组成

B.C程序必须包含一个main()函数

C.C程序的基本组成单位是函数

D.注释说明只能位于一条语句的后面

D 0107、以下叙述不正确的是()。

A.C程序的执行总是从main函数开始

B.一个C源程序必须包含一个main函数

C.C语言程序的基本组成单位是函数

D.在编译C程序源程序时,可发现注释中的拼写错误

C 0108、结构化程序设计的三种基本结构是()。

A.函数结构、分支结构、判断结构

B.函数结构、嵌套结构、平行结构

C.顺序结构、分支结构、循环结构

D.分支结构、循环结构、嵌套结构

C 0109、对于C语言源程序,以下叙述错误的是( )。

A.可以有空语句

B.函数之间是平等的,在一个函数内部不能定义其它函数

C.程序调试时如果没有提示错误,就能得到正确结果

D.注释可以出现在语句的前面

C 0110、C语言中,复合语句的构成是将一系列语句置于()。

A.begin与end之间

B.一对圆括号 “( )”之间

C.一对圆括号 “{ }”之间

D.一对圆括号 “[ ]”之间

D 0201、下面关于C语言用户标识符的描述,正确的是()

A.不区分大小写

B.用户标识符不能描述常量

C.类型名也是用户标识符

D.用户标识符可以作为变量名

D 0202、以下( )是正确的变量名。

A.5f

B.if

C.f.5

D._f5

D 0203、以下( )是正确的常量。

A.E–5

B.1E5.1

C.'a12'

D.32766L

D 0204、以下( )是正确的变量名。

A.a.bee

B.–p11

http://C.int

D.p_11

C 0205、以下( )是正确的字符常量。

A."c"

B.'''

C.'W'

D."32a"

A 0206、以下( )是不正确的字符串常量。

A.'abc'

B."12'12"

C."0"

D." "

B 0207、下列错误的整型常量是()。

A.–0xcdf

B.018

C.0xe

D.011

B 0208、以下是正确的浮点数是()。

A.e3

B..62

C.2e4.5

D.123

A 0209、若有说明语句:char c=’95’;则变量c包含()个字符。

A.1

B.2

C.3

D.语法错误

D 0210、以下( )是正确变量名。

A.a.bee B.-p11 http://C.int D.p_11

A 0301、若有定义:int x=2;则正确的赋值表达式是()

A.a–=(a*3)

B.double(–A.

C.a*3

D.a*4=3

C 0302、语句x=(a=3,b=++a);运行后,x、a、b的值依次为()。

A.3,3,4

B.4,4,3

C.4,4,4

D.3,4,3

B 0303、语句a=(3/4)+3%2;运行后,a的值为( )。

A.0

B.1

C.2

D.3

A 0304、char型变量存放的是( )。

A.ASCII代码值

B.字符本身

C.十进制代码值

D.十六进制代码值

C 0305、若有定义:int x,a;则语句x=(a=3,a+1);运行后,x、a的值依次为()。

A.3,3

B.4,4

C.4,3

D.3,4

B 0306、若有定义:int a;则语句a=(3*4)+2%3;运行后,a的值为()。

A.12

B.14

C.11

D.17

A 0307、若有定义:int a,b;double x;,则以下不符合C语言语法的表达式是()。

A.x%(–3)

B.a+=–2

C.a=b=2

D.x=a+b

B 0308、若有定义:int x=2,y=3; float i; 则以下符合C语言语法的表达式是()。

A.x=x*3=2

B.x=(y==1)

C.i=float(x)

D.i%(–3)

C 0309、设double型变量a,b,c均有值;对代数式(3ae)/(bc)不正确的C语言表达式是( )。

A.a/b/c*e*3

B.3*a*e/b/c

C.3*a*e/b*c

D.a*e/c/b*3

C 0310、以下四项中,符合C语言语法的语句是()。

http://A.int a+b=c;

http://B.int a=12:b=12:c=12;

http://C.int a=12,b=12,c=12;

http://D.int a,b=12, float c=21;

B 0401、下面叙述正确的是( )。

A.2/3 与 2.0/3.0 等价

B.(int)2.0/3 与 2/3 等价

C.++5 与 6 等价

D.'A'与"A"等价

A 0402、下面关于算术运算符的叙述,错误的是( )。

A.其算术运算对象不包含函数

B.%(模运算符)的运算对象只能为整型量

C.算术运算符的结合方向是"自左至右"

D.自加和自减运算符的结合方向是"自右至左"

A 0403、下面叙述正确的是( )。

A.强制类型转换运算的优先级高于算术运算

B.若a和b是整型变量,(a+b)++是合法的

C.'A'*'B' 是不合法的

D."A"+"B"是合法的

B 0404、若有定义:int k,i=2,j=4;则表达式k=(++i)*(j--) 的值是( ).

A.8

B.12

C.6

D.9

C 0405、设整型变量a为5,使b不为2的表达式是( )。

A.b=(++a)/3

B.b=6–(––a)

C.b=a%2

D.b=a/2

C 0406、若有定义:int a=1,b=2,c=3;则语句++a||++b&&++c;运行后b的值为( )。

A.1 B.0 C.2 D.3

B 0407、int i,j;则表达式(i=2,j=5,i++,i+j++)的值是()

A.7 B.8 C. 9 D.10

B 0408、int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是().

A.7 B.8 C.9 D.10

B 0409、若有定义:int m=5,n=3;则表达式(m+1,n+1,(--m)+(n--))的值是()。

A.6 B.7 C.8 D.9

C 0410、若已定义:int i=3,k;则语句k=(i--)+(i--);运行后k的值为()。

A.4 B.5 C.6 D.7

B 0501、已知int a;使用scanf()函数输入一个整数给变量a,正确的函数调用是( )。

A.scanf("%d",a);

B.scanf("%d",&a);

C.scanf("%f",&a);

D.scanf("%lf",&a);

D 0502、已知double a ; 使用scanf()函数输入一个整数给变量a,正确的函数调用是( )。

A.scanf("%ld",&a);

B.scanf("%d",&a);

C.scanf("%7.2f",&a);

D.scanf("%lf",&a);

B 0503、已知char a;使用scanf()函数输入一个字符给变量a ,不正确的函数调用是( )

A.scanf("%d",&a);

B.scanf("%lf",&a);

C.scanf("%c",&a);

D.scanf("%u",&a);

B 0504、putchar()函数的功能是向终端输出( )。

A.多个字符

B.一个字符

C.一个实型变量值

D.一个整型变量表达式

D 0505、getchar()函数的功能是从终端输入( )。

A.一个整型变量值

B.一个实型变量值

C.多个字符

D.一个字符

0506 D 若有定义:int x=1234,y=123,z=12;则语句printf(“%4d+%3d+%2d”,x,y,z);运行后的输出结果为()。

A.123412312

B.12341234123412341231231231212

C.1234+1234+1234

D.1234+123+12

0507 A 已有如下定义和输入语句,

int a;char c1,c2;

scanf("%d%c%c",&a,&c1,&c2);

若要求a、c1、c2的值分别为10、A和B,正确的数据输入是()。

A.10AB

B.10 A B

C.10A B

D.10 AB

0508 B 已知如下定义和输入语句:int a,b;

scanf((“%d,%d”,&a,&b);若要求a和b的值分别为10和20,则正确的数据输入是()。

A.10 20

B.10,20

C.a=10,b=20

D.10;20

0509 D 下列程序运行结果为()。

void main()

{ int a=65; char c=’A’;

printf(“%x,%d”,a,c);

}

A.65,a

B.41,a

C.65,65

D.41,65

0510 B 若已定义:int a=5;float b=63.72; 以下语句中能输出正确值的是( )。

A.printf(“%d %d”,a,b);

B.printf(“%d %.2f”,a,b);

C.printf(“%.2f %.2f”,a,b);

D.printf(“%.2f %d”,a,b);

A 0601、下面叙述中,( )不是结构化程序设计中的三种基本结构之一。

A.数据结构

B.选择结构

C.循环结构

D.顺序结构

A 0602、下面叙述中,( )不是结构化程序设计三种基本结构的共同特点。

A.先判断后执行

B.单入口,单出口

C.程序中没有执行不到的语句

D.无死循环

A 0603、结构化程序设计不包括( )。

A.最优化

B.自顶而下,逐步细化

C.模块化设计

D.结构化编码

D 0604、以下运算符中优先级最高的是()。

A.>

B.||

C.&&

D.+

A 0605、若有定义:int x=3,y=4;则表达式!x||y的值为()。

  1. 1
  2. O
  3. 3
  4. 4

A 0606、若有定义:int i=7,j=8;则表达式i>=j||i<j的值为()。

  1. 1
  2. 变量i的值
  3. 0
  4. 变量j的值

C 0607、若希望当a的值为奇数时,表达式的值为“真”,a的值为偶数时,表达式的值为“假”,则不能满足要求的表达式是()。

  1. a%2==1
  2. !(a%2==0)
  3. !(a%2)
  4. a%2

D 0608、若有定义:int x=3,y=4,z=5;则值为0的表达式是()。

  1. 'x'&&'y'
  2. x<=y
  3. x||y+z&&y–z
  4. !((x<y)&&!z||1)

A 0609、若有定义: int a=5,b=2,c=1;则表达式a-b<c||b==c的值是()。

  1. 0
  2. 1
  3. 2
  4. –1

C 0610、在下列运算符中,优先级最高的是()。

  1. <=
  2. !=
  3. !
  4. ||

A 0701、已知 double a=5.2; 则正确的赋值表达式是( )。

  1. a+=a–=(a=4)*(a=3)
  2. a=a*3=2
  3. a%3
  4. a=double(–3)

A 0702、已知char a=’R’; 则正确的赋值表达式是()

  1. a=(a++)%4
  2. a+2=3
  3. a+=256––
  4. a='078'

A 0703、已知int a=’R’; 则正确的表达式是( )

  1. a%10
  2. a=int(3e2)
  3. 2*a=a++
  4. a=a+a=a+3

A 0704、设单精度型变量f、g的值均为2.0,使f为4.0的表达式是()。

  1. f+=g
  2. f–=g+2
  3. f*=g–6
  4. f/=g*10

B 0705、若有定义:float x=3.5;int z=8;则表达式x+z%3/4的值为()。

  1. 3.75
  2. 3.5
  3. 3
  4. 4

A 0706、若有定义:int a=1,b=2,c=3,d=4,x=5,y=6;则表达式(x=a>b)&&(y=c>d)的值为( )。

  1. 0
  2. 1
  3. 5
  4. 6

A 0707、若有定义:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是()。

  1. 3.5
  2. 3.0
  3. 2.5
  4. 2.0

C 0708、若有定义:int b=7;float a=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)%4的值是()。

  1. 2.5
  2. 3.5
  3. 4.5
  4. 5.5

C 0709、若定义:int a=6,b=2;char c1=’a’,c2=’b’;则表达式a+b%5+c2-c1的值是()。

  1. 7
  2. 8
  3. 9
  4. 表达式错误

B 0710、若已定义: int a=10;float b=2.5; 语句printf("%f",a+b*10/3);的输出结果为( )。

A.18 B.18.333333 C.41 D.41.666667

B 0801、以下的语句中,无内嵌的if语句是( )。

  1. if(x==y) x+=y;
  2. if(x>y && x!=y );
  3. x+=y;
  4. if(x!=y)
  5. scanf("%d",&x);
  6. else
  7. scanf("%d",&y);
  8. if(x<y)
  9. { x++;y++; }

B 0802、C语言对if嵌套语句的规定:else总是与( )配对。

  1. 第一个if
  2. 之前最近的且尚未配对的if
  3. 缩进位置相同的if
  4. 之前最近的if

B 0803、对于整型变量x,下述if语句( )与赋值语句:x=x%2= =0?1:0; 不等价。

  1. if (x%2!=0) x=0; else x=1;
  2. if (x%2) x=1; else x=0;
  3. if (x%2==0) x=1; else x=0;
  4. if (x%2==1) x=0; else x=1;

B 0804、若有定义:int x=1,y=2,z=4;则以下程序段运行后z的值为()。

if(x>y)z=x+y;

else z=x-y;

  1. 3
  2. –1
  3. 4
  4. 不确定

D 0805、若有定义:inta=1,b=2,c=3;则以下程序段运行后a,b,c的值分别为()。

if(a<b){c=a;a=b;b=c;}

  1. a=1,b=2,c=3
  2. a=2,b=3,c=1
  3. a=2,b=3,c=3
  4. a=2,b=1,c=1

D 0806、以下程序段运行后a的值为()。

int x=6,y=5;

int a;

a=(--x==y++)?x:y+1;

  1. 0
  2. 1
  3. 6
  4. 5

C 0807、以下程序的运行结果()。

void main()

{ int n=’e’;

switch(n--)

{ default: printf(“error”);

case ‘a’:

case ‘b’: printf(“good”);break;

case ‘c’: printf(“pass”);

case ‘d’: printf(“warn”);

}

}

  1. error
  2. good
  3. error good
  4. warn

C 0808、 以下程序的运行结果是()

void main()

{ int n='c';

switch(n++)

{ default:printf("error");break;

case 'a':

case 'b':printf("good");break;

case 'c':printf("pass");

case 'd':printf("warn");

}

}

  1. pass
  2. warn
  3. pass warn
  4. error

D 0809、以下程序的运行结果是()。

voin main()

int n=5;

if(n++>=6)

printf(“%dn”, n);

else

printf(“%dn”, ++n;)

  1. 4
  2. 5
  3. 6
  4. 7

A 0810、 下面关于switch语句的叙述中,错误的是()。

  1. case后面的表达式可以是关系表达式
  2. switch语句是多分支选择语句
  3. 每一个case后面的值必须互不相同,否则会出现互相相矛盾的现象
  4. 在执行一个case分支后,可用一个break语句使流程跳出switch语句

B 0901、设有整型变量x,下述语句( )不会出现死循环。

  1. for(;;x+=1);
  2. for(;(x=getchar())!='n';);
  3. while(1) {x++;}
  4. for(x=10;;x––);

B 0902、对于整型变量x,与while(!x) 等价的是( )。

  1. while(x!=0)
  2. while(x==0)
  3. while(x!=1)
  4. while(~x)

A 0903、对于整型变量x和y,语句for(x=0,y=0;(y!=123)&&(x<4);x++) y++;中的“y++;”被执行( )。

  1. 4次
  2. 0次
  3. 123次
  4. 3次

B 0904、在C语言中while循环和do—while循环的主要区别是()。

  1. do––while循环体内可以使用break语句,while循环体内不能使用break语句
  2. do––while的循环体至少无条件执行一次,while的循环体不是
  3. do––while循环体内可以使用continue语句,while循环体内不能使用continue语句
  4. while的循环体至少无条件执行一次,do––while的循环体不是

B 0905、以下程序段运行后,循环体运行的次数为()。 int i=10, x;

for( ; i<10; i++) x=x+ i;

  1. 10
  2. 0
  3. 1
  4. 无限

D 0906、以下程序段运行后变量n的值为()。

int i=1,n=1;

for( ; i<3; i++) {continue;n=n+i;}

  1. 4
  2. 3
  3. 2
  4. 1

B 0907、以下程序的运行结果是()

void main()

{int sum=0,item=0;

while(item<5)

{ item++;

sum+=item;

if(sum==5)

break;

}

printf("%dn",sum);

}

  1. 10
  2. 15
  3. 5
  4. 6

C 0908、下列程序的运行结果为()。

void main()

{ int sum=0,item=0;

while(item<5)

{item++;

sum+=item;

if(sum>=6)

break;}

printf(“%dn”,sum);

}

  1. 10
  2. 15
  3. 6
  4. 7

B 0909、下列程序的运行结果为()。

void main()

{ int sum=0,item=0;

while(item<5)

{item++;

if(item==2)

continue;

sum+=item;

}

printf(“%dn”,sum);

}

  1. 10
  2. 13
  3. 15
  4. 1

B 0910、以下程序运行后,循环体中的”count+=2;”语句运行的次数为()。

int i,j,count=0;

for(i=1;i<=4;i++)

{ for( j=1;j<=i;j++)

{count+=2;

printf(“%d”,count);}

}

A. 8次 B. 10次 C)16次 D)20次

A1001、下列数组声明中,正确的是( )。

  1. int a[5]={0};
  2. int a[]={0 1 2};
  3. int a[5]=0;
  4. int a[];

A1002、下列数组声明中,正确的是( )。

  1. int a[10];
  2. int n=10,a[n];
  3. int N=10;int a[N];
  4. int n;scanf("%d",&n); int a[n];

C1003、已知 int a[13]; 则不能正确引用a数组元素的是( )。

  1. a[0]
  2. a[10]
  3. a[10+3]
  4. a[13-5]

B1004、若有定义:int a[3]={0,1,2};则a[1]的值为()。

  1. 0
  2. 1
  3. 2
  4. 3

A1005、若有定义:int a[5]={1,2,3,4,5}; 则语句a[1]=a[3]+a[2+2]-a[3-1];运行后a[1]的值为()。

  1. 6
  2. 5
  3. 1
  4. 2

D1006、以下能对一维数组a进行正确初始化的语句是()。

  1. int a[5]=(0,0,0,0,0);
  2. int a[5]=[0];
  3. int a[5]={1,2,3,4,5,6,7};
  4. int a[]={0};

D1007、下面程序段的运行结果是()。

int i=0,a[]={3,4,5,4,3};

do{ a[i]++;

}while(a[++i]<5)

for(i=0;i<5;i++)

printf(“%d”,a[i]);

  1. 4 5 6 5 4
  2. 3 4 5 4 3
  3. 4 5 5 5 4
  4. 4 5 5 4 3

C1008、下列程序段的运行结果为()。

int i=0,a[]={7,5,7,3,8,3};

do{ a[i]+=2;

}while (a[++i]>5);

for(i=0;i<6;i++)

printf(“%d ”,a[i]);

  1. 9 7 9 5 10 5
  2. 9 5 9 3 10 3
  3. 9 5 7 3 8 3
  4. 7 5 7 3 8 3

A1009、下列程序的运行结果是()。

int i=0,a[]={1,2,3,4,5};

do{ a[i]++10;

}while(a[++i]>2);

for(i=0;i<5;i++)

printf(“%d”,a[i]);

A. 11 2 3 4 5

B. 1 2 3 4 5

C. 11 12 13 14 15

D. 11 12 3 4 5

B1010、C语言中数组元素下标的数据类型是()。

  1. 实型常量
  2. 整型常量或整型表达式
  3. 任何类型的表达式
  4. 字符型变量

C1101、设有如下程序段:

int a[3][3]={1,0,2,1,0,2,1,0,1}, i , j, s=0;

for(i=0;i<3;i++)

for(j=0;j<i;j++)

s=s+a[i][j];

则执行该程序段后,s的值是( )。

  1. 0
  2. 1
  3. 2
  4. 3

B1102、有如下定义int a[][3]={1,2,3,4,5,6,7,8};

则数组a的行数是( )。

  1. 2
  2. 3
  3. 4
  4. 无法确定的

D1103、以下数组定义中,正确的是( )。

  1. int a[2][3]={1,2,3,4,5,6,7};
  2. int a[][]={{1,2,3},{4,5,6},{7,8,9}};
  3. int a[2][]= {1,2,3,4,5,6};
  4. int a[][4]= {6};

A1104、若有定义:int a[3][4]={{1,2},{0},{1,2,3}};则a[1][1]的值为()。

  1. 0
  2. {1,2}
  3. 1
  4. 3

A1105、若有定义:int a[3][3];则&a[2][1]-a的值为()。

  1. 7
  2. 8
  3. 6
  4. 9

D1106、若有定义:int i=0,x=0;int a[3][4]={1,2,3,4,5,6,7,8,9};则以下程序段运行后x的值为()。

for ( ; i<3; i++) x+=a[i][2-i];

  1. 0
  2. 12
  3. 15
  4. 18

D1107、int a[2][3];对数组非法引用的是()。

  1. a[0][1/2]
  2. a[1][1]
  3. a[4–4][0]
  4. a[0][3]

C1108、以下数组定义中,正确的是()。

  1. int a[2][]={1,2,3,4,5};
  2. int a[][2]={{0},{}};
  3. int a[2][2]={{1,2},{3}};
  4. int a[][]={1,2,3,4};

A 1109、若有定义int a[][3]={1,2,3,4,5,6,7,8,9}; 则表达式sizeof(a)/sizeof(a[0])的值为()。

  1. 3
  2. 4
  3. 5
  4. 9

B1110、以下程序段运行后s的值是()。

int a[3][3]={1,2,3,1,2,3,1,2,3};

int i,j,s=1;

for(i=0;i<3;i++)

for(j=i;j<3;j++)

s*=a[i][j];

A. 18 B. 108 C. 2 D. 12

A 1201、设有以下变量定义:char str1[]=”string”, str2[8],*str3, *str4=”string”;( )是正确的。

  1. strcpy(str1,"China");
  2. str2="China";
  3. strcpy(*str3,"China");
  4. strcpy(str4[0],"China");

D1202、有如下定义:

char str[6]={‘a’,’b’,’0’,’d’,’e’,’f’};

则语句:printf(“%s”,str);的输出结果是( )。

  1. ab
  2. abdef
  3. ab0
  4. ab

C1203 、设有如下数组定义:char str[8]={“FuJian”}; 则分配给数组str的存储空间是( )字节。

  1. 6
  2. 7
  3. 8
  4. 9

B1204、若有定义:char a[ ]=”abcdef”;char b[]=”xyz”;则以下程序运行后屏幕输出为()。

strcpy(a,b); printf(“%c”,a[2]);

  1. c
  2. z
  3. 0
  4. d

C1205、以下程序段运行后屏幕输出为()。

char a[ ]= “abc0mis”; printf(“%d”,strlen(a));

  1. 5
  2. 8
  3. 3
  4. 4

B1206、若有定义:int a=2;则语句

a=strcmp(“miss”, “miss”);运行后a的值为( )。

  1. 1
  2. 0
  3. –1
  4. 2

B1207、下列程序运行后输出( ).

char str[ ]=”abcd”; printf(“%d”,strlen(str));

  1. 4
  2. 5
  3. 6
  4. 7

A1208、以下程序运行后屏幕输出为()。

char str[60]; strcpy(str,”hello”);

printf(“%d”,strlen(str));

  1. 5
  2. 6
  3. 7
  4. 80

B1209、char str1[6]= “abcdm”,*ps,*str2= “abcdef”;( )是正确的。

  1. strcpy(str1,str2);
  2. 表达式strcmp(str1,str2)的值大于0
  3. str1=str2;
  4. 表达式strlen(str1)的值为6

D1210、有如下定义:

char str[3][2]={‘a’,’b’,’c’,’0’,’e’,’f’};

则语句:printf(“%s”,str[0]);的输出结果是( )。

  1. ab
  2. abcef
  3. abc0
  4. abc

A1301、设有如下函数定义:

int fun(char *str)

{ char *p=str;

while (*p!=’0’) p++;

return (p-str);

}则以下语句执行后的输出结果是( )

printf(“%dn”,fun(“Student”))

  1. 7
  2. 8
  3. 9
  4. 10

A1302、以下程序的运行结果是( )。

int fun(int array[4][4])

{int j;

for(j=0;j<4;j++) printf(“%2d”,array[2][j]);

printf(“n”);

}

main()

{int a[4][4]={0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0};

fun(a);

}

  1. 2005
  2. 1004
  3. 0120
  4. 0450

C1303、如下fun函数的类型是( )。

fun(float x)

{double y; int z;

y=x*x;

z=(int)y;

return(z);

}

  1. void
  2. double
  3. int
  4. float

B1304、以下程序运行后屏幕输出为()。

#include<stdio.h>

int f(int x, int y)

{ return (x+y); }

main()

{ int a=2,b=3,c;

c=f(a, b);

printf(“%d+%d=%d”,a,b,c);

}

  1. 0
  2. 2+3=5
  3. 2+3=0
  4. 3+2=5

D1305、以下程序运行后屏幕输出为()。

#include<stdio.h>

int a=2,b=3;

int max (int a, int b)

{ int c;

c=a>b?a:b;

return (c);

}

main()

{ int a=4;

printf(“%d”,max(a,b));

}

  1. 2,3 B. 2 C. 3 D.4

B1306、以下程序运行后屏幕输出为()。

#include <stdio.h>

void f(int i)

{ int a=2;

a=i++;

printf(“%d,” ,a ); }

main( )

{ int a=1,c=3;

f(c);

a=c++;

printf(“%d”,a);

}

  1. 4,3
  2. 3,3
  3. 4,5
  4. 3,5

D1307、int fun()

{static int k=0;

return ++k;

}

以下程序段运行后输出()。

int i;

for(i=1;i<=5;i++) fun();

printf(“%d”,fun());

  1. 0 B. 1 C. 5 D. 6

D1308、以下程序运行后屏幕输出为()。

#include <stdio.h>

int global=100;

fun ( )

{ int global=5;

return ++global; }

void main( )

{ printf(“%dn”,fun( ));

}

  1. 100
  2. 101
  3. 5
  4. 6

B1309、下列关于C语言函数的描述中正确的是()。

  1. 函数的定义可以嵌套,但函数的调用不可以嵌套
  2. 函数的定义不可以嵌套,但函数的调用可以嵌套
  3. 函数的定义和函数的调用都可以嵌套
  4. 函数的定义和函数的调用都不可以嵌套

B1310、以下程序运行结果是()。

fun (int i )

{ int a=2;

a=i++;

printf(“%d,” ,a ); }

main( )

{ int a=5,c=3;

fun(c);

printf(“%d”,a);

}

A. 4 5 B. 3 5 C.4 4 D. 3 3

C 1401、以下程序的运行结果是( )。

#include<stdio.h>

int fun()

{ static int k=0;

k++;

return k;

}

int main()

{ int i,n;

for(i=1;i<=10;i++)

n=fun();

printf("%dn",n);

return 0;

}

A.0 B.1 C.10 D.9

C 1402、以下程序的运行结果是( )。

#include<stdio.h>

int fun(int x,int y)

{ return x>y?x:y; }

int main()

{ int m=1,n=2;

printf("%dn",fun(m,n));

return 0;

}

A.0 B.1 C.2 D.3

A 1403、函数定义时,返回值类型定义为( ),则表示该函数无返回值。

A.void B.float C.empty D.double

C 1404、以下程序的运行结果是( )。

#include<stdio.h>

int k=0;

void fun1(){ k=10; }

int fun2(){ k++; return k; }

int main()

{ fun1();

printf("%dn",fun2() );

return 0;

}

A.0 B.10 C.11 D.12

C 1405、以下程序的运行结果是( )。

#include<stdio.h>

void fun() { int k=10; printf("%d",k); }

int main()

{ int k=0; printf("%d,",k);

fun();

return 0;

}

A.0,0 B.10,10 C.0,10 D.10,0

B 1406、以下程序的运行结果是( )。

#include<stdio.h>

void fun(int x, int *py)

{ x++;

(*py)--;

}

int main( )

{ int a=5,b=10;

fun(a,&b);

printf("a=%d,b=%dn",a,b);

return 0;

}

A.a=5,b=10 B.a=5,b=9 C.a=6,b=9 D.a=6,b=10

B 1407、以下程序的运行结果是( )。

#include<stdio.h>

void fun(int x)

{ x++;

printf("%d ",x);

}

int main( )

{ int a=5;

fun(a);

printf("%dn",a);

return 0;

}

A.5 6 B.6 5 C.5 5 D.6 6

B 1408、以下程序的运行结果是( )。

#include<stdio.h>

int fun(int x)

{ if(x==1) return 1;

return x*fun(x/2);

}

int main( )

{ int a=5;

printf("%dn",fun(a));

return 0;

}

A.5 B.10 C.50 D.15

B 1409、以下程序的运行结果是( )。

#include<stdio.h>

int fun(int x)

{ if(x==0) return 1;

return fun(x/2);

}

int main( )

{ int a=5;

printf("%dn",fun(a));

return 0;

}

A.5 B.1 C.0 D.2

B 1410、以下程序的运行结果是( )。

#include<stdio.h>

int fun(int a[],int n)

{ if(n==1) return a[0];

return fun(a,n-1)+a[n-1];

}

int main( )

{ int a[]={1,2,3,4,5};

printf("%dn",fun(a,5));

return 0;

}

A.5 B.15 C.10 D.1

D1501、若有以下宏定义,#define MOD(x,y) x%y

则执行以下程序段后,z的值是( )。

int z,a=15,b=100;

z=MOD(b,a);

  1. 100
  2. 15
  3. 11
  4. 10

B1502、以下叙述中,正确的是( )。

  1. “#define PRICE=30”定义了与30等价的符号常量PRICE
  2. 预编译处理命令行都必须以“#”开头
  3. 程序中使用带参数的宏时,参数类型要与宏定义时一致
  4. 宏名只能包含大写字母和数字字符

A1503、以下叙述中,正确的是( )。

  1. 宏展开不占用运行时间,只占用编译时间
  2. 预编译处理命令行必须以分号结束
  3. 一个源程序只能有一个预编译处理命令行
  4. 使用带参数的宏定义时,应该说明每个参数的数据类型

C1504、以下叙述中不正确的是( )。

  1. 宏展开不占用运行时间,只占用编译时间
  2. 宏名无类型
  3. 宏名必须用大写字母表示
  4. 预处理命令行都必须以#号开始

A1505、若有定义: #define PI 3, 则表达式PI*2*2的值为()。

  1. 12
  2. 4
  3. 3
  4. 不确定

C1506、以下程序运行后,屏幕输出为()。

#define MIN(a,b)((a)<(b)?(a):(b))

main()

{ int x=2,y=3,z;

z=2*MIN(x,y);

printf(“%d”,z);

}

  1. 2 B.3 C. 4 D. 6

A1507、下面程序的输出结果是()。

#include <stdio.h>

#define SQR(x) (x*x)

void main()

{ int a,b=3;

a=SQR(b+2);

printf(“n%d”,a); }

  1. 11
  2. 25
  3. 不定值
  4. 产生错误

C1508、下面程序的输出结果是()。

#include <stdio.h>

#define ONE 1

#define TWO ONE+1

#define THREE TWO+1

void main()

{ printf(“%dn”,THREE-ONE)

}

  1. 产生错误
  2. 1
  3. 2
  4. 3

B1509、以下叙述正确的是()。

  1. 预处理命令行必须位于C源程序的起始位置
  2. 在C语言中,预处理命令行都以"#"开头
  3. 每个C程序必须在开头包含预处理命令行:#include<stdio.h>
  4. C语言的预处理不能实现宏定义和条件编译的功能

A1510、以下叙述错误的是( )。

A.宏定义不占用程序运行时间,但与程序中的语句一样需要编译

B.宏定义必须放置在它所在的源程序文件的最前面

C.一个C语言源程序可以有多条预处理命令

D.宏定义中的宏名一般用大写字母表示

D1601、设有以下语句,则( )是对a数组元素的不正确引用,其中0≤i<10。

int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a ;

  1. a[p–a]
  2. *(&a[i])
  3. p[i]
  4. *(*(a+i))

C1602、若有定义int *p1,*p2;,则指针变量p1、p2不能进行的运算是( )。

  1. <
  2. =
  3. +

B1603、执行以下程序段的输出结果是( )。

int a=10,*p=&a;

printf(“%d”,++*p);

  1. 10
  2. 11
  3. 变量a的地址
  4. 变量a的地址 + 1

A1604、以下程序段运行后*(p+3)的值为()。

char a[]=”good”;

char *p;

p=a;

  1. 'd'
  2. '0'
  3. 存放'd'的地址
  4. 'o'

C1605、以下程序段运行后*(++p)的值为()。

char a[5]=”work”;

char *p;

p=a;

  1. 'w'
  2. 存放'w'的地址
  3. 'o'
  4. 存放'o'的地址

B1606、若有定义:int *p,a=4; p=&a;则以下均代表地址的是()。

  1. a,p
  2. &a,p
  3. &a,*p
  4. a,*p

D1607、若有说明语句:double *p,a; 则能通过scanf语句正确输入项读入数据的程序段是()。

  1. *p=&a;scanf("%lf",p);
  2. *p=&a;scanf("%lf",*p);
  3. p=&a;scanf("%lf",*p);
  4. p=&a;scanf("%lf",p);

A1608、在16位编译系统上,定义int a[]={10,20,30} , *p=&a; 当执行p++;后下列错误的是()。

  1. p向高地址移了一个字节
  2. p与a+1等价
  3. 语句printf("%d",*p);输出20
  4. p指向数组元素a[1]

B1609、下面语句正确的是()。

  1. int *p; *p=20;
  2. char *s="abcdef"; printf("%sn",s);
  3. char str[]="abcd"; str++;
  4. char str[]={'a','b','c'};printf("%s",str);

A 1610、以下程序的运行结果是( )。

#include<stdio.h>

int main()

{ int a=1,b=2,*pa=&a,*pb=&b;

(*pa)++;

printf("%dn",a+b);

return 0;

}

A.4 B.3 C.1 D.2

D1701、若有以下程序段,且0≤i<4,0≤j<3,则不能正确访问a数组元素的是( )。

int i,j,(*p)[3];

int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12};

p=a;

  1. *(*(a+i)+j)
  2. p[i][j]
  3. (*(p+i))[j]
  4. p[i]+j

B1702、若函数fun的函数头为:int fun(int i,int j)

且函数指针变量p定义如下:

int (*p)(int i,int j);

则要使指针p指向函数fun的赋值语句是( )。

  1. p=*fun;
  2. p=fun;
  3. p=fun(i,j);
  4. p=&fun;

D1703、设有如下变量定义:

char aa[ ][3]={‘a’,’b’,’c’,’d’,’e’,’f’};

char (*p)[3]=aa;

则以下程序段的运行结果是(D)。

p++;

printf(“%c”,**p);

  1. a
  2. b
  3. c
  4. d

D1704、 以下程序段运行后x的值为()。

int a[]={1,2,3,4,5,6,7,8}; int i,x,*p;

x=1; p=&a[2];

for(i=0;i<3;i++)

x*=*(p+i);

  1. 不确定
  2. 24
  3. 120
  4. 60

B1705、以下程序段运行后x的值为()。

int a[ ]={1,2,3}, b[ ]={4,2,5};

int *p,*q; int i ,x;

p=a; q=b;

for(i=0;i<3;i++)

if(*(p+i)==*(q+i))

x=*(p+i)*2;

  1. 2
  2. 4
  3. 6
  4. 不确定

C1706、以下程序段运行后x的值为()。

int a[9]={1,2,3,4,5,6,3,8,9};

int *p,*q; int i ,x;

p=&a[0]; q=&a[8];

for(i=0;i<3;i++)

if(*(p+i)==*(q-i))

x=*(p+i)*2;

  1. 2
  2. 4
  3. 6
  4. 不确定

A1707、下面程序输出结果是()。

#include <stdio.h>

void main()

{ int i ; char *s="abc";

for(i=0;i<3;i++)

printf("%sn",s+i);

}

  1. abc

bc

c

  1. c

bc

abc

  1. abc

c

bc

  1. a

ab

abc

A1708、下面程序输出是()。

#include <stdio.h>

void main()

{ char *str=“12345”,*ps=str+4;

printf(“%cn”,ps[-4]); }

  1. 1
  2. 2
  3. 3
  4. 错误

A1709、从键盘输入1 2 3 4 5<回车>,输出为()。

#include <stdio.h>

#define N 5

void main()

{ int a[N]; int *p=a;

while(p<a+N)

scanf(“%d”,p++);

while(p>a)

printf(“%d”,*(- -p));

}

  1. 5 4 3 2 1
  2. 1 2 3 4 5
  3. 2 3 4 5 1
  4. 4 3 2 1 5

B1710、以下程序的运行结果是()。

int x[]={2,3,4,5,6,7},*p=x;

int i,s=0;

for(i=1;i<6;i++) s+=p[i++];

printf(“%d”,s);

A. 12 B. 15 C. 25 D. 27

1801 C 设有以下定义语句:

struct student

{int num;

char name[10];

float score;

}wang,zhang;

则不正确的叙述是( )。

  1. struct是结构体类型的关键字
  2. zhang是结构体变量名
  3. wang是结构体类型名
  4. num,name,score都是结构体类型student的成员名

B1802、设有以下定义语句:

struct student

{int num;

char name[10];

float score;

}wang,zhang;

则变量wang所占的内存字节数是( )。

  1. 14
  2. 16
  3. 18
  4. 20

B1803、设有如下定义语句:

union u_type

{int i;

double x;

float f;

};

struct str_type

{char str[100];

union u_type u[2];

}

则语句 printf(“%d”,sizeof(struct str_type)); 的输出结果是( )。

  1. 100
  2. 116
  3. 120
  4. 200

C1804、若有定义:

struct teacher

{ int nun;

char name[10];

char sex;

int age;

float score;

}teacher1;

则变量teacher1所占用的内存字节数是()。

  1. 5
  2. 14
  3. 19
  4. 20

C1805、下列对结构体类型变量定义不正确的是()。

  1. Struct teacher
  2. {int num;
  3. int age;
  4. }teach1;
  5. struct
  6. {int num;
  7. int age;
  8. }teach1,teach2;
  9. struct
  10. {int num;
  11. int age;
  12. }teacher;
  13. struct teacherteach1;
  14. struct teacher
  15. {int num;
  16. int age;
  17. };
  18. struct teacher teach1;

D1806、若有定义:

struct teacher

{int num;

char sex;

int age;

}teacher1;

则下列叙述不正确的是()。

  1. struct是结构体类型的关键字
  2. struct teacher是用户定义的结构体类型
  3. num,sex,age都是结构体变量teacher1的成员
  4. teacher1是结构体类型名

D1807、以下程序的运行结果是()。

#include<stdio.h>

union Utype{

int i;

float f;

}u[2];

void main()

{printf("sizeof(u):%dn",sizeof(u));

}

  1. 2
  2. 4
  3. 6
  4. 8

D1808、以下程序运行结果为()。

#include <stdio.h>

union utype

{int i; float f;

};

struct

{ char ch[2];

int i;

union utype u;

}a;

void main()

{ printf(“sizeof(a):%dn”,sizeof(a))

}

  1. 5
  2. 6
  3. 7
  4. 8

D1809、以下C语言共用体类型数据的描述中,不正确的是()。

  1. 共用体变量占的内存大小等于所需内存最大的成员所占的内存
  2. 共用体类型可以出现在结构体类型定义中
  3. 在定义共用体变量的同时允许对第一个成员的值进行初始化
  4. 同一共用体中各成员的首地址不相同

B1810、若有以下类型说明,则( )是正确的叙述。

typedef union

{ char str[2];

int i;

}sp;

  1. sp是一个共用体变量名
  2. sp是一个共用体类型名
  3. union sp是共用体类型名
  4. typedef union是共用体类型名

A1901、对枚举类型进行定义,不正确的是( )。

  1. enum b{1, 2, 3};
  2. enum a{A, B, C};
  3. enum c{D=3, E, F};
  4. enum d{X=0, Y=5, Z=9};

C1902、假定已有如下变量说明和枚举定义:

char ch;

int j,k;

enum day{sun,mon,tue,wed,thu,fri,sat};

int a[sat]

判断下列语句是否符合语法规则,结果是()。

char a; /*语句1 */

j+k=j; /*语句2 */

if(a[mon]>0) j++; /*语句 3 */

  1. 语句2错误,其它正确
  2. 语句1正确,其它错误
  3. 语句3正确,其它错误
  4. 语句1错误,其它正确

C1903、设有如下定义:

typedef int *INTEGER;

INTEGER p,*q; 则( )是正确的叙述。

  1. p是int型变量
  2. q是基类型为int的指针变量
  3. p是基类型为int的指针变量
  4. 程序中可用INTEGER代替int类型名

A1904、以下程序段运行后,a,b,c的值分别是( )。

int a=3,b=5,c;c=a&b;

A.3,5,1 B.3,5,3 C.5,3,1 D.5,1,3

C1905、若有定义:int a=20,b=28,c; 则执行语句c=(a^b)<<2;后c的值为( )。

  1. 2
  2. 5
  3. 32
  4. 92

A1906、若有定义:int a=20,b=28,c; 则执行语句c=(a&b)>>2;后c的值为( )。

  1. 5
  2. 7
  3. 80
  4. 112

C 1907、在无符号数的位运算中,操作数右移一位相当于将该操作数( )。

A.除以4 B.乘以4 C.除以2 D.乘以2

C 1908、若已定义:int a=8,b=7,c; 语句c=a|b; 执行后c的值为( )。

A.0 B.8 C.15 D.7

B1909、下面程序输出结果是()。

# include <stdio.h>

void main()

{enum weekday{sum=7,mon=1,tue,wed,thu,fr,sat};

enum weekday day=sat;

printf(“%dn”,day);

}

  1. 7
  2. 6
  3. 5
  4. 4

C1910、若有以下类型说明,叙述正确的事()。

typedef struct

{ int num;

char *name;

int score;

}STU,*PSTU;

  1. STU是变量名
  2. PSTU是变量名
  3. PSTU是指向结构体类型STU的指针类型名
  4. 类型说明语句有错误
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值