今天第一次参加了某公司的在线笔试!这让我发现调整好心态有多重要!简单说说我遇到的第一道编程题:
题意大致为输入几组数据,其中包含一个已知长度字符串(类似于 .b..bz....),和几个 类似 1 h 、 2 x的组合,意为替换字符串中 1 的位置为 h 、 替换2 的位置为x,每次替换后调用 f(s)函数,f(s)函数将连续的两个 '..' 变为一个 '.' ,直到字符串里只剩下一个 ‘.’ , f(s)要输出的是每次替换后,将 ‘..’ 改为 ‘.’ 的次数!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
char a[20] = { 0 };
int count = 0;
int len = 0;
void f()
{
int i = 0, j = 0;
int l = len;
for (i = 1; i < l; i++)
{
if ((a[i] == '.') && (a[i - 1] == '.'))
{
for (j = i; j < l; j++)
{
a[j] = a[j + 1];
}
count++;
l--;
}
}
printf("%d\n", count);
}
void change(int n)
{
int i = 0;
int ad = 0;
char ch;
count = 0;
for (i = 0; i < n; i++)
{
scanf("%d %c", &ad, &ch);
a[ad] = ch;
f();
}
}
int main(void)
{
int num = 0, k = 0;
while (scanf("%d%d", &len, &num) != EOF)
{
scanf("%s", a);
change(num);
}
return 0;
}
其实当时做完选择填空我还有大把的时间, 但是由于疏忽的原因,导致 刚开始写的f()函数里 a[j] = a[j + 1] 的下标引用错误,更糟糕的是我用一个多小时的时间去调试,也没看出来,直到考试结束。。。
好吧!我是在考完之后又把它拿出来看了一遍。因为不甘心!两分钟,成功了
,我却笑不出来。。。
特发此文,警示自身!