把每一步都解释出来客车和货车同时从甲乙两地相向而行,六小时后客车距离乙地的路程是全程的12.5%,货车超过中点54千米,已知货车每小时比客车慢15千米,求甲乙两地相距多少千米

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 16:18:31
把每一步都解释出来客车和货车同时从甲乙两地相向而行,六小时后客车距离乙地的路程是全程的12.5%,货车超过中点54千米,已知货车每小时比客车慢15千米,求甲乙两地相距多少千米把每一步都解释出来客车和货

把每一步都解释出来客车和货车同时从甲乙两地相向而行,六小时后客车距离乙地的路程是全程的12.5%,货车超过中点54千米,已知货车每小时比客车慢15千米,求甲乙两地相距多少千米
把每一步都解释出来
客车和货车同时从甲乙两地相向而行,六小时后客车距离乙地的路程是全程的12.5%,货车超过中点54千米,已知货车每小时比客车慢15千米,求甲乙两地相距多少千米

把每一步都解释出来客车和货车同时从甲乙两地相向而行,六小时后客车距离乙地的路程是全程的12.5%,货车超过中点54千米,已知货车每小时比客车慢15千米,求甲乙两地相距多少千米

linux在/proc目录下会为每个进程以他们的进程id(pid)为名字建立一个目录存放关于该进程的信息.其中有个status文件记录了该进程的pid和名字以及其父进程的id(ppid).
你这个程序就是通过读取这些特殊文件的内容把当前系统中所有运行进程的信息先保存在一张线性表proc[1024]中,然后再通过print_tree()这个函数采用递归的方法把进程树显示出来.
info结构体中的前三个字段分别代表一个进程的pid,ppid和name.后面两个字段是用在print_tree()递归调用中的,flag表示这个进程是否已经被扫描过,而rec则表示当前进程是第几“代”进程.
linux系统中的0号进程是idle进程,当系统没有事情做的时候就执行这个进程;而1号进程是init进程,它是0号进程的子进程.这两个进程是linux在启动时创建的,而且在整个系统运行期间不会退出.之后所有的进程都是在init进程基础上通过fork/clone/vfork克隆出来的.也就是说idle是init的父进程,而init是系统中其他所有进程的祖先.
另:你的这段代码有些问题,通过fgets读出来的文件行是包含行末的回车换行的,所以要把最后一个字符去掉打印出来的格式就对了.
#include<stdio.h>
#include<dirent.h>
#include<string.h>
typedef struct pro_info
{
int pid;
int ppid;
char name[100];
int flag;
int rec;
}info;
int filter(const struct dirent *dir) //select number folder
{
int i;
int n = strlen(dir->d_name);
for(i = 0; i < n; i++)
{
if(!isdigit(dir->d_name[i]))
{
return 0;
}
}
return 1;
}
int my_getpid(char* str)
{
char num[10];
int i,j,ret;
int length = strlen(str);
if(strncmp(str, "Pid", 3) == 0)
{
for(i = 0; i < length; i++)
{
if((str[i] >= '0') && (str[i] <= '9'))
{
break;
}
}
for(j = 0; j < length - i - 1; j++)
{
num[j] = str[i+j];
}
num[j] = '\0';
ret=atoi(num);
}
else
{
ret=-1;
}
return ret;
}
int my_getppid(char* str)
{
char num[10];
int i,j,ret;
int len=strlen(str);
if(strncmp(str, "PPid", 4) == 0)
{
for(i=0;i<len;i++)
{
if((str[i] >= '0') && (str[i] <= '9'))
{
break;
}
}
for(j = 0; j < len - i - 1; j++)
{
num[j]=str[i+j];
}
num[j]='\0';
ret=atoi(num);
}
else
{
ret=-1;
}
return ret;
}
void print_tree(info* proc, int total, int ppid, int rec)
{
int i,j,k;
for(i = 0; i < total; i++)
{
if((proc[i].flag == 0) && (proc[i].ppid == ppid))
{
proc[i].rec = rec + 1;
proc[i].flag = 1;
for(k = 0; k < rec; k++)
{
printf(" ");
}
if(proc[i].pid > 0)
{
printf("├——%s(%d)\n",proc[i].name,proc[i].pid);
}
print_tree(proc, total, proc[i].pid, proc[i].rec);
}
}
}
int main()
{
struct dirent **namelist;
int k,ppid,pid,s1,s2,j;
char pid_path[20],str[100],name[100];
info proc[1024];
int i=0;
FILE *fp;
int total = scandir("/proc", &namelist, filter, alphasort);
if(total < 0)
{
printf("scandir erorr !");
}
else
{
printf("Total number of processes:%d\n",total);
}
printf("\n");
for(i = 0; i < total; i++)
{
strcpy(pid_path, "/proc/");
strcat(pid_path, namelist[i]->d_name);
strcat(pid_path, "/status");
fp=fopen(pid_path, "r");
while(!feof(fp))
{
fgets(str, 1024, fp);
if((s1 = my_getpid(str)) != -1)
{
pid = s1;
}
if((s2 = my_getppid(str)) != -1)
{
ppid = s2;
}
if(strncmp(str,"Name",4)==0)
{
for(j=4;j<strlen(str);j++)
{
if(str[j]>='a'&&str[j]<='z')
{
break;
}
}
for(k=j;k<strlen(str)-1;k++)
{
name[k-j]=str[k];
}
name[k-j]='\0';
}
proc[i].pid = pid;
proc[i].ppid = ppid;
strcpy(proc[i].name,name);
}
fclose(fp);
proc[i].flag = 0;
proc[i].rec = 0;
}

print_tree(proc, total, 0, 0);
}

