C语言 第一章 C语言简介

目录

一、C语言介绍

C是一种通用的编程语言,广泛用于系统软件与应用软件的开发。于1969年至1973年间,为了移植与开发UNIX操作系统,由丹尼斯·里奇与肯·汤普逊,以B语言为基础,在贝尔实验室设计、开发出来。
C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序员中备受青睐,成为最近25年使用最为广泛的编程语言[2]。目前,C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows, Mac OS X, Linux, Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。二十世纪八十年代至今的有关程序开发工具,一般都支持匹配ANSI C的语法。

二、C语言特点

C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
不同的变量类型可以用结构体(struct)组合在一起。
只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。
部分的变量类型可以转换,例如整型和字符型变量。
通过指针(pointer),C语言可以容易的对内存进行低级控制。
编译预处理(preprocessor)让C语言的编译更具有弹性。

三、Hello World

#include "stdio.h"
void main()
{
   printf("Hello World!");
}

四、转义符

//单行注释

/*
1、多行注释、单行注释
2、C语言是由函数组成 函数名()
*/

//3、包含头文件,printf函数处在stdio.h
#include "stdio.h"

//4、定义主函数,有且仅有一个,是程序的入口
void main()
{
    //5、向屏幕输出信息,调用函数
    printf("Hello World!\n");

    //6、转义符
    //\n 转行
    //\t 制表位
    //\" 双引号
    //\‘ 单引号
    //\b 退格
    //\a 蜂鸣
    printf("张果老师说\t\t");
    printf("\"Hello S1SR139!\‘");
    printf("\a\a\a");
}

五、占位符

#include "stdio.h"
void main()
{
    /**
          %c        单个字符
          %d        十进制整数
          %f        十进制浮点数
          %o        八进制数
          %s        字符串
          %u        无符号十进制数
          %x        十六进制数
          %%        输出百分号%
        一个格式说明可以带有几个修饰符,用来指定显示宽度,小数尾书及左对齐等:
          -         左对齐
          +         在一个带符号数前加"+"或"-"号
          0         域宽用前导零来填充,而不是用空白符
        */

        printf("%10s%s的成绩是%lf分,全班第%d名,性别%c。\n","","张3",98.5,100,‘M‘);

        printf("%10s\n","Hello");
        printf("%10s\n","Good");
        printf("%10s\n","Boy");
}

六、俄罗斯方块游戏

game.cpp  C++代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
#include<conio.h>

#define MOD 28
#define SIZE_N 19
#define SIZE_M 12

int cur_x,cur_y;
int score,mark,next,map[SIZE_N][SIZE_M],Gamespeed=300;

int shape[28][6]={
        {0,-1,0,-2,1,0}, {0,1,1,0,2,0}, {-1,0,0,1,0,2}, {0,-1,-1,0,-2,0},
        {0,-1,0,1,-1,0}, {0,1,1,0,-1,0}, {1,0,0,-1,0,1}, {1,0,-1,0,0,-1},
        {-1,1,0,1,1,0}, {0,-1,1,0,1,1}, {-1,0,0,-1,1,-1}, {-1,-1,-1,0,0,1},
        {-1,0,0,1,1,1}, {0,1,1,-1,1,0}, {-1,0,0,1,1,1}, {0,1,1,-1,1,0},
        {-1,0,0,-1,0,-2}, {-1,0,-2,0,0,1}, {0,1,0,2,1,0}, {0,-1,1,0,2,0},
        {0,1,1,0,1,1}, {0,-1,1,0,1,-1}, {-1,0,0,-1,-1,-1}, {-1,0,-1,1,0,1},
        {0,1,0,2,0,3}, {1,0,2,0,3,0}, {0,-1,0,-2,0,-3}, {-1,0,-2,0,-3,0}
};

