吐槽
真觉得sse设计得好蠢啊, 题的标签好甜蜜混乱. 改错题只有两道, 这字符串标签题中又有3道改错题. 趣味题就是恶心人的垃圾题.
小结
困难——趣味题 共4道, 都是移火柴的无聊题, 题干有些问题, 也不可能考.
困难——字符串 共20道左右. 非常简单的就没有写进来.
困难——综合 共3道, 不可能考.
1.
#include <stdio.h>
void Squeeze(char *s, char c);
int main()
{
char a[80], c, *s;
s = a;
scanf("%s",s); // 逆天重点: scanf %s 时不会读走空格
scanf(" %c",&c); // 精彩啊, %c前面要加个空格
Squeeze(s, c);
printf("%s\n",s);
return 0;
}
void Squeeze(char *s, char c)
{
int i,j;
for (i=0, j=0; *(s+i) !='\0'; i++)
{
if (*(s+i) != c)
{
*(s+j) = *(s+i);
j++;
}
}
*(s+j) = '\0';
}
2.
// 本来觉得浪费时间不想写的, 但是在网上看了两个人都写了100行, 一堆重复的switch ifelse语句. 遂自己写一遍.
#include <stdio.h>
char shuzi[12][12] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
char dadanwei[12][12] = {"", "万", "亿"}; // 大单位
char xiaodanwei[12][12] = {"千", "百", "十", ""}; // 小单位
void read(int n)
{
int c[4], i;
for (i = 3; i >= 0; i--)
{
c[i] = n % 10;
n /= 10;
}
for (i = 0; i < 4 && c[i] == 0; i ++) ; // 除去前导零
for (; i < 4; i ++)
{
int j, flag = 0; //后导零处理 例如: 1008611一百零零万八千六百一十一
for(j = i + 1; j < 4; j ++) if(c[j]) flag = 1;
if(c[i] != 0 || c[i] == 0 && flag) printf("%s", shuzi[c[i]]);
if(c[i]) printf("%s", xiaodanwei[i]);
}
}
void Read(int n, int k)
{
if (n == 0) return ;
Read(n/10000, k+1);
n %= 10000;
read(n);
printf("%s", dadanwei[k]);
}
int main()
{
int n;
scanf("%d", &n);
Read(n, 0);
return 0;
}
3.
// 一下是参考答案 这种题需要借鉴好的思路
#include <stdio.h>
int alphabetic(char c)
{
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
{
return 1;
}
else
{
return 0;
}
}
/* 寻找最长单词 */
int longest(char string[])
{
int len = 0, i, length = 0, flag = 1, place, point;
for (i = 0; i <= strlen(string); i++)
{
if (alphabetic(string[i]))
{
if (flag)
{
point = i;
flag = 0;
}
else
{
len++;
}
}
else
{
flag = 1;
if (len > length)
{
length = len;
place = point;
len = 0;
}
}
}
return place;
}
int main()
{
int i;
char line[100];
printf("输入一行文本:\n");
gets(line);
printf("\n最长的单词是:");
for (i = longest(line); alphabetic(line[i]); i++)
{
printf("%c", line[i]);
}
printf("\n");
return 0;
}
4
#include <stdio.h>
#include <string.h>
main( )
{
int cases, sum[10], i, max;
char str[1000+10];
scanf("%d", &cases);
while (cases > 0)
{
scanf("%s", str);
for (i = 0; i < 10; i++)
sum[i] = 0;
for (i = 0; i < strlen(str); i++)
++sum[str[i]-'0'];
max = 0;
for (i