1、 A) ap-a B) *(&ai) C) pi D) a10A. ap-a表示a0,正确。B. *(&ai)表示ai,正确。C. pi表示&ai,正确。D. a数组最大下标为9,错误。5. 以下程序的输出结果是 int main( ) int x=10,y=10,I; for(i=0;x8;y=+i) printf(%d,%d ,x-,y); A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1第一遍循环: x=10,y=10,x8,输出 10 10后,x=9,y=1.第二遍循环:x=98,输出 9 1 后x=8,y=2。第三遍循环:x=8,不满足条
2、件,循环结束,无输出。6. 下面程序的输出是void prtv(int *x)printf(%dn, +*x);int main() int a=25;prtv(&a);return 0;A) 23 B) 24 C) 25 D) 26主函数传递给prtv函数的x值为25 ,在printf中,先对x自增,再输出x值为26。 7. 下面能正确进行字符串赋值操作的语句是A)char s5=ABCDE; B)char s5=A、BCDEC) char *s;s=ABCDEF; D)char *s; scanf(%s,s);A. 中的 “ 也作为字符串中的一个字符,故右侧字符串长度为75,越界,错误。B
3、. 右侧字符的分割符应使用,而不是、,错误。C. 正确。D. s是一个字符串常量,应在定义同时初始化且不能通过scanf函数或任何其他方式修改其值,错误。8. 设x,y,z,t均为int型变量,则执行以下语句后,t的值为x=y=z=1;t=+x|+y&+z;A)不定值 B)2 C)1 D)0 |和&运算符的优先级高于赋值运算符=,所以t为一个逻辑值,其只能为0或1,又表达式+x|+y&+z为真,故t=1。9. 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是A)k=*p1+*p2;B)p2=k;C)p1=p2;D)k=*p1 *(*p2);BB中不能
4、将一个整形变量的值赋给一个指针变量,应改为p=&k 或者*p=k。10. 请读程序:#include#define SUB(X,Y) (X)*Y int a=3, b=4;%d, SUB(a+, b+);上面程序的输出结果是A) 12 B) 15 C) 16 D) 20Aprintf函数中输出的内容等价于(a+)*b+,由于自增运算符优先级高于*,所以又等价于(a+)*(b+),应先输出a*b,后进行自增运算。11. sizeof(float)的结果是:A) 4B) 6C) 8D) 不确定sizeof操作符用来测定数据类型位长,但在不同的系统中,同一数据类型的位长并不一定相同,故不确定,选D。
5、12. 若执行下面的程序时从键盘上输入3和4,则输出是int a,b,s;scanf(%d %d,&a,&b);s=a;if(ab)s=b;s=s*s;,s);A) 14 B) 16 C) 18 D) 20scanf输入a=3,b=4,s=a=3,ab,if条件成立,s=b=4,s=s*s=16,输出s=16,选B。13. 以下程序的输出结果是 # include 5)printf(,m);else printf(,m-);return 0;A)7 B)6 C)5 D)4主函数第二行中if条件先判断m5不成立,然后有m=m+=6,再执行else语句,其中,先输出m=6,再使m自减为5,选B。2
6、0. 以下程序运行后,输出结果是 int d=1;fun(int p)int d=5;d+=p+;,d);int a=3;fun(a);d+=a+;A)84 B)99 C)95 D)44主函数调用fun的同时,将实参a的值3传递给形参p,fun函数中,p=3,d+=p+;语句可以拆分为 d=d+p;p+;所以d=8,输出8。子函数调用结束回到主函数中,fun函数中对形参p的值的修改不能改变实参a的值仍为3,d=d+a=4,输出4,选A。二、填空题(本大题共7小题,每题2分,共14分。1. 在C语言中,一个函数的函数体一般包括_和_。声明部分 执行部分函数结构构成规则。在C语言中,一个函数的函数
7、体一般包括声明部分和执行部分。2. 在C语言中,不同级运算符之间运算次序存在_的区别,同级运算符之间运算次序存在_的规则。先后 结合性不同级的运算符由优先级规定运算次序;同级的运算符的运算顺序由结合性决定。 3. 欲将字符串S1复制到字符串S2中,其语句是 _ 。strcpy(s2,s1)本题考查库函数strcpy的调用。 4. 结构化程序设计中的三种基本结构是_、_、_。顺序 选择 循环 5. 表达式x=x+1表示成增量表达式为_。x+或+x自增表达式单独使用时,+x和x+等价。6. 定义int a1,2,3,4,5,6,*pa;表达式(*p)的值是_。3+p表示a1的地址,*+p表示a1的
8、值,(*p)则表示a1+。7. C语言中,二维数组在内存中的存放方式为按_优先存放行C语言规则是二维数组以行优先方式存放在内存空间。三、判断题(本大题共7小题,每题2分,共14分。1. 虽然goto语句能提高程序运行效率,但为防止程序结构混乱应该禁用( )错goto语句应该是慎用而非禁用。2. 条件表达式可以取代if语句,或者用if语句取代条件表达式( )if语句可由花括号包含多条执行语句,这是条件表达式所不能实现的,因此二者不能相互替换 3. 在C程序中对用到的所有数据都必须指定其数据类型( )声明变量必须指定数据类型,用#define声明常量不用指定数据类型,只需指定常量名。 4. 可以对
9、字符型数组进行整体输入、输出( )字符型数组无法整体进行输入,只能逐个输入输出。 5. 函数中的静态变量在函数每次调用时,都会重新设置初值( )函数中的静态变量只在函数第一次被调用时设置初值,之后会自动保存为上次调用结束后的值。 6. 实参和与其对应的形参共占用一个存储单元( )实参形参各分单元。 7. 一个实型变量的值肯定是精确的( )实型变量的精度是有限的,并不精确,而整型变量的值则是精确的。四、程序分析题(用列表法列出关键变量在运行过程中的值)(本题共3道小题,每题4分,共12分。1.下面程序的运行结果是_。#include 0); puts(c);aabcdi=5,c5=c4=0; i
10、=4,c4=c3=d; i=3,c3=c2=c; i=2,c2=c1=b;i=1,c1=c0=a;i=0,不满足条件,循环结束,输出”aabcd”。2. 以下程序的执行结果是_。includeint a331,2,3,4,5,6,7,8,9,i,s0;for(i0;i2;i)ssaii;printf(s%dn,s);s=15将for循环拆分来看:i=0时,s=0+a00=0+1=1i=1时,s=1+a11=1+5=6i=2时,s=5+a22=6+9=15i=3时,循环结束。输出s=15. 3.给出下列函数程序完成的功能void prnt(int n, int aa )int i; for(i=
11、1;=n;%6d, aai);if(!(i%5) printf(n);若变量n中的值为24,则prnt函数共输出 行,最后一行有 个数 5 4print函数的功能是依次输出形参数组中的数组元素,并且每输出5个后换行。五、编程题(本大题共2小题,每题10分,共20分)1. 从键盘输入一个一维数组,将这个数组逆序输出。 答案#define N 5 int aN=9,6,5,4,1,i,temp;printf(n original array:for(i=0;iN;i+)%4d,ai);N/2;temp=ai;ai=aN-i-1;aN-i-1=temp;n sorted array:程序主体包括三个
12、部分:输入数组元素;实现数组元素的逆序;输出数组元素输入数组元素:通过一个for循环,利用scanf函数依次输入数组元素。实现数组元素的逆序:通过一个for循环,将数组前一半元素和后一半元素逐个交换。ai=aN-i-1。输出数组元素:通过for循环,利用printf函数逐个输出数组元素。2. 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,子字符串为:as,则应输出6。#include int fun(char *str,char *substr) int i,n=0,s=s
13、trlen(str);s;if(stri=substr0)&(stri+1=substr1)n+;return n;char str81,substr3;int n; clrscr();enter 1:gets(str);enter 2:gets(substr);puts (str);puts(substr);n=fun(str,substr);n=%dn,n);我们可以将程序拆分成几个部分:首先利用gets函数写入两个字符串,然后通过子函数实现统计功能,再将统计值输出。在子函数中,通过一个for循环遍历主串元素,并依次比较每一个主串元素以及它后一个元素是否均与字串两个元素对应相等,如果是,则计数器加1,最终遍历结束后将计数器的值返回给主函数。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1