1>现有文件test.c\test1.c\main.c , 请编写Makefile.
代码:
CC=gcc
EXE=str
OBJS=$(patsubst %.c,%.o,$(wildcard *.c))
CFLAGS=-c -o
all:$(EXE)
$(EXE):$(OBJS)
$(CC) $^ -o $@
%.o:%.c
$(CC) $(CFLAGS) $@ $^
head.o:head.h
clean:
@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)==' ')//遇到空格,单词数+1
count++;
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/bash
read -p "please input file:" file
if [ -b $file ]
then
echo dev
elif [ -c $file ]
then
echo 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
else
echo error
fi
结果: