1、在c语言中,以_______开头的字符称为转义字符。
2、在C语言中,没有明确指明函数类型的,自动按______处理。
3、函数原型可以简单的由函数的_____,加上其后的一个“;”构成。
1、有如下程序:
#include<stdio.h>
int main(){
char ch1='A',ch2='a';
printf("%c",(ch1,ch2));
return 0;
}
以下正确的是______
A、程序的输出结果为大写字母A
B、程序的输出结果为小写字母a
C、程序运行时产生错误
D、程序编译时产生错误
2、若有条件表达式(exp)?a++:b–,则以下正确的是_____
A、(exp== 0)
B、(exp!=0)
C、(exp==1)
D、(exp!=1)
#include<iostream>
#include<cstring>
#include<cstdio>
#include <stdlib.h>
using namespace std;
void fun(char *s1,char *s2)
{
int i,j;
char *s=s1;
for(;*s2!='\0';s2++)
{
for(j=0,s1=s;*s1!='\0';s1++)
if(*s1!=*s2)
{
s[j]=*s1;
j++;
}
s[j]='\0';
}
}
int main(){
char a1[80],a2[80];
gets(a1);
gets(a2);
fun(a1,a2);
puts(a1);
return 0;
}
当程序运行时,输入ASDFGHJ和AFG,运行结果为_____
填空题
1、\ 2、整型 3、首部
选择题
1、B
此题充分考察了“,”的使用:1)当顺序使用,结合顺序是从左至右,用来顺序求值,完毕之后整个表达式的值是最后一个表达式的值。
比如:
z=(x+2,y=x)——带括号,赋值为z=y=x;
y=x+2,y=x;——赋值先y=x+2,之后为y=x;最终是y=x;
y=x+2,x;——赋值为y=x+2,x单独不是一个赋值语句。
2)运算符优先级:
1、优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
2、相同优先级中,按结合顺序计算。大多数运算是从左至右计算,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
3、基本的优先级需要记住:指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 && 7等价于 (1 << (3 + 2))&&7.逻辑运算最后计算。
2、B
注意这个一道细节题——条件结构的判断就是非0和0两种,逻辑运算数值上分为“1”和“0”两种。
其他细节:比如do…while();后面有“;.
程序题
输出:SDHJ
注意指向数组的指针可以用数组方式访问元素。
比如int *p,a[10]; p=a;p[1]就是第一号元素的取值。原理上和结构体变量相互赋值是一样,都是对内存地址的直接拷贝。09年-10年度也有一道类似题。
1#
#include<iostream>
#include<cstring>
#include<cstdio>
#include <stdlib.h>
using namespace std;
int main(){
int a[3][4],i,j,*p,(*pa)[4];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
a[i][j]=i+j<<2;
}
p=a[1]+2;
printf("%d\n",p[5]);
pa=a+2;
printf("%d\n",*pa-p);
return 0;
}
该程序结果______
2#
#include<iostream>
#include<cstring>
#include<cstdio>
#include <stdlib.h>
using namespace std;
int main(){
int a=12,b=7,c=3,d=4,e=9,result=0;
float x=5.2,y=6.0;
result=a/y==++a>b;
printf("%3d\t",result);
result=!(b<c)?e+97:x*y<d?x/y+100:'N';
printf("%3c\t",result);
result=(int)x/(int)y=='\0';
printf("%3d\t",result);
result=a*b%c&&b>++result || b++%e++;
printf("%3d\t\n",result);
return 0;
}
该程序输出结果________
1、20 2
p[5]就是从p开始之后的第五个元素,使用指针当数组直接访问。
pa=a+2是pa是第二行第一个元素的首地址,*pa是取第2行首地址,**pa就是数指,p就是取数值。因此pa-p是地址之差,找中间元素个数。
2、0 J 1 1
细节题,(1)\t是四个偏移,注意格式输出。(2)0与‘\0’在条件判断中都属于0.
1、C语言程序由______组成
A子程序 B过程 C函数 D主程序和子程序
1、char str[]=“1234”,*p=str,则 *(p+1)是___
答案:
选择:C
填空:‘2’ 注意单引号,字符类问题十分容易出错。
1、在C语言中,相同结构体类型的不同变量之间,可以()
A、比较大小 B、地址相同 C、赋值 D、相加
2、下面关于类概念的描述中,()错误
A、类是抽象数据类型的实现
B、类是具有共同行为的若干对象的统一描述体
C、类是创建对象的样板
D、类就是C语言中的结构体类型
1、设char s[]={“E_mail”};则执行printf("%%d\n",sizeof(s));后输出的值是______
2、若从键盘输入58,则以下程序输出的结果是______
main()
{
int a;
scanf("%d",&a);
if(a>50) printf("%d",a);
if(a>40) printf("%d",a);
if(a>30) printf("%d",a);
return ;
}
3、当计算机用两个字节存放一个整数时,能存放的最小十进制整数是_______
1、在c++语言中,不允许对运算符++进行重载()
2、如果一个类中未定义拷贝构造函数,则C++编译器将为该类自动生成一个拷贝构造函数()
3、int i,*p=&i;是正确的c说明()
下面的程序是关于CBook类的一个定义,试改正2处错误
#include<iostream>
#include<string>
class CBook
{
char *p_book;
public:
CBook(const char *p_val)
{
p_book=new char[strlen(p_val)];
strcpy(p_book,p_val);
}
void print()const
{
cout<<p_book<<endl;
}
~CBook()
{
delete []p_book;
}
};
void main(){
CBook cb("Good Book");
printf("%s",cb.p_book);
}
选择题
1、C 解析:原理是内存地址直接拷贝,但注意结构体的指针问题。
比如下列
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct test
{
int a;
int b;
char ss[10];
};
struct test2
{
int a;
int b;
char * ss;
};
int main()
{
struct test t1 = {1, 2, "hello"};
struct test t2;
t2 = t1;
strcpy(t1.ss,"张汉青");
printf("%d, %d, %s\n", t2.a, t2.b, t2.ss);
struct test2 t3;
t3.ss = (char *)malloc(10);
t3.a=1;
t3.b=2;
strcpy(t3.ss,"hello");
struct test2 t4;
t4=t3;
strcpy(t3.ss,"张汉青");
printf("%d,%d, %s\n",t4.a,t4.b,t4.ss);
return 0;
}
2、D 只能说是类似于结构体,但有本质差别,类和对象是含有操作的。
填空题
1、7 strlen才是输出6;
2、585858 此题是细节题,考场上千万要注意——一行一行读
3、-32768 细节题
判断题
1、错 详见C常识部分
2、错 应该是未显式定义时,会自动生成一个缺省的拷贝函数。
3、对 i未赋值但不影响地址传递
改错题:
(1)p_book=new char[strlen(p_val)];改为p_book=new char[strlen(p_val)+1];
(2)printf("%s",cb.p_book);改为cb.print();直接调用
此外,顺带提一下结构体中指针的使用,(*p).x或者p->x两种
浮点数比较大小:a>b && fabs(a-b)>1e-6 为条件
下面描述符合赋值兼容规则的是()
A、基类的对象可以初始化公有派生类的引用
B、公有派生类的对象的地址可以赋值给指向基类的指针
C、基类的对象的地址可以赋值给指向公有派生类的指针
D、基类的对象可以赋值给公有派生类的对象
1、采用公有继承后,可以通过派生类的对象访问基类的私有成员()
2、不可以对double数进行位运算&操作()
1、在c++中,通过对象只能调用_______属性的成员函数
2、如果一个类是抽象类,则它至少有1个以上的________函数,并且不可以实例化。
注意:delete对指针写法:delete[]pArray;以及指针赋初值。
选择题:
B
解析:
派生类的对象可以赋值给基类的对象
派生类的对象可以初始化基类的引用
派生类的对象的地址可以赋值给指向基类的指针
判断题:
错,只能间接通过公有或者保护成员访问
对。但表述不准确,表述上应该是浮点不可以直接用来进行位运算。但可以通过函数定义来取位
填空题:
公有;纯虚
C语言中,格式说明“%10.4f”中10表示数据输出的最小宽度,4表示小数位数()
1、定义一个变量其类型为int型,其在内存中占的内存字节数为______
A 1个字节 B 2个字节 C 3个字节 D 4个字节
2、以下程序的输出结果为______
main()
{
int i=010,j=10,*pi,*pj;
pi=&i;pj=&j;
printf("%d.%d\n",*pi,*pj);
}
A10.10; B8.10; C010.10; D8.8;
判断题:
对
选择题:
1、B
2、B 010是八进制!
1、下列关于构造函数的说法正确的是()
A构造函数名和类名一致
B构造函数的返回值为void类型
C构造函数的函数体不能为空
D一个类只能定义一个构造函数
2、下面派生类的描述中,错误的是()
A一个类可以多次成为另一个类的直接基类
B派生类可以有多个基类
C派生类的成员除了它自己的成员外,还包含了它的基类成员
D在创建派生类的对象时,派生类的构造函数的调用晚于基类的构造函数的调用
3、下面描述中,表达正确的是()
A公有继承时基类中的公有成员在派生类中仍是公有的
B公有继承时基类中的私有成员在派生类中仍是私有的
C公有继承时基类中的保护成员在派生类中仍是私有的
D私有继承时基类中的私有成员在派生类中仍是私有的
4、输出结果为()
int main()
{
char *point[]={“one”,“two”,“three”,“fourth”};
point[2]=point[3];
point[2]+=2;
printf("%s",point[2]++);
return 0;
}
Aee Brth Cree Durth
1、可以用if(3
3、只有基类中的非私有成员才能被派生类继承,成为派生类的一部分()
1、c++中,与new运算符配对使用的是______运算符
2、c++中,指针代表了成员函数所操作的那个对象。
3、c++中,三种派生方式说明符______
int func()
{
(1) char data[20]="Are there some mistakes in the program? can you find them?";
(2) char *point;
(3)
(4)
(5) char array[200];
(6) int i,length=0;
(7) point=array;
(8) while(data[length]!='0')
(9) length++;
(10) for(;i<length;i++)
(11) {
(12) *point=*data;
(13) point++;
(14) data++;
(15) }
(16) delete(data);
}
1、
2、
3、
4、
5、
选择: A A A D
判断 错 对 错
填空 1、delete;
2、this;
3、private、public、protected
改错:
(1)中,字符串中个数多于20个
(8)字符串末尾是’\0’
(10)i为赋初值
(12)指针赋地址表达错误
(16)data不是动态变量,不需要删除。
1、在Turbo C中,下面的定义和语句是合法的:file *fp;fp=fopen(“a.txt”,“r”) )
2、在Turbo C中,此定义和语句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( )
3、在tubo c中,整型数据在内存中占2个字节()
4、inti=20;switch(i/10){case 2:printf(“A”);case 1:printf(“B”);}的输出是A()
5、C语言把文件看作一个字符(字节)的序列()
1、已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表是()
A、存放读入数据项的存储区
B、存放读入数据的地址或指向此地址的指针
C、一个指向所读文件的文件指针
D、一个整型变量,代表要读入的数据项总数
2、设i和k都是int类型,则for循环语句()
for(i=0,k-=1;k=1;i++,k++) printf("*****\n");
A、循环结束的条件不合法
B、循环体一次也不执行
C、循环体只执行一次
D、是无限循环
3、设有说明int (*ptr)();其中标识符ptr是()
A、是一个指向整型变量的指针
B、是一个指针,它指向一个函数值是int的函数
C、是一个函数名
D、定义不合法
1、
#include<iostream>
#include<cstring>
#include<cstdio>
#include <stdlib.h>
using namespace std;
int main(){
char str[]="The C program",c;
int i;
for(i=2;(c=str[i])!='\0';i++)
{
switch(c)
{
case 'g':i++;break;
case 'o':continue;
default:printf("%c",c);continue;
}
printf("*");
}
printf("\n");
return 0;
}
该程序输出结果______
2、很隐蔽的细节题
#include<iostream>
#include<cstring>
#include<cstdio>
#include <stdlib.h>
using namespace std;
void maxn(int arr[],int *p,int n)
{
int i;
*p=arr[0];
for(i=1;i<n;i++)
if(arr[i]>*p) ______;
}
int main(){
int array[5]={1,2,3,4,5},*p,a;
p=&a;
maxn(array,p,5);
printf("%d",a);
return 0;
}
要求:完成程序。
判断题
1、错 file应该大写FILE
2、对 就是枚举类型的定义与赋值。
3、错 整型数据包括短整型和长整型,短整型占2个字节,长整型占4字节。
4、错 细节题,应该AB
5、对 本质上C语言对文件就是ASCII码和二进制,因此看作字符序列是对的。
选择题
1、B buffer是读取的数据存放的内存的指针(可以是数组,也可以是新开辟的空间,buffer就是一个索引);size是每次读取的字节数;coun是读取次数;fp是要读取的文件的指针
2、D 细节题 k=1是赋值,导致没有可以跳出循环的判断。
3、B 函数和数组道理一样,int (*ptr)()与int (*p)[]都是指向某一类的指针,int ptr()中ptr是函数名,返回值为int,int *p[]中p是数组名,存放指针。
程序题
1、e C pr * am
(1)break只是结束本次switch,会执行printf(“ * ”);这和单独的for循环有区别。(2)continue是结束本次for循环,不再执行printf(“*”);
2、*p=arr[i]
不可以填p=&arr[i]。因为在内存中p、arr、a是三个单独内存,只有通过*p才能对a进行修改,而p只能改变自身指针的指向,不影响a的数值。
提供本人整理的电子科技大学计算机复试笔试题C:
https://download.csdn.net/download/lyly1995/11049781