Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环一个程序,该程序转换为大写字母并在C中移动4个字母的等级_C - Fatal编程技术网

循环一个程序,该程序转换为大写字母并在C中移动4个字母的等级

循环一个程序,该程序转换为大写字母并在C中移动4个字母的等级,c,C,该程序调用两个函数uppercase()(将输入转换为大写)和shift()(将等级输入移位) 下面是我的大写()函数: void uppercase(char *p) { if(islower(*p)) { *p = toupper(*p); } } void shift(char *p1, char *p2, char *p3, char *p4) { int count = 0; do { ++count; char tmp; tmp = *p4; *p

该程序调用两个函数uppercase()(将输入转换为大写)和shift()(将等级输入移位)

下面是我的大写()函数:

void uppercase(char *p)
{

 if(islower(*p)) {
    *p = toupper(*p);
    }

}
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);

}
下面是shift()函数:

void uppercase(char *p)
{

 if(islower(*p)) {
    *p = toupper(*p);
    }

}
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);

}
无效移位(char*p1、char*p2、char*p3、char*p4) { 整数计数=0; 做{ ++计数; char-tmp; tmp=*p4; *p4=*p3; *p3=*p2; *p2=*p1; *p1=tmp; printf(“等级移位#%i:%c%c%c\n”,计数,*p1,*p2,*p3,*p4); }而(计数<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();

}
#包括
#包括
主(空)
{
浮动选择;
做{
煤焦c1、c2、c3、c4;
printf(“输入4个字母的等级以查找统计信息:”);
scanf(“%c%c%c%c”、&c1、&c2、&c3和&c4);
getchar();
大写(&c1);
大写(&c2);
大写(&c3);
大写(&c4);
printf(“输入等级:%c%c%c%c\n”,c1、c2、c3、c4);
班次(c1、c2、c3和c4);
printf(“想要转移更多等级(是/否)?”;
choice=getchar();
}while(choice='y'| choice='y');
getchar();
}
我的输出如下所示

输入4个字母等级以查找统计信息:abcd
输入等级:A B C D
成绩变化#1:D A B C
等级转移#2:C D A B
等级转换#3:B C D A
等级转移#4:A B C D
想要转换更多等级(是/否)?y
输入4个字母级别以查找统计信息:adff
输入等级:
A D F
等级变化#1:F
A D
等级转移#2:df
A
等级转移#3:ADF
等级转移#4:
A D F
想要转换更多等级(是/否)

格式在第二次输入时出错,当我在第二次输入后再输入一个y时,程序关闭。在过去的一个小时里,我一直在修补这个问题,我不明白为什么我的格式会出错,或者为什么循环在第三次尝试时会关闭/崩溃

我怎样才能使我的主函数只接受A-D或F的输入呢


谢谢。

我想这是因为您的getchar()输入中有一个新行

当您输入“y”然后按enter键时,您将得到“y\n”

重新进入do while循环时清除输入

printf("Want to shift more grades (y/n)? ");
choice = getchar();
c = getchar();
while (c != '\n' && c != EOF)
  c = getchar();
} while ( choice == 'y' || choice == 'Y');
关于第二个问题:

你需要检查c1,c2,c3,c4的值,幸运的是有一个函数

while( !(isalpha(c1) && isalpha(c2) && isalpha(c3) && isalpha(c4)) )
  printf ("Enter 4 letter grades to find statistics: ");
  scanf("%c %c %c %c", &c1, &c2, &c3, &c4);
  getchar();
请注意,isalpha函数只是检查每个字符的值。。。这是一个ascii表,请注意A-Z和A-Z的位置



scanf/getchar()行清除:

我认为这是因为在getchar()输入中有一个新行

当您输入“y”然后按enter键时,您将得到“y\n”

重新进入do while循环时清除输入

printf("Want to shift more grades (y/n)? ");
choice = getchar();
c = getchar();
while (c != '\n' && c != EOF)
  c = getchar();
} while ( choice == 'y' || choice == 'Y');
关于第二个问题:

你需要检查c1,c2,c3,c4的值,幸运的是有一个函数

while( !(isalpha(c1) && isalpha(c2) && isalpha(c3) && isalpha(c4)) )
  printf ("Enter 4 letter grades to find statistics: ");
  scanf("%c %c %c %c", &c1, &c2, &c3, &c4);
  getchar();
请注意,isalpha函数只是检查每个字符的值。。。这是一个ascii表,请注意A-Z和A-Z的位置



scanf/getchar()行清除:

您可以使用scanf()而不是getchar(),因为scanf将停止直到到达一个空格

您可以使用scanf()而不是getchar(),因为scanf将停止直到到达一个空格

为什么选择是一个浮点?@OsamaJaved我在某处看到有人这样做,并假设这是我必须做的。我应该把它改成一个字符吗?是的,把它改成一个
char
为什么选择是一个浮点数?@OsamaJaved我在某处看到有人这样做,并认为这是我必须做的事情。我应该把它改成一个字符吗?是的,把它改成一个
char
这就解决了我的问题。非常感谢。这部分做什么
while(c!='\n'&&c!=EOF)
我不确定新行是如何“位于我的getchar()输入中”的,请你为我指出这一点好吗?它一直在调用getchar(),直到它读取新行(在Linux/Unix中输入)或EOF(文件结尾,我相信是-1)这解决了我的问题。非常感谢。这部分做什么
while(c!='\n'&&c!=EOF)
我不确定新行是如何“位于我的getchar()输入中”的,请您为我指出这一点好吗?它一直调用getchar(),直到它读取新行(在Linux/Unix中输入)或EOF(文件结尾,我相信是-1)