admin 管理员组

文章数量: 887021


2023年12月16日发(作者:图标css)

高职升学模拟考试《C语言编程基础》试卷一

一、填空题:(每空2分,共40分)

1、十进制数125用一个字节的二进制表示是 01111101 。

2、源程序经过编译后产生的结果称为 目标文件 ,其扩展名为 .obj 。

3、一个C语言函数由 函数头 和 函数体 两部分组成。

4、设指针变量fp,打开指定名为“”的ASCII码文件只是为了写的表达式为

Fp=fopen 。

5、在内存中应该开辟 1 个字节来存放一个字符。

6、字符串”abn012(八进制转十进制为10两个字符)„”(字符串后系统自动添加一个空格字符)的长度是 9 。

7、以下程序的输出结果是 14 。

#include

main( )

{ int i=6,j; j=(++i)+(i++) ;

printf(“j=%dn”,j);

}

8、有int x,y;执行y=(x=1,++x,x+2)后,赋值表达式的值为 4 。

9、在C语言中,没有专门为存储字符串的变量,但可以用 字符型数组或字符型指针

来存储字符串,其定义格式为 char str[6] 或char *str 。

10、设x,y,z均为int型变量,请写出描述”x,y和z中有两个为负数的表达式”:

(x<0&&y<0||(x<0&&z<0)||(y<0&&z<0)) 。

11、下列程序段中循环体的执行次数是 3 。

a=10;

b=0;

do {b+=2;a-=2+b;}

while(a>=0);

12、定义:int a[3][4]={{1,2},{0},{4,6,8,10}}; 则初始化后,a[1][2]得到的初值是 0 ,

- 1 -

a[2][1]得到的初值是 6 。

13、下面程序段的运行结果是 he 。

char x[]=”the teacher”;i=0;

while(x[++i]!=‟0‟)

if(x[i-1]==‟t‟)

printf(“%c”,x[i]);

14、程序

#include

main()

{int j,i=1; j=-i++; printf(“%d,%dn”,j,i);}

运行后输出结果为 -1 , 2

15、程序

#include

main()

{int a=177; printf(“a=%on”,a);} (输出八进制)

运行后输出结果为 261

16、若有以下定义:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a;

则语句:p+=2,*(p++);执行后的结果(值)是 3

二、选择题:(每题2分,共40分)

1、程序: main()

{int a=4,b=3,c=1,d=2,e=0;

if(a>b) {if(c>d) e=1;}

else e=4; printf(“%dn”,e);

} 运行结果为( A ).

B、4、 C、6 D、8

A、0

2、下列字符中不属于转义字符的是( B )。

- 2 -

A、n B、k C、b D、t

3、下面对变量说明正确的是( C )。

A、Int a,b,c; B、int x,float y; C、int a,x;

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

A、在C程序中,每行中只能写一条语句。

B、若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数。

C、在C程序中,无论是整数还是实数,都能被准确无误地表示。(实数有时不能)

D、在C程序中,运算符%只能用于整数运算。

5、若以下变量均是整型,且num=sum=7,则计算表达式sum=num++,sum++,++num后的值为( C )。

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

D、int a,x

6、设x,y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x,y和z的值是( A )。

A、x=10,y=15,z=10 B、x=10,y=10,z=10 C、x=10,y=10,z=15 D、x=10,y=5,z=10

7、变量的类型说明如下:int i=8,k,a,b;unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是( A )。

A、a+=a-=(b=4)*(a=3) B、a=a*3=2 C、x%(-3) D、y=float(i) --(float i)

8、以下说法正确的是( D )。

A、输入项可以为一个实型常量,如scanf(“%f”,3.5);

B、只有格式控制,没有输入项也能进行正确输入,如scanf(“a=%d,b=%d”);

C、当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);

D、当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);

9、以下if语句语法正确的是( B )。

A、if(x>0) printf(“%f”,x)

- 3 -

B、if(x>0){x=x+y;printf(“%f”,x);}

else printf(“%f”,-x); else printf(“%f”,-x);

C、if(x>0){x=x+y;printf(“%f”,x);}; (这个分号不要,后面没有语句)

