输入
第一行输入一个整数n(1 <= n <= 100)表示测试样例个数
接下来n行,一个字符串(大小不超过20),保证字符串不包含除小写字母外的任何其他字符
输出
对于每个单词输出a或者an,每个a或者an单独占一行,表示应该使用的不定冠词
#include
#include
#include
#define STRLEN 100
void ifree(char**p,int i);
int CheckAndChange(char*p);
int main()
{
int T;/*样例个数*/
int i;/*循环参数*/
char**p=NULL;/*指针p指向的内存空间存放指向各个字符串的指针*/
scanf("%d\n",&T);/*读取T*/
if((p=malloc(T*sizeof(char*)))==NULL)
{
printf("malloc p fail!\n");
return-1;
}
for(i=0;i<T;i++)
{
if((*(p+i)=malloc((STRLEN+1)*sizeof(char)))==NULL)
{
printf("malloc p+%d fail!\n",i);
ifree(p,i);/*释放之前分配的空间*/
free(p);/*释放p*/
return-1;
}
gets(*(p+i));
}
for(i=0;i<T;i++)
{
if(CheckAndChange(*(p+i))>0)/*判断是否都是大写字符,如果是,则变成小写*/
{
printf("%s\n",*(p+i));
}
else
{
printf("string%d contains incorrect character!\n",i+1);
}
}
ifree(p,T);
free(p);
return 0;
}
void ifree(char**p,int i)
{
int j;
for(j=0;j<i;j++)
{
free(*(p+j));
}
}
int CheckAndChange(char p)
{
int i;
for(i=0;i<strlen(p);i++)
{
if(((p+i)>='A')&&(*(p+i)<='Z'))
{
*(p+i)+='a'-'A';
}
else
{
return-1;
}
}
return 1;
}
return是C++的关键字,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值.
说到return,有必要提及主函数的定义,下面是从网络上找到的资料,好好消化吧,对了解主函数中返回值的理解有很大的帮助.
很多人甚至市面上的一些书籍,都使用了void main(),其实这是错误的。C/C++中从来没有定义过void main()。C++之父Bjarne Stroustrup
在他的主页上的FAQ中明确地写着The definition void main(){/*...*/}is not and never has been C++,nor has it even been C.(void main()从来就不存在于C++或者C)。
1.C
在C89中,main()是可以接受的。Brian W.Kernighan和Dennis M.Ritchie的经典巨著The C programming Language 2e(《C程序设计语言第二版》)用的就是main()。不过在最新的C99标准中,只有以下两种定义方式是正确的:
int main(void)
int main(int argc,char*argv[])
(参考资料:ISO/IEC 9899:1999(E)Programming languages—C 5.1.2.2.1 Program startup)
当然,我们也可以做一点小小的改动。例如:char*argv[]可以写成char**argv;argv和argc可以改成别的变量名(如intval和charval),不过一定要符合变量的命名规则。
如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc,char*argv[])。
main函数的返回值类型必须是int,这样返回值才能传递给程序的激活者(如操作系统)。
如果main函数的最后没有写return语句的话,C99规定编译器要自动在生成的目标文件中(如exe文件)加入return 0;,表示程序正常退出。不过,我还是建议你最好在main函数的最后加上return语句,虽然没有这个必要,但这是一个好的习惯。
注意,vc6不会在目标文件中加入return 0;,大概是因为vc6是98年的产品,所以才不支持这个特性。现在明白我为什么建议你最好加上return语句了吧!不过,gcc3.2(Linux下的C编译器)会在生成的目标文件中加入return 0;。
参考资料:
你看这样满意不
2018.12.29更改过一次。。。。。
#include <cstdio>