Linux下C语言的使用和方法

1. 安装gcc编译器

gcc -v 或者cc -v 查看当前编译器的版本,如果不存在就用apt-get install gcc 来安装gcc编译器。

在这里插入图片描述

2. gcc编译器的使用

gcc [选项] <文件名>	#编译文件
选项操作
-c只是编译不链接,生成目标文件“.o”
-S只是编译不汇编,生成汇编代码
-E只进行预编译,不做其他处理
-g在可执行程序中包含标准调试信息
-o file把输出文件输出到file里
-v打印出编译器内部编译各过程的命令行信息和编译器的版本
-I dir在头文件的搜索路径列表中添加dir目录
-L dir在库文件的搜索路径列表中添加dir目录
-static链接静态库
-llibrary连接名为library的库文件

3. C语言使用方法

用C语言来打印出实心矩形,空心矩形,空心菱形和等要三角形。

3.1 用传统结构化的方法来编写

编写实心矩形

#include<stdio.h>

int main(){
        int i,j;
        for(i = 0;i < 10;i++){
                for(j = 0;j < 10;j++){
                        printf("*");
                }
                printf("\n");
        }
        return 0;
}

编译后的效果:
实心矩形
编写空心矩形:

#include<stdio.h>

int main(){
        int i,j;
        for(i = 0;i < 10;i++){
                if(i == 0 ||i == 9){
                        for(j = 0;j < 10;j++){
                                printf("*");
                        }
                }
                else{
                        printf("*");
                        for(j = 0;j < 8;j++){
                                printf(" ");
                        }
                        printf("*");
                }
                printf("\n");
        }
        return 0;
}

编译后的效果:
空心矩形

编写等要三角形:

#include<stdio.h>

int main(){
        int i,j;
        for(i = 1;i <= 10;i++){
                for(j = 0;j < 10 - i;j++){
                        printf(" ");
                }
                for(j = 1;j <= 2 * i - 1;j++){
                       printf("*");
                }
                printf("\n");
        }
}

编译后的效果:
等要三角形
编写空心菱形:

#include<stdio.h>

int main(){
        int i,j;
        for(i = 1;i < 11;i++){
                for(j = 0;j < 10 - i;j++){
                        printf(" ");
                }
                for(j = 1;j <=2*i-1;j++){
                        if(j == 1 || j == 2*i-1)
                                printf("*");
                        else
                                printf(" ");
                }
                printf("\n");
        }
        for(i = 9;i > 0;i--){
                for(j = 0;j < 10 - i;j++){
                        printf(" ");
                }
                for(j = 1;j <= 2 * i - 1;j++){
                        if(j==1||j==2*i-1)
                                printf("*");

编译后的效果:

空心菱形
通过上述的方法编写可以看出,代码中出现大量的冗余,可读性较差,下面介绍用封装函数的方法来打印图形。

3.2 函数封装法编写

#include<stdio.h>

void print(char c){
	printf("%c",c);
}

void printn(){
	printf("\n");
}

void printspace(){
	printf(" ");
}

void printline(int length,char c){
	int i;
	for(i = 0;i < length;i++){
		print(c);
	}
	printn();
}

void eage(int pointer,int start,int end,char c){
	if(pointer == start || pointer == end)
		print(c);
	else
		printspace();
}

void printRec(int length,int height,char c){
	int i;
	for(i = 0;i < height;i++){
		printline(length,c);
	}
}

void printBlankRec(int length,int height,char c){
	int i,j;
	printline(length,c);
	for(i = 0;i < height - 2;i++){
		for(j = 1;j <= length;j++){
			eage(j,1,length,c);
		}
		printn();
	}
	printline(length,c);
}

void printTrangle(int height,char c){
	int i,j;
	for(i = 1;i <= height;i++){
		for(j = 0;j < height - i;j++){
			printspace();
		}
		for(j = 1;j < 2 * i;j++){
			print(c);
		}
		printn();
	}
}

void printBlankRhombus(int height,char c){
	int i,j;
	for(i = 1;i <= height;i++){
		for(j = 0;j < height - i;j++){
			printspace();
		}
		for(j = 1;j < 2 * i;j++){
			eage(j,1,2 * i - 1,c);
		}
		printn();
	}
	for(i = height;i > 0;i--){
		for(j = 0;j < height - i;j++){
			printspace();
		}
		for(j = 0;j < 2 * i;j++){
			eage(j,1,2 * i - 1,c);
		}
		printn();
	}
}

int main(){
	printRec(5,6,'*');
	printn();
	printline(30,'*');
	printn();
	printBlankRec(10,10,'*');
	printn();
	printline(30,'*');
	printn();
	printTrangle(20,'*');
	printn();
	printline(30,'*');
	printBlankRhombus(10,'*');
	return 0;
}

编译后执行的效果:
1
2

传统的方法和封装函数的方法执行效果一致,但是可读性和可理解性增加了不少,而且便于编写和后期的维护,为程序员的工作带来巨大的便利。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值