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.这就是回文的拓展啊,写一个递归调用,两个指针分别指向首字符和末尾字符,传递字符串指针和这两个参数。
2.%
3.6,虽然没有初始化,但是已经分配空间了,6个字节。
4.2、3、4,pw是指向一维数组的指针,w[x]也可以看作是。
5.不会,我的方法太笨,毫无效率
6.这就是回文的拓展啊,写一个递归调用,两个指针分别指向首字符和末尾字符,传递字符串指针和这两个参数。
7.
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.
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);
|
#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));
}