精华内容
下载资源
问答
  • 学生成绩管理系统,用c语言编写的代码,简单易读,特别是对于c语言的初学者来说,会有很大的帮助,希望大家广泛的下载。
  • 这是用C语言编写的计算器源代码,可以借鉴学习一下,有错误的地方请改正
  • c语言编写的代码,代码易读,特别是对于初学者来说,是一个很好的例子,希望大家广泛下载。
  • C语言编写管道代码

    千次阅读 2019-01-17 20:27:04
    管道是Unix中最古老进程间通信形式。 我们把从一个进程链接到另外一个进程一个数据流称为管道。 本质是有固定大小内核缓存区。 管道限制 管道是半双工,数据只能向一个方向流动,需要双方通信时,...

    什么是管道:

    管道是Unix中最古老的进程间通信的形式。

    我们把从一个进程链接到另外一个进程的一个数据流称为管道。

    本质是有固定大小的内核缓存区。

    管道的限制

    管道是半双工的,数据只能向一个方向流动,需要双方通信时,需要建立起两个管道

    只能用于具有共同祖先的进程(具有亲缘关系的进程)之间进行通信,通常,一个管道由一个进程创建,然后该进程调用fork,此后父、子进程之间就可以用管道。

    匿名管道pipe

    包含头文件<unistd.h>

    功能:创建一无名管道

    原型:

    int pipe(int fd[2]);

    参数

    fd:文件描述符数组,其中fd[0]表示读端,fd[1]表示写端。

    返回值:成功返回0,失败返回错误代码。

    国际惯例:上个代码

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <string.h>
    #include <dirent.h>
    #include <signal.h>
    #include <sys/wait.h>
    #include <sys/time.h>
    #define ERR_EXIT(m)				\
    	do						     \
    	{						     \
    		perror(m);				\
    		exit(EXIT_FAILURE);		\
    	}while(0)
    
    
    int main()
    {
    	int pipefd[2];
    	if(pipe(pipefd) == -1)
    	{
    		ERR_EXIT("pipe error");
    	}
    	pid_t pid;
    	pid = fork();
    	if(pid == 0)
    	{
    		close(pipefd[0]);
    		write(pipefd[1],"hello",5);
    		close(pipefd[1]);
    		exit(EXIT_SUCCESS);
    	}
    	close(pipefd[1]);
    	char buf[10] = {0};
    	read(pipefd[0],buf,10);
    	printf("buf = %s\n",buf);
    	return 0;
    }

    解释一波:

    本次实验是子进程写一个字符串,父进程打印出来。

    从主函数开始解释:

    	int pipefd[2];
    	if(pipe(pipefd) == -1)
    	{
    		ERR_EXIT("pipe error");
    	}
    

    第一行代码是先创建一个数组,为的就是pipe的参数。if(pipe(pipefd)==-1)这行代码的意思就是创建一个管道,如果失败的打印错误信息。

    	pid_t pid;
    	pid = fork();
    	if(pid == 0)
    	{
    		close(pipefd[0]);
    		write(pipefd[1],"hello",5);
    		close(pipefd[1]);
    		exit(EXIT_SUCCESS);
    	}
    

    解释这些代码

    这些代码的意思是,创建一个进程(第一行和第二行),第三行代码的意思是进入子进程,pid返回0表示在子进程中,返回大于0表示在父进程中。

    再看子进程的代码:

    close(pipefd[0]);这行代码的意思是,关闭读端。因为子进程是要写字符串在管道中,所以读端就没什么用了。关闭了。

    write(pipefd[1],"hello",5);这行代码的意思就是向管道中写hello这个字符串。

    第四行close(pipefd[1]);这行代码就是关闭写端。

    再来就是子进程退出。

    	close(pipefd[1]);
    	char buf[10] = {0};
    	read(pipefd[0],buf,10);
    	printf("buf = %s\n",buf);
    	return 0;

    再看这几行代码:

    这几行代码是父进程的代码,一天因为子进程执行完就退出了。所以不会执行到这里的。

    第一行代码是关闭写端。因为父进程是读子进程传来的消息,所以写端没什么用,关闭。

    第二行代码是定义一个字符串,用来存放读取到的字符串。

    第三行代码就是读取管道的信息。

    第四行就是打印。

    注:试着让子进程睡眠10s,想让父进程先执行完看看是什么效果,但是我失望了,还是这样的。就是白等了10s;

    看结果:

    这是为啥那?

    强行解释一波,下面代码是父子进程共用的代码,并不是父进程自己的代码,所以当子进程执行完才会执行的代码。(实际上是当没有数据可读时:O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来到为止。)

     

    在看一段代码:

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <string.h>
    #include <dirent.h>
    #include <signal.h>
    #include <sys/wait.h>
    #include <sys/time.h>
    #define ERR_EXIT(m)				\
    	do						     \
    	{						     \
    		perror(m);				\
    		exit(EXIT_FAILURE);		\
    	}while(0)
    
    
    int main()
    {
    	int pipefd[2];
    	if(pipe(pipefd) == -1)
    	{
    		ERR_EXIT("pipe error");
    	}
    	pid_t pid;
    	pid = fork();
    	if(pid == 0)
    	{	
    		dup2(pipefd[1],STDOUT_FILENO);
    		close(pipefd[1]);
    		close(pipefd[0]);
    		execlp("ls","ls",NULL);
    		fprintf(stderr,"error execor execte ls\n");
    		exit(EXIT_FAILURE);
    	}
    	dup2(pipefd[0],STDIN_FILENO);
    	close(pipefd[0]);
    	close(pipefd[1]);
    	execlp("wc","wc","-w",NULL);
    	fprintf(stderr,"error execute wc\n");
    	return 0;
    }
    

    这行代码的执行效果和 ls | wc -w

    的执行效果是一样的。

    看结果:

    ·重复部分不做解释,只简单说明一下:

    	if(pid == 0)
    	{	
    		dup2(pipefd[1],STDOUT_FILENO);
    		close(pipefd[1]);
    		close(pipefd[0]);
    		execlp("ls","ls",NULL);
    		fprintf(stderr,"error execor execte ls\n");
    		exit(EXIT_FAILURE);
    	}
    

    这段代码的意思是:

    dup2(pipefd[1],STDOUT_FILENO);这行代码的意思是,把文件输出描述符定义到写端。

            close(pipefd[1]);
            close(pipefd[0]);

    当重定向完以后就可以关闭通道了。

            execlp("ls","ls",NULL);
            fprintf(stderr,"error execor execte ls\n");

    这两行代码是执行ls命令,因为已经输出重定向了,进管道了。

    到了父进程

        dup2(pipefd[0],STDIN_FILENO);
    这行代码重定向了读端,

        execlp("wc","wc","-w",NULL);
    读到了ls命令再加上wc -w这样就输出了 ls | wc -w的效果。


    在实现一个例子:

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <string.h>
    #include <dirent.h>
    #include <signal.h>
    #include <sys/wait.h>
    #include <sys/time.h>
    #define ERR_EXIT(m)				\
    	do						     \
    	{						     \
    		perror(m);				\
    		exit(EXIT_FAILURE);		\
    	}while(0)
    
    
    int main()
    {
    	close(0);
    	open("pip.cpp",O_RDONLY);
    	close(1);
    	open("01pipe.cpp",O_WRONLY | O_CREAT | O_TRUNC,0644);
    	execlp("cat","cat",NULL);
    	return 0;
    }
    

    这行代码的意思是复制代码:

    先关闭标准输出标准输出。打开pip.cpp文件,在创建一个01pipe.cpp文件,cat命令当单独使用的时候,会把键盘输入的在打印出来,由于关闭了标准输入和输出,所以会把pip.cpp的文件输出到01pipe.cpp中。假如想打印出这个代码,可以这样做。

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <string.h>
    #include <dirent.h>
    #include <signal.h>
    #include <sys/wait.h>
    #include <sys/time.h>
    #define ERR_EXIT(m)				\
    	do						     \
    	{						     \
    		perror(m);				\
    		exit(EXIT_FAILURE);		\
    	}while(0)
    
    
    int main()
    {
    	close(0);
    	open("04pipe.cpp",O_RDONLY);
    	execlp("cat","cat",NULL);
    	return 0;
    }
    

     

    执行结果。

    之前写过如何打印自己的代码?这个也是可以实现的。

    https://blog.csdn.net/m0_38036750/article/details/85066109

    这篇文章是写的如何打印自己的代码,效果一样,但是这样写会更简单。

     

    管道的读写规则

    当没有数据可读时:

    O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来到为止。

    O_NONBLOCK enable:read调用返回-1,errno值为EAGAIN。

    如果所有管道写端对应的文件描述符被关闭,则read返回0.

    如果所有管道读端对应的文件描述符被关闭,则write操作会产生信号SIGPIPE

    当要写入的数据量不大于PIPE_BUF时,linux将保证写入的原子性。

    当要写入的数据量大于PIPE_BUF时,linux将不再保证写入的原子性。

     

    命名管道(FIFO)

    管道应用的一个限制就是只能在具有共同祖先(具有亲缘关系)的进程间通信。

    如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道。

    命名管道是一种特殊类型的文件。

    创建一个命名管道:

    命名管道可以从命令行上创建,命令行方法使用下面这个命令:

    mkfifo filename
    

    命名管道也可以从程序里创建,相关函数有:

    int mkfifo(const char *filename,mode_t mode);

    代码:

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <string.h>
    #include <dirent.h>
    #include <signal.h>
    #include <sys/wait.h>
    #include <sys/time.h>
    #define ERR_EXIT(m)				\
    	do						     \
    	{						     \
    		perror(m);				\
    		exit(EXIT_FAILURE);		\
    	}while(0)
    
    
    int main()
    {
    	mkfifo("p2",0644);
    	return 0;
    }
    

    执行结果:

    p2是一个管道文件,这个和mkfifo filename相似。

     

    匿名管道和命名管道

    匿名管道由pipe函数创建并打开。

    命名管道由mkfifo函数创建,打开用open

    FIFO(命名管道)与pipe(匿名管道)之间唯一的区别在他们创建与打开的方式不同,一但这些工作完成之后,他们具有相同的语义。

     

     

    命名管道的打开规则

    如果当前打开操作是为读而打开FIFO时

    O_NONBLOCK disable:阻塞直到有相应进程为写而打开该FIFO

    O_NONBLOCK enable:立刻返回成功

    如果当前打开操作是为写而打开FIFO时

    O_NONBLOCK disable:阻塞直到有相应进程为读而打开该FIFO

    O_NONBLOCK enable:立刻返回失败,错误码为ENXIO

     

    展开全文
  • C语言编写的冰河病毒代码,用于网络安全技术方面的,这只是冰河的代码,另外还需要一个支撑程序,还有一个客户端才是完整的病毒
  • C语言是一门面向过程、抽象化通用程序设计语言,广泛应用于底层开发。C语言能以简易方式编译、处理低级存储器。C语言是仅产生少量机器语言以及不需要任何运行环境支持便能运行高效率程序设计语言。尽管...
  • 该资源是由C语言编写的,是纯代码在Turbo c++编译器可以调试成功,对于学习C语言并且打算做一款自己的小游戏的人很有帮助,希望大家可以从中收获多多。
  • c语言编写的音乐播放器源代码,是用c写的播放器,很经典的程序,适合初学者
  • 这是贪吃蛇游戏的源程序,用c语言编写的,在tc上运行通过的。
  • 这是一个用c语言写成多级菜单代码。能让你熟悉图形界面编程形式。
  • C语言编写坦克大战源代码,MFC编写的坦克游戏,已经编译无错可运行,是个不错的代码学习资料!
  • 这是我用C语言编写的空间后方交会代码,希望大家喜欢哦。
  • C语言代码编写除了代码编辑、编译运行,还有什么步骤,3个步骤顺序是什么 C语言代码编写除了代码编辑、编译运行,还有什么步骤,3个步骤顺序是什么
  • 这是自制的计算器,用刚学的C语言编写的,功能和系统自导的一样,希望上传后给大家借鉴一下。
  • 这是一个基于EGE开发,并用是vc6.0开发工具。
  • 这个职工管理系统是用C语言编写的,非常的好,我保证
  • 这是用C语言编写的坦克大战。有界面的哦!很好的学习的资料!
  • 是最基础游戏源代码,对于计算机语言初学者来说非常实用
  • c语言编写的万年历

    2014-06-11 03:39:41
    这是用c语言编写而成万年历系统,资源包括课程设计报告,万年历源代码,和万年历日期到星期换算方法。
  • 这是一个贪吃蛇c代码,大家借鉴一下吧!!! 纯娱乐!!!
  • PAGE / NUMPAGES 编写C语言的代码文件是demo.cpp VC++(C PLUS PLUS)6.0 编译demo.obj(编译后生成的目标文件) 执行demo.exe TC demo.c 总结先编译后执行 C语言过程化的语言 八字真言 自顶向下逐层细化 #include ...
  • C语言编写的银行管理系统关键代码

    千次阅读 2017-06-29 00:31:27
    在一个银行系统中,最重要的是客户的开户问题,我在这一部分,花费了一天才搞明白,都怪之前学的数据...以下是用C语言编写的开户,#include #include #include #include #include "head1.h" #include "head2.h"void

    在一个银行系统中,最重要的是客户的开户问题,我在这一部分,花费了一天才搞明白,都怪之前学的数据结构没学好,哎,以后还要温故而知新啊。
    以下是用C语言编写的开户,

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <windows.h>
    #include "head1.h"
    #include "head2.h"
    
    void kaihu(User *head)
    {
        system("cls");
        char flag = 'y';
        count1 = 1;
    
        User *p1;
    
        FILE *fp2 = NULL;         //定义文件指针
        user = (User *)malloc( sizeof(struct User));   //开辟user结点
        head->next = user;       //把user和head连接起来
        if((fp2 = fopen("user.txt","a+")) == NULL)
        {
            printf("The file open error!!!");
            getchar();
            exit(0);
        }
        printf("\n\n\t\t请按照下列提示输入新用户信息\n");
    
        while(flag == 'y' || flag == 'Y')
        {
            int m=rand();
    
            printf("\n\n\t\t请输入您的用户名:");
            scanf("%s",user->username);        //输入用户名
            encrypt(user->userpswd);
            /*printf("\n\t\t请输入您的密码:");
            scanf("%s",user->userpswd);        //输入密码*/
            srand(time(0));                               //使每次产生的随机数不同
    
            user->userID = m%10000+1000000000;    //产生的随机数赋给userID
            printf("\n\t\t请输入您的开户金额(不少于20元):");
            scanf("%f",&user->usermoney);     //输入开户金额
            printf("\n\t\t请输入您的开户时间:");
            scanf("%s",user->user_firsttime); //输入开户时间
            user->next = NULL;       //一个用户信息填写完毕后,user下一个结点为空
            fprintf(fp2,"%d %s %f %s %s\n",user->userID,user->username,user->usermoney,user->userpswd,user->user_firsttime);  //把用户信息写入文件user.txt
            printf("是否继续添加新的用户,是输入y,否输入n: ");
            scanf(" %c",&flag);
            //判断输入的flag,是否继续添加用户信息
            if(flag == 'n' || flag == 'N')   //当不添加新用户信息了
            {
                printf("\n\t\t 开户成功,请牢记您的账户信息:\n ");
                user = head->next;        //头指针指向下一个赋给user,user移到头部
                while(user)     //当user不为空的时候
                {
                    printf("\n\t\t\t  姓名:%s  卡号:%d  余额:%.2f\n",user->username,user->userID,user->usermoney);  //输出之前添加过用户的用户名、账号、开户金额
                    user = user->next;   //指针指向下一个
               }
               fclose(fp2);
    
               getch();
    
               front1(head);
            }
            else if(flag == 'y' || flag == 'Y')   //当继续添加新用户时
            {
                count1 ++;    //计数新客户的数量
                p1 = (User *)malloc( sizeof(struct User));  //开辟一个新节点p1
                p1->next = NULL;    //p1指向空
                user->next = p1;   //user指向p1,这样user和p1就连接起来了
                user = p1;      //p1赋给user,即user移到p1的位置,往后移了一下
    
            }
            else    //当flag不为y或n,直接退出
            {
                if(flag!='Y' && flag!='y'){
                    printf("\n\t\t***输入错误***\n");
                    exit(0);
                  }
             }
    
         }
    
    }
    

    另外,附上后序完整版部分功能代码:

    #include <stdio.h> 
    #include <conio.h>
    
    #include <windows.h>
    #include <time.h>
    #include <string.h>
    #include <stdlib.h>
    struct bank{
     char name[20];
     int num;
     char pswd[100];
     int money;
    };
    
    struct bank person[1000];
    int i,j,jine,num,k=0;
    
    
    //--------------------设置密码----------------------
    void setpswd(char pswd[])
    {                           
     int x=0;
     printf("\t\t\t  请输入您的密码:");
     while(1){
        pswd[x]=getch();
      if(pswd[x]!='\r'){
       printf("*");
          ++x;
      }
      else break;
     }
     pswd[x]='\0';
        printf("\n");
    }
    
    
    //------------------输入卡号------------------------
    int putnum(){
        int resultnum=-1;
    // char pswd[100];
     while(resultnum<0){
        printf("\t\t\t  请输入您的卡号:");
        scanf("%d",&num);
        for(i=0;i<1000;i++){
               if(person[i].num==num){
            return resultnum=1;
       // break;  执行到return语句处,整个程序便结束,不会执行下边的break语句
         }
          else if(person[i].num==0){
        printf("\t\t\t  您输入的卡号不存在,请重新输入\n");  //system("cls");
        Sleep(1000);
        fflush(stdin);
        system("cls");
        printf("\n\n\n\n\n\n\n");
        break;
        // return resultnum=-1; 
       }
      }
     }
    }
    
    
    //------------------输入密码----------------------
    void putpswd(){
     int z=0;
     char pswd[100];
     fflush(stdin);
        while(1){
      setpswd(pswd);
         if(strcmp(person[i].pswd,pswd)==0)  
         break;
      else{
       z++;
       if(z==3){
        printf("\t\t\t  您已连续三次输入密码错误,系统将在三秒后自动退出!\n\n\n");
        for(int i=0;i<3;i++)
        { 
         Sleep(1000);
         printf("\t\t\t\t\t  %d\r",3-i);
        }
           exit(0);
       }
       printf("\t\t\t  您输入的密码有误,请重新输入!\n");
    
      }   
     }
    }
    
    
    
    //----------------------开户----------------------
    void kaihu(){ 
     system("cls");
     printf("\n\n\n\n\n\n\n");
        printf("\t\t\t  请输入用户姓名:");
     scanf("%s",person[k].name);
        setpswd(person[k].pswd);
     while(1){
      printf("\t\t\t  请输入初始金额(不少于一元!):");
            scanf("%d",&jine);
      fflush(stdin);
         if(jine>=1)break;
      else printf("\t\t\t  金额不足,请重新输入!\n");
     }
     person[k].money+=jine;
        // printf("\t\t\t  %s\n",person[k].pswd);
        // scanf("%d",&person[k].pswd);
        srand(time(0));                               //使每次产生的随机数不同
     int m=rand();
     person[k].num=m%10000+1000000000;
     printf("\t\t\t  您的账号为:%d\n",person[k].num);     // 随机产生账号
     printf("\t\t\t  开户成功,请牢记您的账户信息:\n ");
     printf("\t\t\t  姓名%s  卡号%d  余额%d\n",person[k].name,person[k].num,person[k].money);
     printf("\t\t\t  请按任意键返回!"); 
     k++;
     getch();
        system("cls");
    }
    
    
    //------------------------存款-----------------
    void cunkuan(){
     system("cls");
     printf("\n\n\n\n\n\n\n");
     int y=putnum(); fflush(stdin);
     putpswd();
     printf("\t\t\t  请输入存款金额:");
        scanf("%d",&jine);
     person[i].money+=jine;
     printf("\t\t\t  您的余额为:");
     printf("%d\n",person[i].money);
     printf("\t\t\t  存款成功按任意键返回!"); 
     getch();
     system("cls");
    
    }
    
    
    
    //------------------------查询-----------------
    void chaxun(){
     system("cls");
     printf("\n\n\n\n\n\n\n");
        int y=putnum();
     putpswd();
     printf("\t\t\t  您的余额为:");
     printf("%d\n",person[i].money);
     printf("\t\t\t  查询成功按任意键返回!"); 
     getch();
     system("cls");
    }
    
    
    
    //------------------------取款-----------------
    void qukuan(){
        system("cls");
     printf("\n\n\n\n\n\n\n");
        int y=putnum();
     while(1){
          printf("\t\t\t  请输入您的取款金额");
          scanf("%d",&jine);
          if(jine>person[i].money)
                 printf("\t\t\t  您的余额不足,请重新输入!\n");
          else break;
      }
      person[i].money-=jine;
      printf("\t\t\t  您的余额为:");
      printf("%d\n",person[i].money);
       printf("\t\t\t  取款成功按任意键返回!"); 
     getch();
     system("cls");
    }
    
    
    
    //------------------------转账-----------------
    int zhuanzhang(){  
     system("cls");
     printf("\n\n\n\n\n\n\n");
     int num1,c;
     putnum();
     putpswd();
     printf("\t\t\t  请输入对方卡号:");
        scanf("%d",&num1);
        for(j=0;j<1000;j++){
            if(person[j].num==num1)
            break;
      if(person[j].num==0){
       j=0;
           printf("\t\t\t  您输入的卡号不存在,请重新输入!\n");
                printf("\t\t\t  请输入对方卡号:");
                scanf("%d",&num1);
      }
     }
     if(num!=num1){
      while(1){
             printf("\t\t\t  请输入您的转账金额");
             scanf("%d",&jine);
             if(jine>person[i].money)
                    printf("\t\t\t  您的余额不足,请重新输入!\n");
             else break;
      }
     }
     else {
      printf("\t\t\t  不能给自己转账,请按任意键返回!");
      getch();
      system("cls");
      return 0;
     }
     printf("\t\t\t  请确认您的转入用户及转账金额:\n");
     printf("\t\t\t  姓名%s  卡号%d  金额%d",person[j].name,person[j].num,jine);
     printf("\n\t\t\t  确认转账请按Y/y,返回请按N/n");
     while(1){
            c=getch();
      if(c=='N'||c=='n'){
       system("cls");
       break;
      }
         if(c=='Y'||c=='y'){
             person[i].money-=jine;
             person[j].money+=jine;
             printf("\n\t\t\t  转账成功,是否显示您的余额(按Y/y显示余额,按任意键返回)");
          c=getch();
          if(c=='Y'||c=='y'){
        printf("\t\t\t  您的余额为:%d",person[i].money);
        printf("\n\t\t\t  交易完成 按任意键返回!"); 
        getch();
        system("cls");break;
       }
       else system("cls");break;
      }
       else printf("\n\t\t\t  输入有误,请重新输入:");
     }
    }
    
    
    
    //---------------------------主界面-------------------------------
    void zhujiemian()
    {
        int i;
     while(1)
     {
      printf("\t\t************************************************\n");
         printf("\t\t*                                              *\n");
         printf("\t\t*                欢迎进入中国银行              *\n");
         printf("\t\t*                                              *\n");
         printf("\t\t************************************************\n");
         printf("\t\t                     1.开户\n\n");
         printf("\t\t                     2.存款\n\n");
         printf("\t\t                     3.查询\n\n");
         printf("\t\t                     4.取款\n\n");
         printf("\t\t                     5.转账\n\n");
         printf("\t\t                     6.退出\n\n");
    
         printf("\t\t          请输入您要办理的业务的编号:");
            scanf("%d",&i);
      if(1<=i&&i<=6){
                switch(i)
       {
                    case 1:kaihu();break;
                    case 2:cunkuan();break;         
                    case 3:chaxun();break;
                    case 4:qukuan();break;
                 case 5:zhuanzhang();break;
               case 6:exit(0);break;
       }break;
      }
          else{
           printf("\t\t\t  您输入的编号有误,请重新输入!\n");
           Sleep(1000);
        fflush(stdin);
        system("cls");
       }
    } 
     zhujiemian();
    }
    
    
    
    //-----------------------main函数---------------------------------
    int main(void)
    { 
     int j;
        system("color 1E");
     printf("\n\n\n\n\n\n\n\n\n\n");
     printf("\t\t\t    %c ",1);
     printf("欢迎登录中国银行!\n\n\n\n\n\n\n\n\n\n\n\n\n");
     printf("正在进入,请等候...\n");
     printf("===============================================================================\r");
     for(j=0;j<80;j++){
         Sleep(100);
         printf(">");
     }
      system("cls");   
     zhujiemian();
     return 0;
    }
    
    
    展开全文
  • 这是C语言编写的病毒原理以及源代码,改动一些地方加入一些东西然后编译后再加壳加花,一个好的病毒就可以做成了.
  • 这是用C语言编写的代码!供大家学习参考使用!
  • C语言编写代码语法

    2021-06-10 09:02:04
    C语言是一门面向过程、抽象化通用程序设计语言,广泛应用于底层开发。C语言能以简易方式编译、处理低级存储器。C语言是仅产生少量机器语言...本文主要介绍C语言编写代码语法。 原文地址:C语言编写代码语法 ...

    C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。可以精确控制操作系统和内存,高性能运行时环境以及源级跨平台编译,在手机游戏开发中也占有很重要的地位。本文主要介绍C语言编写代码语法。
    原文地址:C语言编写代码语法

    展开全文
  • C语言编写代码绘制圆

    万次阅读 2015-05-03 20:41:23
    #include #include int main(){ double y,m; int x; for (y = 10;... //计算行y对应列坐标m,2.5为屏幕纵横比调节系数, //屏幕行距大于列距,不调节会是椭圆 for (x = 1; x { printf(" ");

    #include <stdio.h>
    #include <math.h>
    int main()
    {
    double y,m;
    int x;
    for (y = 10; y >= -10;y--)
    //圆的半径为10
    {
    m = 2.5*sqrt(100 - y*y);
    //计算行y对应的列坐标m,2.5为屏幕纵横比调节系数,
    //屏幕的行距大于列距,不调节会是椭圆

    for (x = 1; x < 30 - m;x++)
    {
    printf(" ");
    //图形左侧空白控制
    }
    printf("*");
    //圆的左侧
    for (; x < 30 + m;x++)
    {
    printf(" ");
    }
    printf(" * \n");
    //圆的右侧
    }
    system("pause");
    return 0;
    }

    运行结果:
    C语言编写代码绘制圆 - 追风少年 - 追风少年的博客
     
    分析:利用图形的左右对称性。根据圆的方程
                                                             R*R=X*X+Y*Y
    可以计算出每一点行和列的对应关系。
    展开全文
  • c语言编写简单图书馆系统程序源代码,在dos下运行,是字符见面。
  • C语言编写的计算器

    2009-11-24 20:41:28
    关于c语言编写的计算器,含报告,源代码是C语言
  • 对于具备C语言基础人来说,想进一步提升自己水平,要是对安全方向感兴趣,病毒编程是个不错选择。C语言实现病毒,教程讲解+完整源代码
  • 编程高手之路代码集萃C语言编写的俄罗斯方块 Tc2.0中怎么样设置图形显示 Tc2.0中有两种显示模式一种是我们所熟知的字符模式另一种是图形模式在字符模式下只能显式字符如ASCII字符一般是显示25 行每行80个字符程序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,291
精华内容 3,716
关键字:

c语言编写的代码是

c语言 订阅