C++笔精彩试题目-带问题详解

合集下载

c语言笔精彩试题问题详解

c语言笔精彩试题问题详解

笔试题一、填空题(每个空4分,共28分)1)struct tagABC{char name[10];char sex;long sno;float score[4];}*pAbc;(四字节对齐)pAbc=NULL;那么,执行pAbc+=2;之后pAbc的值为(64 )2)如下代码,最终value的值是(8)int *p1,*p2;int value;p1=(int*)0×400;p2=(int*)0×408;value = p2-p1;3)如下代码,printf的结果为(2)#include〈stdio.h〉#include〈string.h〉void main(void){char acNew[20]= “\\0\0”;printf(“%d\n”,strlen(acNew));}4) 有如下程序段,运行该程序的输出结果是(33)main (){int y=3,x=3,z=1;printf(“%d%d\n”,(++x,y++),z+2);}5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA{Unsigned char ucId:1;Unsigned char ucPara0:2;Unsigned char ucState:6;Unsigned char ucTail:4;Unsigned char ucAvail;Unsigned char unTail2:4;Unsigned long ulData;}AAA_S问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 )二、选择题(每题2分,共34分)1)若有说明int(*p)[3];以下叙述正确的是( D )A:p是指针数组B:(*p)[3]和*p[3]等价C:p是指向一维数组中任何一个元素的指针D:p是指向含有3个整型元素的一维数组的指针2)以下关于单元测试的描述,哪些是对的?(D)A:黑盒测试针对软件的功能,不考虑功能的实现细节;B:白盒测试针对源代码的测试,从程序功能的具体实现上找错;C:路径覆盖是黑盒测试的一种方法,编写测试用例使程序的每条语句都能走到;D:条件覆盖是百盒测试的一种方法, 编写测试用例使程序的每个判断的各种情况都能到3)以下可以用于任务间通信的有(ABCD)A:共享内存 B:信号量C:消息队列和管道 D:socket调用4)有关结构,以下哪些描述是对的?(BC)A:为了测试方便,尽量把一个结构的功能设计得多一些B:不同结构间的关系不要过于复杂C:结构中的各元素应代表同一事务的不同侧面,而不应把描述没有关系或关系很弱的不同事务的元素放到同一结构中D:结构中元素的布局与排列顺序可以随意设计5)关于强制类型转化,下面说法正确的是(ABCD)A:当目的结构的空间大于源结构的空间时,要重点关注内存访问超过源结构范围的情形,可能越界;B:当目的结构的空间小于源结构的空间时,要重点关注对目的结构赋值不能完全覆盖源结构范围的情形,可能遗漏;C:结构体之间的强制类型转换时,其成员字段的数据类型的差异也是要格外小心的; D:与结构体之间的强制类型转换相比,基本数据结构的强制类型转换更容易出现上面描述的情况,使用的时候,一定要慎之又慎;6)正确的使用assert,软件系统不会对人为原因造成的错误进行处理。

完整版C语言100个经典题目

完整版C语言100个经典题目

完整版C语言100个经典题目在学习和掌握C语言编程技巧的过程中,解决各种经典题目是非常重要的。

下面是一份C语言的100个经典题目,帮助你提高编程能力和理解C语言的核心概念。

1. 编写一个程序,输出"Hello, World!"。

2. 编写一个程序,从键盘输入两个整数,然后输出它们的和。

3. 编写一个程序,从键盘输入两个整数,然后交换它们的值。

4. 编写一个程序,输出1到100之间所有的奇数。

5. 编写一个程序,输出1到100之间所有能被3整除的数。

6. 编写一个程序,判断一个年份是否为闰年。

7. 编写一个程序,将一个字符串逆序输出。

8. 编写一个程序,求出一个整数的阶乘。

9. 编写一个程序,判断一个数是否为素数。

10. 编写一个程序,输入一个字符串,然后统计其中的字母、数字和空格的个数。

11. 编写一个程序,将一个字符串转换为大写字母。

12. 编写一个程序,从键盘输入一个字符串,然后去除其中的重复字符。

13. 编写一个程序,将一个字符串按照指定分隔符进行拆分,并输出拆分后的结果。

14. 编写一个程序,将一个字符串中的所有单词首字母大写。

15. 编写一个程序,找出一个整数数组中的最大值。

16. 编写一个程序,找出一个整数数组中的最小值。

17. 编写一个程序,计算一个整数数组中所有元素的平均值。

18. 编写一个程序,对一个整数数组进行冒泡排序。

19. 编写一个程序,对一个整数数组进行选择排序。

20. 编写一个程序,对一个整数数组进行插入排序。

21. 编写一个程序,对一个整数数组进行快速排序。

22. 编写一个程序,计算斐波那契数列的第n个数字。

23. 编写一个程序,计算一个整数的平方根。

24. 编写一个程序,判断一个字符串是否为回文字符串。

25. 编写一个程序,输入一个正整数n,然后输出n行杨辉三角。

26. 编写一个程序,将一个二维整数数组进行转置。

27. 编写一个程序,将一个二维整数数组进行矩阵乘法运算。

专升本c语言真题与答案解析

专升本c语言真题与答案解析

专升本c语言真题与答案解析C语言真题与答案解析在考试中,C语言是一个重要的科目,它是计算机领域最为基础的编程语言之一。

考生对于C语言的理解和掌握程度直接影响着他们在考试中的成绩。

为了帮助考生更好地备考和应对C语言考试,下面将提供一些常见的C语言真题,并给出详细的答案解析。

题目一:编写一个C语言程序,实现生成斐波那契数列的功能。

答案解析:斐波那契数列是指从第三个数开始,每个数都是前两个数之和的数列。

在C语言中,可以通过循环和条件判断语句来实现。

```c#include <stdio.h>void Fibonacci(int n){int a = 0, b = 1, i, c;printf("斐波那契数列前 %d 项为:\n", n);printf("%d ", a);printf("%d ", b);for(i = 3; i <= n; i++) {c = a + b;printf("%d ", c);a = b;b = c;}printf("\n");}int main(){int num;printf("请输入要生成斐波那契数列的项数:");scanf("%d", &num);Fibonacci(num);return 0;}```本题的答案解析是一个完整的程序,其中使用了循环、条件判断、变量和输入输出等C语言的基本语法和知识点。

