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