Mình có 2 đoạn code C sau, mục đích là chuyển hết các kí tự thường thành hoa và các âm tiết cách nhau bởi dấu cách, mình code cả hai đoạn nhưng không hiểu sao khi nộp lên coderforces thì code 1 bị error trong khi code 2 thì không. theo mình hiểu thì 2 đoạn code này tương đương với nhau, Mình có tìm đọc một lúc về mấy cái hàm issupper, islower … cũng chưa giải quyết vấn đề gì cả
code 1
#include<stdio.h>
#include<ctype.h>
int main()
{
char s[151],p[151];
gets(s);
int i,n = 1,k=0;
int length = strlen(s);
for(i = 0;i < length ;i++) {
if(isupper(s[i]))
{ p[k]=s[i];
k++;
n=0;
}
else if(islower(s[i]))
{
p[k]=toupper(s[i]);
k++;
n=0;
}
else if(n == 0)
{
n++;
p[k]=' ';
k++;
}
}
if ( k != 0)
{
if(p[k-1] == ' ')
{
p[k-1]='\0';
printf("%s:%d",p,k-1);
} else
{
p[k]='\0';
printf("%s:%d",p,k);
}
} else
{
printf(":0");
}
return 0;
}
code 2
#include<stdio.h>
#include<ctype.h>
int main()
{
char s[151],p[151];
gets(s);
int i,n = 1,k=0;
int length = strlen(s);
for( i = 0 ; i < length; i++) {
s[i] = toupper(s[i]);
}
for(i = 0;i < length ;i++) {
if(s[i] != ' ')
{ p[k]=s[i];
k++;
n=0;
}
else if(n==0)
{
n++;
p[k]=' ';
k++;
}
}
if ( k != 0)
{
if(p[k-1] == ' ')
{
p[k-1]='\0';
printf("%s:%d",p,k-1);
} else
{
p[k]='\0';
printf("%s:%d",p,k);
}
} else
{
printf(":0");
}
return 0;
}
Mong mọi người giúp đỡ.