一、程序编写题
1.函数checkstr判断一个字符串是不是对称的,如:“abccba”是对称的,"abccbaa"则不是对称的。函数声明如下,其中msg为输入的字符串,对称返回0,不对称返回-1,请实现该函数。
int checkstr(const char *msg);
答:
- int checkstr(const char *msg)
- {
- int i = 0, len;
- while(msg[i] != '\0')i++;
- len = i;
- for(i = 0; i < len/2; i++)
- if(msg[i] != msg[len-i-1])
- return -1;
- return 0;
- }
2.给出一个单向链表的头指针,输出该链表中倒数第k个节点的指针。链表的倒数第0个节点为链表的尾结点(尾结点的next成员为NULL)。
函数findnode实现上述功能,链表节点定义及函数声明如下,请实现函数findnode。
- typedef struct Node
- {
- struct Node *next;
- }Node;
- Node* findnode(Node *head, unsigned int k);
答:
- Node* findnode(Node *head, unsigned int k)
- {
- int cnt = 0;
- Node *p = head;
- while(p)
- {
- cnt++;
- p = p->next;
- }
- if(cnt < k)
- return NULL;
- cnt = cnt - k - 1;
- p = head;
- while(cnt--)
- p = p->next;
- return p;
- }
二、程序填空题
1.请写出下面程序的运行结果
请问其运行结束时的打印信息是
- int count = 3;
- int main()
- {
- int i, sum, count = 2;
- for(i = 0, sum = 0; i < count; i += 2,count++)
- {
- static int count = 4;
- count++;
- if(i % 2 == 0)
- {
- extern int count;
- count++;
- sum += count;
- }
- sum += count;
- }
- cout<<count<<' '<<sum<<endl;
- return 0;
- }
- 答:4 20
- extern是引用全局的count,定义为static的count只初始化一次,见static总结