通过运行这段代码,我们可以得到生成斐波那契数列的结果。

题目二:编写一个C语言程序,实现字符串逆序输出的功能。

答案解析:为了实现字符串的逆序输出,我们需要首先将字符串存储到一个字符数组中,然后通过循环遍历数组的元素,从最后一个元素开始逆序输出。

```c#include <stdio.h>#include <string.h>void reverseString(char str[]){int i, len;len = strlen(str);printf("逆序输出的结果为:");for(i = len-1; i >= 0; i--){printf("%c", str[i]);}printf("\n");}int main(){char input[100];printf("请输入一个字符串:"); gets(input);reverseString(input);return 0;}```本题的答案解析同样是一个完整的程序。

c语言面试中常问的算法题目

c语言面试中常问的算法题目

c语言面试中常问的算法题目
在 C 语言面试中,常常会涉及一些算法题目,以下是一些常见
的算法题目及其解答:
1. 反转字符串:
题目,给定一个字符串,将其反转。

解答,可以使用两个指针,一个指向字符串的起始位置,另
一个指向字符串的末尾位置,然后交换两个指针所指向的字符,然
后两个指针向中间移动,重复这个过程直到两个指针相遇。

2. 判断字符串是否为回文串:
题目,给定一个字符串,判断它是否是回文串(正读和反读
都相同)。

解答,可以使用两个指针,一个指向字符串的起始位置,另
一个指向字符串的末尾位置,然后逐个比较两个指针所指向的字符,如果不相等则不是回文串。

3. 查找数组中的最大值和最小值:
题目,给定一个整数数组,找出数组中的最大值和最小值。

解答,可以使用两个变量分别保存当前的最大值和最小值,然后遍历数组,逐个比较并更新最大值和最小值。

4. 实现快速排序算法:
题目,给定一个整数数组,使用快速排序算法对数组进行排序。

解答,快速排序算法的基本思想是选择一个基准元素,将数组分为两部分,一部分小于基准元素,一部分大于基准元素,然后递归地对两部分进行排序。

5. 判断一个数是否为素数:
题目,给定一个整数,判断它是否为素数(只能被 1 和自身整除)。

解答,可以使用循环遍历从 2 到该数的平方根,逐个判断是否能整除该数,如果能整除则不是素数。

以上是一些常见的在 C 语言面试中经常被问到的算法题目及其解答。

当然,还有很多其他的算法题目,希望这些题目能帮助您更好地准备面试。

C语言编程题带答案

C语言编程题带答案

C语言编程题带答案C 语言作为一门广泛应用的编程语言,在学习过程中,通过编程题的练习可以更好地掌握其语法和逻辑。

下面为您带来几道 C 语言编程题以及详细的答案解析。

题目一:求两个整数的和要求编写一个 C 语言程序,输入两个整数,计算并输出它们的和。

```cinclude <stdioh>int main(){int num1, num2, sum;printf("请输入第一个整数:");scanf("%d",&num1);printf("请输入第二个整数:");scanf("%d",&num2);sum = num1 + num2;printf("这两个整数的和是:%d\n", sum);return 0;```解析:在这个程序中,首先使用`printf`函数提示用户输入两个整数,然后通过`scanf`函数获取用户输入的值并存储在变量`num1`和`num2`中。

接下来,将这两个数相加并将结果存储在变量`sum`中,最后使用`printf`函数输出结果。

题目二:判断一个数是否为奇数编写一个 C 语言程序,输入一个整数,判断它是否为奇数,如果是奇数输出“是奇数”,否则输出“不是奇数”。

```cinclude <stdioh>int main(){int num;printf("请输入一个整数:");scanf("%d",&num);if (num % 2!= 0) {printf("是奇数\n");} else {printf("不是奇数\n");return 0;}```解析:在这个程序中,使用取余运算符`%`来判断一个数是否能被2 整除。

如果取余结果不为 0,说明该数不能被 2 整除,即为奇数;否则,不是奇数。

题目三:计算 1 到 100 的累加和编写一个 C 语言程序,计算 1 到 100 的累加和。

```cinclude <stdioh>int main(){int sum = 0, i;for (i = 1; i <= 100; i++){sum += i;}printf("1 到 100 的累加和是:%d\n", sum);return 0;```解析:这里使用了`for`循环从 1 迭代到 100,每次迭代都将当前的数字加到变量`sum`中,最终得到 1 到 100 的累加和。

C语言编程题与答案解析