D、if(x>0){x=x+y;printf(“%f”,x)}

else printf(“%f”,-x);

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

A、预处理命令行都必须以#号开始。

B、在程序中凡是以#号开始的语句行都是预处理命令行。

C、C程序在执行过程中对预处理命令行进行处理。

D、#define IBM_pc是正确的宏定义。

11、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句

c2=‘A’+‘6’-‘3’;后,c2的值为( B )。

A、D B、68 C、”0” D、C

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

A、 ‘abc’ B、”12.12” C、”0” D、” ”

13、以下叙述不正确的是( C )。

A、在C程序中,逗号运算符优先级最低。

B、在C程序中,APH和aph是两个不同的变量。

C、若a,b类型相同,在计算a=b后b中的值将放入a中,而b中的值不变。

D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入

实型数。

14、已知int x=10,y=20,z=30;执行语句if(x>y) z=x;x=y;y=z;后,

x,y,z的值是( B )。

A、x=10,y=20,z=30

C、x=20,y=30,z=10

B、x=20,y=30,z=30

D、x=20,y=30,z=20

15、设x,y均为float型变量,则以下不合法的赋值语句是( B )。

A、++x; B、y=(x%2)/10; C、x*=y+8; D、x=y=0;

- 4 -

16、C语言中不合法的字符常量是( B )。

A、’0xff’

17、程序

main()

{ int k=2,m=4,n=6;

int *pk=&k,*pm=&m,*p;

*(p=&n)=*pk*(*pm);

printf(“%dn”,n);

} 运行结果为( D )

B、4 C、6 D、8

B、’029’ C、’68’ D、’*’

A、2

18、定义如下变量和数组:int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则语句

for(i=0;i<3;i++) printf(“%d”,x[i][2-i]);的输出结果是( C )。

A、1 5 9 B、1 4 7 C、3 5 7 D、3 6 9

19、有以下定义语句:int a[]={0,1,2,3,4,5,0};下面选项中与其等价的是( A )。

A、int a[7]={0,1,2,3,4,5,0};

C、int a[7]={0,1,2,3,4,5,1};

20、在程序:main()

{int i,j;

for(j=1;j<=8;j++)

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

printf(“*”);

printf(“n”);

} 中,内层循环的循环体printf(“*”);共被执行了( D )次。

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

D、int a[7]={0,0,1,2,3,4,5};

A、10 B、40 C、60 D、80

三、写出序的运行结果(每题4分,共60分)。

1、若执行以下程序时从键盘上输入9,则输出结果是 10

- 5 -

main()

{int a;

scanf(“%d”,&a);

if(a++<10) printf(“%dn”,a--);

else printf(“%dn”,a);

}

2、main( )

{ int i=1,j=1,k=2;

if((j++||k++)&&i++) printf(“%d,%d,%d”,i,j,k);(逻辑或执行第一个为真就不执行了)

}

运行结果为 2,2,2

3、#include

main()

