本文目录一览:
请问这道c语言题怎么做,为什么是33?
这个结果是33。分析如下:
根据a = age(5),调用了age()函数,传入5,根据age()函数,返回值是:
age(5) = age(4) + 2
每次根据age()函数去递归
age(4) = age(3) + 2
age(3) = age(2) + 2
age(2) = age(1) + 2
所以age(5) = age(1) + 2 + 2 + 2 + 2
根据age(1)返回值为25,最终结果为:33。
C语言 普及组的模拟题
一、选择题(共20题,每题1.5分,共计30分。每题有5个备选答案,前10个题为单选题,即
每题有且只有一个正确答案,选对得分;后10题为不定项选择题,即每题有1至5个正确答案,只
有全部选对才得分)。
1.微型计算机的性能主要取决于( )。
A)内存 B)主板 C)中央处理器 D)硬盘 E)显示器
2. 128KB的存储器用十六进制表示,它的最大的地址码是( )
A)10000 B)EFFF C)1FFFF D)FFFFF E)FFFF
3.能将高级语言程序转换为目标程序的是( ).
A)调试程序 B)解释程序 C)编辑程序 D)编译程序 E)连接程序
4.A=11001010B,B=00001111B,C=01011100B,则A∨B∧C=( )B
A)01011110 B)00001111 C)01011100 D)11001110 E)11001010
5.计算机病毒传染的必要条件是( ) 。
A)在内存中运行病毒程序
B)对磁盘进行读写操作
C)在内存中运行含有病毒的可执行程序
D)复制文件
E)删除文件
6. TCP/IP协议共有( )层协议
A)3 B)4 C)5 D)6 E)7
7.192.168.0.1是属于( ).
A)A类地址 B)B类地址 B)C类地址 D)D类地址 E)E类地址
8.对给定的整数序列(54,73,21,35,67,78,63,24,89)进行从小到大的排序时,采用快速排序的第
一趟扫描的结果是( ).
A)(24,21,35,54,67, 78,63,73,89)
B)(24,35,21,54,67, 78,63,73,89)
C)(24,21,35,54,67, 63,73,78,89)
D)(21,24,35,54,63, 67,73,78,89)
E)(24,21,35,54,67, 63,73,78,89)
9.一棵n个结点的完全二叉树,则二叉树的高度h为( ).
A)n/2 B)log2n C)(log2n)/2 D) [log2n]+1 E)2n-1
10.下图对该图进行广度优先拓朴排序得到的顶点序列正确的是( ).
A)1,2,3,4,5,6
B)1,3,2,4,5,6
C)1,3,2,4,6,5
D)1,2,3,4,6,5,
E)1,3,2,4,5,6
11.下列属于冯.诺依曼计算机模型的核心思想是( ).
A)采用二进制表示数据和指令;
B)采用”存储程序”工作方式
C)计算机硬件有五大部件(运算器、控制器、存储器、输入和输出设备)
D)结构化程序设计方法
E)计算机软件只有系统软件
12.下列属于输入设备的是( ).
A)打印机 B)扫描仪 C)光笔 D)鼠标 E)显示器
13.算式(1000)10-(100)16-(10)8的结果是( ).
A)(890)10 B)(986)8 C)(1011100000)2 D)(2E0)16 E)(736)10
14.下面关于算法的正确的说法是( )
A)算法必须有输出
B)算法必须在计算机上用某种语言实现
C)算法不一定有输入
D)算法必须在有限步执行后能结束
E)算法的每一步骤必须有确切的定义
15.下列关于十进制数100的正确说法是( ).
A)原码为01100100B
B)反码为64H
C)反码为9BH
D)补码为64H
E)补码为9BH
16.关于windows系统中的窗口和对话框的说法正确的是( ).
A)对话框能移动和改变大小
B)窗口能移动和改变大小
C)对话框只能移动和但不能改变大小
D)对话框不能移动但能改变大小
E)窗口能移动和但不能改变大小
17.下列逻辑运算正确的是( )。
A) A·(A + B )= A
B) A +(A·B)= A
C) A·(B + C )= A·B + A·C
D) A +(B·C)=(A + B)·(A + C)
E) A+1=A
18.下列关于排序说法正确的是( ).
A)插入排序、冒泡排序是稳定的
B)选择排序的时间复杂性为O(n2)
C)选择排序、希尔排序、快速排序、堆排序是不稳定的
D)希尔排序、快速排序、堆排序的时间复杂性为O(nlog2n)
E)快速排序是速度最快的排序
19.对于一个大小为3的栈,若输入队列为123456,则下列输出队列有可能的是( )。
A)123456 B)654321 C)432165 D)431256 E)321654
20. 设有一个含有13个元素的Hash表(0~12),Hash函数是:H(key)=key % 13,其中% 是求余数
运算。用二次探查法解决冲突,则对于序列(8、31、20、33、18、53、27),则下列说法正确
的是( ) 。
A)27在1号格子中
B)33在6号格子中
C)31在5号格子中
D)20在7号格子中
E)18在4号格子中
二.问题求解(5分*2=10分)
1.一个商场有m种颜色的小球,每种小球足够多,在这m种小球中挑选n个小球的选法有多少种?
如 m=2,n=3 时有4种选法分别是:两种小球的个数分别为03,12,21,30.问:当m=4,n=4时
选法数=__________。
2.如果一棵m度树中有n1个度为1的结点,n2个度为2的结点,…….有
nm个度为m的结点,则该树中叶结点的的个数=______________.
1、C语言中没有逻辑量,在给出逻辑运算结果时,以 代表“真”,用 代表“假”。
2、一个C源程序中至少应包括一个 。
3、C源程序的基本单位是 。
4、为表示关系X≥Y≥Z,应使用C语言表达式 。
5、若有以下定义:double w[10];则w数组元素下标的上限是 ,下限是 。
6、若有以下定义:double w[5];则数组w下标的上限是 。
7、执行语句:for(i=1;i++4;)后;变量i的值是 。
6、在C语言中的实型变量分为两种类型,它们是 、 。
7、语句"printf("%x,%o",16,12);"的输出结果是 。
8、当a=5,b=4,c=1时,表达式ab!=c的值是 。
9、若有定义:char c=’\010’;则变量c中包含的字符数为 。
10、C语言中的标识符只能由三种字符组成,它们是 、 、 。
11、若k为int 型且赋值11。请写出运算k++后表达式的值为 ,变量的值为 。
12、在C语言程序中,如果对函数f的类型未加显说明,则函数f的隐含类型是 。
13、二维数组中元素在内存中的存放顺序是 。
14、设有定义int a=12,b=12;则语句 printf("%d %d\n",--a,++b);的输出结果是:
。
15、当a=3,b=2,c=1时,表达式f=abc的值为______________________。
16、C语言中的文件类型有 、 。
二、选择题
1、C语言可执行程序的开始执行点是( )
A、 程序中第一条可执行语言 B、 程序中第一个函数
C、 程序中的main函数 D、 包含文件中的第一个函数
2、以下叙述中不正确的是( )
A、在函数中,通过return语句传回函数值
B、在函数中,可以有多条return语句
C、在C中,main后的一对圆括号中也可以带有形参
D、在C中,调用函数,必需在一条独立的语句中完成
3、对C程序在作逻辑运算时判断操作数真、假的表述,下列哪一个是正确的( )。
A、0为假,非0为真 B、只有1为真
C、-1为假,1为真 C、0为真,非0为假
4、以下字符中,不正确的C语言转义字符是( )
A、‘\t’ B、 ‘\011’ C、‘\n’ D、 ‘\018
5、C语言中运算对象必需是整型的运算符是( )
A、% B、/ C、! D、**
6、putchar函数可以向终端输出一个( )
A、整型变量表达式值 B、实型变量值
C、字符串 D、字符或字符型变量值
7、下列各语句定义了数组,其中哪一个是正确的( )。
A、int a[5],b[2,3]; B、char no(30);
C、int x[]; D、int x[5]={1,2,3};
8、数组定义为"int a[4][5];", 引用"*(a+1)+2"表示( )。
A、a[1][0]+2 B、 a数组第1行第2列元素的地址
C、a[0][1]+2 D、 a数组第1行第2列元素的值
9、a是int类型变量,c是字符变量。下列输入语句中哪一个是错误的( )。
A、scanf ("%d, %c",a, c); B、scanf (" %d%c", a, c);
C、scanf (" %d%c", a,c ); D、scanf ( "d=% d, c=%c",a, c);
10、将整型变量a、b中的较小值为变量c赋值,下列语句中正确的是( )。
A、c= =(ab)? a:b; B、c=if(ab)a else b;
C、c=(ab)? a:b; D、(ab)? c=a:c=b;
11、将整型变量a、b中的较大值为变量c赋值,下列语句中正确的是( )。
A、c= =(ab)? a:b; B、c=(ab)? a:b;
C、c=if(ab)a else b; D、(ab)? c=a:c=b;
12、逻辑运算符中,运算优先级按从高到低依次为( )。
A、, !, || B、||,, ! C、, ||, ! D、!,, ||
13、在C语言程序中( )
A、 函数的定义可以嵌套,但函数的调用不可以嵌套
B、 函数的定义和函数的调用均不可以嵌套
C、 函数的定义不可以嵌套,但函数的调用可以嵌套
D、 函数的定义和函数的调用均可以嵌套
14、C语言中的文件类型只有( )
A、索引文件和文本文件两种 B、ASCII文件和二进制文件两种
C、文本文件一种 D、 二进制文件一种
15、若变量已正确定义并赋值,符合C语言语法的表达式是( )
A、a=7+b+c,a++ B、a=a+7; C、int(12.3%4) D、a=a+7=c+b
16、设有int a[ ]={10,11,12},*p=a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是 ( )
A.10,11,12 B.11,12,12 C.10,12,12 D.11,11,12
17、已知ch是字符型变量,下面正确的赋值语句是( )
A、ch=’\123’ B、ch=’xfff’ C、ch=’\08’ D、ch=’\’
18、以下函数调用语句中,含有的实参个数是( )
A、1 B、2 C、4 D、5
Func((exp1,exp2),(exp3,exp4,exp5));
19、以下叙述中正确的是 ( )
A、 输入项可以是一个实型常量,如 scanf("%f ",3.5);
B、 只有格式控制,没有输入项,也能正确输入数据到内存,如: scanf("a=%d,b=%d");
C、 当输入一个实型数据时,格式控制可以规定小数点后的位数,如:scanf("%4.2f",f);
D、 当输入数据时,必须指明变量地址,例如: scanf("%f",f);
20、程序运行输出了错误的结果,可以排除下列哪一个因素( )。
A.算法错误 B、运行时输入数据错误
C、未通过编译 D、系统资源配置不当
21、要为字符型变量a赋初值,下列语句中哪一个是正确的( )。
A、char a=’3’; B、char a="3";
C、char a=%; D、char a=*;
22、数组定义为"int a[4][5];", 引用"a[1]+3"表示( )。
A、a数组第1行第3列元素的地址 B、a数组第1行第3列元素的值
C、a数组第4行的首地址 D、a数组第4列的首地址
三、程序阅读
1、以下程序的输出结果为 。
main()
{ int x=2;
while (x--);
printf(“%d\n”,x);
}
2、以下程序的运行结果是 。
main()
{ int m=5;
if (m++ 5) printf(“%d\n”,m);
else printf(“%d\n”, m――);
}
3、当执行以下程序段后,i的值为 、j的值为 、k的值为 。
int a,b,c,d,i,j,k;
a=10; b=c=d=5; i=j=k=0;
for( ; ab; ++b) i++;
while (a++c) j++;
do k++; while (ad++);
4、以下程序的输出结果是 。
main()
{ int k=2,m=4,n=6;
int *pk=k, *pm=m, *p;
*(p=n)=*pk*(*pm);
printf(“%d\n”,n);
}
5、以下程序的输出结果是 。
fun1(int a, int b)
{ int c;
a+=a; b+=b;
c=fun2 ( a, b );
return c*c;
}
fun2( int a, int b)
{ int c;
c=a*b%3;
return c;
}
main()
{ int x=11,y=19;
printf(“%d\n”, fun1(x,y));
}
6、以下程序的输出结果是 z= , r= 。
func(int a, int b)
{ int c;
c=a+b;
return c;
}
main()
{ int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf(“z=%d,r=%d\n”,z,r);
}
7、以下程序的输出结果为 .
main()
{ int aa[3][3]={{2},{4},{6}},i,*p=aa[0][0];
for(i=0;i2;i++)
{ if(i==0)
aa[i][i+1]=*p+1;
else ++p;
printf(“%d”,*p);
}
printf(“\n”);
}
8、下列程序运行的输出结果: , 。
#define X 5
#define Y X+1
#define Z Y*X/2
main()
{ int a;
a=Y;
printf("%d,%d\n",Z,--a);
}
四、程序填空
findmax返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空 。
findmax(int s[ ], int t)
{ int k,p;
for(p=0, k=p; pt; p++)
if (s[p]s[k]) ;
return ;
}
有以下程序段:
s=1.0;
for (k=1; k=n; k++) s=s+1.0/(k*(k+1));
printf(“%f\n”,s);
请填空,使下面的程序段的功能完全与之等同。
s=0.0;
;
k=0;
do
{ s=s+d;
;
d=1.0/(k*(k+1));
}
while( );
printf(“%f\n”,s);
3、 以下程序统计从终端输入的字符中每个大写字母的个数,4、 num[0]中统计字母A的个数,5、 其他依次类推。用回车符结束输入,6、 请填空。
#include “stdio.h”
#include “ctype.h”
main()
{ int num[26]={0}, i ;
char c;
while(( )!=’\n’)
if (isupper(c)) num[ ]+=1;
for( i=0; i26; i++)
if (num[i]) printf(“%c: %d\n”, i+’A’,num[i]);
}
4、以下fun函数的功能是将一个字符串的内容颠倒过来,请填空。
#include “string.h”
void fun(char str[])
{ int i,j,k;
for(i=0,j= ; ij; i++, )
{ k=str[i]; str[i]=str[j]; str[j]=k; }
}
5、以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。
main()
{ float x,amax,amin;
scanf(“%f”,x);
amax=x; amin=x;
while( )
{ if ( xamax ) amax=x;
else if (xamin) ;
;
}
printf(“\namax=%f\namin=%f\n”,amax,amin);
}
6、输入若干字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。
#include stdio.h
void main()
{ char ch; ;
while(( )!='\n')
{if(ch='0'ch='9') s1++;
if((ch='a' ch='z')|| ) s2++;}
printf(“%d,%d\n”,s1,s2);
}
编程题
输入一行数字字符(以回车符结束输入),请用数组元素作为计数器来统计每个数字字符的个数,并输出统计结果。用下标为0的元素统计字符’0’的个数,下标为1的元素统计字符’1’的个数,…。
#includestdio.h
main()
{
}
2、下面findmax函数将计算数组中的最大元素及其下标值和地址值,请编写*findmax()函数。
#includestdio.h
*findmax(int *s, int t, int *k)
{
}
main()
{ int a[10]={12,23,34,45,56,67,78,89,11,22},k,*add;
add=findmax(a,10,k);
printf(“%d,%d,%o\n”,a[k],k,add);
}
3、编写程序,求1-3+5-7+…-99+101的值。
#include stdio.h
main()
{ }
4、以下程序将字符串中的第m个字符开始的全部字符复制成另一个字符串,在主函数中输入字符串及m的值并输出复制结果,在被调用函数copystr中完成复制。请编写copystr函数。
#includestdio.h
#includestring.h
main()
{ int m;
char str1[80], str2[80];
printf(“Please input a string :\n”);
gets(str2);
printf(“Input m:\n”);
scanf(“%d”,m);
if (strlen(str2)m ) printf(“error input!\n”);
else
{ copystr(str1,str2,m);
printf(“Result is :%s\n”,str1);
}
}
void copystr(char *p1,char *p2,int m)
{
}
编写函数invert将数组中的数按颠倒的顺序重新存放。在操作时,只能借助一个临时存储单元而不得另外开辟数组。
/*参数n为数组中的元素个数*/
void invert(int a[ ],int n)
{
}
6、函数maxmin完成的功能是:对传送过来的三个数选出最大和最小数,并通过形参传回调用函数。试编写该函数,
main()
{ int a, b, c, max,min;
printf(“please input three integer:\n”);
scanf(“%d,%d,%d”,a,b,c);
maxmin(a,b,c,max,min);
printf(“a=%d,b=%d,max=%d,min=%d\n”,a,b,c,max,min);
}
void maxmin(int a, int b, int c, int *max, int *min)
{
}
C语言第33题为什么
要紧扣题目,符合语法的赋值语句,赋值语句,赋值语句,所以只能选C。