C语言编程题与答案解析
}
9.(*)试编程:判断输入的正整数是否既是 5,又是 7 的整数倍 数。若是则输出 yes;否 则输出 no。
10.(*)已有函数调用语句 c=add(a,b);请编写 aad 函数,计算两 个实数 a 和 b 的和,并返回和值。
11.(*)有人想将手中一张面值 100 元的人民币换成 5 元、1 元、 0.5 元面值的零钱 100 张,以上三种面值的零钱至少有一张,问共有几
12.(*)求 Sn=a+aa+aaa+aaaa+aaaaa 的前 5 项之和,其中 a 是一个
数字,例如:
2+22+222+2222+22222
程序 1:main()
{int i, a,n;
long sum=0, b=1,c=1;
scanf("%d,%d",&a,&n);
for(i=1;i<=n;i++) {sum+=a*c;
} 14.(*)用近似1 公式1 求自然对数的底 e 的值。
e≈12+!1!+3! + +…… #include"math.h" main() {float i,j,e,p=1.0,sum=0.0; for(i=1;i<10 ;i++)
{for(j=1;j<=i;j++) p=p*j;
sum=sum+1.0/p; p=1.0;} e=i+sum; printf("%f\n",e); } 15.(*)请编程,用 scanf()函数输入三个字符,对这三个字符各 加一个整数 1 后,用 putchar()函数输出,且每输出一个字符换一行。 16.(*)请编程,用 scanf()函数输入三个整数,输出其中不大不 小的那个数,输出宽度为五位。 int findmid(int i,int j,int k) {int n;

c 经典笔试题及答案

c 经典笔试题及答案

c 经典笔试题及答案c经典笔试题及答案第一题:数学题已知一边长为10cm的正方形ABCD,点E在边BC上,且BE=4cm,连接AE交对角线BD于点F。

求△CEF的面积。

解答:首先,连接AD。

根据正方形特性可知,△ABE和△ADF是全等三角形。

因此,AE = AD,所以AE = 10cm。

由AE = AD,并且△ABE和△ADF是全等三角形,可以推出∠EAF = ∠EAB,∠BFA = ∠EBD(共顶角相等)。

因此,△BFA和△EBD是全等三角形。

根据△EBD的知识可得,BE = BD - ED = BD - AE = BD - 10cm。

由于BE = 4cm,所以 BD = 14cm。

同理,根据△BFA的知识可得,BF = AB - AF = AB - AE = AB - 10cm。

由于AB = 10cm,所以BF = 0cm。

即F与B重合,因此,△CEF退化成一条线段EF。

线段EF的长度等于三角形△CEF的面积。

根据△CEF的面积公式,面积 = 底 ×高 / 2 = EF × CF / 2,所以面积 = EF × CF / 2 = EF × BE / 2 = EF × 4cm / 2 = 2EF(单位:cm²)。

综上所述,△CEF的面积为2EF平方厘米。

第二题:英语题Choose the word that best completes the sentence:Tom likes to ________ his friends for a cup of coffee after work.A. meetingB. meetsC. meetD. metAnswer: C. meetExplanation:The sentence states that Tom likes to do something after work. The verb "likes" is followed by the verb "to meet," which is the correct form when used with the pronoun "friends." Therefore, the correct answer is C. meet.第三题:物理题A car of mass 1200kg is traveling at a speed of 20m/s. Find its kinetic energy.Solution:The formula for kinetic energy (K.E.) is K.E. = (1/2)mv², where m is the mass of the object and v is its velocity.Given:Mass (m) = 1200kgVelocity (v) = 20m/sSubstituting the values into the formula:K.E. = (1/2)(1200kg)(20m/s)²= (1/2)(1200kg)(400m²/s²)= 240,000kg*m²/s²Therefore, the kinetic energy of the car is 240,000kg*m²/s².第四题:化学题Balance the following chemical equation:C₄H₁₀ + O₂ → CO₂ + H₂OSolution:To balance the equation, we need to ensure that the number of atoms of each element is equal on both sides of the equation.Starting with carbon (C), we have 4 carbon atoms on the left side and 1 carbon atom on the right side. To balance the carbon atoms, we need to put a coefficient of 4 in front of CO₂.C₄H₁₀ + O₂ → 4CO₂ + H₂ONext, looking at hydrogen (H), we have 10 hydrogen atoms on the left side and 2 hydrogen atoms on the right side. To balance the hydrogen atoms, we need to put a coefficient of 5 in front of H₂O.C₄H₁₀ + O₂ → 4CO₂ + 5H₂OFinally, looking at oxygen (O), we have 2 oxygen atoms on the left side and 14 oxygen atoms on the right side. To balance the oxygen atoms, we need to put a coefficient of 7/2 (or 3.5) in front of O₂.2 C₄H₁₀ + 3.5O₂ → 4CO₂ + 5H₂OTherefore, the balanced chemical equation is 2 C₄H₁₀ + 3.5O₂ →4CO₂ + 5H₂O.第五题:生物题Fill in the blanks with the correct terms:Photosynthesis is the process by which plants, algae, and some bacteria convert ________ energy into ________ energy.Solution:Photosynthesis is the process by which plants, algae, and some bacteria convert sunlight energy into chemical energy.Therefore, the correct terms to fill in the blanks are sunlight energy and chemical energy.总结:本文分别介绍了数学题、英语题、物理题、化学题和生物题的经典笔试题及答案。

高通笔精彩试题--嵌入式C开发人员地最好地0x10道笔精彩试题(详细解析汇报)

高通笔精彩试题--嵌入式C开发人员地最好地0x10道笔精彩试题(详细解析汇报)

嵌入式C开发人员的最好的0x10道笔试题约定:(1) 下面的测试题中,认为所有必须的头文件都已经正确的包含了(2)数据类型Char 一个字节 1 byteInt 两个字节 2 byte (16位系统,认为整型是2个字节)long int 四个字节 4 bytefloat 四个字节4 byetdouble 八个字节 8 bytelong double 十个字节 10 bytepointer 两个字节 2 byte(注意,16位系统,地址总线只有16位)第1题: 考查对volatile关键字的认识 --- 高通笔试题#include<setjmp.h>static jmp_buf buf;main(){volatile int b;b =3;if(setjmp(buf)!=0){printf("%d ", b);exit(0);}b=5;longjmp(buf , 1);}请问,这段程序的输出是(a) 3 (b) 5(c) 0 (d) 以上均不是第2题:考查类型转换--- 高通笔试题main(){struct node{int a;int b;int c;};struct node s= { 3, 5,6 };struct node *pt = &s;printf("%d" , *(int*)pt);这段程序的输出是:(a) 3 (b) 5 (c) 6 (d) 7第3题:考查递归调用int foo ( int x , int n){int val;val =1;if (n>0){if (n%2 == 1) val = val *x;val = val * foo(x*x , n/2);}return val;}这段代码对x和n完成什么样的功能(操作)?(a) x^n (x的n次幂) (b) x*n(x与n的乘积) (c) n^x(n的x次幂) (d)以上均不是第4题:考查指针,这道题只适合于那些特别细心且对指针和数组有深入理解的人--- 高通笔试题main(){int a[5] = {1,2,3,4,5};int *ptr = (int*)(&a+1);printf("%d %d" , *(a+1), *(ptr-1) );}这段程序的输出是:(a) 2 2 (b) 2 1 (c) 2 5 (d) 以上均不是第5题:考查多维数组与指针void foo(int [][3] );main(){int a [3][3]= { { 1,2,3} , { 4,5,6},{7,8,9}};foo(a);printf("%d" , a[2][1]);}void foo( int b[][3]){++ b;b[1][1] =9;这段程序的输出是:(a) 8 (b) 9 (c) 7 (d)以上均不对第6题目:考查逗号表达式--- 高通笔试题main(){int a, b,c, d;a=3;b=5;c=a,b;d=(a,b);printf("c=%d" ,c);printf("d=%d" ,d);}这段程序的输出是:(a) c=3 d=3 (b) c=5 d=3 (c) c=3 d=5 (d) c=5 d=5 第7题:考查指针数组--- 高通笔试题main(){int a[][3] = { 1,2,3 ,4,5,6};int (*ptr)[3] =a;printf("%d %d " ,(*ptr)[1], (*ptr)[2] );++ptr;printf("%d %d" ,(*ptr)[1], (*ptr)[2] );}这段程序的输出是:(a) 2 3 5 6(b) 2 3 4 5 (c) 4 5 0 0 (d) 以上均不对第8题:考查函数指针--- 高通笔试题int *f1(void){int x =10;return(&x);}int *f2(void){int*ptr;*ptr =10;return ptr;int *f3(void){int *ptr;ptr=(int*) malloc(sizeof(int));return ptr;}上面这3个函数哪一个最可能引起指针方面的问题(a) 只有 f3 (b) 只有f1 and f3 (c) 只有f1 and f2(d) f1 , f2 ,f3第9题:考查自加操作(++) --- 高通笔试题main(){int i=3;int j;j = sizeof(++i+ ++i);printf("i=%d j=%d", i ,j);}这段程序的输出是:(a) i=4 j=2 (b) i=3 j=2 (c) i=3 j=4 (d) i=3 j=6第10题:考查形式参数,实际参数,指针和数组void f1(int *, int);void f2(int *, int);void(*p[2]) ( int *, int);main(){int a;int b;p[0] = f1;p[1] = f2;a=3;b=5;p[0](&a , b);printf("%d\t %d\t" , a ,b);p[1](&a , b);printf("%d\t %d\t" , a ,b);}void f1( int* p , int q){int tmp;tmp =*p;*p = q;q= tmp;}void f2( int* p , int q){int tmp;tmp =*p;*p = q;q= tmp;}这段程序的输出是:(a) 5 5 5 5 (b) 3 5 3 5 (c) 5 3 5 3 (d) 3 3 3 3第11题:考查自减操作(--)void e(int );main(){int a;a=3;e(a);}void e(int n){if(n>0){e(--n);printf("%d" , n);e(--n);}}这段程序的输出是:(a) 0 1 2 0 (b) 0 1 2 1 (c) 1 2 0 1 (d) 0 2 1 1第12题:考查typedef类型定义,函数指针typedef int (*test) ( float * , float*)test tmp;tmp 的类型是:(a) 函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments)Pointer to function of having two arguments that is pointer to float(b) 整型(c) 函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments),并且函数的返回值类型是整型Pointer to function having two argument that is pointer to float and return int(d) 以上都不是第13题:数组与指针的区别与联系--- 高通笔试题main(){char p;char buf[10] ={ 1,2,3,4,5,6,9,8};p = (buf+1)[5];printf("%d" , p);}这段程序的输出是:(a) 5 (b) 6 (c) 9 (d) 以上都不对第14题: 考查指针数组的指针Void f(char**);main(){char * argv[] = { "ab" ,"cd" , "ef" ,"gh", "ij" ,"kl" };f( argv );}void f( char **p ){char* t;t= (p+= sizeof(int))[-1];printf( "%s" , t);}这段程序的输出是:(a) ab (b) cd (c) ef (d) gh第15题:此题考查的是C的变长参数,就像标准函数库里printf()那样,这个话题一般国内大学课堂是不会讲到的,不会也情有可原呵呵, --- 高通笔试题#include<stdarg.h>int ripple ( int , ...);main(){int num;num = ripple ( 3, 5,7);printf( " %d" , num);}int ripple (int n, ...){int i , j;int k;va_list p;k= 0;j = 1;va_start( p , n);for (; j<n; ++j){i = va_arg( p , int);for (; i; i &=i-1 )++k;}return k;}这段程序的输出是:(a) 7 (b) 6 (c) 5 (d) 3第16题:考查静态变量的知识--- 高通笔试题int counter (int i){static int count =0;count = count +i;return (count );}main(){int i , j;for (i=0; i <=5; i++)j = counter(i);}本程序执行到最后,j的值是:(a) 10 (b) 15 (c) 6 (d) 7详细参考答案第1题: (b)volatile字面意思是易于挥发的。

语言编程题经典40题附解答

语言编程题经典40题附解答
scanf(“%d”, &x ); /*读入要插入的元素x */ i=n-1; /*从表尾往表头方向搜索插入位置*/ while (( i >=0) && ( x <a[i])) {a[i+1]=a[i]; i--;} /*元素后移*/ a[i+1]=x; /*插入元素x*/
output( a, n);/*输出插入后的序列*/ }
输出左下三角的九九口诀表的程序如下:
void main( ) { int i, j; for( i=1; i<=9; i++) { for( j=1; j<=i; j++) printf(“%4d* %d= %2d”, i, j, i*j); printf(“\n”); } }
1
2
8、铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤0.15元计费;如超过50公斤,超过部分每公斤加收0.10元。编一程序实现自动计费功能。
11、将一个数插入到有序的数列中去,要求插入后,仍然保持数列的有序性。李丽娟教材p156题7.38
1、方法与步骤
(1)读入n个数到数组a[N]中(要求N>n)。 (2)对a[n]按递增序进行排序。 (3)输出插入前的有序序列。 (4)读入要插入的数x。 (5)设置游标i从表尾开始搜索插入位置,若a[i]大于x则将a[i]移到a[i+1]位置。 (6)一旦出现a[i]小于x,则将x插入到i+1位置。 (7)输出插入后的有序序列。
2 、编写程序,输入两个整数,求它们相除的余数。用带参的宏来实现。
# define R(A , B) A%B
main( ) { int a , b ; printf( “input a and b:”) ; scanf (“%d,%d” , &a , &b ) ; printf( “%d mod %d = %d\n” , a , b , R( a , b ) ) ; }

