文档库 最新最全的文档下载
当前位置:文档库 › C语言模拟试卷(4).

C语言模拟试卷(4).

C语言模拟试卷(4)

一、选择题

1.c语言中字符型(char)数据在内存中的形式存储是( )。

A)原码B)补码c)反码D)ASCII码

2.c语言中,长整型1ong数据在内存中的存储形式是( )。

A)ASCII码E)原码C)反码D)补码

3.c语言的运算符按运算对象的数目可以分为()。

A)单目运算符一种B)单目和双目运算符

C)单目、双目和三目运算符D)单目、双目、三目和四目运算符

4.运算符有优先级,在c语言中关于运算符优先级的正确叙述是()。

A)逻辑运算符高于算术运算符,算术运算符高于关系运算符

B)算术运算符高于关系运算符,关系运算符高于逻辑运算符

c)算术运算符高于逻辑运算符,逻辑运算符高于关系运算符

D)关系运算符高于逻辑运算符,逻辑运算符高于算术运算符

5.c语言并不是非常严格的算法语言,在以下关于c语言的不严格的叙述中,错误的说法是()。

A)大写字母和小写字母的意义相同

B)有些不同类型的变量可以在一个表达式中运算

C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型

D)同一个运算符号在不同场合可以有不同的含义

6.在c语言中,错误的int类型的常数是()。

A) 32768 B) 0 C) 037 D)0xAF

7.设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围定()

A)0至255 B)0至65535 C)—32768至32767 D)—256至255

8.以下()是错误的转义字符。

A)’\\’B)’\’’c)’\81’D)’\0’

9.已知:char w;int x;float y;double z 则表达式w*x+z-y结果的类型是().

A)float B)char c)int D)double

10.sizeoff(double)是()

A)函数调用B) double型表达式C) int型表达式D)非法表达式

11.已知:char ch=’A’;则下列表达式值是()。

Ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch;

A) A B)a C) Z D) z

12.选出使变量i的运行结果为4的表达式()。

A) int i:0,j=0:B) int i=1, j=0

(i=3,(j++)+i);j=i=((i=3)*2);

C) int i=0,j=1;D) int i=1,j=1

(j==1)?(i=1):(i=4);i+=j+=2;

13.已知:int w=3,x=10,z=7;则执行下面语句后的结果为()

printf (”%d”, x>10?x+100:x-10 );

printf (”%d”,w++||z++);

printf(“%d”,! w>z);

printf(“%d”,w&&z);

A) 0111 B) 11111 C) 0101 D)0100

14.执行以下语句后的输出结果为()

enum weekday {sun, mon=3,tue,wed,thu};

enum weekday workday;

workday=wed ;

printf(”%d\n”,workday);

A)5 B)3 c)4 D)编译时出错

15.若有定义:enum weekday {mon,tue,wed,thu,fri}workday; 则错误的语句是()。

A) workday= (enum weekday)3;B)workday=(enum weekdoy) (4-2)

C) workday=3 ; D) workday=thu;

16.以下正确的描述为()。

A)每个c语言程序必须在开头用预处理命令:#include<stdio.h>

B)预处理命令必须位于c源程序的首都

C)在C语言中预处理命令都以”#”开头

D)c语言的预处理命令只能实现宏定义和条件编译的功能

17.以下有关宏替换叙述中,错误的是()。

A)宏替换不占用运行时间B)宏名无类型

C)宏替换只是字符替换D)宏名必须用大写字母表示

18.c语言对嵌套if语句的规定是:el se总是与()配对。

A)其之前最近的if B)第一个if

C)缩进位置相同的if D)其之前最近的且尚未配对的if

19.为了判断两个字符串s1和s2是否相等,应当使用()。

A) if(s1= =s2) B) if (s1=s2)

C) if(strcpy(s1,s2)) D)if(strcmp(sl,s2)==0

20.下列关于switch语句和break语句的结论中,正确的是()

A)break语句是switch语句的一部分

B)在switch语句中可以根据需要使用或不使用break语句

C)在switch语句中必须使用break语句

D) 在switch语句中不能使用break语句

21.以下错误的描述是()。

A)break语句不能用于循环语句和switch语句外的任何其它语句

B)在switch语句中使用break语句或continue语句的作用相同

