菜鸡小李
2021-04-05 11:31
采纳率: 100%
浏览 118
已采纳

为什么在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;
}
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

3条回答 默认 最新

  • 拼题A 2021-04-06 18:40
    最佳回答

    你好:

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

    评论
    解决 1 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题