C二级试题及答案解析

C二级试题及答案解析

1.以下有4组用户标识符,其中合法的一组是()。

A) For -sub Case B) 4d DO SizeC) f2_G3 IF abc D) WORD void define答案C解析:标识符的命名规则:由字母、数字、下划线组成,第一个字符必须是字母或者下划线,标示符的命名不能同C语言的关键字相同(关键字表格教材第6页)A-sub错误;B,4d错误;Dvoid是关键字。

注意:关键字都是小写的,如果大写就不是关键字了。

2、以下选项中合法的字符常量是()。

A) “B”B) …\010‟C) 68 D) D答案B解析:字符常量使用‘’括起来的。

参考课本24页转义字符书写方法:1.\加上字母;2.\加上1~3位八进制数,这里八进制数以0开头;3.\加上1~2位十六进制数,这里十六进制数以x开头。

例如:‘\n’第一种方法‘\012’第二种方法‘\xa’第三种方法4、设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为()。

A) int B) float C)double D) 不确定答案:C,按照低精度转换成高精度的原则(教材34页)5、.以下程序的输出结果是main(){char c=‘z';printf(“%c”,c-25);}A) a B) Z C) z-25 D) y答案:A解析:方法一:‘z’对应的ASCII码是122,122-25=97,输出的是%c,即字符的形式,97对应小写字母a。

方法二:与小写字母z相差22的就是小写字母a6、设有int x=11; 则表达式(x++ * 1/3) 的值是()。

A)3B) 4C) 11D) 12答案:A解析:x++,先取x的值再乘以1除以3,11*1=11,11/3=3因为都是整形的数据,因此相除之后的结果应该为整形。