C)在循环语句中使用continue语句是为了结柬本次循环,而不是终止整个循环D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环22.以下错误的描述是()。

A)使用while和do_while循环时,循环变量初始化的操作应在循环语句之前完成

B)while循环是先判断表达式,后执行循环体语句

c)do_while和for循环均是先执行循环体语句,后判断表达式

D)for、while和do—while循环中的循环体均可以由空语句构成23.若int i=10:执行下列程序后,变量i的正确结果是()。

switch (i)

{ case 9:i+1;

case 10:i+=1;

case 11:i+=1;

default:i+=1;

}

A)10 B)11 c)12 D)13

24.以下不是死循环的语句为()。

A) for(;;x+=i);

B) while(x=1) {x++;}

C) for(i=10;;i- -)sum+=i;

D) for (;(c=getchar())!=’\n’;) printf( “%c”,c);

25.c语言程序由函数组成。它的( )。

A) 主函数必须在其它函数之前,函数内可以嵌套定义函数

B) 主函数可以在其它函数之后,函数内不可以嵌套定义函数

C) 主函数必须在其它函数之前,函数内不可以嵌套定义函数

D) 主函数必须在其它函数之后,函数内可以嵌套定义函数

26.一个c语言程序的基本组成单位是( )

A)主程序B)子程序C) 函数D)过程27.一个c语言程序总是从( )开始执行。

A)主过程B)主函数C) 第一个函数D)第一行28.以下说法中正确的是——。

A) c语言程序总是从第一个定义的函数开始执行

B) 在c语言程序中,要调用的函数必须在main()函数中定义

C) c语言程序总是从main()函数开始执行

D) c语言程序中的main()函数必须放在程序的开始部分

29.若有以下说明,则数值为4的表达式是()

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

char c=’a’,d,g;

A) a[g-c] B)a[4] C) a[’d’-‘c’] D)a[‘d’-c] 30.以下程序的输出结果是()

main( )

{ int n[2]={0},i,j,k=2;

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

for (j=0;j<k;j++)n[j]=n[i]+1;

printf(“%d\n”,n[k] );

}

A) 不确定的值B) 3 C) 2 D)1 31.以下程序的输出结果是()

main( )

{ int a[ ]={2,4,6,8,10}, y=1,x,*p;

p=&a[1];

for (x=0;x<3;x++) y+=*(p+x);

printf(“%d\n”,y);

}

A) 17 B) 18 C) 19 D) 20

32.以下程序的输出结果是()

# include “stdio.h”

main()

{ x=try(5);

printf (”%d\n”,x); }

try(int n)

{ if (n>0)

return (n*try(n-2));

else

return (1); }

A) 15 B) 120 C) 1 D)前面三个答案均是错误的33.当说明一个结构变量时系统分配给它的内存是()。

A) 成员所需内存量的总和B)结构中第1个成员所需内存量

C)成员中占内存量最大的所需的容量D)结构中最后一个成员所需内存量34.以下对结构类型变量的定义中错误的是()。

A)#define STUDENT struct student B) struct student

STUDENT { int num;

{ int num;float age ;

float age;}stdl;

} stdl;

C) struct D) struct

{ int num; { int num;

float age; float age;

}stdl; }student;

struct student stdl; 35.在下列结论中,只有一个是正确的,它是( ).

A)递归函数中的形式参数是自动变量

B)递归函数中的形式参数是外部变量

C)递归函数中的形式参数是静态变量

D)递归函数中的形式参数可以根据需要自己定义存储类型

36.下面程序段的运行结果是()

char c[ ]=”\t\v\\\0will\n”;

print(”%d”, strlen(c));

A) 14 B) 3 C) 9 D)字符串中有非法字符,输出值不确定

37.若有以下程序段:

int a[ ]={4,0,2,3,l},i,j,t;

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

{ t=a[i];j=i-1;

while(j>=0&& t>a[j])

I { a[j+1]=a[j];j- -;}

a[j+1]=t;

}

38.则该程序段的功能是( )。

A) 对数组a进行冒泡排序(升序) B)对数组a进行冒泡排序(降序)

C) 对数组a进行选择排序(升序) D)对数组a进行选择排序(降序)

已知:char b[5],*p=b;则正确的赋值语句是()。

