为什么在devc++上可以运行只输入一个英文句号,在PTA上显示段错误

我国使用的手机号码为11位,其中各段有不同的编码方向:前3位是网络识别号;第4-7位为地区编码;第8-11位表示用户号码。

本题要求你实现一个程序,自动统计指定地区编码的手机号码的个数。

输入格式:

输入第一行为待查询的地区编码,随后每行都是11位数字组成的手机号码,当读到某一行只有一个英文句点 . 时,输入结束。

输出格式:

首先在第一行中输出手机号码的总个数。然后统计指定地区编码的手机号码有多少个。第二行首先输出第一次出现该地区编码的手机号码是第几个(从 1 开始计数,没有输出0),然后输出该地区编码手机号码的总个数(没有输出0),其间以一个空格分隔。题目保证输出的所有数字不超过10​的九次方​​。

输入样例:

 

 

0549

 

13563910168

 

13505490199

 

18853905089

 

13705390115

 

.

输出样例:

 

 

4

 

2 1

 

#include<stdio.h> 
int main()
{
	char a[100000][11];
	char code[4];
	int i,j,t,flag=0,M=0;
	for(i=0;i<4;i++)
	scanf("%1c",&code[i]);
	getchar();
    for(i=0;i<100000;i++)
	{
	a[i][0]=getchar();
	if(a[i][0]!='.')
	{
	for(j=1;j<11;j++)
	{
	scanf("%1c",&a[i][j]);
	}
	getchar();
	t=i+1;
	}
	else
	break;
    }
    if(i==0)
    M=1;
    printf("%d\n",t);
	for(i=0;i<t;i++)
	{
		if(a[i][3]==code[0]&&a[i][4]==code[1]&&a[i][5]==code[2]&&a[i][6]==code[3])
		{
		printf("%d ",i+1);
		flag++;
		}
	}
	if(M==1)
	{
	printf("0 0\n");
    }  
    else
	{
	if(flag==0)
        printf("0 0");
    else
        printf("%d",flag);
	}
    return 0;
}

你好:

首先最大的问题是没有段错误而是答案错误,其次是你可能看错了题,题目只要求输出第一次出现是第几个以及总个数,你这样写会把所有出现的都输出。

多谢指教

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632