1.现有文件test.cltest1.clmain.c,请编写Makefile
CC=gcc
EXE=a.out
#patsubst : 把 .c 替换成 .o
#wildcard :收集所有的 .c
OBJS=$(patsubst %.c,%.o,$(wildcard *.c ))
CFLAGS=-c -o
all:$(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 ]
then
echo "char_dev"
elif [ -d $file ]
then
echo "dir"
elif [ -L $file ]
then
echo "link"
elif [ -S $file ]
then
echo "socket"
elif [ -p $file ]
then
echo "pipe"
elif [ -f $file ]
then
echo "regular"
else
echo "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;
}