7、假设所有变量均为整型,则表达式(a=2, b=5, b++, a+b)的值是()。

A) 7B) 8C) 6D) 2答案:B解析:逗号表达式的值为表达式最右边式子的值,计算过程a=2,b=5,b=b+1=6,a+b=2+6=8;最右边式子是a+b其值为8,因此整个逗号表达式的值为8.8、以下程序的输出结果是()。

c 面试 机试题及答案

c 面试 机试题及答案

c 面试机试题及答案c面试机试题及答案1. 题目一:编写一个程序,输出数字1到100,但对于3的倍数输出“Fizz”,对于5的倍数输出“Buzz”,对于既是3的倍数又是5的倍数输出“FizzBuzz”。

答案:```for i in range(1, 101):if i % 3 == 0 and i % 5 == 0:print("FizzBuzz")elif i % 3 == 0:print("Fizz")elif i % 5 == 0:print("Buzz")else:print(i)```2. 题目二:编写一个程序,判断一个字符串是否是回文串。

回文串是指正序和倒序都相同的字符串。

答案:```def is_palindrome(string):if string == string[::-1]:return Trueelse:return Falsetest_string = input("请输入一个字符串:")if is_palindrome(test_string):print("是回文串")else:print("不是回文串")```3. 题目三:编写一个程序,输入一个整数n,计算并输出斐波那契数列的前n项。

答案:```def fibonacci(n):fib_list = [0, 1]for i in range(2, n):fib_list.append(fib_list[i-1] + fib_list[i-2])return fib_listn = int(input("请输入一个整数n:"))fib_sequence = fibonacci(n)print(fib_sequence)```4. 题目四:编写一个程序,实现冒泡排序算法对一个整数列表进行排序。

C语言程序设计大赛题目和答案

C语言程序设计大赛题目和答案

C语言程序设计大赛题目和答案在C语言程序设计领域,程序设计大赛是一种常见的形式,它旨在考察参赛者的编程能力和解决问题的能力。

本文将介绍一些常见的C 语言程序设计大赛题目和对应的答案,帮助读者了解这些题目的难度和解题思路。

一、题目一:计算数列和题目描述:给定一个正整数n,计算1到n的所有整数的和。

解答思路:可以使用循环结构来解决该问题。

初始化一个累加器sum,然后通过循环依次将1到n的数累加到sum中,最终得到结果。

```c#include <stdio.h>int main() {int n;int sum = 0;printf("请输入一个正整数n:");scanf("%d", &n);for (int i = 1; i <= n; i++) {sum += i;}printf("1到%d的和为:%d\n", n, sum);return 0;}```二、题目二:判断素数题目描述:给定一个正整数n,判断其是否为素数(只能被1和自身整除的数)。

解答思路:可以使用循环结构和条件判断来解决该问题。

通过循环从2到n-1依次判断n是否能被这些数整除,如果能,则n不是素数;如果循环结束后仍然没有找到能整除的数,则n是素数。

```c#include <stdio.h>#include <stdbool.h>bool isPrime(int n) {if (n <= 1) {return false;}for (int i = 2; i < n; i++) {if (n % i == 0) {return false;}}return true;}int main() {int n;printf("请输入一个正整数n:");scanf("%d", &n);if (isPrime(n)) {printf("%d是素数\n", n);} else {printf("%d不是素数\n", n);}return 0;}```三、题目三:矩阵乘法题目描述:给定两个矩阵A和B,计算它们的乘积矩阵C。

蓝桥杯c试题及答案

蓝桥杯c试题及答案

蓝桥杯c试题及答案蓝桥杯是中国最具影响力的计算机科学大赛之一,旨在发掘和培养计算机科学和信息技术领域的优秀人才。

每年,数以万计的学生参加这个激烈的竞赛,争夺奖金和荣誉。

在这里,我将向大家介绍几道经典的蓝桥杯C试题及其答案,希望能对大家有所帮助。

试题一:编写一个C程序,求解两个整数的最大公约数。

```c#include <stdio.h>int gcd(int a, int b){if(b == 0)return a;elsereturn gcd(b, a%b);}int main(){int a, b;printf("请输入两个整数:");scanf("%d %d", &a, &b);printf("最大公约数为:%d", gcd(a, b));return 0;}```试题二:编写一个C程序,判断一个给定的整数是否为素数。

```c#include <stdio.h>#include <math.h>int isPrime(int n){int i;if(n <= 1)return 0;for(i=2; i<=sqrt(n); i++){if(n % i == 0)return 0;}return 1;}int main(){int n;printf("请输入一个整数:");scanf("%d", &n);if(isPrime(n))printf("%d是素数", n);elseprintf("%d不是素数", n);return 0;}```试题三:编写一个C程序,实现二分查找算法。

