1. 函数声明和函数定义有什么区别?
答:1) 函数声明是函数的原型,强调函数如何被使用,不包含函数的实现**;2) 函数定义给出函数的实现**。
2. const char *p1; char * const p2;的区别。
答:1) const位于星号的左侧, const用来修饰指针所指向的变量,即指针指向为常量;2)const位于星号的右侧,const用来修饰指针本身,即指针本身是常量。
3. delete与 delete 区别。
答:delete只会调用一次析构函数,而delete会调用动态分配的多个对象的析构函数。
4. 解释堆和栈的区别。
答:1) 栈:由编译器自动分配释放,存放函数的参数、局部变量等。
通常在超出作用域后由系统自动释放。2) 堆:一般由程序员负责分配与释放,若程序员不释放,占用的内存直到程序结束才由os**。
5. 在什么时候需要使用“常引用”?
答:如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。
6. 全局变量和局部变量在内存中的区别。
答:1) 全局变量储存在静态数据区,程序加载时分配并初始化,程序结束时释放;2) 局部变量在栈中,进入变量作用域后分配,超出其作用域后释放;3) 全局变量不初始化会执行缺省初始化,如整型变量缺省初始化为0,局部变量不初始化不会执行缺省初始化,往往为垃圾值。
7. 简述内存的分配方式。
答:1) 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。2) 栈上分配,函数内的局部变量和形参在栈上分配。
3) 堆上分配,动态分配,用new分配内存,用delete来释放内存。
8. 指针的几种典型应用情况。
int *p[n];-指针数组,每个元素均为指向整型数据的指针。
int (*p) [n];-指向一维数组的指针,这个一维数组含有n个整型数据。
int *p返回指向整型指针的函数。
int (*p指向函数的指针,要求函数无参并返回整型。
9. 说明0、’\0’、’0’、“0”的区别。
答:0表示整数常量,值为0;’\0’表示ascii码值为0的字符常量;’0’表示ascii码值为48的字符常量;“0”为字符串常量,其中包含’0’和’\0’两个字符。
10. 说明下面程序中存在的问题。
#include
int main()
int arr[10], p=arr;
int i;
for( ;p cin>>*p;
for(; a cout<<*arr<<‘0’;
return 0;
答:arr为数组名,对应地址不可修改,不能应用++arr运算。
11. 有如下定义,请写出访问a[2][3]元素的不同方法。
int a[4][5];
int (*p)[5] =a;
答:a[2][3]、p[2][3]、*a[2]+3)、*p[2]+3)、*a+2)+3)、*p+2)+3)
1. 写出下面程序的运行结果。
#include
using namespace std;
int main()
double numone = 2.5;
int numtwo = 3;
double quotient = numone/2;
cout<<"quotient: "quotient = numtwo/2;
cout<<"quotient: "return 0;
2. 写出下面程序的运行结果。
#include
using namespace std;
int main()
int number = 103;
int digit, tens, hundreds;
digit = number %10;
tens = number/10)%10;
hundreds = number/100)%10;
cout<<"hundreds: "tens<<"digit: "return 0;
3. 运行下面的程序3次,分别输入,写出每次程序执行的输出结果。
#include
using namespace std;
int main()
int grade;
cout<<"enter a grade(1-100):
cin>>grade;
if(grade>=85)
cout<<"excellent";
else if(70<=grade<85)
cout<<"pass";
elsecout<<"fail";
return 0;
4. 写出下面程序的运行结果。
#include
using namespace std;
bool check( int score, int baseline)
if( score >=baseline )
return true;
return false;
bool check(int score, int baseline = 60);
int main()
int score=65;
if( check(score) =true)
cout<<"passed!";
elsecout<<"failed!";
if( check(score, 70) =true)
cout<<"passed!";
elsecout<<"failed!";
return 0;
5. 写出下面程序的运行结果。
#include
using namespace std;
int fun(int a);
double fun(double a);
char fun(char a);
int main()
cout< cout< cout< cout< return 0;
int fun(int a)
double fun(double a)
char fun(char a)
char result=a;
if(a>='a'&&a<='z')
result=a-32;
if(a>='a'&&a<='z')
result=a+32;
return result;
6. 写出下面程序的运行结果。
#include
using namespace std;
int gcd(int m, int n)
if(n==0)
return m;
return gcd(n, m%n);
int main()
cout<<"1:" 7. 写出下面程序的运行结果,假定输入"hello_123"。 #include using namespace std; int main() char word[50]; cout<<"enter a word:"; cin>>word; for(int i=0; word[i]!=0'; i) cout<<"upper case: "return 0; 8. 写出下面程序的运行结果,假定输入"hello123_world"。 #include using namespace std; int main() char word[50]; cout<<"enter a string:"; cin>>word; int pos=0; for(int i=0; word[i]!=0'; i) word[pos]='0'; cout<<"result: "return 0; 9. 写出下面程序的运行结果。 #include using namespace std; int main() int i,j; for(i=0;i<5;i++) for(j=i;j<5;j++)cout<<" cout< } return 0; 10. 写出下面程序的运行结果。 #include using namespace std; int sum( int a, int b=1, int c=3 ) return a+b+c; int main() int sum(int a, int b=3, int c=4); cout< cout< cout< return 0; 11. 写出下面程序的运行结果。 #include using namespace std; char & elem(char *s, int n) return s[n]; int main() char str=helloworld"; elem(str,1)= a'; cout< return 0; 12. 写出下面程序的运行结果。 #include using namespace std; int x=10; int main() int x=15; cout< 第六章熟悉类与对象。6.1 电子 示例介绍。6.2 编写类。6.2.1 类定义。1.方法与成员。2.访问控制。3.声明的顺序。6.2.2 定义方法。1.访问数据成员。2.调用其他方法。指针。6.2.3 使用对象。1.堆栈中的对象。2.堆中的对象 6.3 对象的生命周期。6.3.1 创建对象。1.编写... 高级语言程序设计 编程题。1.从键盘输入3个整数,求其中的最大数和最小数,并输出结果。2.从键盘上输入一个3 3的整数矩阵,求其各行的平均值并输出,输出时保留两位小数。3.输出x2的值,x取值从0到10。4.从键盘上输入一个3 4的整数矩阵,要求输出其最大元素的值,以及它的行号和列号。5.编写一个程... 第1章文件结构。每个c c程序通常分为两个文件。一个文件用于保存程序的声明 declaration 称为头文件。另一个文件用于保存程序的实现 implementation 称为定义 definition 文件。c c程序的头文件以 h 为后缀,c程序的定义文件以 c 为后缀,c 程序的定义文件通常以...C 高级编程
高级C 编程题库
c高级编程指南