只是部分题目,凭记忆,仅供参考!
1、
#include <stdio.h> 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 <stdio.h> #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 <stdio.h> int main(void) { int a = -1; int b = 1; printf("%d,%+d\n",a,a); return 0; }
#include <stdio.h> 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 <stdio.h> #include <ctype.h> int main(void) { char *s="Hello, World!"; int i; printf("%s\n",s); for(i=0;i<strlen(s);i++) { putchar(toupper(s[i])); } getchar(); return 0; }
// 转换成大写 , 函数参数为字符数组 // 利用字符串数组的结尾都是 \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 <ctype.h> 功能:判断字符c是否为空白符 说明:当c为空白符时,返回非零值,否则返回零。 空白符指空格、水平制表、垂直制表、换页、回车和换行符。 举例: // isspace.c #include <syslib.h> #include <ctype.h> main() { char s[]="Test Line 1\tend\nTest Line 2\r"; int i; clrscr(); // clear screen for(i=0;i<strlen(s);i++) { if(isspace(s[i])) putchar('.'); else putchar(s[i]); } getchar(); return 0; }