```c#include <stdio.h>int binarySearch(int arr[], int left, int right, int target){ if(left <= right){int mid = left + (right - left) / 2;if(arr[mid] == target)return mid;if(arr[mid] < target)return binarySearch(arr, mid+1, right, target);return binarySearch(arr, left, mid-1, target);}return -1;}int main(){int arr[] = {2, 4, 6, 8, 10, 12};int target = 6;int n = sizeof(arr)/sizeof(arr[0]);int result = binarySearch(arr, 0, n-1, target);if(result == -1)printf("未找到%d", target);elseprintf("找到%d,索引为%d", target, result);return 0;}```以上是三道经典的蓝桥杯C试题及其解答。

专升本c语言真题及答案解析大全

专升本c语言真题及答案解析大全

专升本c语言真题及答案解析大全C语言真题及答案解析大全随着我国高等教育的普及,越来越多的人选择通过的方式提升自己的学历。

而其中,C语言作为计算机专业的入门语言,是不可或缺的一门课程。

为了帮助考生更好地备考C语言考试,下面将分享一些历年的真题及答案解析。

一、基础部分1. 下面程序的输出结果是什么?#include <stdio.h>int main(){int a = 10;if(a = 0){printf("Hello ");}else{printf("World ");}return 0;}答案解析:该题主要考察的是条件判断语句。

在if语句中,应该使用比较运算符“==”而不是赋值运算符“=”。

因此,if(a = 0)应该修改为if(a == 0)。

正确的输出结果是“Hello”。

2. 下面程序的输出结果是什么?#include <stdio.h>int main(){char str[] = "Hello";char *p = str;printf("%c\n", ++*p++);return 0;}答案解析:该题主要考察的是指针和字符串的操作。

首先,++*p 表示先对指针p所指向的字符进行自增操作,即‘H’变为‘I’。

然后,*p++表示取指针p所指向的字符,并将p后移一个位置,即p指向‘e’。

因此,输出结果为“I”。

二、进阶部分1. 请写出实现快速排序算法的C语言程序。

答案解析:快速排序是常用的排序算法之一。

以下是一个简单的快速排序算法的实现:#include <stdio.h>void quickSort(int arr[], int left, int right){if(left >= right){return;}int i = left;int j = right;int key = arr[left];while(i < j){while(i < j && arr[j] >= key) {j--;}arr[i] = arr[j];while(i < j && arr[i] <= key) {i++;}arr[j] = arr[i];}arr[i] = key;quickSort(arr, left, i - 1);quickSort(arr, i + 1, right);}int main(){int arr[] = {5, 3, 8, 2, 1, 9, 4, 6, 7}; int len = sizeof(arr) / sizeof(arr[0]); quickSort(arr, 0, len - 1);for(int i = 0; i < len; i++){printf("%d ", arr[i]);}return 0;}该程序实现了快速排序算法,通过递归的方式将数组划分为更小的子数组,并将子数组按照规则进行排序,最后得到一个有序的数组。

c趣味编程100例(含答案)

c趣味编程100例(含答案)
else printf(" "); /*其它情况打印空格*/
printf("\n");
}
}
*思考题
如何实现sin(x)曲线与cos(x)曲线图形的同时显示。
3.绘制圆
在屏幕上用“*”画一个空心的圆
Input number10=95
Canceled max score:99
Canceled min score:90
Average score:92
*思考题
题目条件不变,但考虑同时对评委评分进行裁判,即在10个评委中找出最公平(即评
分最接返平均分)和最不公平(即与平均分的差距最大)的评委,程序应该怎样实现?
1.绘制余弦曲线 3
2.绘制余弦曲线和直线 4
3.绘制圆 4
4.歌星大奖赛 5
5.求最大数 6
6.高次方数的尾数 7
8.借书方案知多少 7
9.杨辉三角形 8
10.数制转换 9

