HDU字符串--3783 与字符的简单应用
Problem Description
读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。
Input
题目包含多组用例,每组用例占一行,包含ZOJ三个字符,当输入“E”时表示输入结束。 1<=length<=100。
Output
对于每组输入,请输出一行,表示按照要求处理后的字符串。 具体可见样例。
Sample Input
ZZOOOJJJ
ZZZZOOOOOJJJ
ZOOOJJ
E
Sample Output
ZOJZOJOJ
ZOJZOJZOJZOO
ZOJOJO
#include<stdio.h>
#include<string>
int main()
{
char a[110];
while(gets(a) &&(a[0]!='E'))
{
int x=0,y=0,z=0,len=0;
len=strlen(a);
for(int i=0;i<len;i++)
{
if(a[i]=='Z') x++;
else if (a[i]=='O') y++;
else z++;
}
while(x>0||y>0||z>0)
{
if(x>0) putchar('Z'); x--;
if(y>0) putchar('O'); y--;
if(z>0) putchar('J'); z--;
}
printf("\n");
}
return 0;
}
gets输入字符串时,是以回车结束,可以接收空格。
scanf输入字符串时,不能输入有空格的字符串。
所以此处选择gets来接收字符串;
sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸
大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因
如果要获得这个字符串的长度,则一定要使用 strlen
char str[20]="0123456789";
int a=strlen(str); //a=10;
int b=sizeof(str); //而b=20;
具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:
数组——编译时分配的数组空间大小;
指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);
类型——该类型所占的空间大小;
对象——对象的实际占用空间大小;
函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。
浙公网安备 33010602011771号