该程序调用两个函数 uppercase() 将输入转换为大写,shift() 将输入的等级转换。
这是我的大写()函数:
void uppercase(char *p)
{
if(islower(*p)) {
*p = toupper(*p);
}
}
这是 shift() 函数:
void shift(char *p1, char *p2, char *p3, char *p4)
{
int count = 0;
do {
++count;
char tmp;
tmp = *p4;
*p4 = *p3;
*p3 = *p2;
*p2 = *p1;
*p1 = tmp;
printf("Grades Shifted #%i: %c %c %c %c \n", count, *p1, *p2, *p3, *p4);
} while (count < 4);
}
这是我的主要功能。
#include <stdio.h>
#include <ctype.h>
main (void)
{
float choice;
do {
char c1, c2, c3, c4;
printf ("Enter 4 letter grades to find statistics: ");
scanf("%c %c %c %c", &c1, &c2, &c3, &c4);
getchar();
uppercase(&c1);
uppercase(&c2);
uppercase(&c3);
uppercase(&c4);
printf("Input Grades: %c %c %c %c\n", c1, c2, c3, c4);
shift(&c1, &c2, &c3, &c4);
printf("Want to shift more grades (y/n)? ");
choice = getchar();
} while ( choice == 'y' || choice == 'Y');
getchar();
}
我的输出看起来像这样
输入 4 个字母的成绩以查找统计数据:abcd
输入成绩:ABCD
成绩转移#1:DABC
成绩转移#2:CDAB
成绩转移#3:BCDA
成绩转移#4:ABCD
想要转移更多成绩(y/n)?y
输入 4 个字母的成绩以查找统计数据:adff
输入成绩:
ADF
等级转移 #1:FA
AD
等级转移#2:DF
A
等级转移#3:ADF
等级转移#4:
ADF
想要转移更多等级 (y/n) ?
格式在第二次输入时变得混乱,当我在第二次输入后输入另一个 y 时,程序关闭。在过去的一个小时里,我一直在修补这个问题,但我无法弄清楚为什么我的格式会变得混乱,或者为什么循环在第三次尝试时关闭/崩溃。
另外,我怎样才能使我的主要功能只接受 AD 或 F 的输入。
谢谢。