1>现有文件test.c\test1.c\main.c , 请编写Makefile.
代码:
CC=gcc
EXE=str
OBJS=$(patsubst %.c,%.o,$(wildcard *.c))
CFLAGS=-c -oall:$(EXE)$(EXE):$(OBJS)$(CC) $^ -o $@%.o:%.c$(CC) $(CFLAGS) $@ $^head.o:head.hclean:@rm $(OBJS) $(EXE)
2>C编程实现:
输入一个字符串,计算单词的个数
如:“this is a boy” 输出单词个数:4个
代码:
#include"head.h"int count(char *arr){int i=0,count=0;while(*(arr+i)){//'\0'是空字符int j=i;while(*(arr+j)!=' '&&*(arr+j)!='\0')//扫过单词j++;if(*(arr+j)==' ')//遇到空格,单词数+1count++;while(*(arr+j)==' ')//去掉多余空格j++;i=j;}return count+1;//最后一个单词后无空格,所以单词数是空格数+1
}
3>C编程实现字符串倒置:(注意 是倒置,而不是直接倒置输出)
如:原字符串为:char *str = “I am Chinese”
倒置后为:“Chinese am I”
附加要求:删除原本字符串中 多余的空格。
代码:
#include"head.h"void Inversion(char *arr){//整体倒置int low=0;int high=strlen(arr)-1;while(low<high){char temp=*(arr+low);*(arr+low)=*(arr+high);*(arr+high)=temp;low++;high--;}//单词倒置int i=0;while(*(arr+i)){int j=i;while(*(arr+j)!=' '&&*(arr+j)!='\0')j++;int k=j-1;//保证j不受影响while(i<k){char temp=*(arr+i);*(arr+i)=*(arr+k);*(arr+k)=temp;i++;k--;}//去除多余空格int z=j+1;//保证j不受影响while(*(arr+z)==' '){//直到这个位置是下一个单词的首字母int x=z;//保证z不受影响,z的位置是下一个单词的首字母位置while(*(arr+x)){//整体前移一位*(arr+x)=*(arr+x+1);x++;}}i=z;}
}
结果:
4>在终端输入一个文件名,判断文件类型
代码:
#!/bin/bashread -p "please input file:" fileif [ -b $file ]
thenecho dev
elif [ -c $file ]
thenecho char_dev
elif [ -d $file ]
then echo dir
elif [ -f $file ]
then echo regular
elif [ -L $file ]
then echo link
elif [ -S $file ]
then echo socket
elif [ -p $file ]
then echo pipe
elseecho error
fi
结果: