写一个程序来检查C语言编程中的调色板数量
#include<stdio.h>#include<conio.h>main(){int n,r,sum=0,temp;clrscr();printf("enter the number=");scanf("%d",&n);
temp=n;while(n>0){
r=n%10;
sum=(sum*10)+r;
n=n/10;}if(temp==sum)printf("palindrome number ");elseprintf("not palindrome");getch();}
什么是preprocessor directives
Preprocessor directives一般放在程序的开头。主要是用来指定调用库文件的。还有一个用途是用来定义一些常值变量,宏定义等等
STL迭代器如何实现
迭代器是一种抽象的设计理念,通过迭代器可以在不了解容器内部原理的情况下遍历容器,除此之外,STL中迭代器一个最重要的作用就是作为容器与STL算法的粘合剂。
迭代器的作用就是提供一个遍历容器内部所有元素的接口,因此迭代器内部必须保存一个与容器相关联的指针,然后重载各种运算操作来遍历,其中最重要的是*运算符与->运算符,以及++、--等可能需要重载的运算符重载。这和C++中的智能指针很像,智能指针也是将一个指针封装,然后通过引用计数或是其他方法完成自动释放内存的功能。
最常用的迭代器的相应型别有五种:value type、difference type、pointer、reference、iterator catagoly;
写一个程序来打印给定数字的阶乘(不使用递归)
#include<stdio.h>#include<conio.h>voidmain(){int i,fact=1,number;clrscr();printf("Enter a number: ");scanf("%d",&number);for(i=1;i<=number;i++){
fact=fact*i;}printf("Factorial of %d is: %d",number,fact);getch();}
这样赋值对不对?错在哪里
myName="test";不对。我们不能用等号给一个字符串赋值。需要使用strcpy
STL中list与queue之间的区别
list不再能够像vector一样以普通指针作为迭代器,因为其节点不保证在存储空间中连续存在;
list插入操作和结合才做都不会造成原有的list迭代器失效;
list不仅是一个双向链表,而且还是一个环状双向链表,所以它只需要一个指针;
list不像vector那样有可能在空间不足时做重新配置、数据移动的操作,所以插入前的所有迭代器在插入操作之后都仍然有效;
deque是一种双向开口的连续线性空间,所谓双向开口,意思是可以在头尾两端分别做元素的插入和删除操作;可以在头尾两端分别做元素的插入和删除操作;
deque和vector最大的差异,一在于deque允许常数时间内对起头端进行元素的插入或移除操作,二在于deque没有所谓容量概念,因为它是动态地以分段连续空间组合而成,随时可以增加一段新的空间并链接起来,deque没有所谓的空间保留功能。
写一个程序用递归法打印给定数字的阶乘
#include<stdio.h>#include<conio.h>longfactorial(int n)// function to calculate the factorial of a given number. {if(n ==0)return1;elsereturn(n *factorial(n-1));//calling the function recursively. }voidmain(){int number;//declaration of variables. long fact;clrscr();printf("Enter a number: ");scanf("%d",&number);
fact =factorial(number);//calling a function. printf("Factorial of %d is %ld
", number, fact);getch();//It reads a character from the keyword. }
为什么c语言被认为是中级语言
这是因为c语言既能像高级语言那样编写程序,又可以像低级语言如汇编那样直接操作硬件
野指针是什么?如何检测内存泄漏
野指针:指向内存被释放的内存或者没有访问权限的内存的指针。
“野指针”的成因主要有3种:
指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。例如
char *p = NULL;
char *str = new char(100);
指针p被free或者delete之后,没有置为NULL;
指针操作超越了变量的作用范围