一、 选择题
1.若需建立如图所示的存储结构,且以说明float*p,m=1.234;则正确的赋值语句是()
P↓
1.234
A)p=m; B)p=&m; C)*p=m; D)*p=&m;
2.对两个数组A和B进行如下初始化,则以下叙述正确的是()
char A[]=”ABCDEG”;
char B[]={‘A’,’B’,’C’,’D’,’E’,’G’};
A) A与B数组完全相同 B)A与B完全相同
C) A和B都存放字符串 D)A数组比B数组长度长
3.以下在任何情况下计算平方数时都不会引起二义性的宏定义是()
A) #define POWER(x)x*x B) #difine POWER(x)(x)*(x)
C) #define POWER(x)(x*x) D) #difine POWER(x)((x)*(x))
4.语句int(*ptr)();的含义是()
A) ptr是指向一维数组的指针变量;
B) ptr 是指向int型的指针变量
C) ptr 是指向函数的指针,该函数返回一个int型数据
D) ptr 是一个函数名,该函数的返回值是指向int型数据的指针
5.语句while(!E);中的表达式!E等价于()
A) E==0; B) E!=1; C) E!=0; D) E==1;
6.在32位4字节对齐环境下,sizeof(struct tagTest)等于()
Struct tagTest
{
Short lA;
Char cB;
}
A) 4 B) 8 C) 3 D) Unknown
7.请选择以下代码输出结果()
int Arr[3]={1,2,3};
int *p=(int *)(&Arr+1);
printf(“%d %d”, *(Arr+1),*(p-1));
A)21 B)22 C)23 D)未知
8.程序输出结果()
void funcA(){
int lRet = 0;
for(i=0;i<3;i++)
{
lRet = FuncA(i);
}
Printf(“lRet = %d”,lRet);
}
A)34 B) 33 C) 21 D)未知
9. sizeof(str)等于()
void func(char str[100])
{
Printf(“%d”,sizeof(str));
}
A) 100 B) 4 C) 8 D) 未知
10. strlen(aa)等于()
void main()
{
Char aa[10];
Printf(“%d”,strlen(aa));
}
A) 10 B) 4 C) 12 D)未知
二、 判断题
1. 全局变量(global)和初始化了的静态变量(static)放在代码段中 ()
2. 堆(heap)就是通常我们说的动态内存分配,它用来管理动态内存的 ()
3. 函数的局部变量和参数在stack中()
4. switch(c)语句中c可以是int,long,char,float,unsigned int类型。()
5. 在嵌入式32位CPU环境下,四字节对齐能提高访问效率。()
三、程序改错题
1. int main(void)
{
Unsigned char index = 0;
While(index < 256)
{
index +=index;
index++;
}
Printf(“index value %d\n”,index);
Return 0;
}
2. char*f()
{
Char s[4]={‘1’,’2’,’3’,’0’};
Return s;
}
Void main()
{
Char *s;
s=f();
printf(“%s”,s);
}
3. void GetMenory(char**p)
{
*p = (char*)malloc(100);
}
Void Test(void)
{
char*str = NULL;
GetMemory(&str);
strcpy(str,”hello morld”);
printf(str);
}
4. void main(void)
{
char src_str[10]=
{‘T’,’H’,’I’,’S’,’I’,’S’,’t’,’h’,’e’,’s’};
char dest_str[10];
strcpy(dest_str,src_str);
}
5. void main(void)
{
char src_str[10],dest_str[10];
for(int i=0;i<10;i++)
{
src_str[i]=i+’0’;
}
strcopy(dest_str,src_str);
printf(“%s”,src_str);
}
四. Struct TEMP_TAG
{
int nCount;
struct TEMP_TAG*next;
}
往链表PstHead位置k后面增加一个nCount为10的节点,头节点位置为1,成功返回0,失败返回非0,int InsertNode(struct TEMP_TAG*PstHead,int k);
五. 写一个函数,判断一个正数是否为对称数,如果是返回0,不是返
第五题题目
五. 判断一个正数是否为对称数,如果是返回0,不是返回1,(不允许调用c库字符串转换相关函数),如11,121,1221就是对称的。
谢谢哈,第8题的题目有点问题,
就是第四大题能不能帮我写下,动态和静态哪个简单就写哪个,
还有第四和第五的代码能帮我带点语句后面的注释吗
非常感谢
int judgment(int a[],int length )//这个函数是判断是否对称的
{
for(int i=0;i=10);//当整数被程序截成一个一位数的时候循环结束,但此时那个一位数我们还没有保存到数组中来,所以通过下面一个语句来保存
a[length]=num;//保存被do-while循环遗漏的那一位数字
if( judgment(a,length))
printf("是\n");
}
//////////////////////////////////
关于第四大题,你再追问一次吧,因为这次我回答的字数被限制了,我怕问题不能很完整的给你写出来。我对第四大题的理解是这样的,就是已经存在了一个链表,我们需要做的就只是在这个链表的第K个节点去增加一个节点,并且增加的那个节点ncount 值为10,对吗?
同时,关于第五题的叙述方面如果有什么不清楚的地方,你可以继续提出来,毕竟只有彻底的理解程序的思想才能掌握相应的知识。
恩,非常感谢呵呵
追答int insertHead(struct TEMP_TAG *pstHead,int k)
{
struct TEMP_TAG *p=pstHead;
if(knext;
}
if(k>i)//如果K的值大于当前链表的总结点个数,就无法完成第K的结点的插入,返回0
return 0;
p=pstHead;//使指针P再次指向链表的头结点
for(i=0;inext;
struct pstHead *q;
q=(struct pstHead*)malloc(sizeof(struct TEMP_TAG));//新建一个结点
q->nCount=10;//对新建结点中的nCount成员变量赋值为10
//以下两个语句是完成结点的插入
q->next=p->next;
p->next=q;
return 1;//成功完成插入返回值1
}
如果这道题有什么不懂的地方或者程序本身存在不妥之处,请随时指出,最后问一句,你是什么专业的啊?
我是学信息工程的,呵呵谢谢你啦