单词缩写

Problem Description

我们经常用一串短的字母代替一些长的单词。如ACM是Association for Computing Machinery的缩写。现在你用取首字母的办法得到一串单词的缩写。取首字母的办法是指把每个单词的首字母取出来用大写字母表示,然后把这些大写字母拼起来。但是也有些情况是例外的:一些情况在产生缩写是会被忽略,这些特殊情况见下面的规则:
1.常用的单词:and,for,the.
2.单词长度少于3的单词,如:a,of,to.
你现在的任务就是把给你的字符串用取首字母的办法得到它们的缩写。

Input

第一行是一个正整数T,表示测试用例数。每组测试用例包含一个长度小于100的字符串。这些单词只包含字母表中的字母。单词之间有一个空格。每行字符串的首尾没有空格。

Output

输出每组测试用例字符串的缩写。

Sample Input

5
Association for Computing Machinery
Institute of Electrical and Electronics Engineers
SUN YAT SEN UNIVERSITY
The Lord of the Rings
netease

Sample Output

ACM
IEEE
SYSU
LR
N

Author

HYNU 



代码:


#include<stdio.h>
#include<ctype.h>
#include <string.h>
int main()
{
    int t, i, j, len, k;
    char a[200], c[200];
    scanf("%d", &t);
    getchar();
    while(t--)
    {
        gets(a);
        len = strlen(a);
        i = 0;
        k = 0;
        while(i < len)
        {
            j = 0;
            while(a[i] == ' ') i++;
            while(a[i] != ' ' && a[i])
            {
                c[j] = a[i];
                i++;
                j++;
            }
            c[j] = '\0';
            k = strlen(c);
<span style="white-space:pre">	</span>    // 函数说明:strcasecmp()用来比较参数s1 和s2 字符串,比较时会自动忽略大小写的差异。
            if(!(k < 3 || strcasecmp("AND", c) == 0 || strcasecmp("FOR", c) == 0 || strcasecmp("THE", c) == 0))
            {
                putchar(toupper(c[0]));
            }
        }
        printf("\n");
    }
    return 0;
}


在C++编程中,常用单词缩写是为了提升代码的可读性和编写效率,同时也反映了编程中的某些惯例和标准。以下是一些常见的C++常用单词缩写及其含义和应用。 ### 缩写与全称对照 - **int**:integer(整数),用于表示整数类型,通常为32位范围内的整数[^4]。 - **char**:character(字符),用于表示单个字符或字符数组。 - **bool**:boolean(布尔值),用于表示逻辑值,通常为`true`或`false`。 - **float**:floating point(浮点数),用于表示单精度浮点数。 - **double**:double-precision floating point(双精度浮点数),提供比`float`更高的精度。 - **void**:无类型,通常用于表示函数不返回值或不接受参数。 - **const**:constant(常量),用于定义不可修改的值。 - **static**:静态变量或函数,用于限制作用域和生命周期。 - **extern**:外部变量或函数,用于声明在其他文件中定义的符号。 - **struct**:structure(结构体),用于定义复合数据类型。 - **class**:类,用于面向对象编程的基本构造。 - **enum**:enumeration(枚举),用于定义一组命名的整数常量。 - **union**:联合体,一种特殊的用户定义类型,允许在相同的内存位置存储不同的数据类型。 - **typedef**:type definition(类型定义),用于为现有类型创建新的名称。 - **sizeof**:size of(大小),用于计算数据类型或变量的大小。 - **new**:动态分配内存的关键字。 - **delete**:释放由`new`分配的内存。 - **inline**:内联函数,用于建议编译器将函数调用替换为函数体。 - **virtual**:虚函数,用于支持多态性。 - **override**:覆盖,用于显式声明一个函数覆盖基类的虚函数。 - **final**:最终,用于阻止类或函数被继承或覆盖。 - **template**:模板,用于实现泛型编程。 - **namespace**:命名空间,用于组织代码并避免命名冲突。 - **using**:使用,用于引入命名空间或别名。 - **decltype**:声明类型,用于获取表达式的类型。 - **auto**:自动类型推导,用于自动推导变量的类型(C++11引入)。 - **nullptr**:空指针,用于表示空指针常量(C++11引入)。 - **lambda**:匿名函数,用于创建内联函数对象(C++11引入)。 - **thread**:线程,用于多线程编程(C++11引入)。 - **mutex**:互斥量,用于线程同步(C++11引入)。 - **atomic**:原子操作,用于无锁编程(C++11引入)。 - **constexpr**:常量表达式,用于在编译时计算值(C++11引入)。 - **noexcept**:异常规范,用于指定函数不会抛出异常(C++11引入)。 - **alignas**:对齐,用于指定类型的对齐要求(C++11引入)。 - **alignof**:对齐大小,用于获取类型的对齐要求(C++11引入)。 - **char16_t** 和 **char32_t**:16位和32位字符类型,用于支持Unicode(C++11引入)。 - **nullptr**:空指针常量,用于替代传统的`NULL`宏(C++11引入)。 - **override** 和 **final**:用于控制虚函数的覆盖和继承(C++11引入)。 - **default**:用于生成默认的特殊成员函数(C++11引入)。 - **delete**:用于禁止特殊成员函数的使用(C++11引入)。 ### 常用前缀与后缀 - **c**:表示常量(constant),例如`c_str()`返回常量字符串。 - **p**:表示指针(pointer),例如`pNode`表示指向节点的指针。 - **n**:表示数量(number),例如`nCount`表示计数。 - **i**:表示索引(index),例如`iIndex`表示索引值。 - **sz**:表示以零结尾的字符串(zero-terminated string),例如`szName`表示字符串。 - **h**:表示句柄(handle),例如`hFile`表示文件句柄。 - **dw**:表示双字(double word),即32位无符号整数,例如`dwSize`表示大小。 - **fn**:表示函数(function),例如`fnCallback`表示回调函数。 ### 示例代码 以下是一些常见的C++缩写在代码中的实际应用示例: ```cpp #include <iostream> #include <string> int main() { int nCount = 0; // 表示计数 std::string szName = "Example"; // 表示以零结尾的字符串 int* pValue = new int(10); // 表示指针 const int cMax = 100; // 表示常量 std::cout << "Count: " << nCount << std::endl; std::cout << "Name: " << szName << std::endl; std::cout << "Value: " << *pValue << std::endl; std::cout << "Max: " << cMax << std::endl; delete pValue; // 释放指针内存 return 0; } ``` ### 编程惯例 在C++编程中,遵循一定的命名惯例和缩写规则可以帮助开发者更好地理解和维护代码。例如,使用`p`作为指针变量的前缀,`c`作为常量变量的前缀,`sz`作为以零结尾的字符串变量的前缀等。这些惯例不仅有助于代码的可读性,也有助于团队协作。 此外,C++标准库中的许多组件也使用了类似的缩写和命名惯例。例如,`std::vector`用于表示动态数组,`std::map`用于表示键值对集合,`std::string`用于表示字符串等。 ### 总结 了解和掌握C++中的常用单词缩写对于提高编程效率和代码可读性至关重要。这些缩写不仅反映了编程中的某些惯例和标准,还能够帮助开发者更好地理解和维护代码。通过合理使用这些缩写,可以编写出更加简洁、高效和易于维护的代码。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值