我国使用的手机号码为11位,其中各段有不同的编码方向:前3位是网络识别号;第4-7位为地区编码;第8-11位表示用户号码。 本题要求你实现一个程序,自动统计指定地区编码的手机号码的个数。 输入格式: 输入第一行为待查询的地区编码,随后每行都是11位数字组成的手机号码,当读到某一行只有一个英文句点 . 时,输入结束。 输出格式: 首先在第一行中输出手机号码的总个数。然后统计指定地区编码的手机号码有多少个。第二行首先输出第一次出现该地区编码的手机号码是第几个(从 1 开始计数,没有输出0),然后输出该地区编码手机号码的总个数(没有输出0),其间以一个空格分隔。题目保证输出的所有数字不超过10 9 。 用c语言完成
时间: 2024-03-17 14:42:24 浏览: 195
以下是基于C语言的实现,可以供参考:
```c
#include <stdio.h>
#include <string.h>
int main() {
char query[5]; // 待查询的地区编码
char phone[12]; // 手机号码
int count = 0; // 手机号码总个数
int query_count = 0; // 指定地区编码的手机号码个数
int query_index = 0; // 第一次出现指定地区编码的手机号码的位置
scanf("%s", query);
while (scanf("%s", phone) != EOF) {
count++;
if (strcmp(phone + 3, query) == 0) { // 判断地区编码是否匹配
query_count++;
if (query_index == 0) {
query_index = count;
}
}
}
printf("%d\n", count);
printf("%d %d\n", query_index, query_count);
return 0;
}
```
程序的大致思路如下:
1. 首先从输入中读取待查询的地区编码;
2. 然后循环读取手机号码,统计总个数,并判断其地区编码是否匹配;
3. 统计指定地区编码的手机号码个数,以及第一次出现该地区编码的手机号码的位置;
4. 最后输出结果。
需要注意的是,这里用到了 `strcmp` 函数来比较字符串,所以需要包含 `string.h` 头文件。还需要注意对输入结束的判断,这里使用了 `scanf` 函数的返回值是否为 `EOF` 来判断是否到达文件尾。
阅读全文