- #include<stdio.h>
- #include <stdlib.h>
- #include<string.h>
- int getid(char *str);
- void add(char *str,int line);
- void output(void);
- int n=0,vark[110][1100]={{0}};
- char var[110][110];
- int main(void){
- int k=0,i,j=0,l;
- char str[1100],*p;
- char command[32][20]={"auto","break","case","char","const","continue","default","do",
- "double","else","enum","extern","float","for","goto","if",
- "int","long","register","return","short","signed","sizeof",
- "static","struct","switch","typedef","union","unsigned","void",
- "volatile","while"};
- while(gets(str)!=NULL){
- k++;
- p=strtok(str,"\n`~!@#$%^&*()-=+][}{'\"\\;:,|<.>/? \t");
- while( p ){
- l=strlen(p);
- for(i=0;i<l;i++,p++){
- if(*p<='9'&&*p>='0'){
- }
- else{ break;
- }
- }
- if( i!=l ){
- for(i=0;i<32;i++){
- if(strcmp(p,command[i])==0)j++;
- }
- if(j==0){
- add(p,k);
- }
- }
- p=strtok(NULL,"\n`~!@#$%^&*()-=+][}{'\"\\;:,|<.>/? \t");
- }
- }
- output();
- // system("PAUSE");
- return 0;
- }
- void add(char *str,int line){
- int id;
- id=getid(str);
- vark[id][line]=1;
- }
- int getid(char *str){
- int i;
- for(i=0;i<n;i++){
- if(strcmp(str,var[i])==0){
- return i;
- }
- }
- strcpy(var[i],str);
- n++;
- return n-1;
- }
- void output(void){
- int order[110],i,j=0;
- int swap;
- for(i=0;i<n;i++){
- order[i]=i;
- }
- while(j<n){
- i=0;
- while(i<n-1){
- if(strcmp(var[order[i]],var[order[i+1]])>0){
- swap=order[i];
- order[i]=order[i+1];
- order[i+1]=swap;
- }
- i++;
- }
- j++;
- }
- for(i=0;i<n;i++){
- printf("%s",var[order[i]]);
- printf(":");
- for(j=1;j<=n;j++){
- if(vark[order[i]][j]!=0){
- printf(" %d",j);
- j++;
- }
- }
- printf("\n");
- }
- }
Raw Paste