http://blog.csdn.net/eddy_0825/article/details/1875566
现在的公司招聘 在这里1. 下面这段代码的输出是多少 char *p;
char *q[20];
char *m[20][20];
int (*n)[10];
struct MyStruct
{
char dda;
double dda1;
int type ;
};
MyStruct k;
printf(“%d %d %d %d”,sizeof(p),sizeof(q),sizeof(m),sizeof(n),sizeof(k));
答案:(1)
char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}} };
for(int i=0;i
printf(“%d “,__a[0][0][i]_);
在空格处填上合适的语句,顺序打印出(2)
char **p, a[16][8];
问:3.用递归方式 函数原型如下非递归方式:
char *reverse(char *str)
{
if(str!=NULL)
{
int length = strlen(str);
for(int i=0;i
{
char temp=str[i];
str[i]= str[length-1];
str[length-1] =temp;
}
}
printf(“%s/n”,str);
}
递归方式:搞不定
char *reverse(char *str)
{
if(str==NULL||strlen(str)==1)
return str;
int i;
if(i==1)
str[i] = ‘/0’;
return str[i];
。。。。
}
4.strcpy函数和 memcpy函数:拷贝任何数据
5.写一个函数将一个链表逆序 答:简单
答: {
int a;
struct linknode *next;
}linknode;
linknode *findmiddle(linknode *head)
{
linknode *fast,*low,*p;
if(head==NULL)
{
return NULL;
}
fast=low=head;
while(!(p=fast->next)&&!p->next)
{
low=low->next;
fast=p->next;
}
return low;
}
7 写一个函数找出一个单向链表的倒数第 答:两个指针,第一个先于第二个 LinkNode IsLoopList(LinkNode *head,int n)
{
LinkNode *p1,*p2,*p3;
P1 = head;
While(n–>=0)
{
P3= p2->next;
P2 = p3;
}
While(p3->next!=NULL)
{
P3 = p3->next;
P1 = p1->next;
}
Return p1; //当 }
8补充一题:
给你一个单向链表的头指针,可能最后不是
0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> (3) 循环,就应该返回结点
当然尽量用少的空间和时间是题目的要求。
答:
10.判断链表是否循环;
答:{
LinkNode *p1= head,*p2= head;
if(head ->next==NULL)//只包含头节点,且头节点的 return false;
do{
p1=p1->next; //步长为 p2=p2->next->next; //步长为 }while(p2 && p2->next && p1!=p2);
if(p1==p2)
return true;
else
return false;
}
11.用递归算法判断数组#include
#include
#define N 5
int Judgment(int a[]);
int main()
{
int a[N], i, flag = 1;
printf(“Enter array data: “);
for (i = 0; i {
scanf(“%d”, &a[i]); //输入数组元素。
}
flag = Judgment(a); //调用递归函数
if (flag == 1)
{
printf(“increment array./n”);
}
else if (flag == 0)
{
printf(“no increment array./n”);
}
getch();
return 0;
}
int Judgment(int a[])
{
static i = 0; //注意这个是静态变量,必须用 if(i {
if (a[i] > a[i + 1])
{
return 0;
}
i++;
Judgment(a);
}
return 1;
}
非递归算法:
#include
#include
#define N 5
int Judgment(int a[], int num);
int main()
{
int a[N], i, flag = 1;
printf(“Enter array data: “);
for (i = 0; i {
scanf(“%d”, &a[i]);
}
flag = Judgment(a, N);
if (flag == 1)
{
printf(“increment array./n”);
}
else if (flag == 0)
{
printf(“no increment array./n”);
}
getch();
return 0;
}
int Judgment(int a[], int num)
{
static i = 0, flag = 1;
for(i=0; i
if (a[i] >= a[i+1]) //假如发现哪两个不是递增;
{
flag = 0;
break;
}
}
return flag;
}
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!