一个节点上,基于TCP和UDP的应用端口号可以重叠
1、请指出下面程序的错误
unsigned char i = 10;
char b = 100;
char *p
void f(void)
{
while(–i >= 0)
{
*(p++) = b;
}
}
2、下面函数要实现打印hello world的功能,请问程序中有何错误?
void* GetMemory()
{
char str[] = ”hello world”;
return str;
}
void Test()
{
char *str = NULL;
str = (char*) GetMemory();
printf(str);
}
3、请问如下代码有什么错误?
#define MAX_SIZE 1000
#define NULL 0
#define TRUE 1
#define FALSE 0
struct XXX
{
unsigned short a;
unsigned short b;
};
int demo(struct XXX *p, unsigned long size)
{
struct XXX *temp;
temp=(struct XXX*)malloc(sizeof(struct XXX)*MAX_SIZE);
if (NULL == temp)
{
return FALSE;
}
memcpy(temp, p, sizeof(struct XXX)*size);
/*其他操作*/
free (temp);
return TRUE;
}
4、如下程序用于把“blue”字符串返回,请指出其中的错误。
char *GetBlue()
{
char* pcColor;
char* pcNewColor;
pcColor = ”blue”;
pcNewColor = (char*)malloc(strlen(pColor));
strcpy(pcNewColor, pcColor);
return pcNewColor;
}
5、请问如下程序段有什么错误?
main()
{
unsigned long i = 0, *p, *p1;
p = (unsigned long *)malloc(10000);
p1 = p;
for(i = 0; i < 9999; i++)
{
*p1 = 0×100;
p1++;
}
/*其他操作*/
free(p);
}
1、对称数判断问题
请编写一段程序,判断一个正整数是否为对称数(对称数即左右对称的数字,如3、22、121、1331、34543等),不允许利用C语言将数字转换为字符转的库函数。
2、排队队列问题
n个人,排成1队,(p1,p2,p3…pn)从第一个人开始从1报数,报数到3的人离开队列,队列里的下一个人继续从1开始报数,以此反复,当数到队列尾时,从队列头部继续报数,这样周而复始,知道队列剩一人。
给一个简单的例:
报数结果如下:
1,2,4,5,7,第一轮,3、6离开队列,7报数1,然后从队列头部继续报数,那么第一个人报数2,如此1,4,5,这样第二轮,位置2和位置7离开队列,并且从队列头部继续报数,第一个人报数1,因为队列尾部的7恰好报数到3.
1,2,这样第三轮,5被淘汰;
然后开始位置1的人报数1,最后位置1正好报数3,于是离开队列,最后剩下的人是2。
这样给定7个人,原始位置2的人是剩下的人。
请事先一个简单程序,实现上述问题,程序输入n,输出那个最后剩下的人的原始位置。