1.该代码输出为xiyoulinux
解释:
1.每两位16进制数字组成一个Ascil码,表示出一个字符。该计算机存储数据的模式为小端模式,数据的高位存放在高地址上。
2.((char*)&num+i)说明每次对相对与num首地址偏移量为i*1的地址进行间接访问读取。
等所有数据都被读取后,ch取到' ',退出for循环。
2.方法1:给return 0;语句前加上这样一段代码
int *pb=&b;
*pb=5;
3. a[1][1]的值变为100
解释:
struct node大小为12,struct n大小为8,为node类型数组a的首地址加上2*8,便到了a[1][1]这个位置。
4.输出结果为:
hello world
8
11
12
11
解释:
1,字符数组传到函数中后,编译器将a当作指针处理,所以a所占字节数变成了8,但字符长度仍可通过指针正确地读取到,即为11.
2.在主函数中字符串的字节数即为它的长度加1,即12.
5.输出结果为
12
f(1,2)
解释:
1.##表示间接两侧的符号,所以f(1,2)运行结果为12。,#的作用是将操作对象变为字符串,即将其原样输出,得到输出结果12.
2.宏函数本应该是先分析内部函数再分析外部函数,但是在外部函数的实现中存在’#‘运算符,那么就先执行外部函数,在此例中,将f(1,2)转化为了字符串直接输出。
6.废话不多说,直接上代码。
#include
#include
int cmp(int* p1,int* p2)
{
return *p1-*p2;
}
int main(void)
{
int dg[100]={1,2,3,1,4,5,645,75,75,87,5678,785,76,76,4};
int sum=0,i=0,p1,p2,p3,j,judge=0;
while(dg[i])
{
sum+=dg[i];
i++;
}//i is sum_count
qsort(dg,i,4,cmp);
if(sum%2==1)
{
printf("No");
return 0;
}
sum=sum/2;
for(p1=0;p1
p2=p1;
p3=i-1;
while(p2
int sum1=0;
for(j=p2;j<=p3;j++)
sum1+=dg[j];
if(sum==sum1)
{
judge=1;
goto here;
}
else if(sum1
else
p3--;
}
}here:
if(judge)
printf("Yes");
else
printf("No");
return 0;
}
7.
#include "stdio.h"
#include "string.h"
//字符串单词逆序并输出
void wordnixu(char *start,char *end);
char* setence(char *str);
int main()
{
char str[100];
printf("输入字符串:");
gets(str);
printf("%sn",str);
char* p=setence(str);
int sign=0;
for(int i=0;i { if(*(p+i)!=' '||(*(p+i+1)!=' '&&sign==1)) { sign=1; printf("%c",*(p+i)); } } return 0; } void wordnixu(char *start,char *end)//一个单词字符逆序,不包括空格字符 { char jiaohuan; while(start { jiaohuan=*start; *start++=*end; *end--=jiaohuan; } } char* setence(char *str)//1、句子的单词先内部逆序/2、之后再把句子看做单词整体逆序即可得到逆序单词输出 { char *start=str;//指向串内部单词首字符 char *p=str;//指向串的首地址,作为整体逆序的首地址 while(*str!=' ') { if(*str==' ') { wordnixu(start,str-1);//串内单词内部逆序 start=++str;//指向下一个单词的首地址,需要特别注意地址的操作++,与-- } else str++; } wordnixu(start,str-1);//把最后一个单词逆序逆序 wordnixu(p,str-1);//以整个串为单词逆序 return p;//返回首地址 } 8.func(s)应改为func(&s),给函数传递指针的地址,这样才能让指针重新指向其他的地方。 9.假设给定的链表头为pa,且旁边,pb,pc皆为该结构体类型的指针。 pc=pa->next; pa->next=NULL; while(pc) { pc=pc->next; pb->next=pa; pa=pb; } 10.输出为 ffffffff ff 255 unsigned表明只能表示非负数,原本的负数首先转化为二进制补码形式,再将最高位(即符号位)变为0,这样,一个负数便在unsigned的加持下变成了非负数。
pb=pc;