13.该存多少钱 13
14.怎样存钱利最大 14
15.捕鱼和分鱼 16
{
m=acos(y)*10; /*计算出y对应的弧度m,乘以10为图形放大倍数*/
for(x=1;x<m;x++)
printf(" ");
printf("*"); /*控制打印左侧的 * 号*/
sum+=integer; /*计算总分*/
if(integer>max)max=integer; /*通过比较筛选出其中的最高分*/
if(integer<min)min=integer; /*通过比较筛选出其中的最低分*/

c面试题目及答案

c面试题目及答案

c面试题目及答案一、自我介绍大家好,我是XXX。

很高兴有机会参加C公司的面试。

我毕业于XXXX大学,专业是XXXX。

在过去的几年里,我一直从事C编程相关的工作,积累了丰富的经验和技能。

我熟悉C语言的语法和特性,能够独立完成C语言开发项目,并具备良好的沟通和团队合作能力。

我对C语言的深入理解和不断学习的态度,使我对C编程有着浓厚的兴趣和极高的热情。

希望我能通过面试,成为贵公司的一员。

二、面试题目及答案1. 什么是C语言?请简要介绍一下C语言的特点。

C语言是一种通用的高级编程语言,由贝尔实验室的丹尼斯·里奇在20世纪70年代初开发而成。

C语言具有以下特点:(1) 结构简洁清晰,具有较高的可读性;(2) 强调了程序员对细节的控制,可以直接操作内存;(3) 具有丰富的运算符和流程控制语句,方便编写复杂的逻辑;(4) 具有模块化的特性,可以通过函数进行模块划分和代码复用;(5) 支持指针操作,有利于对内存资源进行灵活管理。

2. 什么是指针?请简要描述指针在C语言中的作用。

指针是C语言的一个重要概念,它表示内存地址的值。

通过指针,我们可以直接访问和修改内存中的数据,灵活地操作内存资源。

指针在C语言中的作用主要有三个方面:(1) 通过指针,可以在函数之间传递和修改数据,使得函数之间能够更好地协作;(2) 可以通过指针进行动态内存分配和释放,使得程序能够更高效地利用内存;(3) 指针还可以用于数组和字符串的访问,提高对数据的操作效率。

3. 请解释一下C语言中的函数指针及其用途。

函数指针是指向函数的指针变量。

在C语言中,函数指针可以用来存储函数的地址,并且可以通过函数指针调用相应的函数。

函数指针的用途非常广泛,主要包括以下几个方面:(1) 可以将函数指针作为参数传递给其他函数,实现回调函数的功能;(2) 可以将函数指针作为返回值,实现函数的动态调用;(3) 可以使用函数指针数组实现函数的分发和选择;(4) 可以使用函数指针实现函数的动态绑定,提高程序的灵活性和可扩展性。

c语言期末考试题库及详解答案编程题

c语言期末考试题库及详解答案编程题

c语言期末考试题库及详解答案编程题在C语言的期末考试中,编程题是检验学生编程能力和理解力的重要部分。

以下是一些典型的C语言编程题目及其详解答案,供同学们参考和练习。

1. 计算圆的面积编写一个C程序,输入圆的半径,计算并输出圆的面积。

圆的面积计算公式为:\[ \text{面积} = \pi \times \text{半径}^2 \]```c#include <stdio.h>#define PI 3.14159int main() {double radius, area;printf("请输入圆的半径:");scanf("%lf", &radius);area = PI * radius * radius;printf("圆的面积是:%.2lf\n", area);return 0;}```2. 实现简单的学生成绩管理系统编写一个C程序,实现学生成绩的录入、显示、排序和查询功能。

```c#include <stdio.h>#define MAX_STUDENTS 10struct Student {int id;char name[50];float score;};void displayStudents(struct Student students[], int count) {printf("学生ID\t姓名\t成绩\n");for (int i = 0; i < count; i++) {printf("%d\t%s\t%.2f\n", students[i].id,students[i].name, students[i].score);}}int main() {struct Student students[MAX_STUDENTS];int count = 0;// 这里省略了录入和排序的代码,只展示显示和查询功能// ...// 显示所有学生信息displayStudents(students, count);// 查询功能int id;printf("请输入要查询的学生ID:");scanf("%d", &id);for (int i = 0; i < count; i++) {if (students[i].id == id) {printf("学生ID:%d,姓名:%s,成绩:%.2f\n", students[i].id, students[i].name, students[i].score);break;}}return 0;}```3. 实现字符串反转编写一个C程序,输入一个字符串,然后输出其反转后的字符串。

C常见笔习题及答案修订稿

C常见笔习题及答案修订稿

C常见笔习题及答案集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-C++面试题1#include“filename.h”和#include<filename.h>的区别?答:对于#include<filename.h>编译器从标准库开始搜索filename.h对于#include“filename.h”编译器从用户工作路径开始搜索filename.h2头文件的作用是什么?答:一、通过头文件来调用库功能。

在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。

用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。

编译器会从库中提取相应的代码。

二、头文件能加强类型安全检查。

如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则,能大大减轻程序员调试、改错的负担。

3C++函数中值的传递方式有哪几种?答:C++函数的三种传递方式为:值传递、指针传递和引用传递。

4内存的分配方式有几种?答:一、从静态存储区域分配。

内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。

例如全局变量。

二、在栈上创建。

在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。

栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

三、从堆上分配,亦称动态内存分配。

程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。

动态内存的生存期由我们决定,使用非常灵活,但问题也最多。

5实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数;答:双向链表删除一个节点Ptemplate<classtype>voidlist<type>::delnode(intp){intk=1;listnode<type>*ptr,*t;ptr=first;while(ptr->next!=NULL&&k!=p){ptr=ptr->next;k++;}t=ptr->next;cout<<"你已经将数据项"<<t->data<<"删除"<<endl;ptr->next=ptr->next->next;length--;deletet;}在节点P后插入一个节点:template<classtype>boollist<type>::insert(typet,intp){listnode<type>*ptr;ptr=first;intk=1;while(ptr!=NULL&&k<p){ptr=ptr->next;k++;}if(ptr==NULL&&k!=p)returnfalse;else{listnode<type>*tp;tp=newlistnode<type>;tp->data=t;tp->next=ptr->next;ptr->next=tp;length++;returntrue;}}6写一个函数,将其中的\t都转换成4个空格。

C语言编程题精选和答案解析

C语言编程题精选和答案解析

C语言编程题精选和答案解析C语言编程题精选C语言学习 2010-11-30 15:48:25 阅读47 评论0 字号:大中小订阅1. 有函数F(x)=(x+1)2和G(x)=2x+1,输入X值计算F(G(x))的值。

2. 任意输入三个字符,要求首先按逆序输出,然后同行原序输出。

3. 在屏幕上输出如下图案(考虑能否将输出的行数由输入的值来控制):************************4. 在屏幕上输出如下图案(考虑将输出的行数由输入的值来控制):***************5. 编程输出如下格式图形(考虑将输出的行数由输入的值来控制):****************6. 编程输出如下格式图形(考虑将输出的行数由输入的值来控制):********7. 编程输出如下格式图形(考虑将输出的行数由输入的值来控制):****************8. 编程输出如下格式图形(考虑将输出的行数由输入的值来控制):*************************9. 编程输出如下格式图形(考虑将输出的行数由输入的值来控制):****************10. 编程输出如下格式图形(考虑将输出的行数由输入的值来控制):**********************11. 编写打印如下图形的程序(考虑将输出的行数由输入的值来控制): * * * * ** * * * ** * * * ** * * * *12. 编制程序打印如下图形(考虑将输出的行数由输入的值来控制):ABBBCCCCCDDDDDDDEEEEEEEEEFFFFFFFFFFFGGGGGGGGGGGGG13. 编程打印图形(考虑将输出的行数由输入的值来控制):11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 5 6 5 4 3 2 114. 编程打印图形(考虑将输出的行数由输入的值来控制):11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 5 6 5 4 3 2 115. 编程打印图形(考虑将输出的行数由输入的值来控制):1 2 3 4 5 6 5 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 3 2 11 2 3 2 11 2 1116. 编程打印图形(考虑将输出的行数由输入的值来控制):11 11 2 11 3 3 11 4 6 4 11 5 10 10 1 117. 编程打印图形(考虑将输出的行数由输入的值来控制):11 11 2 11 3 3 11 4 6 4 11 5 10 10 1 118. 输入一个大写字母打印菱形。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名:___________ 时间:___________DCCBB AADAD一、选择题(1*10=10)1.如果派生类以proctected方式继承基类,则原基类的protected和public 成员在派生类的访问性分别是:DA.public和public B.public和protected C.protected和public D.protected和protected解析:通过protected方式继承基类后,原基类的私有成员不可访问,而protected和public成员均变成protected成员。

答案:D2.有如下头文件:int F1();static int F2();classs CA{public:int F3();static int F4();};在所描述的函数中,具有隐含this指针的是:CA.F1 B.F2C.F3 D.F4本题考查的是this指针。

this指针式一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。

当对一个对象调用成员函数时,编译程序先将对象的地址赋值给this指针,然后调用成员函数,每次成员函数存取数据成员时,则隐含使用this指针。

this指针是指向对象本身的指针,它只存在于类的非静态成员中。

f1,f2不是成员函数,不存在隐含指针;f4为静态成员函数,也不含有this指针;含有this指针的函数在调用时按thiscall调用约定调用。

故本题答案为C。

3.派生类的成员函数不能访问基类的:CA.共有成员和保护成员B.共有成员C.私有成员D.保护成员本题考查的是继承的类型。

类的继承方式有公有继承、保护继承和私有继承三种方式。

对于公有继承基类中的成员访问属性不变,对于保护和私有继承基类中的成员转换为相应的访问类型。

但是如果基类成员的访问属性为private的,则不能被继承。

故本题答案为C。

4.按照“后进先出”原则组织数据的数据结构是BA.队列B.栈C.双向链表D.二叉树答案为B。

5.下列关于虚函数的说明中,正确的是:BA.从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数C.只能通过指针或者引用调用虚函数D.抽象类中的中的成员函数都是虚函数。

答案为B。

6.已知Value是个类,value是Value的一个对象。

下列以非成员函数形式重载的运算符函数原型中,正确的是:AA.Value operator+(Value v, int i); B.Value operator+(Value v=value, int i);C.Value operator+(Value v, int=0); D.Value operator+(Value v=value, int i=0);7.有如下类的定义:Class MyClass{int value;public:MyClass(int n):value(n){}int getValue() const {return value;}};则类Myclass的构造函数的个数是:AA.1个B.2个C.3个D.4个还有默认拷贝构造函数, 应该选B8.有如下类的定义:class Constants{public:static double GetPI(void){return 3.14159;}};Constants constants;下列各组语句中,能输出3.14159的是:BA.cout<<constants->GetPI();和cout<<Constants::GetPI();B.cout<<constants.GetPI();和cout<<Constants.GetPI();C.cout<<constants->GetPI();和cout<<Constants->GetPI();D.cout<<constants.GetPI();和cout<<Constants::GetPI();9.有如下程序:#include <iostream>using namespace std;class VAC{public:int f() const{return 3;}int f(){return 5;}};int main(){VAC v1;const VAC v2;cout<<v1.f()<<v2.f();return 0;}运行时的输出结果是:AA.53 B.35C.55 D.3310.有如下类声明:class Base{protected:int amount;public:Base(int n = 0):amount(n){}int getAmount() const {return amount;}};class Derived:public Base{protected:int value;public:Derived(int m, int n):value(m),Base(n){}int getData() const {return value + amount;}};已知x是一个Derived对象,则下列表达式中正确的是:BA.x.value + x.getAmount(); B.x.getData() + x.getAmount(); C.x.getData() – x.amount; D.x.value + x.amount;二、填空题(8*2=16)400_ 6 4 4 4 4 return *this _ Dog speak Voice1.下列中a的值是___400_____#define AAA 200#define BBB AAA+100int a= BBB*22. 以下为Windows NT下的32位C++程序,请计算sizeof的值。

char str[] = “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) = ____5_____sizeof ( p ) = ____4___sizeof ( n ) = ____4____void Func ( char str[100]){//请计算sizeof( str ) =___4______}void *p = malloc( 100 );//请计算sizeof ( p ) =_____4____3. 补充完整下面的类定义:class XCH{char* a;public:XCH(char* aa){ //构造函数a=new char[strlen(aa)+1];strcpy(a,aa);}XCH& operator=(const XCH& x){ //重载赋值函数delete []a;a=new char[strlen(x.a)+1];strcpy(a,x.a);______;}~XCH(){delete []a;}};____return *this ____________________________________________________________________4.请写出下面程序的输出结果#include<iostream>using namespace std;class Animal {public:virtual char* getType() const {return "Animal";}virtual char* getVoice() const {return "Voice";}};class Dog:public Animal{public:char* getType() const {return "Dog";}char* getVoice() const { return "Woof";}};void type(Animal& a) {cout<<a.getType();}void speak(Animal a) {cout<<a.getVoice();}int main(){Dog d;type(d);cout<<" speak ";speak(d);cout<<endl;return 0;}______ Dog speak Voice ______________________________三、问答题(5*10+9+15=74)1.编写类String的拷贝构造函数和赋值函数(可以调用C++/C的字符串库函数)(15)。

已知类String的原型为:class String{public:String(const char *str = NULL); // 普通构造函数String(const String &other); // 拷贝构造函数~ String(void); // 析构函数String & operate =(const String &other); // 赋值函数private:char *m_data; // 用于保存字符串};请编写String的上述4个函数。

// String的析构函数String::~String(void) // 3分{delete [] m_data;// 由于m_data是内部数据类型,也可以写成 delete m_data;}// String的普通构造函数String::String(const char *str) // 6分if(str==NULL){m_data = new char[1]; // 若能加 NULL 判断则更好*m_data = ‘\0’;}else{int length = strlen(str);m_data = new char[length+1]; // 若能加 NULL 判断则更好strcpy(m_data, str);}}// 拷贝构造函数String::String(const String &other) // 3分{int length = strlen(other.m_data);m_data = new char[length+1]; // 若能加 NULL 判断则更好 strcpy(m_data, other.m_data);}// 赋值函数String & String::operate =(const String &other) // 13分{// (1) 检查自赋值 // 4分if(this == &other)return *this;// (2) 释放原有的内存资源 // 3分delete [] m_data;// (3)分配新的内存资源,并复制内容 // 3分int length = strlen(other.m_data);m_data = new char[length+1]; // 若能加 NULL 判断则更好 strcpy(m_data, other.m_data);// (4)返回本对象的引用 // 3分return *this;}2.不调用C++/C的字符串库函数,请编写函数strcmp的实现(10)。

相关文档
最新文档