题1:有如下程序:
#define double(x) x+x
i = 5 * double(5);
i的值是多少?并说明为什么?
30,i = 5 * 5 + 5;
题2:定义了unsigned int i;unsigned char *p; ,p指向内存一地址。现在要比较i所在4个字节和p指向的连续4个字节的内容是否一样。
请依题意写出**片断。
unsigned char *q=(unsigned char *)i;
if((q[0] =p[0]) q[1] =p[1]) q[2] =p[2]) q[3] =p[3]))
题3:有如下函数声明:
char str1[16] =evideo";
char str2 evideo";
int *p1=(int *)malloc(32);
char *p2=(char *)p1;
void *p3=(void *)p1;
则sizeof(str1) +sizeof(str2), sizeof(p1) +sizeof(p2) +sizeof(p3)分别为多少?
题4:用指针的方法实现函数来删除字符串的头部和尾部的空格字符。(ps:空格字符识别请用标准c库的isspace函数)
函数原型:char *trim(char *s);
char *trim(char *str)
char *p;
while (*str &&isspace(*str))
str++;
p = str + strlen(str) -1;
while (p > str &&isspace(*p))
return str;
题5:下面每种情况中*ptr和*(ptr+2)的值分别是什么?
a.int *ptr;
int torf[2][2] =
ptr = torf[0];
b.int *ptr;
int fort[2][2] =
ptr = fort[0];
题6:阅读以下程序并在vc6中执行:输入a,b,c3个整数,按从大到小输出。
#include <>
void main( )
void exchange(int *q1, int *q2, int *q3);
int a, b, c, *p1, *p2, *p3;
scanf("%d,%d,%d", a, &b, &c);
p1 = a;
p2 = b;
p3 = c;
exchange(p1, p2, p3);
printf("%d, %d, %d",a, b, c);
void exchange(int *q1, int *q2, int *q3)
void swap(int *pt1, int *pt2);
if(*q1 < q2)
swap(q1, q2);
if(*q1 < q3)
swap(q1, q3);
if(*q2 < q3)
swap(q2, q3);
void swap(int *pt1, int *pt2)
int temp;
temp = pt1;
*pt1 = pt2;
*pt2 = temp;
题7:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?
#include <>
#define nmax 50
main()
int i,k,m,n,num[nmax] =p;
printf("please input the total of numbers:")
scanf("%d",&n);
p=num;
for(i=0; ip + i ) i+1;
i=0;k=0;
m=0;while(m
i++;if(i==n) i=0;
while(*p==0) p++;
printf("%d is left",*p);
题8:继续扩展第一次作业题9中的文件的宏定义。
arr2_num(a)(返回二维数组的元素个数)、arr2_col_num(a)(返回二维数组的行数)、arr2_row_num(a)(返回二维数组的行数)arr2_pos(a)(返回二维数组元素相对首地址的偏移量)
#define arr2_num(a) (sizeof((a))/sizeof((a)[0][0]))
#define arr2_col_num(a) (sizeof((a)[0])/sizeof((a)[0][0]))
#define arr2_row_num(a) (sizeof((a))/sizeof((a)[0]))
#define arr2_pos(a, i, j) (i) *arr2_col_num((a)) j))
C语言复习2答案
复习考试模拟题。填空。1定义语句 int x float y 后,变量x 的最大取值为 32767 变量y 在内存占 4 个字节。2 在下面程序的每条语句后面用文字说明语句。include void main 3 将128用c语言的十六进制表示为 80h 4 将x定义为双精度浮点型变量 double...
C语言答案第2章
第2章。2.1略。2.2合法常量分别是 20 0.5 012 8e4 5.0x6a ok a 012 a b 2.3合法的变量名有 abc123 abc a b c abc int i,j错误,数据类型错误。float a,b 正确。int a,b float a,b 错误,变量重复定义。float...
C语言模拟试卷2 带答案
单选题 1 执行下面的程序段后,变量k中的值为。s 0 k k s 1 10 a.不定值 b.33 c.30 d.10答案 a 2 设有以下定义 define n 3 define y n n 1 n 则执行语句 z 2 n y 5 1 后,z的值为 2 3 4 5 1 a.出错。b.42c.48 ...