把每一步都解释出来客车和货车同时从甲乙两地相向而行,六小时后客车距离乙地的路程是全程的12.5%,货车超过中点54千米,已知货车每小时比客车慢15千米,求甲乙两地相距多少千米 客车和货车同时从甲乙两地相对开出,6小时后,客车离乙地还有全程的1/8.货车超过终点56千米.已知客车比货车每小时多行15千米,甲乙两地长多少千米?回答的人顺便解释下每一步是在干嘛 客车和货车同时从甲乙两站相对开出,客车每小时行54千米,货车每小时行48千米,两车是=1224吗? 货车和客车同时从甲乙两站相向而行,当货车走完全程的3/8时,正好和客车相遇.已知客车每时行45千米,货车从甲站到乙站需要24时,求甲乙两站相距多少千米? 货车和客车同时从甲乙两站相向而行,当货车走完全程的3/8时,正好和客车相遇.已知客车每小时行45千米,货车从甲站到乙站需24小时,求甲乙两站相距多少千米? 货车和客车同时从甲乙两站相向而行,当货车走完全程的3/8时,正好和客车相遇.已知客车每小时行110千米,货车从甲站到乙站需24小时,求甲乙两站相距多少千米? 货车和客车同时从甲乙两站相向而行,当货车走完全程的3/8时,正好和客车相遇..已知客车每小时行45千米,货车从甲站到乙站需24小时,求甲乙两站相距多少千米? 客车和货车同时从相距561 KM的两地相对开出,经过3小时相遇,客车平均速度是货车的1.2倍.客车和货车平均每 客车和货车同时从相距561千米的两抵相对开出,经过3小时相遇,客车平均速度是货车1.2倍,客车和货车平均每 客车,货车,小轿车都从A地到B地,货车每小时行50千米,客车每小时行60千米.货车和客车同时从A地出发2小时后,小轿车才从A地出发,小轿车12小时追上了客车.问小轿车在出发后几时追上货车?要算 甲乙两站相距360千米,客车和货车同时从甲站出发驶向乙站,客车每小时行60千米.货车每小时行驶40千米,客车每甲乙两站相距360千米,客车和货车同时从甲站出发驶向乙站,客车每小时行60千米.货 列火车和一列货车同时从甲乙两站相对开出,经3时相遇,相遇后继续行驶,又经2时客车到乙站,已知货车每时货车每时行60KM,客车每时行几KM? 甲乙两站相距360千米,客车和货车同时从甲站出发驶向乙站,客车每小时行60千米,货车每小时行40千米,客车 客车和货车同时从甲城开往乙城,3.5小时后客车在货车前面25.9千米,客车每小时行56千米,货多少千米? 客车和货车从两地同时相向开出,18小时后相遇.客车每小时行50km,货车比客车每小时少行8km,求总路长 客车和货车同时从甲地出发开往乙地经过6小时货车落在客车后面48千米客车每小时行多少千米 客车和货车同时从甲乙两地相对开出,客车每小时行完全程的五分之一,货车每小时行50千米.相遇时客车和货车 客车和货车同时从甲乙两地相对开出,客车每小时行完全程的五分之一,货车每小 甲乙两站相距720千米,一列货车和一列客车分别从两站同时相向而行,2.4时相遇,货车和客车的速度比是2:3客车每小时行多少千米?