宇视


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));

}



转载于:https://www.cnblogs.com/zhouxiansheng/p/3966302.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值