问题遇到的现象和发生背景
在做学校留的pta作业题的时候,发生编译结果不一致的情况。pta编译器输出结果为三行-1,xcode以及vscode等其他编译器都可以实现运行。 希望能知道哪里出现了问题,感谢!
这是原题目:7-1 组织星期信息 (10 分)
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
定义一个指针数组将下面的星期信息组织起来,输入一个字符串,在表中查找,若存在,输出该字符串在表中的序号,否则输出-1。
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
输入输出示例:括号内为说明,无需输入输出
输入样例 (repeat=3) :
3
Tuesday
Wednesday
year
输出样例:
3
4
-1
问题相关代码,请勿粘贴截图
//
// main.c
// cex5_pointers&structures
//
// Created by Eawen C. on 2022/4/24.
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int repeat = 0;
scanf("%d", &repeat);
fflush(stdin);
static char a[10] = "Sunday";
static char b[10] = "Monday";
static char c[10] = "Tuesday";
static char d[10] = "Wednesday";
static char e[10] = "Thursday";
static char f[10] = "Friday";
static char g[10] = "Saturday";
char *pt[7] = {0};
char *pttmp = &a[0];
for (int i = 0; i < 7; i = i + 1)
{
pt[i] = pttmp;
pttmp = pttmp + 10;
}
int result[10] = {0};
int number = 0;
while (repeat)
{
fflush(stdin);
char input[1000] = {0};
// printf("type: \n");
fgets(input, 1000, stdin);
// printf("%s", input);
for (int i = 0; i < 7; i++)
{
int j = 0;
long deter = strlen(pt[i]);
while (deter != 0)
{
char *ptstore = pt[i];
while (input[j] == *pt[i])
{
pt[i]++;
deter--;
j++;
}
pt[i] = ptstore;
if (deter == 0)
{
result[number] = i + 1;
goto here;
}
else
{
break;
}
}
}
result[number] = -1;
here:
repeat--;
number++;
}
for (int i = 0; i < number; i++) {
printf("%d\n", result[i]);
}
return 0;
}
我的解答思路和尝试过的方法
由于刚开始学习指针,没有用现成的strcmp,而是自己实现了一个比对方法,但是pta却跑不起来。