在你的程式中,定義一個struct 型態,幫它取名address_t 。這個結構中有四個整數用以表示IP 位址的四個數字以及一個長度為10的字元的陣列用以存放電腦的別名。 你的程式會讀入一序列的電腦IP 位址以及其別名,最多可能有100組資料。並以 0.0.0.0 來表示輸入結束。例如:
140.131.45.1 mcu_mail
163.25.148.19 csie
163.25.149.23 teacher
0.0.0.0 none
你的程式在讀入資料後,要進行下列的作業:
a. 就IP 位址的第一個數字統計有幾部機器,範例輸出如下:
140 1部
163 2部
b. 列出電腦別名以字母'c'開頭的有幾部機器
1 則留言:
#include < stdio.h >
#define MAXIPS 10
struct address_t {
int ip1,ip2,ip3,ip4;
char domain_name[10];
};
int main(void)
{
struct address_t ip_name[MAXIPS];
int count = 0;
int index;
int i=0,j=0,k=0,flag=0;
printf("Please enter ip & domain name:\n");
scanf("%d.%d.%d.%d %s", &ip_name[count].ip1, &ip_name[count].ip2,
&ip_name[count].ip3, &ip_name[count].ip4, &ip_name[count].domain_name);
while (count < MAXIPS && ip_name[count].ip1 != 0)
{
count++;
scanf("%d.%d.%d.%d %s", &ip_name[count].ip1, &ip_name[count].ip2,
&ip_name[count].ip3, &ip_name[count].ip4, &ip_name[count].domain_name);
}
printf("Here is the list of your IP statistics:\n");
for (index = 0; index < count; index++)
{
for(i=index; i < count; i++)
{
if(ip_name[i].ip1 == ip_name[index].ip1)
j++;
}
if(index == 0)
{
printf("%d\t%d\n", ip_name[index].ip1, j);
}
else
{
for(k=0; k < index; k++)
{
if(ip_name[index].ip1 == ip_name[k].ip1)
{
flag = 1;
}
}
if(flag == 0)
{
printf("%d\t%d\n", ip_name[index].ip1, j);
}
else
{
flag = 0;
}
}
//printf("%d\t%d\n", ip_name[index].ip1, j);
j=0;
}
printf("Here is the list of 'c':\n");
for (index = 0; index < count; index++)
{
if(ip_name[index].domain_name[0] == 'c')
{
printf("%d.%d.%d.%d %s\n",ip_name[index].ip1, ip_name[index].ip2,
ip_name[index].ip3, ip_name[index].ip4, ip_name[index].domain_name);
}
}
return 0;
}
張貼留言