精华内容
下载资源
问答
  • 以下是DNA序列,存储在window下F:\perl\data.txt里面: AAAAAAAAAAAAAAGGGGGGGTTTTCCCCCCCC  CCCCCGTCGTAGTAAAGTATGCAGTAGCVG  ... ...下面是程序: ...#下面的程序是用来计算一段DNA序列ATGC

    以下是DNA序列,存储在window下F:\perl\data.txt里面:

    AAAAAAAAAAAAAAGGGGGGGTTTTCCCCCCCC 
    CCCCCGTCGTAGTAAAGTATGCAGTAGCVG 
    CCCCCCCCCCGGGGGGGGAAAAAAAAAAAAAAATTTTTTAT 
    AAACG 
    

    下面是程序:

    #下面的程序是用来计算一段DNA序列中ATGC的数量的
    
    #首先定义四种碱基的数量为0
    $count_A=0;
    $count_T=0;
    $count_C=0;
    $count_G=0;
    #首先要先把序列进行合并成一行
    
    #先确定所要处理的文件的路径及文件名(在windows系统下面要按照这样的例子写
    #f:\\perl\\data.txt
    print "please input the Path just like this f:\\\\perl\\\\data.txt\n";
    chomp($dna_filename=<STDIN>);
    #打开文件
    open(DNAFILENAME,$dna_filename)||die("can not open the file!");
    #将文件赋予一个数组
    @DNA=<DNAFILENAME>;
    
    #以下两步要把所有的行合并成一行,然后去掉所有的空白符
    $DNA=join('',@DNA);
    $DNA=~s/\s//g;
    
    #将DNA分解成,然后赋值到数组
    @DNA=split('',$DNA);
    
    #然后依次读取数组的元素,并对四种碱基的数量进行统计
    foreach $base(@DNA)
    {
    	if ($base eq 'A')
    	{
    		$count_A=$count_A+1;
    	}
    	elsif ($base eq 'T')
    	{
    		$count_T=$count_T+1;
    	}
    	elsif ($base eq 'C')
    	{
    		$count_C=$count_C+1;
    	}
    	elsif ($base eq 'G')
    	{
    		$count_G=$count_G+1;
    	}
    	else
    	{
    		print "error\n"
    	}
    }
    #输出最后的结果
    print "A=$count_A\n";
    print "T=$count_T\n";
    print "C=$count_C\n";
    print "G=$count_G\n";
    
    	

    下面是运行的结果:

    F:\>perl\a.pl
    please input the Path just like this f:\\perl\\data.txt
    f:\\perl\\data.txt
    error
    A=40
    T=17
    C=27
    G=24
    
    F:\>
    

    大家可能观察到有一个error的出现,这是为什么呢?

    大家仔细看一看最上面的原始 DNA序列,用特殊颜色标记的,可以看到有一个V,所以会输出错误。




    这里把DNA序列经过整合成一行,然后去除所有的空白字符以后,又把$DNA通过split函数变成了数组,然后进行统计,那有没有更好的办法呢?

    其实perl里有一个函数,substr。

    我们先来看一看这个函数的用法,substr是针对一个大字符串的操作符(The substr function works with only a part of a larger string )言外之意就是对一个很长的字符串,进行片段化处理,取其中的一部分。我们这里用到的就是这个特性。

    $little_string =substr($large_string,$start_position,$length)

    $小片段=substr($大片段,$你要截取的小片段的起始位置,$你要截取的长度)

    我们这里为了统计DNA中各种碱基的数量,所以要处理的字符串是一个碱基,所以我们要把$length设置为1。这样才能够满足我们的需求。

    下面我们把修改过的代码写下:

    #下面的程序是用来计算一段DNA序列中ATGC的数量的
    
    #首先定义四种碱基的数量为0
    $count_A=0;
    $count_T=0;
    $count_C=0;
    $count_G=0;
    #首先要先把序列进行合并成一行
    
    #先确定所要处理的文件的路径及文件名(在windows系统下面要按照这样的例子写
    #f:\\perl\\data.txt
    print "please input the Path just like this f:\\\\perl\\\\data.txt\n";
    chomp($dna_filename=<STDIN>);
    #打开文件
    open(DNAFILENAME,$dna_filename)||die("can not open the file!");
    #将文件赋予一个数组
    @DNA=<DNAFILENAME>;
    
    #以下两步要把所有的行合并成一行,然后去掉所有的空白符
    $DNA=join('',@DNA);
    $DNA=~s/\s//g;
    
    
    #然后依次读取字符串的元素,并对四种碱基的数量进行统计
    for ($position=0;$position<length $DNA;++$position)
    {
    	$base=substr($DNA,$position,1);
    	if ($base eq 'A')
    	{
    		$count_A=$count_A+1;
    	}
    	elsif ($base eq 'T')
    	{
    		$count_T=$count_T+1;
    	}
    	elsif ($base eq 'C')
    	{
    		$count_C=$count_C+1;
    	}
    	elsif ($base eq 'G')
    	{
    		$count_G=$count_G+1;
    	}
    	else
    	{
    		print "error\n"
    	}
    }
    #输出最后的结果
    print "A=$count_A\n";
    print "T=$count_T\n";
    print "C=$count_C\n";
    print "G=$count_G\n";
    
    	
    



    得到的结果如下:

    F:\>perl\a.pl
    please input the Path just like this f:\\perl\\data.txt
    f:\\perl\\data.txt
    error
    A=40
    T=17
    C=27
    G=24
    
    F:\>
    






    展开全文
  • 关键字是自定义字符串,当输入时(或者更确切地说,当其字符依次输入时)会触发要执行的功能。关键字也显示在下面的示例。 在运行之前,需要使用自定义组合和自定义关键字字典实例化KeyboardListener对象。请参考...
  • 使用AerisWeather API服务移动优先天气应用程序,允许用户通过Algolia Places查询有关F°天气预报|| C°。 在异步JS函数和API服务基础上开发。 预览 插入一个地方寻找天气 随时使用并推荐它。 建于 npm使用...
  • C语言printf()函数的使用

    千次阅读 2018-12-07 11:05:14
    printf()函数是C语言标准I/O最常用控制台输出函数,除了我们最常见%d,%c,%s和%f以外 printf()和%说明符还提供很多功能丰富输出形式,以下是一个demo程序,可以复制到你IDE运行查看结果,对照学习   ...

    printf()函数是C语言标准I/O中最常用的控制台输出函数,除了我们最常见的%d,%c,%s和%f以外

    printf()和%说明符还提供很多功能丰富的输出形式,以下是一个demo程序,可以复制到你的IDE运行查看结果,对照学习

     

    【转换说明符demo程序】

    #include <stdio.h>
    /* \t是水平制表符,理解为tab键,\n是换行符,理解为回车键 */
    int main()
    {
    	/* %%,打印% */
    	printf("%%%%,打印%%\n");
    	printf("以下是各种%%说明符的常见使用\n\n\n");
    	
    	/* %a,%A,浮点数、十六进制数和p-记数法 */
    	printf("%%a,%%A,浮点数、十六进制数和p-记数法\n");
    	printf("[3.14f]=%a\t[3.14f]=%A\n\n\n", 3.14f, 3.14f);
    	
    	/* %c,打印一个字符 */
    	printf("%%c,打印一个字符\n");
    	printf("[A]=%c\t[&]=%c\n\n\n", 'A', '&');
    	
    	/* %d,%i,有符号十进制整数 */
    	printf("%%d,%%i,有符号十进制整数\n");
    	printf("[1024]=%d\t[-256]=%i\n\n\n", 1024, -256);
    	
    	/* %e,%E,浮点数、e-记数法和E-记数法 */
    	printf("%%e,%%E,浮点数、e-记数法和E-记数法\n");
    	printf("[3.14f]=%e\t[3.14f]=%E\n\n\n", 3.14f, 3.14f);
    	
    	/* %f,浮点数、十进制记数法 */
    	printf("%%f,浮点数、十进制记数法\n");
    	printf("[3.14f]=%f\t[-3.14]=%f\n\n\n", 3.14f, -3.14);
    	
    	/* %g,%G,自动选择%f格式或%e格式,指数小于-4或大于等于精度时使用%e */
    	printf("%%g,%%G,自动选择%%f格式或%%e格式,指数小于-4或大于等于精度时使用%%e\n");
    	printf("[3.14e-5]=%g\t[3.14f]=%G\n\n\n", 3.14e-5, 3.14f);
    	
    	/* %o,无符号八进制数 */
    	printf("%%o,无符号八进制数\n");
    	printf("[80]=%o\t[0123]=%o\n\n\n", 80, 0123);
    	
    	/* %p,指针 */
    	int *a;
    	int b = 100;
    	a = &b;
    	printf("%%p,指针\n");
    	printf("[a]=%p\t[&b]=%p\n\n\n", a, &b);
    	
    	/* %s,字符串 */
    	printf("%%s,字符串\n");
    	printf("%s\t%s\n\n\n", "Hello world.", "你好\t世界。");
    	
    	/* %u,无符号十进制整数 */
    	printf("%%u,无符号十进制整数\n");
    	printf("[123]=%u\t[-10]=%u\n\n\n", 123, -10);
    	
    	/* %x,%X,无符号十六进制整数,0f或0F */
    	printf("%%x,%%X,无符号十六进制整数,0f或0F\n");
    	printf("[100]=%x\t[0x12]=%X\n\n\n", 100, 0x12);
    	
    	return 0;	
    } 

    注:

    1、demo程序输出结果中,[ ]内表示的是编程时书写的常量的形式,=后是输出结果

    2、printf()中存在自动类型转换,如%f中对-3.14的输出,-3.14原本被系统认为是double浮点常量,但使用%f仍然是转换类型后,用float类型输出

    3、printf()中存在隐式的进制转换,如%o中对十进制常量80的输出,结果为八进制数0120,显示为120,对显示的八进制常量0123输出则得到123,说明%o的显示结果是隐式的八进制数。同理%x中,对十进制常量100输出为64,其实该64应该是0x64,而0x12输出也为12,这些输出结果都是隐藏了进制的

    4、printf()中对无符号整数输出时要特别注意,一定区分什么时候用%d,什么时候用%u,如%u中对-10的输出,结果是一个很大的数,这是因为计算机中有无符号数的存储方式差异造成的,有符号数把最高位看做符号位,而无符号数把所有位看做数值位,因此-10在有符号数中最高位的1,同样的内存用无符号输出则会把所有位看做数值位,所以会是一个很大的数

    5、%s能识别字符串中的转义字符,如%s中的“你好\t世界”,水平制表符会被识别到,%s输出时不会显示\0结束符

     

    printf()除了以上功能丰富的%转换说明符,还有一些增强功能的转换说明修饰符,这提供了很多很好的编程技巧

    【转换说明修饰符demo程序】

    #include <stdio.h>
    
    int main(void)
    {
    	/* -,左对齐 */
    	printf("-,左对齐\n");
    	printf("%-d\n\n\n", 12);
    	
    	/* +,输出的数带符号,正负都有 */
    	printf("+,输出的数带符号,正负都有\n");
    	printf("%+f\t%+d\n\n\n", 3.14f, -1024);
    	
    	/* (空格),%后留一个空格,表示有符号值为正时空格,为负时加符号 */
    	printf("(空格),%后留一个空格,表示有符号值为正时空格,为负时加符号\n");
    	printf("% f\t% e\n\n\n", 3.14f, -6.28e-4);
    	
    	/* #,显式地显示进制 */
    	printf("#,显式地显示进制\n");
    	printf("%#o\t%#x\t%#\n\n\n", 0123, 0x12);
    	
    	/* 0,数字格式时,用0填充字段宽度 */
    	printf("0,数字格式时,用0填充字段宽度\n");
    	printf("%010d\t%08.3f\n\n\n", 12, 3.14f);
    	
    	/* 数字,说明符前加数字表示字段宽度的最小值 */
    	printf("数字,说明符前加数字表示字段宽度的最小值\n");
    	printf("%4d\t%4d\t%4d\n\n\n", 12, 1234, 123456);
    	
    	/* .数字,表示精度,针对浮点数,如%8.3f表示字段长度为8,小数点后3位 */
    	printf(".数字,表示精度,针对浮点数,如%%8.3f表示字段长度为8,小数点后3位\n");
    	printf("%8.3f\t%5.2f\t%3.1f\n\n\n", 12.12345, 12.12345, 12.12345);
    	
    	/* h,表示short类型 */
    	printf("h,表示short类型\n");
    	printf("%hu\t%hx\t%5.5hd\n\n\n", 1024, 0x12, 10240);
    	
    	/* hh,表示char类型 */
    	printf("hh,表示char类型\n");
    	printf("%hhu\t%hhx\t%6.4hd\n\n\n", 1024, 0x12, 10240);
    	
    	/* l,表示long类型 */
    	printf("l,表示long类型\n");
    	printf("%ld\t%8lu\n\n\n", -111222, 12345);
    	
    	/* ll,支持long long的系统中表示long long类型 */
    	printf("ll,支持long long的系统中表示long long类型\n");
    	printf("%lld\t%8llu\n\n\n", 33334444, -123321);
    	
    	/* L,表示long double类型 */
    	printf("L,表示long double类型\n");
    	printf("%Lf\t%10.4Le\n\n\n", 3.1415926, 3.1415926);
    	
    	return 0;
    }

    注:

    1、无论怎么加修饰,一定还是要注意无符号数的输出,如上述%8llu中对-123321的输出,仍然是错值,根本还是在于%u对负数输出这一常见错误

    2、从demo已经能看出,修饰符是可以叠加的,如%10.3Lf就表示输出的long double数字段长度为10,精确到千分位

    3、%8d、%.4f这样的控制字段长度的用法是很多算法设计大赛中很常见且很好用的技巧,有兴趣的同学可以着重练习

     

     

    展开全文
  •  在脚本动态生成函数并调用该函数是脚本基本特色之一,Lu模块化编译运行库MLu提供了该功能。MLu可对一段包含多个函数及模块字符串源程序进行动态编译,以下代码测试了其运行效率。 mvar: main(:a)= t0=...

    Lu动态生成函数的效率

        在脚本中动态生成函数并调用该函数是脚本的基本特色之一,Lu模块化编译运行库MLu提供了该功能。MLu可对一段包含多个函数及模块的字符串源程序进行动态编译,以下代码测试了其运行效率。

    mvar:
    main(:a)=
      t0=clock(), s=0, i=0,
      while{++i<=10000,
        //动态编译模块,该模块有2个函数,f为私有函数,ff为全局函数
        ComModule["f(x)=x+1; :::ff(x,y)=f(x)+y;",0,&me,0,0],
        a=HFor("ff"), //获得函数ff的句柄
        s=s+a[1,1],   //动态调用函数ff
        delete[me]    //立即销毁模块
      },
      o{"s=",s,"  time=",[clock()-t0]/1000.,"秒。"};


        结果:

    s=30000  time=0.625秒。


     

    展开全文
  • ezimplot3 画函数f= 0 在-2*pi* pi, -2* pi * pi, -2* pi * pi上图形ezimplot3画函数f= 0 在A, A , A 上图形ezimplot3画函数f= 0 在XMIN, YMIN , ZMIN 上图形 ezimplot3使用方法:解压ezimplot3.zip,将...
  • MFC的程序框架剖析

    2015-03-05 09:53:19
    MFC程序的WinMain函数是通过调用AfxWinMain函数来完成它的功能的 注:Afx前缀的函数代表应用程序框架(Application Framework)函数,它们可以在程序的任何地方被调用 11、CTestApp::InitInstance函数 在AfxWinMain...
  • 经过测试发现代码在obstacle对象构造函数中调用segajouter(segment tmp)free(void*ptr)函数中挂机。Arduino使用是Uno 主题测试程序如下: #include "ensemble.h" #include "segment.h" #include ...
  • 编写函数求倒数

    2020-05-27 15:54:25
    以下程序的功能是:首先在main函数中输入一个数,然后在被调函数rev求出这个数的倒数,最后在主函数输出结果。要求写出函数rev。 #include <stdio.h> void rev(double *p); int main() {double x; scanf(...

    编写函数求倒数

    想问一下这个程序怎么写。。。谢谢
    以下程序的功能是:首先在main函数中输入一个数,然后在被调函数rev中求出这个数的倒数,最后在主函数中输出结果。要求写出函数rev。

    #include <stdio.h>
    void rev(double *p);
    int main()
    {double x;
    scanf("%lf",&x);
    if(x==0)
    printf(“input error\n”);
    else
    {rev(&x);
    printf("%f\n",x);
    }
    return 0;
    }

    /* 请在这里填写答案 */

    展开全文
  • 话框类,将其加入工程中,然后在程序中调用自己新建对话框类来实现多窗口。 实现过程: 1.首先新建Qt4 Gui Application 工程,工程名为nGui,Base class 选为QWidget。 建立好后工程文件列表如下图。 2.新建对话...
  • ASP.NET程序中常用三十三种代码 1. 打开新窗口并传送参数:  传送参数: response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")  接收参数: ...
  • 程序中定义了一个函数s,该函数的功能是求∑ni=1i 的值。在主函数中输入n值,并作为实参,在调用时传送给s 函数的形参量n( 注意,本例的形参变量和实参变量的标识符都为n, 但这是两个不同的量,各自的作用域不同)...
  • //以下是SPI模块初始化代码,配置成主机模式 //SPI口初始化 //这里针是对SPI1初始化 void SPI1_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; ...
  • /**************** 以下是所有子函数的声明 *********************/ void clockplus(void); /* 时间加 1S 程序 */ void update_clockstr(void); /* 更新时间显示编码 */ void update_alartstr...
  • 2-17 修改下面这个程序中的错误,改正后它运行结果是什么? #include void main() int i int j; i = 10; /* 给i赋值 j = 20; /* 给j赋值 */ cout ; /* 输出结果 */ return 0; } 解: 改正: #include int main...
  • * 对于以下函数f计算f(f(2)的值 int f(int x) { static int k=0; x+=k++; return x; } 3 . * 2.2 运算及流程控制 1基本运算 熟练掌握运算符的功能 熟练掌握运算符的优先级结合性和目数 熟练掌握隐式类型转换和强制...
  • 10. 以下fun函数的功能是找出具有N个元素的一维数组的最小值并作为函数值返回请填空(设N已定义) int fun(int x[N] { int i, k=0; for (i=0; i; i++) if ( x[i][k] ) k= ; return x[k]; } 11. 有以下程序 #include ...
  • (1) 编制一个函数sab(a,b,n),其功能是函数f(x)在[a,b]上定积分,其中n为区间[a,b]等分数。要求该函数在一个独立文件。 (2) 编制一个主函数以及计算被积函数值的函数f(x),在主函数调用(1)中的函数计算...
  • 例如, M AT L A B图形功能,可以在一个F O RT R A N 程序中完成可视化计算。 2 5个不同M AT L A B工具箱可应用于特殊应用领域。 M AT L A B在以下的领域里解决各种问题是一个十分有效工具:
  • 模拟电梯系统程序设计

    热门讨论 2010-07-12 17:28:06
    要求根据下面的功能说明描述实现模拟电梯控制软件 (一)电梯配置 1. 共有1个电梯 2. 共有maxfloor层楼层。maxfloor=9。 3. 中间层每层有上下两个按钮,最下层只有上行按钮,最上层只有上行按钮。每层都有相应的...
  • 3.6写出以下程序运行结果: 3 3.7要将“China”译成密码,密码规律是:用原来字母后面第4个字母代替原来字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。请...
  • 程序设计基础答案

    2008-06-18 17:06:42
    以下方法fun的功能是求两参数之和。 int fun ( int a, int b ) { __________________; } 4.面向对象技术的对象具有状态,行为和_________等三个基本属性。 5.面向对象程序设计方法最重要的特性是...
  • 所以,该项目定义了一个名为Canvas类,核心功能是用于获取这个二维数组值,其中包含根据砖块设置数组值、行满(一行里所有值都为1)之后消除、超出高度后返回失败等。 2.4绘图 真正绘图操作。根据二维...
  • 在这个应用程序中,被创建 FactoryInstance 实际对象是 SpringFactoryInstance; FactoryInstance lookup() 方法被调用,在 SpringFactoryInstance 中,首先查找 Spring 容器,然后,通过 Bean ID 查找 ...
  • 1.下面是一个java应用程序(Application),它的功能是在屏幕上输出26个英文字母,其中每个字母相隔一个制表符,请完成程序。 public _____ Class1 { public static void main( String args[] ) { char c='a'; for ...
  • 12. 以下方法 m 的功能是求两参数之积的整数部分。 int m ( float x, float y ) { __________________; } 13. Java 源程序文件编译后产生的文件称为________文件,其扩展名为 ___________ 。 三、判断题( 每小题1分...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 220
精华内容 88
关键字:

以下程序中函数f的功能是