我在解决编程竞赛问题时面临困难,其内容如下:
您将获得英文字母的T名称。每个名字都包含一些 从A到Z的大写字母,一些小写字母 从a到z和一些空格。你必须改变名称 小写到大写。最初是大写的字母 将保持不变,空间也将保留在他们的 地方。
如果我输入...
5
Hasnain Heickal Jami
Mir Wasi Ahmed
Tarif Ezaz
Mahmud Ridwan
Md Mahbubul Hasan
计算机 应该 输出此...
Case 1: HASNAIN HEICKAL JAMI
Case 2: MIR WASI AHMED
Case 3: TARIF EZAZ
Case 4: MAHMUD RIDWAN
Case 5: MD MAHBUBUL HASAN
这是我在 C 中编码的内容:
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
int main(void)
{
int T, i;
char string [100];
scanf("%d", &T);
for (i=0; i<T; i++)
{
gets(string);
printf("Case %d: ", i);
while (string[i])
{
putchar (toupper(string[i]));
i++;
}
printf("\n");
}
getch();
return 0;
}
现在,此代码无法生成所需的输出。我在哪里做错了?我的语法有什么问题吗?有人可以指导我吗?请记住,我是一名中学生,只是C的初学者。
答案 0 :(得分:2)
你需要逐个循环遍历字符串的每个字母。
在下面的代码中,我使用变量K
完成了这一操作,它从0变为字符串的长度。
变量I
会跟踪字符串的数量。
int main(void)
{
int T, i, k;
char string [100];
scanf("%d", &T);
for ( i = 0; i < T; ++i)
{
gets (string);
for(k=0; k<strlen(string); ++k)
{
putchar (toupper(string[k]));
}
}
getch();
return 0;
}
回答你的问题:IDEOne Link
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(void)
{
int T, i,k;
char string [100];
scanf("%d ", &T);
for ( i = 0; i < T; ++i)
{
gets (string);
printf("[%d] : %s\n", i, string);
for(k=0; k<strlen(string); ++k)
{
putchar (toupper(string[k]));
}
putchar('\n');
}
return 0;
}
答案 1 :(得分:2)
请根据您的要求查看代码并实施测试用例场景。
nasm