只是部分题目,凭记忆,仅供参考!
1、
#include
int main(void)
{
int a[100][200];
printf("%d\n",&a[37][45]-&a[0][3]);//37*200+(45-3)=7442,这里两个求的就是两个元素的距离
return 0;
}
//32位,最右边的是第一位下标为0,n<31
#include
#define SETBIT_0(a,n) (a & ~(0x0001 << (n)))//将第n位置0
#define SETBIT_1(a,n) (a | (0x0001 << n))//将第n位设置1
int main(void)
{
int a = 10;
int b = 10;
a = SETBIT_0(a,3);
b = SETBIT_1(b,0);
printf("%d,%d\n",a,b);
return 0;
}
3、打印n=-1,输出-1,n= +1时,输出+1;
#include
int main(void)
{
int a = -1;
int b = 1;
printf("%d,%+d\n",a,a);
return 0;
}
#include
int main(void)
{
int (*ptr)[5] = (int(*)[5])100;
printf("%d\n",(int)(&(*(ptr+1))[2]));//答案128
return 0;
}
ptr+1 = 100+4*5 = 120;
(*(ptr+1))[2] = “ptr下一个单元的指向下标为2的元素内容的某个值”
&(*(ptr+1))[2],去这个值的地址
5、一个小写字母转换成大写之母的库函数
extern int toupper(int c);
#include
#include
int main(void)
{
char *s="Hello, World!";
int i;
printf("%s\n",s);
for(i=0;i
// 转换成大写 , 函数参数为字符数组
// 利用字符串数组的结尾都是 \0
void ToUpper(chars[])
{
int i=0;
while(s[i++]!='\0' )
{
// 判断是否是小写字母
if(s[i]>='a' && s[i]<='z' )
s[i] -= 32; // 小写字母比大写字母的 ASCII 大 32
}
}
// 转换成大写 , 函数参数为字符指针
void ToUpperPtr(char* s)
{
while(*s != '\0')
{
// 判断是否是小写字母
if(*s >='a' && *s <='z')
*s -= 32; // 小写字母比大写字母的 ASCII 大 32
s++; // 指针的地址 ++
}
}
6、有个三维数组的题忘了,希望有人补充
int main(void)
{
int p[3][4][5];
int *q = (int *)p;
int (*s)[5] = &p[1][0];
int i,m;
for(i = 0; i < 60; i++)
q[i] = i;
printf("%d\n",p[1][7][1]*(*(s+1)[3]));
return 0;
}
7、程序填空
内核中list.h中内核的插入节点的函数
static inline void __list_add(struct list_head *new,
struct list_head *prev,
struct list_head *next)
{
next->prev = new;//head->next->prev,图中的1即第1步
new->next = next;//图中的1即第2步
new->prev = prev;//图中的1即第3步
prev->next = new;//head->next,//图中的1即第4步,包括打黑X的部分
}
http://blog.csdn.net/hubi0952/article/details/7720462这里讲的很清楚
8、程序填空
strcmp函数的填空,答案是return (c1-c2)
9、strstrip()
C标准库没有提供,但经常用到一个字符串相关函数
原型:char *strstrip(char *s)
参数:s是一个字符串
返回值:返回一个字符串
功能:去掉字符串s中的前后空白符(制表符、空格、回车等),并将该字符串返回。
一种实现:
char *strstrip(char *s)
{
size_t size;
char *end;
size = strlen(s);
if (!size)
return s;
end = s + size - 1;
while (end >= s && isspace(*end))
end--;
*(end + 1) = '\0';
while (*s && isspace(*s))
s++;
return s;
}
原型:extern int isspace(int c);
用法:#include
功能:判断字符c是否为空白符
说明:当c为空白符时,返回非零值,否则返回零。
空白符指空格、水平制表、垂直制表、换页、回车和换行符。
举例:
// isspace.c
#include
#include
main()
{
char s[]="Test Line 1\tend\nTest Line 2\r";
int i;
clrscr(); // clear screen
for(i=0;i