void gotoxy(int x,int y){
        COORD c;
        c.X=x-1; c.Y=y-1;
        SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
void Gameover(){
        int i,j,flag=0;
        for(j=1;j<SIZE_M-1;j++){
                if(map[1][j]!=0){
                        flag=1;break;
                }
        }
        if(flag==1){
                for(i=1;i<SIZE_N-1;i++){
                        gotoxy(2,i+1);
                        for(j=1;j<SIZE_M-1;j++){
                                printf("□");
                        }puts("");
                }
                gotoxy(7,9);
                printf("GAME OVER!");
                gotoxy(1,SIZE_N+1);
                exit(0);
        }
}
void ShowMap(int id){
        int i,j;
        gotoxy(1,1);
        if(id!=-1){
                for(i=0;i<SIZE_N;i++){
                        for(j=0;j<SIZE_M;j++){
                                if(i==0&&j==0 || i==0&&j==SIZE_M-1 || j==0&&i==SIZE_N-1 || j==SIZE_M-1&&i==SIZE_N-1)printf(" ");
                                else if(i==0 || i==SIZE_N-1)printf("--");
                                else if(j==0 || j==SIZE_M-1)printf("|");
                                else if(map[i][j]==2) printf("■");
                                else if(i==cur_x+shape[id][0] && j==cur_y+shape[id][1] ||
                                        i==cur_x+shape[id][2] && j==cur_y+shape[id][3] ||
                                        i==cur_x+shape[id][4] && j==cur_y+shape[id][5] ||
                                        i==cur_x && j==cur_y)
                                        printf("■");
                                else if(map[i][j]==0) printf("  ");
                        }
                        if(i==1)printf("   下一个 :");
                        if(i==11)printf("   等分 :   %d",score);
                        if(i==14)printf("   速度 :   %d",score/100+1);
                        puts("");
                }
        }
        else {
                mark=1;
                for(i=0;i<SIZE_N;i++){
                        for(j=0;j<SIZE_M;j++){
                                if(i==0&&j==0 || i==0&&j==SIZE_M-1 || j==0&&i==SIZE_N-1 || j==SIZE_M-1&&i==SIZE_N-1)printf(" ");
                                else if(i==0 || i==SIZE_N-1)printf("--");
                                else if(j==0 || j==SIZE_M-1)printf("|");
                                else if(map[i][j]==2) printf("■");
                                else if(map[i][j]==0) printf("  ");
                        }
                        if(i==1)printf("   next:");
                        if(i==11)printf("   score :   %d",score);
                        if(i==14)printf("   speed :   %d",score/100+1);
                        puts("");
                }
        }

        gotoxy(30,6); printf("  ");
        for(i=0;i<6;i=i+2){
                gotoxy(30+2*shape[id][i+1],6+shape[id][i]); printf("  ");
        }
        gotoxy(30,6); printf("■");
        for(i=0;i<6;i=i+2){
                gotoxy(30+2*shape[next][i+1],6+shape[next][i]); printf("■");
        }
        Sleep(Gamespeed);
}

void init(int id){
    int i,j;
        memset(map,0,sizeof(map));
        for(i=0;i<SIZE_N;i++){
                for(j=0;j<SIZE_M;j++)
                        if(i==SIZE_N-1 || j==0 || j==SIZE_M-1)
                                map[i][j]=-1;
        }
        cur_x=0; cur_y=5;
        ShowMap(id);
}

int judge_in(int x,int y,int id){
    int i;
        if(map[x][y]!=0)return 0;
        for(i=0;i<6;i=i+2){
                if(map[ x+shape[id][i] ][ y+shape[id][i+1] ]!=0)return 0;
        }return 1;
}

void fun_score(){
    int i,j,ii,jj;
        for(i=1;i<SIZE_N-1;i++){
                int flag=0;
                for(j=1;j<SIZE_M-1;j++){
                        if(map[i][j]!=2){ flag=1;break; }
                }
                if(flag==0){
                        int k=3;
                        while(k--){
                                gotoxy(2,i+1);
                                for(ii=1;ii<SIZE_M-1;ii++){
                                        if(map[i][ii]==2){
                                                if(k%2==1)printf("  ");
                                                else printf("■");
                                        }
                                }Sleep(100);
                        }
                        for(ii=i;ii>1;ii--){
                                for(jj=1;jj<SIZE_M-1;jj++) map[ii][jj]=map[ii-1][jj];
                        }
                        ShowMap(-1);
                        score+=10;
                        if(score%100==0 && score!=0)Gamespeed-=50;
                }
        }
}

int main(){
        int i,id,set=1;

        srand(time(NULL));
        id=rand()%MOD; id=(id+MOD)%MOD;
        next=rand()%MOD; next=(next+MOD)%MOD;

        init(id);

        while(1){
Here:        mark=0;
                if(set==0){
                        id=next;
                        next=rand()%MOD; next=(next+MOD)%MOD;
                        cur_x=0;cur_y=5;
                        set=1;
                }

                while(!kbhit()){
                        Gameover();
                        if(judge_in(cur_x+1,cur_y,id)==1) cur_x++;
                        else {
                                map[cur_x][cur_y]=2;
                                for(i=0;i<6;i=i+2)
                                        map[ cur_x+shape[id][i] ][ cur_y+shape[id][i+1] ]=2;
                                fun_score();
                                set=0;
                        }
                        if(mark!=1)ShowMap(id);
                        goto Here;
                }

                char key;
                key=getch();

                if(key==72){
                        int tmp=id;
                        id++;
                        if( id%4==0 && id!=0 )id=id-4;
                        if(judge_in(cur_x,cur_y,id)!=1)id=tmp;
                }
                else if(key==80 && judge_in(cur_x+1,cur_y,id)==1)cur_x++;
                else if(key==75 && judge_in(cur_x,cur_y-1,id)==1)cur_y--;
                else if(key==77 && judge_in(cur_x,cur_y+1,id)==1)cur_y++;
                else if(key==27){gotoxy(1,SIZE_N+1);exit(0);}
        }
        getch();
        return 0;
}

七、文件下载

帮助与示例点击下载

开发工具点击下载

时间: 2024-11-03 20:54:10

C语言 第一章 C语言简介的相关文章

c程序设计语言第一章2

练习1.13编写一个程序,打印输入中单词长度的直方图.水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define MAXHIST 15//定义直方图的最大值 4 #define MAXWORD 11//定义单词的最大字符数 5 #define IN 1 6 #define OUT 0 7 int main() 8 { 9 int nc;//单词所含的字符数 10 int maxv

c程序设计语言第一章5

练习1.20请编写程序d e t a b??将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止的地方.假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define TABBLANK 8//tab 增加的尺寸 4 int main() 5 { 6 int c; 7 int nb=0;//记录空格数目 8 int pos=1;//记录当前所在位置 9 whi

第一章. ActionScript 语言基础

第一章. ActionScript 语言基础 1.0. ActionScript 3.0 Cookbook 概述 1.1. 新建一个 ActionScript project 1.2. 自己定义应用程序属性 1.3. 在哪里写ActionScript 代码呢 1.4. 怎样跟踪信息 1.5. 处理事件 1.6. 响应鼠标和键盘事件 1.7. 算术运算 1.8. 逻辑运算 1.9. 运行条件语句 1.10. 运行复杂的条件语句 1.11. 某段时间反复运行一种操作 1.12. 长时间运行一个任务

Linux内核分析——第一章 Linux内核简介

第一章   Linux内核简介 一.Unix的历史 1.Unix系统成为一个强大.健壮和稳定的操作系统的根本原因: (1)简洁 (2)在Unix中,很多东西都被当做文件对待.这种抽象使对数据和对设备的操作都是通过一套相同的系统调用借口来进行的:open(),read(),write(),lseek()和close(). (3)Unix的内核和相关的系统工具软件是用C语言编写而成.(移植能力) (4)进程创建非常迅速,并且有一个非常独特的fork()系统调用. (5)Unix提供了一套非常简单但又

第一章 Web MVC简介 —— SpringMVC

第一章 Web MVC简介 -- SpringMVC Web MVC简介 1.1.Web开发中的请求-响应模型: 在Web世界里,具体步骤如下: 1.  Web浏览器(如IE)发起请求,如访问http://sishuok.com 2.  Web服务器(如Tomcat)接收请求,处理请求(比如用户新增,则将把用户保存一下),最后产生响应(一般为html). 3.web服务器处理完成后,返回内容给web客户端(一般就是我们的浏览器),客户端对接收的内容进行处理(如web浏览器将会对接收到的html内

OSGi原理与最佳实践:第一章 OSGi框架简介(2)

OSGi原理与最佳实践:第一章 OSGi框架简介(2) 由  ValRay 发布 已被浏览4884次 共有3条评论 已被3个人收藏 2013-08-16 21:23 顶(0) 踩(0) osgi原理与最佳实践 1.1.4 开发传统类型的应用 1.1.4.1 B/S 我们首先来看一下,如何基于 OSGi 来开发 B/S 结构的应用.B/S 结构应用程序的开发,可有两个选择:一个是在 OSGi 的框架中嵌入 Http 服务器,另外一个是在 Servlet 容器中嵌入 OSGi 框架.下面分别介绍这两

OSGi原理与最佳实践:第一章 OSGi框架简介(5)Spring-DM

OSGi原理与最佳实践:第一章 OSGi框架简介(5)Spring-DM 由  ValRay 发布 已被浏览8409次 共有3条评论 已被2个人收藏 2013-08-16 21:29 顶(1) 踩(0) osgi原理与最佳实践 1.3 Spring-DM 1.3.1 简介 Spring-DM 指的是 Spring Dynamic Modules.Spring-DM 的主要目的是能够方便地将 Spring 框架 和OSGi框架结合在一起,使得使用Spring的应用程序可以方便简单地部署在OSGi环

第一章:Druid简介

声明 公司的项目中用到了Druid(不是阿里的连接池),由于网上没有中文的文档,所以只好阅读官方文档.本人第一次阅读英文的文档,非常吃力,借助翻译工具和自己的理解阅读了Durid的官方文档.可能有很多地方有错误,或者不准确.请见谅.   Druid 是一个大数据的实施查询的工具,类似于数据库,号称可以1s内在6TB的数据中查询出数据. 第一章:Druid简介,布布扣,bubuko.com

第一章、MySQL简介及安装

目录 第一章.MySQL简介及安装 DBA工作内容 DBA的职业素养 MySQL简介及安装 01 什么是数据? 02 什么是数据库管理系统 03 数据库管理系统种类 关系型数据库(RDMS)与非关系型数据库(NoSQL)对比 04 MySQL发展史 05 MySQL正在推动世界 06 MySQL简介及产品线 06 MySQL安装 源码安装MySQL 二进制安装MySQL 第一章.MySQL简介及安装 DBA工作内容 DBA的职业素养 MySQL简介及安装 01 什么是数据? 数据(data)是事