A) b=“abcd”;B)*b=“abcd“;C) p=“abcd”;D)*p=“abcd”;

39.已知:char *aa[2]={“abcd”,“ABCD”};则以下说法正确的是()。

A) aa数组元素的值分别是“abcd”和“ABCD”

B) aa是指针变量,它指向含有两个数组元素的字符型一维数组

C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

D)aa数组的两个元素中各自存放了字符‘a’和‘A’的地址

若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应该是()。

A)“ab+”B)“wb+”C) “rb+”D) “ab”

二、写结果题:

1.下面程序的运行结果是:

#include <stdio.h>

main( )

{ int i=0,j=0;

while (i<10)

i++;

while (j++<10);

printf (“i=%d,j=%d\n”,i,j);

}

结果:

2.阅读下面的程序并回答问题。

# include <stdio.h>

main( )

{ int a,b,m,n;

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

m=n=1;

if (a>0〕m=m+n;

if (a<b) n=2*m;

else if (a= =b) n=5;

e1se n=m+n;

printf (“m=%d n=%d\n”,m,n);

}

(1)当输入为-1 -2<回车>,程序的运行结果为(2)当输入为l 0<回车>,程序的运行结果为(3)为了输出n=4,变量a和b应具备条件

3.下面程序的运行结果为

# include <stdio.h>

void main( )

{ int j,i,k=0;

for (j=11;j<=30;j++)

{ if(k%10= =0) printf (“\n”);

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

if (!(j%i) ) break;

if (i>= j-1)

{ printf (“%d\t”,j );

k++;}

}

}

结果:

4.写出下面程序运行结果。

# include <stdio.h>

maiin( )

{ int x=1;

void f1 ( ),f2( );

f1( );

printf (“x=%d\t”,x);

f2(x);

printf (“x=%d\t”,x);

}

void f1 ( )

{ int x=3;

printf (“x=%d\t”,x);}

void f2 ( int x)

{ printf (“x=%d\t”,++x);}

结果:

三、程序填空题

1.下面的程序输出3到100之间的所有素数。

#tnclude<stdio.h>

main ( )

{ int i,j;

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

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

if (________ ) break;

if (________)

printf (“%4d”, i )

}

}

2.下面的函数gcd (a, b)计算两个整数a和b的最大公因子。

gcd ( int num,int den)

{ int temp;

while(den)

{ temp=________;

num=den ;

den=temp;

}

return (___________);

}

3.函数primedec(m)是求整数m的所有素数因子,并输出。例如:m为120时,输出的素数因子为:2,2,2,3,5

primedec (int m)

{ int k=2;

while(k<m)

if (m%k_________)

{ printf (“%d,”k);

____________;

}

else __________;

}

4.己知:nx和ny的末3位数字相同,并见x≠y,x、y、n均为自然数,本程序的功能是:由

键盘输入n.求满足上述条件的x、y,并使x+y为最小。

# include <stdio.h>

pow3 (int n,int x)

{ int i,1ast;

for (1ast=l,i=1;i<=x;i++ )

1ast= ;

return (last );

}

main( )

{ int x,n,min,flag=1;

scanf (“%d”,&n);

for ( min=2;flag;min++)

for( x=1;x

if ( &&pow3 (n,x)= =pow3(n, min-x) )

{ printf (“min=%d=%d+%d \n”,min,x,min-x );

}

}

四、编写题:

1.从三个红球、五个白球、六个黑球中任意取出八个,且其中必须有白球,统计共有多少种抽取方案。

2.设有字符串char str[]="Ghuy&%9,JUYT:{read}87$i#$s@Ag!ir?l,s/hh$#@345^gHU*d";设计程序,统计其英文字母(不区分大小写)、数字字符、以及其它字符各有多少。

3.编写程序,求s=a+aa+aaa+…+ aa…a (最后一项共n位),其中a是一个数字。例如:2+22+222+2222+22222(此时a=2,n=5)。必须用循环结构实现编程。

4.由1,2,3,4四个数字组成的4位数的个数

要求:(1)允许4位数中有相同的数字

(2)个位数和百位数不同。

例如:合要求的数有:1122,1244,2143,2233;不合要求的数有::1424,2313(个位数和百位数相同)。

相关文档