c++题目整理
来源:互联网 发布:java二级证书有用吗 编辑:程序博客网 时间:2024/06/06 08:40
题1:
- 对
- 错
不是,其它数据类型转换到CString可以使用CString的成员函数Format来转换.
题2:
union Test { char a[4]; short b; }; Test test; test.a[0]=256; test.a[1]=255; test.a[2]=254; test.a[3]=253; printf("%d\n",test.b);问题:在80X86架构下,输出什么值?
- -128
- -256
- 128
- 256
题3:
以下程序的输出是
class Base { public: Base(int j): i(j) {} virtual~Base() {} void func1() { i *= 10; func2(); } int getValue() { return i; } protected: virtual void func2() { i++; } protected: int i;};class Child: public Base { public: Child(int j): Base(j) {} void func1() { i *= 100; func2(); } protected: void func2() { i += 2; }};int main() { Base * pb = new Child(1); pb->func1(); cout << pb->getValue() << endl; delete pb; }
- 11
- 101
- 12
- 102
题4:
下列代码编译时会产生错误的是()
#include <iostream>using namespace std;struct Foo { Foo() {} Foo(int) {} void fun() {}};int main(void) { Foo a(10); //语句1 a.fun(); //语句2 Foo b(); //语句3 b.fun(); //语句4 return 0; 16.}
- 语句1
- 语句2
- 语句3
- 语句4
题5:
下面这段代码会打印出什么?
class A{public: A() { printf("A "); } /*virtual*/ ~A() { printf("deA "); }}; class B{public: B() { printf("B "); } ~B() { printf("deB "); }}; class C: public A, public B{public: C() { printf("C "); } ~C() { printf("deC "); }};int main(){ A *a = new C(); delete a; return 0;}
- A B C deA
- C A B deA
- A B C deC
- C A B deC
题6:
有以下程序
#include <stdio.h>#include <stdlib.h>void fun ( int ﹡pl,int ﹡p2,int ﹡s ){ s = (int﹡) calloc(1,sizeof(int)); ﹡s = ﹡pl + ﹡p2; free (s); }main ( ){ int a [2] = {1,2},b [2] = {40,50},﹡q = a; fun(a,b,q) ; printf ( "%d\n", ﹡q);}
程序运行后的输出结果是?
- 42
- 41
- 1
- 0
题目7:
下列程序执行后输出的结果是
#include<iostream>using namespace std; int f(int a){ int b = 0; static int c = 3; a = c++, b++; return (a);}int main(){ int a = 2, i, k; for (i = 0; i < 2; i++) k = f(a++); printf(" % d\n", k); return 0;}
- 3
- 0
- 5
- 4
题目8:
给定程序中,函数fun的功能是:将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。
#include <stdio.h>#include <stdlib.h>void fun(char *s, int a, double f){FILE *fp;char str[100], str1[100], str2[100];int a1;double f1;fp = fopen("file1.txt", "w");fprintf(fp, "%s %d %f\n", s, a, f);fclose(fp);fp = fopen("file1.txt", "r");fscanf(fp, "%s %s %s", str, str1, str2);fclose(fp);a1 = atoi(str1);f1 = atof(str2);printf("\nThe result: \n %s %d %f\n", str, a1, f1);}int main(){char a[10] = "Hello!";int b = 12345;double c = 98.76;fun(a, b, c);return 0;}
题9
在64位系统中,有如下类:
class C{public: char a; static char b; void *p; static int *c; virtual void func1(); virtual void func2();};
那么sizeof(C)的数值是()
- 9
- 17
- 32
- 24
题10
派生类的对象对它的基类成员中,()是可以访问的。
- 公有继承的公有成员
- 公有继承的私有成员
- 公有继承的保护成员
- 私有继承的公有成员
题11
以下程序是用辗转相除法来计算两个非负数之间的最大公约数:
long long gcd(long long x, long long y) { if (y == 0) return x; else return gcd(y, x % y);}
我们假设x,y中最大的那个数的长度为n,x>y,基本运算时间复杂度为O(1),那么该程序的时间复杂度为( )
- O(1)
- O(logy)
- O(n)
- O(x)
求最大公约数的最常用的算法是欧几里得算法,也称为辗转相除法.
问题定义为求i和j的最大公约数gcd(i,j),其中i和j是整数,不妨设i>j.
算法可以递归的表示:
1.如果j能整除i,那么gcd(i,j)=j;
2.j不能整除i,令r=i%j,那么gcd(i,j)=gcd(j,r).
使用C语言实现:
int
gcd(
int
i,
int
j)
{
int
r = i % j;
return
r == 0 ? j : gcd(j, r);
}
算法的步骤1,显然成立(最大公约数定义).关键是要证明步骤2.
设d是i和j的最大公约数,
那么i=md,j=nd,m和n互质(否则d不是最大公约数).
由r=i%j可以得到i=kj+r,k=⌊m/n⌋,k≥1(我们前面假设过i>j).
把i=md,j=nd代入得到
md=knd+r
那么
r=(m-kn)d
m-kn和m也是互质的.
所以得到d是j和r的最大公约数.
时间复杂度分析:
逆着看该算法,最后的余数是0,倒数第二次余数是d,倒数第三次是kd,k>1…
由于组成了一个数列,{0,d,kd,nkd+d,…}
数列的n项加上n+1项,比n+2项要小,所以比斐波纳契数列增长的要快.
我们已知斐波纳契数列增长速度是指数,那么待分析的数列也是指数增长.
设欧几里得算法需要k次,那么j=O(2^k),则k=O(lg j).
题12
time_t t;
- t = clock();
- time( &t );
- time( &t );
- t = localtime();
- None of the above
题13
以下程序的打印结果是()
.#include<iostream>2.using namespace std;3.4.void swap_int(int a , int b)5.{6. int temp = a;7. a = b;8. b = temp;9.}10.11.void swap_str(char*a , char*b)12.{13. char*temp = a;14. a = b;15. b = temp;16.}17.18.int main(void)19.{20. int a = 10;21. int b = 5;22. char*str_a = "hello world";23. char*str_b = "world hello";24. swap_int(a , b);.25. swap_str(str_a , str_b);26. printf("%d %d %s %s\n",a,b,str_a,str_b);27.28. return 0;29.}
- 10 5 hello world world hello
- 10 5 world hello hello world
- 5 10 hello world world hello
- 5 10 hello world world hello
题14
在 C 语言中下面那个语句的结果是 1 ?
- main 函数正常结束的返回值
- return 7&1;
- char *p="hello"; return p == "hello";
- 上面都不对
答案: BC
题15
下面关于多态性的描述,错误的是:
- C++语言的多态性分为编译时的多态性和运行时的多态性
- 编译时的多态性可通过函数重载实现
- 运行时的多态性可通过模板和虚函数实现
- 实现运行时多态性的机制称为动态绑定
题16
有以下程序
#include<stdio.h>main(){ int a=3; printf("%d\n",(a+=a-=a*a));}
程序运行后的输出结果是?
- 3
- 9
- 0
- -12
题17
在c++中,
const int i = 0; int *j = (int *) &i; *j = 1; printf("%d,%d", i, *j)
- 0,1
- 1,1
- 1,0
- 0,0
const修饰的常量值具有不可变性,c++编译器通常会对该变量做优化处理,在编译时变量i的值为已知的,编译器直接将printf输出的变量i替换为0。尽管如此,编译器仍然会为变量i分配存储空间,通过修改内存的hack方式将变量i在内存中的值修改后并不影响printf的输出。
如果将i更改为volatile const int类型的,编译器就不会对变量i做优化,printf输出的结果就为1。
题18
/* 将整型数组p中n个数据增大*/void increment_ints (int p [ ], int n) { assert(p != NULL); /* 确保p不为空指针 */ assert(n >= 0); /* 确保n不为负数 */ while (n) /* 循环n次. */ { *p++; /* 增大p*/ p++, n--; /* p指向下一位,n减1 */ } }以上代码的实现有错误,下面哪句话的表述是正确的?
- *p++使得p在解引用之前增大,因为*和++两个运算符有相同的优先级并按自右向左的方式结合。
- 数组的值是一个不能改变的值,所以p不能直接被修改。应该使用一个和p相关联的指针来完成这个操作。
- *p++使得p在解引用之前增大,因为自增运算符的优先级比取址运算符优先级高。
- while循环的条件必须是一个布尔类型的表达式,表达式应该为n!=0.
- An array cannot be initialized to a variable size. The subscript n should be removed from the definition of the parameter p.
题19
int FindSubString( char* pch ){ int count = 0; char * p1 = pch; while ( *p1 != '\0' ) { if ( *p1 == p1[1] - 1 ) { p1++; count++; }else { break; } } int count2 = count; while ( *p1 != '\0' ) { if ( *p1 == p1[1] + 1 ) { p1++; count2--; }else { break; } } if ( count2 == 0 ) return(count); return(0);}void ModifyString( char* pText ){ char * p1 = pText; char * p2 = p1; while ( *p1 != '\0' ) { int count = FindSubString( p1 ); if ( count > 0 ) { *p2++ = *p1; sprintf( p2, "%i", count ); while ( *p2 != '\0' ) { p2++; } p1 += count + count + 1; }else { *p2++ = *p1++; } }}void main( void ){ char text[32] = "XYBCDCBABABA"; ModifyString( text ); printf( text );}
- XYBCDCBABABA
- XYBCBCDAIBAA
- XYBCDCBAIBAA
- XYBCDDBAIBAB
#include <stdio.h>#define SUB(x,y) x-y#define ACCESS_BEFORE(element,offset,value) *SUB(&element, offset) = valueint main() { int array[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int i; ACCESS_BEFORE(array[5], 4, 6); printf("array: "); for (i = 0; i < 10; ++i) { printf("%d", array[i]); } printf("\n"); return (0);}
- array: 1 6 3 4 5 6 7 8 9 10
- array: 6 2 3 4 5 6 7 8 9 10
- 程序可以正确编译连接,但是运行时会崩溃
- 程序语法错误,编译不成功
- 0x00
- 0x12
- 0x34
- 0x1234
// unsigned char b=*(unsigned char *)&a; 由于大端存储, 所以上述int a变量的最低地址存储的是
// 十六进制表示中最左边的1字节, 为0x00.
#include<stdio.h>char *myString(){ char buffer[6] = {0}; char *s = "Hello World!"; for (int i = 0; i < sizeof(buffer) - 1; i++) { buffer[i] = *(s + i); } return buffer;}int main(int argc, char **argv){ printf("%s\n", myString()); return 0;}
- Hello
- Hello World!
- Well
- 以上全部不正确
int i = 1;int j = i++;if((i>j++) && (i++ == j)) i+=j;
- 3
- 5
- 6
- 7
class A{ int _a;public: A(int a): _a(a) { } friend int f1(A &); friend int f2(const A &); friend int f3(A); friend int f4(const A);};
- f1(0)
- f2(0)
- f3(0)
- f4(0)
要理解这个先得理解左值和右值的概念一个区分左值与右值的便捷方法是:看能不能对表达式取地址,如果能,则为左值,否则为右值。本题举例:
const A &a2 = 0;//这是可行的。
- STL容器是线程不安全的
- 当容量不够时,vector内部内存扩展方式是翻倍
- std::sort是稳定排序
- std::bitset不是一个STL容器
- std::stack默认是用deque实现的
- std::string中可以存储多个’\0’字符
下面程序执行结果:
using namespace std;class A{ public: virtual void f() { cout << "A::f() "; } void f() const { cout << "A::f() const "; }};class B : public A { public: void f() { cout << "B::f() "; } void f() const { cout << "B::f() const "; }};void g(const A* a) { a->f();}int main(int argc, char *argv[]) { A* p = new B(); p->f(); g(p); delete(p); return 0;}
- B::f() B::f() const
- B::f() A::f() const
- A::f() B::f() const
- A::f() A::f() const
题27
下面有关c++线程安全,说法错误的是?
- 线程安全问题都是由全局变量及静态变量引起的
- 若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全
- c++标准库里面的string保证是线程安全的
- POSIX线程标准要求C标准库中的大多数函数具备线程安全性
题28
有这样一个类:
12345class Eye{ public: void Look(void);};
- 继承
- 组合
- 模板
- 过滤
Look是Eye本身所具有的功能,反过来Eye如果没有Look功能就不是一个完整的Eye。因此Look是Eye必不可少的一部分,就像车胎是汽车的一部分一样,代码复用最好的办法是用组合。
Eye为Head的一部分,是整体和部分的关系,属于UML中的组合关系。可以在Head类中定义一个Eye类型的成员变量,Head类的Look函数直接调用Eye类的函数。
题29
将“引用”作为函数参数有哪些特点?
- 引用传递和指针传递没有差别
- 传递引用给函数与传递指针的效果是一样的
- 使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;
- 在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。
答案:BCD
题30
- =
- <
- sizeof
- %
C++中绝大部分的运算符可重载,除了成员访问运算符.,作用域运算符::,长度运算符sizeof以及条件运算符?:
题31
下列关于联合的描述中,错误的是?
- 联合变量定义时不可初始化
- 联合的成员是共址的
- 联合的成员在某一个时刻只有当前的是有效的
- 联合变量占有的内存空间是该联合成员占有最大内存空间的成员所需的存储空间
union类型的变量在定义时是可以被初始化的,定义如下union类型
union Test
{
int
a;
float
b;
};
Test test = {
1
};
题32
下面有关static类变量和实例变量的描述,正确的有?
- 类变量又叫静态成员变量,它不需要创建对象就可以已经在内存中存在了
- 在创建实例对象的时候,内存中会为每一个实例对象的每一个非静态成员变量开辟一段内存空间,用来存储这个对象所有的非静态成员变量值
- 类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果
- 实例变量则属对象私有,某一个对象将其值改变,不影响其他对象
答案:ABCD
题33
什么函数不能声明为虚函数?
- 静态成员函数
- 内联函数
- 构造函数
- 析构函数
常见的不能声明为虚函数的有:普通函数(非成员函数)、静态成员函数、内联成员函数、构造函数、友元函数。
题34
#include <stdio.h>#include <stdlib.h>#include <string.h>void WriteText(FILE*);void ReadText(FILE*);int main(){FILE *fp;if((fp = fopen("myfile4.txt", "w")) == NULL){printf("open fail!!\n");exit(0);}WriteText(fp);fclose(fp);if((fp = fopen("myfile4.txt", "r")) == NULL){printf("open failed!!\n");exit(0);}ReadText(fp);fclose(fp);}void WriteText(FILE *fw){char str[81];printf("\nEnter string with -1 to end:\n");gets(str);while(strcmp(str, "-1") != 0){fputs(str, fw);fputs("\n", fw);gets(str);}}void ReadText(FILE *fr){char str[81];printf("\nRead file and output to screen:\n");fgets(str, 81, fr);while(!feof(fr)){printf("%s", str);fgets(str, 81, fr);}}
题35
若fp已定义为指向某文件的指针,且没有读到该文件的末尾,C语言函数feof( fp)的函数返回值是?
- EOF
- 非0
- -1
- 0
题36
若有以下程序
234567#include<stdio.h>main( ){ int a=-2,b=0; while(a++) ++b; printf("%d,%d\n",a,B);}
则程序的输出结果是?
- 1,1
- 1,2
- 2,1
- 2,2
题37
下面说法正确的是()
- 在C++语言中new和malloc都是在堆(heap)上进行动态的内存操作,可以互相代替。
- C++语言重载(over load)是指子类重新定义父类的虚函数的方法。
- C++语言函数既可以嵌套定义又可以递归调用。
- 在C++语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参。
题38
设 m 和 n 都是 int 类型,那么以下 for 循环语句,___
for(m=0,n=-1;n=0;m++,n++) n++;
- 循环体一次也不执行
- 循环体执行一次
- 是无限循环
- 有限次循环
- 循环结束判断条件不合法
- 运行出错
题39
下列说法正确的有( )
- class中的constructor不可省略
- constructor必须与class同名,但方法不能与class同名
- constructor在一个对象被new时执行
- 一个class只能定义一个constructor
答案: C
题40
对于派生类的构造函数,在定义对象时构造函数的执行顺序为?
1:成员对象的构造函数
2:基类的构造函数
3:派生类本身的构造函数
- 123
- 231
- 321
- 213
题41
在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )
- 派生类的对象可以赋给基类的对象
- 派生类的对象可以初始化基类的引用
- 派生类的对象可以直接访问基类中的成员
- 派生类的对象的地址可以赋给指向基类的指针
题42
你认为可以完成编写一个C语言编译器的语言是()
- 汇编
- C语言
- :VB
- 以上全可以
题43
两个等价线程并发的执行下列程序,a为全局变量,初始为0,假设printf、++、--操作都是原子性的,则输出肯定不是哪个?
void foo() { if(a <= 0) { a++; } else { a--; } printf("%d", a);}
- 01
- 10
- 12
- 22
题44
下面关于迭代器失效的描述哪个是错误的()
- vector的插入操作不会导致迭代器失效
- map的插入操作不会导致迭代器失效
- vector的删除操作只会导致指向被删除元素及后面的迭代器失效
- map的删除操作只会导致指向被删除元素的迭代器失效
题45
将“引用”作为函数参数有哪些特点?
- 引用传递和指针传递没有差别
- 传递引用给函数与传递指针的效果是一样的
- 使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;
- 在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。
题46
union Test { char a[4]; short b; }; Test test; test.a[0]=256; test.a[1]=255; test.a[2]=254; test.a[3]=253; printf("%d\n",test.b);问题:在80X86架构下,输出什么值?
- -128
- -256
- 128
- 256
题47
class Base { public: Base(int j): i(j) {} virtual~Base() {} void func1() { i *= 10; func2(); } int getValue() { return i; } protected: virtual void func2() { i++; } protected: int i;};class Child: public Base { public: Child(int j): Base(j) {} void func1() { i *= 100; func2(); } protected: void func2() { i += 2; }};int main() { Base * pb = new Child(1); pb->func1(); cout << pb->getValue() << endl; delete pb; }
- 11
- 101
- 12
- 102
int main(){ printf("\n"); int a[5] = {1, 2, 3, 4, 5}; int *p, **k; p = a; k = &p; printf("%d", *(p++)); printf("%d", **k); return 0;}
- 11
- 21
- 22
- 12
- 事件
- 临界区
- 互斥量
- 共享内存
enum string{ x1, x2, x3=10, x4, x5, } x;
- 5
- 12
- 0
- 随机值
#define a 10main(){ printf("%d..",a); foo(); printf("%d",a);}void foo(){ #undef a #define a 50}
- 10..10
- 10..50
- Error
- 0
unsigned char i=0x80;
printf("0x%x\n", ~i>>3+1);
输出什么?
输出:0xfffffff7(提示:+的优先级优于>>)
如果将unsigned去掉,则输出0x7。
运算符优先级
unsigned char i=0x80;
printf("0x%x\n", ~i>>3+1);输出什么?
输出:0xfffffff7(提示:+的优先级优于>>)
如果将unsigned去掉,则输出0x7。
#include <iostream>using namespace std;class A{public: A() { cout << "A's Constructor Called " << endl; }};class B{ static A a;public: B() { cout << "B's Constructor Called " << endl; }};int main(){ B b; return 0;}解释:上面的程序只是调用了B的构造函数,没有调用A的构造函数。因为静态成员变量只是在类中声明,没有定义。静态成员变量必须在类外使用作用域标识符显式定义。
如果我们没有显式定义静态成员变量a,就试图访问它,编译会出错,比如下面的程序编译出错:
#include <iostream>using namespace std;class A{ int x;public: A() { cout << "A's constructor called " << endl; }};class B{ static A a;public: B() { cout << "B's constructor called " << endl; } static A getA() { return a; }};int main(){ B b; A a = b.getA(); return 0;}
输出:
Compiler Error: undefined reference to `B::a
如果我们加上a的定义,那么上面的程序可以正常运行,
注意:如果A是个空类,没有数据成员x,则就算B中的a未定义也还是能运行成功的,即可以访问A。
#include <iostream>using namespace std;class A{ int x;public: A() { cout << "A's constructor called " << endl; }};class B{ static A a;public: B() { cout << "B's constructor called " << endl; } static A getA() { return a; }};A B::a; // definition of aint main(){ B b1, b2, b3; A a = b1.getA(); return 0;}输出:
A's constructor called B's constructor called B's constructor called B's constructor called上面的程序调用B的构造函数3次,但是只调用A的构造函数一次,因为静态成员变量被所有对象共享,这也是它被称为类变量的原因。同时,静态成员变量也可以通过类名直接访问,比如下面的程序没有通过任何类对象访问,只是通过类访问a。
int main(){ // static member 'a' is accessed without any object of B A a = B::getA(); return 0;}输出:
A's constructor called
题56
char *c[] = {"ENTER","NEW","POINT","FIRST"}; char **cp[] = { c + 3 , c + 2 , c + 1 , c}; char ***cpp = cp; int main(void) { printf("%s",**++cpp); printf("%s",*--*++cpp+3); printf("%s",*cpp[-2]+3); printf("%s\n",cpp[-1][-1]+1); return 0; }
解答:
c是一个指针数组,每个数组元素都是char*类型的指针,值分别是那些字符串(的首地址):
c[0] = "ENTER" c[1] = "NEW" c[2] = "POINT" c[3] = "FIRST"
而[]和*是本质一样的运算,即c[i]=*(c+i)
。
c和c+i都是char *[]类型,它可以退化成char **类型,再看cp,它正好是一个char **的数组,来看它的值:
cp[0] = c + 3 cp[1] = c + 2 cp[2] = c + 1 cp[3] = c
引用后就有:cp[0][0]=*(c + 3)=c[3]="FIRST"
,以此类推。
cp是char **[]类型,它可以退化成char ***类型,看最后的cpp,它正是char ***类型,它是一个指针变量,和上面两个不同,上面两个是数组。
这样分析过后,下面的解析就一目了然了:
printf("%s",**++cpp);
++cpp的值是cp+1,引用一次后是cp[1]再引用是*cp[1]=c[2]="POINT",第一句的输出printf("%s",*--*++cpp+3);
再++cpp的值是cp+2,引用一次是cp[2]=c+1,再对这进行--,减后是c再引用是c[0]="ENTER"再+3,字符串指针指到"ER",输出是"ER"printf("%s",*cpp[-2]+3);
这时cpp的值是cp+2,cpp[-2]=*(cpp-2)=*(cp+2-2)=cp[0]=c+3,再引用是c[3]="FIRST",+3 字符串指针指到"ST",输出是"ST"printf("%s\n",cpp[-1][-1]+1);
cpp还是cp+2,cpp[-1]=*(cpp-1)=*(cp+2-1)=cp[1]=c+2,再[-1]得*(c+2-1)=c[1]="NEW",+1字符串指针指到"EW",输出是"EW"。
- 指针的值是一个地址
- 非法指针是指该指针的值不是一个已经分配的内存地址
- 两个指向同类型地址的指针之间做减法是没有意义的
- 指针的指针占用的内存空间和其他指针占用的内存空间相同
- int f() { int *a = new int(3); return *a; }
- int *f() { int a[3] = {1, 2, 3}; return a; }
- vector f() { vector v(3); return v; }
- void f(int *ret) { int a[3] = {1, 2, 3}; ret = a; return; }
#include<stdio.h> int main(void){ int n; char y[10] = "ntse"; char *x = y; n = strlen(x); *x = x[n]; x++; printf("x=%s\n",x); printf("y=%s\n",y); return 0;}
void main(){ float a = 1; cout << boolalpha << ((int)a == (int &)a); float b = 0; cout << boolalpha << ((int)b == (int &)b);}
<span style="color: rgb(51, 51, 51); font-family: arial, STHeiti, 'Microsoft YaHei', 宋体; font-size: 14px; line-height: 25.2000007629395px; background-color: rgb(255, 255, 255);">该程序输出结果为</span>
- truetrue
- falsefalse
- truefalse
- falsetrue
已知int a[]={1,2,3,4,5};int*p[]={a,a+1,a+2,a+3};int **q=p;表达式*(p[0]+1)+**(q+2)的值是____。
- 5
- 6
- 7
- 8
- 4
- 9
= *(p[0]+1)+**(q+2)*(p[0]+1)+*(p[2])*(a+1)+*(a+2)a[1]+a[2]2+35
运行下面这段C语言程序之后,输出在屏幕上的结果是:
void foobar(int a, int *b, int **c){ int *p = &a; *p = 101; *c = b; b = p;} int main(){ int a = 1; int b = 2; int c = 3; int *p = &c; foobar(a, &b, &p); printf("a=%d, b=%d, c=%d, *p=%d\n", a, b, c, *p); return (0);}
- a=1, b=2, c=3, *p=2
- a=101, b=2, c=3, *p=2
- a=101, b=101, c=2, *p=3
- a=1, b=101, c=2, *p=3
- 嵌入式C题目整理
- 精心整理的C语言面试题目
- 精心整理的C语言面试题目
- C/C++典型面试题目整理001
- 链表题目整理(C语言实现)
- linux c/c++ 面试题目整理(一)
- linux c/c++ 面试题目整理(二)
- linux c/c++ 面试题目整理(三)
- C语言必知必会的题目整理
- 【题目整理】
- 常见C/C++笔试题目整理(含答案)1
- 常见C/C++笔试题目整理(含答案)2
- 常见C/C++笔试题目整理(含答案)3
- 常见C/C++笔试题目整理(含答案)4
- 常见C/C++笔试题目整理(含答案)5
- 链表的各种题目整理(C语言实现)
- 2012第三届蓝桥杯C语言本科初赛题目 整理 1
- 链表的各种题目整理(C语言实现)
- redis源码分析 dict字典的实现和内部应用
- ajax xml 实现数据交互 小例子
- OC_属性
- java中的异常
- Spring定时任务的几种实现
- c++题目整理
- error: failed to push some refs【Linux】【Git】
- asp.net站点报错“对象的当前状态使该操作无效。”的解决办法
- 合并库命令
- RapidFloatingActionButton
- 当一个对象被当做参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- OpenMP:向量内积
- MySQL-SQL_CALC_FOUND_ROWS
- oracle账号解锁