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(个位数和百位数相同)。