宇视


1、下列代码输出结果为:

  #include<stdio.h>
union{
int i;
char x[2];
}a;
void main(){
a.x[0]=10;
a.x[1]=1;
printf("%d",a.i);
}


2、比较下列哪个运算符优先级最高?  %   $amp;<amp;<amp;$nbsp; <=  $amp;<amp;$lt;=
3、char arr[6]; sizeof(arr)是多少?
char filename[]="/etc/passwd"; sizeof(filename)是多少?
sizeof("a")是多少?
4、int w[2][3],(*pw)[3],下列哪些可以作为对数组w中元素的引用?
*(pw+1)   *(w[0]+2)  pw[0][0]   *(pw[1]+2)
5、一个链表,长度未知,怎么找出中间节点的位置?表结构和函数体自定义
6、找出一个字符串中包含的最长的对称字符串,并返回长度,比如“abccba”和“abcdcba”均为对称字符串
7、6个瓶子,装两种油,一种油的价格是另一种的double,容量分别为8,13,15,17,19,31,分别用相等的钱买这两种油,最后剩下一瓶,剩下的一瓶为:13,15,17,19?



======================
1.因为int i,所以这个单元有4个字节。赋值后,a.x[0]占用了低端第一个字节,所以为0000 1010;a.x[1]占用了他上面一个字节,为0000 0001,连起来就是 0000 0001 0000 1010,换算成十进制就是266.
2.%
3.6,虽然没有初始化,但是已经分配空间了,6个字节。
4.2、3、4,pw是指向一维数组的指针,w[x]也可以看作是。
5.不会,我的方法太笨,毫无效率
6.这就是回文的拓展啊,写一个递归调用,两个指针分别指向首字符和末尾字符,传递字符串指针和这两个参数。
1.因为int i,所以这个单元有4个字节。赋值后,a.x[0]占用了低端第一个字节,所以为0000 1010;a.x[1]占用了他上面一个字节,为0000 0001,连起来就是 0000 0001 0000 1010,换算成十进制就是266.
2.%
3.6,虽然没有初始化,但是已经分配空间了,6个字节。
4.2、3、4,pw是指向一维数组的指针,w[x]也可以看作是。
5.不会,我的方法太笨,毫无效率
6.这就是回文的拓展啊,写一个递归调用,两个指针分别指向首字符和末尾字符,传递字符串指针和这两个参数。
7.
C/C++ code
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int cache[6]={8,13,15,17,19,31};
    int sum6=8+13+15+17+19+31;
    int left,sum2,sum3;
    for(int i=0;i<5;i++)
    {
        for (int j=i+1;j<6;j++)
        {
            sum2=cache[i]+cache[j];
            for(int k=0;k<6;k++)
            {
                if(k!=i && k!=j)
                {
                sum3=sum6-sum2-cache[k];
                if((sum3/sum2==2 && sum3%sum2==0))left=cache[k];
                }
  
            }
  
  
        }
    }
    printf("result is %d\n",left);

7.
C/C++ code
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int cache[6]={8,13,15,17,19,31};
    int sum6=8+13+15+17+19+31;
    int left,sum2,sum3;
    for(int i=0;i<5;i++)
    {
        for (int j=i+1;j<6;j++)
        {
            sum2=cache[i]+cache[j];
            for(int k=0;k<6;k++)
            {
                if(k!=i && k!=j)
                {
                sum3=sum6-sum2-cache[k];
                if((sum3/sum2==2 && sum3%sum2==0))left=cache[k];
                }
  
            }
  
  
        }
    }
    printf("result is %d\n",left);
5. 两个指针先指向头结点,其中一个指针每次走一步,另一个指针每次走两步。当第二个指针走到末尾时,第一个指针就在中间。
 
welly000     2014-03-12        
评价(0)(0)(0)
 
第6题

  #include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include <stdbool.h>
static bool ispalindrome(char *str,int len);
int palindromes(char *str);
int main()
{
    char *str="abcdcbfg";
    int c=palindromes(str);
    printf("%d\n",c);
    return 0;
}


int palindromes(char *str)
{
    int len=strlen(str);
    int maxlength=0;
    int length;
    for(int i=0;i<len-1;i++)
    {
        for(int j=i+1;j<len;j++)
        {
            if(str[i]==str[j] && ispalindrome(str+i,j-i+1))
            {
                length=j-i+1;
                if(maxlength<length)maxlength=length;
            }
        }
    }
    return maxlength;

}

static bool ispalindrome(char *str,int len)
{
    if(len<=1)
        return true;
    else
        return (str[0]==str[len-1] && ispalindrome(str+1,len-2));

}



posted @ 2014-09-11 13:44  周先森  阅读(392)  评论(0编辑  收藏  举报