![]() ![]() |
|
真题与预测试题/试题天天练试题 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:36:52 文章录入:杜斌 责任编辑:杜斌 | |
|
|
![]() 6、真题选择第16题,预测试题选择第14题 考查知识点: 真题选择第16题 (16)以下数租定义中错误的是: A) int x[] [3]={0}; B) int x[2] [3]={{1,2},{3,4},{5,6}}; C) int x[] [3]={{1,2,3}{4,5,6}}; D) int x[] [3]={1,2,3,4,5,6}; 预测试题选择第14题 14 以下能正确定义二维数组的是 A)int a[][3]; B)int a[][3]=2{2*3}; C)int a[][3]={2}; D)int a[2][3]={{1},{2},{3,4}}; 答案:C 解析:当没有对数组进行初始化的时候,二维数组的的常量表达式1不能为空。另外在对二维数组初始化的时,所赋初值个数与数组元素的个数相同;引用二维数组元素时必须带有两个下标;每行所赋初值个数与数组元素的个数不同;所赋初值行数不少于数组行数;赋初值时省略行花括号也对。 7、真题选择第24题,预测试题选择第15题 考查知识点:输入语句 真题选择第24题 (24)若有说明句:double *p,q; 则能通过 scanf 语句正确给输入项读入数据的程序段是 A)*p=&a; scanf(“%1f”,p); B) *p=&a; scanf(“%f”,p); C) p=&a; scanf(“%1f”,*p); D) p=&a; scanf(“%1f”,p); 预测试题选择第15题 15 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是 A) scanf(“%d”,pA) ; B) scanf(“%d”,A) ; C) scanf(“%d”,&pA) ; D) scanf(“%d”,*pA) ; 答案A:解析: 已经取出a并保存在指针变量pa里,所以不用加取址符& 8、真题选择第25题,预测试题选择第44题 考查知识点:结构体 真题选择第25题 (25)现有以下结构体说明和变量定义,如图所示,指针 分别指向一个链表中连续的三个结点。 Struct node {char data; Struct node *next; } *p*,*q,*r, ![]() ![]() 考查知识点:循环结构 真题选择第30题 (30)有以下程序 main() int y=10; while(y--); printf(“y=%d﹨n” y); 执行程序输出的结果是: A)y=0 B)y=-1 C)y=1 D)while构成无限循环 预测试题选择第29题 29以下程序段的输出结果是() Int a=3 ; Do { Printf(“%d”,a-=2); } while(!( --a ) ); A) 1 B) 3 0 C) 1 -2 D)死循环 答案:C 解析:以下程序段包含了一个do…while循环。循环体内只有一条printf语句,输出项表达式:a-=2,且每次输出不换行。当while的控制表达式!(--a)的值为0时就退出循环。但do…while循环的特点是不管控制表达式的值是否为0,至少要执行一次循环体。在以上程序段中,进入循环体前a的值为3,执行a-=2后,a的值变为1,然后输出该值。在while控制表达式!(--a)中,a的值先减1,变成0,再进行“逻辑非”运算,!0的值为1,循环继续。因a的值已是0,第二次执行a-=2后,a的值变为-2,再次输出。在while控制表达式!(--a)中,a的值先减1,变成-3,再进行“逻辑非”运算,!(-3)的值为0,退出循环。 11、真题选择第34题,预测试题选择第26题 考查知识点:二维数组 真题选择第34题 (34)有以下程序 Main() {int I,t[][3]={9,8,7,6,5,4,3,2,1}; For(i=0;i<3,i++) printf(“%d”,t[2-i][i]); } 程序执行后的输出结果是 A)753 B)357 C)369 D)751 预测试题选择第26题 26 下面程序输出的结果是 main() { int i; int a[3][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf("%d ",a[2-i][i]); } A)1 5 9 B)7 5 3 C)3 5 7 D)5 9 1 答案:C 解析: 本题用循环的方法考查对数组概念的掌握。首先,当i=0时,数组中的位置是a[2] [0]=3,当然,如果用排除法的话,就不用考虑后面的循环了,因为在4个选项中,第1 个数为3的选项只有C)。本题执行第2次循环时,i的值为1,则printf函数中的数组指向 为a[1][1]=5,依次循环,可求出答案。 12、真题选择第38题,预测试题选择第13题 考查知识点:指针 真题选择第38题 (38)有以下程序 Void swap(char “x, char *y”) {char t; t=*x; *x=*y; *y=t; } Main() { char *s1=”abc”, *s2=”123”; Swap(s1,s2); printf(“%s,%s\n”, s1,s2); } 程序执行后的输出结果是 A)123,abc B)abc,123 C)1bc,a23 D)321,cba 预测试题选择第13题 13下列程序的运行结果是 void fun(int *a, int *b) { int *t; t=a; a=b; b=t; } main() { int a=13, b=18, *x=&a, *y=&b; fun(x,y); printf("%d %d", a, b); } A)18 13 B)13 18 C)0 0 D)编译出错 答案:B解析: int *p1,*p2; { int p; p=*p1; *p1=*p2; *p2=p; } 注意交换*p1和*p2的值是如何实现的,如果写成下面这样就有问题了! swap(p1,p2) int *p1,*p2; { int *p; *p=*p1; /*此语句有问题*/ *p1=*p2; *p2=*p; } *p1就是a,是整型变量。而*p是指针变量p所指向的变量,但p中并无确切地址,用*p可能会造成破坏系统的正常工作状态。应该将*p1的值赋给一个整型变量,用整型变量作为过渡变量实现*p1和*p2的交换。 请注意,不能企图通过改变指针形参的值而使指针实参的值也改变 swap(p1,p2) int *p1,*p2; { int *p; p=p1; p1=p2; p2=p; } 程序的原意是:交换两个指针的值。但是C语言中实参变量和形参变量之间的数据传递是单 向的“值传递”方式。指针变量做函数参数也要遵循这一规则。调用函数不能改变实参指针变量的值,但可以改变实参指针变量所指向变量的值…… 当然,明白了以上指针变量的调用方式后,本题便可迎刃而解。 13、真题选择第39题,预测试题选择第41题 考查知识点:函数 真题选择第39题 (39)有以下程序 int fun(int n) {if(n==1) return 1; Else return(n+fun(n-1)); } Main() {int x; Scanf(“%d”,&x); x=fun(x); prinf(“%d\n”,x); } 执行程序时,给变量x输入10,程序的输出结果是 A)55 B)54 C)65 D)45 预测试题选择第41题 41下述程序的输出结果是() #include <stdio. h> Long fun ( int n ) { long s ; If (n==1 || n==2) S=2 ; Else S=n+fun( n-1 ) ; Return s ; } Main ( ) { Printf( “\n%ld”, fun( 4 ) ); } A ) 7 B ) 8 C ) 9 D ) 10 答案:C 解析:此题考查基本的函数递归调用方法。程序在n=1 或n=2 时是出口条件,不在递归,否则一直执行 s=4+fun(n-1)的操作。展开此求和公式,有s=4+fun(3)=4+3+fun(2)=4+3+2=9。 如果调用函数fun()的实参大于等于2,出口n==1的判断就不需要了。 14、真题选择第49题,预测试题选择第28题 考查知识点:预处理基本概念 真题选择第49题 (49)以下叙述中正确的是 A)预处理命令行必须位于C源程序的起始位置 B)在C语言中,预处理命令行都以“# ”开头 C)每个C程序必须在开头包含预处理命令行:#include<stdio.h> D)C语言的预处理不能实现宏定义和条件编译的功能 预测试题选择第28题 28 以下叙述中不正确的是 A)预处理命令行都必须以#号开始 B)在程序中凡是以#号开始的语句行都是预处理命令行 C)宏替换不占用运行时间,只占编译时间 D)在以下定义是正确的: #define PI 3.1415926; 答案:D 解析: 带参数的宏定义如下:#define 宏名(参数)字符串。本题中,宏定义的作用是指定用标识符PI来代替“3.1415926”这个字符串,但宏定义不是C语句,不必在行末加分号。 15、真题填空第1题,预测试题选择第10题 考查知识点:冒泡排序比较次数 真题填空第1题 (1)对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为 [1] 。 预测试题选择第10题 10对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是() A)冒泡排序n/2 B)冒泡排序为n(n-1) C)快速排序为n/2 D)快速排序为n(n-1)/2 答案:D 解析:在最坏情况下,冒泡排序和快速排序需要比较的次数为n(n-1)/2 16、真题填空第3题,预测试题填空第5题 考查知识点:关系数据库 真题填空第3题 (3)在关系模型中,把数据看成是二维表,每一个二维表称为一个 [3] 。 预测试题选择第5题 5 在关系数据库中,把数据表示成二维表,每一个二维表称为_________. 答案:关系 解析:在关系数据库中,一个关系的逻辑结构就是一张二维表。这种用二维表的形式表示实体和实体间联系的数据模型称为关系数据模型。 |
|
![]() ![]() |