1.现有文件test.cltest1.clmain.c,请编写Makefile
CC=gcc
EXE=a.out#patsubst : 把 .c 替换成 .o
#wildcard :收集所有的 .c
OBJS=$(patsubst %.c,%.o,$(wildcard *.c ))
CFLAGS=-c -oall:$(EXE)
$(EXE):$(OBJS)$(CC) $^ -o $@#当%表示test时 test.o:test.c
#当%表示1时 1.o:1.c
%.o:%.c$(CC) $(CFLAGS) $@ $^#伪目标:当文件名与目标重名时,优先匹配文件
#添加伪目标,可以忽略文件,识别目标
.PHONY:clean
clean:@rm $(OBJS) $(EXE)
2.C编程实现:输入一个字符串,请计算单词的个数
eg:"this is a boy'
输出单词个数:4个
#include<stdio.h>
#include<string.h>
#include<stdlib.h>int main(int argc, const char *argv[])
{char arr[20];printf("please enter arr:");gets(arr);int sum=1,i=0;while(arr[i]!='\0'){if(arr[i]==' ')sum++;i++;}printf("共%d个字符\n",sum);return 0;
}

3.在终端输入一个文件名,判断文件的类型
#!/bin/bash
file=$1
if [ -b $file ]
then echo "dev"
elif [ -c $file ]
thenecho "char_dev"
elif [ -d $file ]
thenecho "dir"
elif [ -L $file ]
thenecho "link"
elif [ -S $file ]
thenecho "socket"
elif [ -p $file ]
thenecho "pipe"
elif [ -f $file ]
thenecho "regular"
elseecho "error"
fi

4.字符串倒置:(注意:是倒置,而不是直接倒置输出
原字符串为:char *str =“Iam Chinese
倒置后为:“Chinese am I”
附加要求:删除原本字符串中多余的空格
#include<stdio.h>
#include<string.h>
#include<stdlib.h>int main(int argc, const char *argv[])
{char str[20];printf("please enter str:");gets(str);int i=0,j=strlen(str)-1;//先 整体 逆置 while(i<j){char temp=str[i];str[i]=str[j];str[j]=temp;i++;j--;} // 单词 逆置// i=j=0;int k=0;while(str[i]!='\0'){// 循环到 ' ' 且 '\0'结束 while(str[j]!=' ' &&str[j]!='\0' ) {j++;} k=j-1;// 循环交换 str[i] 与 str[k] 的 字符 while(i<k){char temp=str[i];str[i]=str[k];str[k]=temp;i++;k--; }// 循环到 不等于' ' 结束 // str[j] 跨越 ' ' while(str[j]==' '){j++;}// i=j;}for(i=0;str[i]!='\0';i++){if(str[i]==' '){for(j=i+1;str[j]!='\0';j++){char t=str[j-1];str[j-1]=str[j];str[j]=t;}}}puts(str);return 0;
}