{int a=-1,b=4,k;

k=(a++<=0)&&(!(b--<=0));

printf(“%d,%d,%dn”,k,a,b);

运行结果为 1,0,3

4、 int a=5;(这个a要执行)

fun(int b)

{static int a=10;

a+=b++;

printf(“%d”,a); }(这个a先执行)

main( )

{ int c=20;

- 6 -

fun(c);

a+=c++;

printf(“%dn”,a);

} 运行结果为 3025

5、main()

{ int x[8]={8,7,6,5,0,0},*s;

s=x+3;(数组s=x表示数组0,再+3,数组下标是0.1.2.3.)

print(“%dn”,s[2]);

} 运行结果为 0

6、#include

main()

{int a=2,i;

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

printf(“%4d”,f(a));

}

f(int a)

{int b=0;

static int c=3;

b++;c++;

return(a+b+c);

}

运行结果为 7 8 9

7、执行程序:

#include

main()

{int i,j;

for(i=1;i<5;i++) 1 2 3 4

for(j=2;j<=i;j++) 0 1 2 3

- 7 -

putchar(‘#’); } 运行结果为 ######

8、程序:

main()

int a=4,b=3,c=5,t=0;

if(a>b) t=a;a=b;b=t;

if(a

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

} 运行结果为 5,4,3

9、程序:

int d[5]={2};

main()

{int i;

int *p=d;

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

{d[i]=*p+3;p++;}

printf(“%dn”,d[4]);

} 运行结果为 14

10、程序:

main()

{int a=4;

switch(a++)

{default:a+=10;

case 5:a+=10;

case 4:a+=10; break;

}

printf(“%d”,a); } 运行结果为 15

11、程序:

- 8 -

main()

{int a=0,b=0,i;

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

if(i%2) a+=i;

else b+=i;

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

} 运行结果为

12、程序:

main()

{int i,j;

i=100;j=200;

printf(“(i++)+j=%dn”,(i++)+j);

i=100;j=200;

printf(“i+(++j)=%dn”,i+(++j));

i=100;j=200;

printf(“i+++j=%dn”,(i+++j));

} 运行结果为

13、程序:

#define MIN(x,y) (x)<(y)?(x):(y)

main()

{int i,j,k;

i=10;j=15;

k=10+MIN(i,j);

printf(“%dn”,k);

} 运行结果为

14、程序:

- 9 -

main()

{int a=1;

while(a<=15)

{if(a%3!=0)

{a++;

continue;}

printf(“%d ”,a);

a++; }

printf(“n”);

} 运行结果为

15、程序:

#include

main()

{char p1[]=“abc”,p2[]=“ABC”,str[50]=“xyz”;

strcpy(str,strcat(p1,p2));

printf(“%s”,str);

} 运行结果为

四、根据要求,完成程序(每个空分,共30分)。

1、下面程序的功能是在输入的一批正数中求出最大者,输入0结束循环。

#include

main( )

{int a,max=0;

scanf(“%d”,&a);

while( )

{if(max

}

printf(“%d”,max);

- 10 -

}

2、以下程序是求矩阵a,b的和,结果存入矩阵c中并按矩阵形式输出。

M ain()

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

int b[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};

int i,j,c[3][4];

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

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

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

{for(j=0;j<4;j++)

}

}

3、下面程序的功能是在一个数组中查找一个指定的字符,若数组中含有该字符则输出该字符在数组中第一次出现的位置(下标值),否则输出-1。

#include

#include

main()

{ char c=’a’,t[50];

int n,k,j;

gets(t);

n= ;

for(k=0;k

- 11 -

if( ) {j=k; }

else j=-1;

printf(“%d”,j); }

4、下面程序的功能是输出以下形式的金字塔图案,请填空:

*

***

*****

*******

main()

{int I,j;

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

{for( )

}

printf(“ “);

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

printf(“*”);

printf(“n”);

}

5、以下程序的功能是:输入某一公元年份,判断是否为闰年,请填空:

#include

main()

{int y;

scanf(“%d”,&y);

if( )

printf(“闰年”);

else printf(“平年”);

}

6、下面程序功能是求100!,请填空:

#include

main()

int i=1;

- 12 -

double s=1;

do

{

i++;}

while

printf(“1*2*3*„*100=%f”,s);

}

7、下面程序功能是将两个整数按从小到大的顺序输出,请填空:

#include

#include

void abc(p1,p2)

int *p1,*p2;

{int p;

p=*p1;*p1=*p2;*p2=p;}

main()

{int a,b;

int *r,*s;

scanf(“%d,%d”,&a,&b);

; ;

;

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

}

五、判断题:(每题2分,共10分)。

)1、语句:int i,*p=i;是正确的C说明语句。

)2、变量定义语句:float x,y,do;是错误的。

)3、表达式:(x+y)++使x+y的值增加1。

)4、C程序一行可以写多条语句,但一条语句只能写在一行上。

)5、C语句for(;;) s中的语句s必执行无穷多次。

- 13 -

六、编程题:(每题10分,共20分)

1、输出如下形式的九九乘法表。

# 1 2 3 4 5 6 7 8 9

1 1

2 2 4

3 3 6 9

„„

9 9 18 27 36 45 54 63 72 81

2、用scanf()函数建立一个3×3的数组b,输出各行元素之和。

- 14 -


本文标签: 结果 变量 字符 输入 程序