我想从n次(n = 1-100)向后打印我的名字。我似乎无法弄明白。正如您可以通过我的代码看到的那样,strrev()在循环时不起作用,因为它不断地反复转换。我还想以某种方式强制用户输入一个字母而不是姓名,但这并不是必须的。
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main ()
{
int choice;
char name[255];
int loopCounter;
int count;
int number;
do
{
printf("1.Display Your Name\n");
printf("2.Display Your Name (From 1-100)\n");
printf("3.Display your Name Backwards\n");
printf("4.Display Your Name Backwards (From 1-100)\n");
printf("5.Quit\n");
printf("Enter your name:\n");
scanf("%s", name);
printf("Enter your choice: ");
scanf("%i", &choice);
switch(choice)
{
case 1:
printf("Your name is %s.\n", name);
break;
case 2:
printf("How many times to display your name? (1-100) ");
scanf("%i", &count);
if ( 100 < count)
{
printf("Please enter 1 through 100\n");
}
else
{
loopCounter = 0;
while (loopCounter < count )
{
loopCounter++;
printf("%d %s\n", loopCounter,name);
}
}
break;
case 3:
printf("Your name backwards is: %s\n\n", strrev(name));
break;
case 4:
printf("How many times to display your name backwards? ");
scanf("%i", &count);
if ( 100 < count)
{
printf("Please enter 1 through 100\n");
}
else
{
loopCounter = 0;
while (loopCounter < count )
{
loopCounter++;
printf("%d %s\n", loopCounter, strrev(name));
}
}
break;
case 5:
printf("Goodbye!!!!\n");
break;
default:
printf("Was not 1 through 5\n");
break;
}
} while (choice!=5);
}
答案 0 :(得分:4)
您的问题是strrev()
将字符串反转到位。
如果你想保留原文,你应该复制一个名字,然后在循环之前使用strrev()
将其翻转一次。然后在循环中,只需调用反转名称。
否则,只需这样做:
loopCounter = 0;
strrev(name);
while (loopCounter < count ) {
loopCounter++;
printf("%d %s\n", loopCounter, name);
}
答案 1 :(得分:0)
还有另一种解决方案,不需要strrev
..请注意以下代码: -
main()的
{
char name[255];
int loopcounter;
for(loopcounter = strlen(name)-1; loopcounter>=0; loopcounter--)
{
printf("%c", name[loopcounter]);
}
}
这段代码肯定能帮到你......好吧