C语言与数据结构试题及答案
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++习题及答案
一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题目的括号内。每小题1分,共20分)
1.不属于字符型常量的是()
A.‘A’B.‘a’C.“A”D.‘b’
2.根据C语言的语法规则,下列( )是不合法标识符。
A. while B. Name C. Rern5 D. _exam
}
fclose(fp); //1分
}
6.输出1—100之间不能被12整除的数。
参考程序:
#include <stdio.h>
main()
{
int i;//1分
for(i=1;i<=100;i++)//2分
{
if(i%12==0)//3分
continue;//1分
printf("%d ",i);//插入和删除元素D.操作没有限制
18.循环队列用数组A[0..m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是( )。
A.rear-front-1 B.rear-front+1 C. (rear-front+m) MOD m D.rear-front
}
}
7.从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。
#include <stdio.h>
main()
{
int i,j,a[10],temp;//1分
for(i=0;i<10;i++)
scanf("%d",&a[i]);//2分
for(i=0;i<10;i++)
for(j=0;j<10-i-1;j++)
3.表达式“1?(0?3:2):(10?1:0)”的值为( ).
A.3 B.2 C. 1 D. 0
4.为表示关系x≥y≥z,应使用C语言表达式( ).
A.(x>=y)&&(y>=z) B. (x>=y) AND (y>=z)
C.(x>=y>=z) D. (x>=z)&(y>=z)
5.以下说法中正确的是( ).
A. printf(“x=%d\n”,x) B. printf(“x=%ld\n”,x)
C.printf(“x=l\n”,x)D.printf(“x=%D\n”,x);
10.C语言用( )表示逻辑“真”值。
A. true B. t或y C.非零整型值D.整型值0
11.设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i个元素的地址为( )。
boolIsEmpty(Node<T> *head);
单项选择题CABAC CACBC BADCB DACCB
填空题
1.整型实型字符型顺序可以不一致,实型1分,其余两种各0.5分
2.int 4 -231~+231-1(1分)
3. 232-35或0xffffffdd
4. -112
5. 14‘m’没有单引号不扣分(各0.5分)
2.输出1—100之间不能被12整除的数。
3.从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。
4.假设以带头结点的单链表表示线性表,单链表的类型定义如下:
template<class T>
struct Node
{
T data;
Node<T> *next; //此处<T>也可以省略
};
编写函数判断链表是否为空。函数原型如下:
B.char a[11]; strcpy(a, st);
C.char a[11]; strcpy(++a, st);
D.char a[], *p; strcpy(p=&a[1],st+2);
16.计算机算法指的是( )。
A.计算方法B.排序方法
C.调度方法D.解决某一问题的有限运算序列
17.栈是一种( )的数据结构。
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}//4分
for(i=0;i<10;i++)
printf(" %d ",a[i]);//2分
}
8.假设以带头结点的单链表表示线性表,单链表的类型定义如下:
template<class T>
struct Node
8.有如下输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是。
三、判断题(判断下列各小题,正确的在题后括号内打“√”,错的打“╳”。每小题1分,共10分)
1. C语言源程序文件通过了编译、连接之后,生成一个后缀为.EXE的文件。( )
swap1(x,y);
printf(“x=%d y=%d\n”,x,y);
}
执行后输出结果为
x=1 y=2
x=1 y=2
本来是想交换x和y的值,但没有成功,请指出错误所在,并该正之。
3.for (a=1,b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1)
{b+=3;continue;}
p=&a[0];m=*(p+1);n=*(p+4);
printf(“%d %d %d”,*p,m,n);
}
该程序的运行结果是________________________________.
五、编程题(18分,任选2题,每题9分,选题操作2题按错误最多的2题评分)
1.编程将文件score1.txt中的字符读出显示到屏幕上。
19.struct sk
{ int a;
float b;
}data;
int *p;
若要使p指向data中的a域,正确的赋值语句是( )。
A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a
20.若有以下说明和定义
typedef int *INTEGER
INTEGER p,*q;
{
T data;
Node<T> *next; //此处<T>也可以省略
};
编写函数判断链表是否为空。函数原型如下:
boolIsEmpty(Node<T> *head);
参考程序:
boolIsEmpty(Node<T> *head) //3分
{
return !head->next; //6分
}
以下叙述正确的是( )。
A.p是int型变量
B.p是基类型为int的指针变量
C.q是基类型为int的指针变量
D. 程序中可用INTEGER代替int类型名
二、填空题(1-2题每题2分,3-8题每题1分,共10分)
1.C语言中基本的数据类型有:______、______、______。
2.C语言中普通整型变量的类型说明符为______,在内存中占______字节,有符号普通整型的数据范围是______。
3.整数-35在机内的补码表示为______。
4.执行下列语句int a=8;a+=a-=a*a;后,a的值是______。
5.有如下语句:char A[ ]={“I am a student”};该字符串的长度是______,A[3]=______。
6.符号“a”和‘a’的区别是______。
7.所谓“指针”就是______.“&”运算符的作用是______.“*”运算符的作用是______。
2.在C程序中,函数既可以嵌套定义,也可以嵌套调用。( )
3.在C程序中,APH和aph代表不同的变量。( )
4.表达式0195是一个八进制整数。( )
5. continue语句的作用是结束本次循环。( )
6. extern变量的生命期是整个程序执行期。( )
7. C语言中字符串的结束符是‘\0’。( )
参考程序:
# include <stdio.h>
main()
{
FILE *fp;//1分
char c;//1分
fp=fopen("score1.txt","r");//1分
while(!feof(fp))//2分
{
//fscanf(fp,"%c",&c);
c=fgetc(fp);//2分
putchar(c);//1分
A. 4个字节B. 5个字节C. 6个字节D. 7个字节
7.C语言中以只读方式打开一个文件应选择( )参数。
A.”r”B.“w”C.“rb”D.“a”
8.从循环体内某处跳出,继续从头执行该循环外的语句是:( ).
A. break语句B.return语句C.continue语句D.空语句。
9.设有定义:long x=-L;则以下能够正确输出变量x值的语句是( ).
b-=5;}
程序执行后a和b的值分别为。
4.main()
{
int i,num[5];
for(i=0;i<5;i++)
num[i]=i*10 - 2;
printf(“%d”,num[3]);
}
该程序的运行结果是_______________________________.
5. main()
{
float c,f;
8.如果有定义int a,*p=&a;则*p与a意义相同。( )
9.结构体变量中各成员共享空间。( )
10.起泡排序法是稳定的。( )
四、应用题(每小题7分,共42分)
1.# include“stdio.h”
main( )
{
int a[]={8,2,9,4,1},*p;
p=a;
*(p+2)+=2;
printf(“%d,%d”,*p,*(p+2));}
T temp;
temp=*a;
*a=*b;
*b=temp;
}
main()
{
int x=1,y=2;
printf("x=%d y=%d\n",x,y);
swap1(&x,&y);//1分
printf("x=%d y=%d\n",x,y);
}
3.8 22
4.28
5.68.
6.1 2 5
编程题
5.编程将文件score1.txt中的字符读出显示到屏幕上。
D.不论在主函数还是自定义函数中,只要说明了变量,就可为其分配存贮单元。
14.在函数中默认存储类型说明符的变量应该是( )存储类型。
A.内部静态B.外部C.自动D.寄存器
15.设已有定义: char *st="how are you";下列程序段中正确的是( )
A.char a[11], *p; strcpy(p=a+1, st[4]);
A. C语言程序总是从第一个定义的函数开始执行。
B.在C语言程序中,要调用的函数必须有main( )函数中定义。
C. C语言程序总是从main( )函数开始执行。
D. C语言程序中的main( )函数必须放在程序的开始部分。
6.设有数组定义:char array[]=“China”;则数组所占的存贮空间为( ).
该程序的运行结果是___________________________________.
2.已知有一函数定义如下:
template<class T>
void swap1(Ta, T b)
{
Ttemp;
temp=a;
a=b;
b=temp;
}
主函数调用格式如下:
main()
{
int x=1,y=2;
printf(“x=%d y=%d\n”,x,y);
A. P+i*2 B. P+(i-1)*2 C. P+(i-1) D. P+i
12.字符串指针变量中存入的是( ).
A.字符串的首地址。B.字符串C.第一个字符D.字符串变量。
13.以( )个是不正确的描述。
A.数组名可以作为参数进行传递。
B.在定义函数时,必须指定形参的类型。
C.形参和实参之间可以是值传递。
c=30.0;
f=(6*c)/5+32;
printf(“f=%f”,f);
}
该程序的运行结果是________________________________.
6.写出下列程序的运行结果。
#include“stdio.h”
main()
{
int a[]={1,2,3,-4,5};
int m,n,*p;
6.一个字符串一个字符
7.地址取地址取内容(或代表目标变量)(各1/3分,答对2个不扣分)
8.1,3,2
判断题√╳√╳√√√√╳√
应用题
1.8, 11
2.指出错误3分,改正4分
改成引用或指针均可,
改成指针,如下:
template<class T>
void swap1(T *a, T *b)//3分
{
一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题目的括号内。每小题1分,共20分)
1.不属于字符型常量的是()
A.‘A’B.‘a’C.“A”D.‘b’
2.根据C语言的语法规则,下列( )是不合法标识符。
A. while B. Name C. Rern5 D. _exam
}
fclose(fp); //1分
}
6.输出1—100之间不能被12整除的数。
参考程序:
#include <stdio.h>
main()
{
int i;//1分
for(i=1;i<=100;i++)//2分
{
if(i%12==0)//3分
continue;//1分
printf("%d ",i);//插入和删除元素D.操作没有限制
18.循环队列用数组A[0..m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是( )。
A.rear-front-1 B.rear-front+1 C. (rear-front+m) MOD m D.rear-front
}
}
7.从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。
#include <stdio.h>
main()
{
int i,j,a[10],temp;//1分
for(i=0;i<10;i++)
scanf("%d",&a[i]);//2分
for(i=0;i<10;i++)
for(j=0;j<10-i-1;j++)
3.表达式“1?(0?3:2):(10?1:0)”的值为( ).
A.3 B.2 C. 1 D. 0
4.为表示关系x≥y≥z,应使用C语言表达式( ).
A.(x>=y)&&(y>=z) B. (x>=y) AND (y>=z)
C.(x>=y>=z) D. (x>=z)&(y>=z)
5.以下说法中正确的是( ).
A. printf(“x=%d\n”,x) B. printf(“x=%ld\n”,x)
C.printf(“x=l\n”,x)D.printf(“x=%D\n”,x);
10.C语言用( )表示逻辑“真”值。
A. true B. t或y C.非零整型值D.整型值0
11.设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i个元素的地址为( )。
boolIsEmpty(Node<T> *head);
单项选择题CABAC CACBC BADCB DACCB
填空题
1.整型实型字符型顺序可以不一致,实型1分,其余两种各0.5分
2.int 4 -231~+231-1(1分)
3. 232-35或0xffffffdd
4. -112
5. 14‘m’没有单引号不扣分(各0.5分)
2.输出1—100之间不能被12整除的数。
3.从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。
4.假设以带头结点的单链表表示线性表,单链表的类型定义如下:
template<class T>
struct Node
{
T data;
Node<T> *next; //此处<T>也可以省略
};
编写函数判断链表是否为空。函数原型如下:
B.char a[11]; strcpy(a, st);
C.char a[11]; strcpy(++a, st);
D.char a[], *p; strcpy(p=&a[1],st+2);
16.计算机算法指的是( )。
A.计算方法B.排序方法
C.调度方法D.解决某一问题的有限运算序列
17.栈是一种( )的数据结构。
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}//4分
for(i=0;i<10;i++)
printf(" %d ",a[i]);//2分
}
8.假设以带头结点的单链表表示线性表,单链表的类型定义如下:
template<class T>
struct Node
8.有如下输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是。
三、判断题(判断下列各小题,正确的在题后括号内打“√”,错的打“╳”。每小题1分,共10分)
1. C语言源程序文件通过了编译、连接之后,生成一个后缀为.EXE的文件。( )
swap1(x,y);
printf(“x=%d y=%d\n”,x,y);
}
执行后输出结果为
x=1 y=2
x=1 y=2
本来是想交换x和y的值,但没有成功,请指出错误所在,并该正之。
3.for (a=1,b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1)
{b+=3;continue;}
p=&a[0];m=*(p+1);n=*(p+4);
printf(“%d %d %d”,*p,m,n);
}
该程序的运行结果是________________________________.
五、编程题(18分,任选2题,每题9分,选题操作2题按错误最多的2题评分)
1.编程将文件score1.txt中的字符读出显示到屏幕上。
19.struct sk
{ int a;
float b;
}data;
int *p;
若要使p指向data中的a域,正确的赋值语句是( )。
A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a
20.若有以下说明和定义
typedef int *INTEGER
INTEGER p,*q;
{
T data;
Node<T> *next; //此处<T>也可以省略
};
编写函数判断链表是否为空。函数原型如下:
boolIsEmpty(Node<T> *head);
参考程序:
boolIsEmpty(Node<T> *head) //3分
{
return !head->next; //6分
}
以下叙述正确的是( )。
A.p是int型变量
B.p是基类型为int的指针变量
C.q是基类型为int的指针变量
D. 程序中可用INTEGER代替int类型名
二、填空题(1-2题每题2分,3-8题每题1分,共10分)
1.C语言中基本的数据类型有:______、______、______。
2.C语言中普通整型变量的类型说明符为______,在内存中占______字节,有符号普通整型的数据范围是______。
3.整数-35在机内的补码表示为______。
4.执行下列语句int a=8;a+=a-=a*a;后,a的值是______。
5.有如下语句:char A[ ]={“I am a student”};该字符串的长度是______,A[3]=______。
6.符号“a”和‘a’的区别是______。
7.所谓“指针”就是______.“&”运算符的作用是______.“*”运算符的作用是______。
2.在C程序中,函数既可以嵌套定义,也可以嵌套调用。( )
3.在C程序中,APH和aph代表不同的变量。( )
4.表达式0195是一个八进制整数。( )
5. continue语句的作用是结束本次循环。( )
6. extern变量的生命期是整个程序执行期。( )
7. C语言中字符串的结束符是‘\0’。( )
参考程序:
# include <stdio.h>
main()
{
FILE *fp;//1分
char c;//1分
fp=fopen("score1.txt","r");//1分
while(!feof(fp))//2分
{
//fscanf(fp,"%c",&c);
c=fgetc(fp);//2分
putchar(c);//1分
A. 4个字节B. 5个字节C. 6个字节D. 7个字节
7.C语言中以只读方式打开一个文件应选择( )参数。
A.”r”B.“w”C.“rb”D.“a”
8.从循环体内某处跳出,继续从头执行该循环外的语句是:( ).
A. break语句B.return语句C.continue语句D.空语句。
9.设有定义:long x=-L;则以下能够正确输出变量x值的语句是( ).
b-=5;}
程序执行后a和b的值分别为。
4.main()
{
int i,num[5];
for(i=0;i<5;i++)
num[i]=i*10 - 2;
printf(“%d”,num[3]);
}
该程序的运行结果是_______________________________.
5. main()
{
float c,f;
8.如果有定义int a,*p=&a;则*p与a意义相同。( )
9.结构体变量中各成员共享空间。( )
10.起泡排序法是稳定的。( )
四、应用题(每小题7分,共42分)
1.# include“stdio.h”
main( )
{
int a[]={8,2,9,4,1},*p;
p=a;
*(p+2)+=2;
printf(“%d,%d”,*p,*(p+2));}
T temp;
temp=*a;
*a=*b;
*b=temp;
}
main()
{
int x=1,y=2;
printf("x=%d y=%d\n",x,y);
swap1(&x,&y);//1分
printf("x=%d y=%d\n",x,y);
}
3.8 22
4.28
5.68.
6.1 2 5
编程题
5.编程将文件score1.txt中的字符读出显示到屏幕上。
D.不论在主函数还是自定义函数中,只要说明了变量,就可为其分配存贮单元。
14.在函数中默认存储类型说明符的变量应该是( )存储类型。
A.内部静态B.外部C.自动D.寄存器
15.设已有定义: char *st="how are you";下列程序段中正确的是( )
A.char a[11], *p; strcpy(p=a+1, st[4]);
A. C语言程序总是从第一个定义的函数开始执行。
B.在C语言程序中,要调用的函数必须有main( )函数中定义。
C. C语言程序总是从main( )函数开始执行。
D. C语言程序中的main( )函数必须放在程序的开始部分。
6.设有数组定义:char array[]=“China”;则数组所占的存贮空间为( ).
该程序的运行结果是___________________________________.
2.已知有一函数定义如下:
template<class T>
void swap1(Ta, T b)
{
Ttemp;
temp=a;
a=b;
b=temp;
}
主函数调用格式如下:
main()
{
int x=1,y=2;
printf(“x=%d y=%d\n”,x,y);
A. P+i*2 B. P+(i-1)*2 C. P+(i-1) D. P+i
12.字符串指针变量中存入的是( ).
A.字符串的首地址。B.字符串C.第一个字符D.字符串变量。
13.以( )个是不正确的描述。
A.数组名可以作为参数进行传递。
B.在定义函数时,必须指定形参的类型。
C.形参和实参之间可以是值传递。
c=30.0;
f=(6*c)/5+32;
printf(“f=%f”,f);
}
该程序的运行结果是________________________________.
6.写出下列程序的运行结果。
#include“stdio.h”
main()
{
int a[]={1,2,3,-4,5};
int m,n,*p;
6.一个字符串一个字符
7.地址取地址取内容(或代表目标变量)(各1/3分,答对2个不扣分)
8.1,3,2
判断题√╳√╳√√√√╳√
应用题
1.8, 11
2.指出错误3分,改正4分
改成引用或指针均可,
改成指针,如下:
template<class T>
void swap1(T *a, T *b)//3分
{