`

第五届开源小组招新题目

阅读更多
这是学校的开源小组招新题。
08年时我是第二届的组长,不知不觉已经过了两年多,
但自己也没有多少成长,长江后浪推前浪,前浪死在沙滩上
这是我第三次出题了吧,也是最后一次了。

1、找出规律,打印出下面的图案:

         *
        ***
       *****
      *******
       *****
        ***
         *


2、编写index函数,返回查找字符串中第一个出现的指定字符地址:


3、本程序演示编一个函数fun(char *s),函数的功能是把字符串中的内容逆置。
例如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba


4、要求程序的功能是:把10个随机数(1~999)存入一个数组,然后输出该数组中的最小值。
其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。


5、编写strcpy函数,拷贝字符串。函数原型:char *mystrcpy(char *dest,const char *src, int n);

/*****************************
    By   : xlong
    date : 2010-11-5
******************************/
#include <stdio.h>

void putCharNum(char c, int n)
{
    static int i;
    for (i = 0; i < n; ++i)
        putchar(c);
}

void fun(int n) 
{
    static int mid;
    static int i;
    static int j;

    if (n < 3 || (n % 2) == 0)  return ;
    mid = n/2 + 1;  
    for (i = 1; i <= n; ++i)
    {
        j = abs(i - mid);
        putCharNum(' ', j);
        putCharNum('*', n - 2*j);
        putCharNum(' ', j);
        putchar('\n');
    }
}


int main(int argc, char *argv[])
{
    fun(9);
    getchar();
    return 0;
}


/*****************************
    By   : xlong
    date : 2010-11-5
******************************/
#include <stdio.h>
#include <string.h>

char *index(char *str, int c)
{
    static int i;
    if (str == NULL) return NULL;
    int size = strlen(str);

    for (i = 0; i < size; ++i)
        if (*str++ == c) return --str; 

    return NULL;
}

int main(int argc, char *argv[])
{
    char str[] = "abcd123";
    
    printf("sour string : %s\nfind char is '1'\n", str);
    printf("%s\n", index(str, '1'));

    getchar();
    return 0;
}


/*****************************
    By   : xlong
    date : 2010-11-5
******************************/
#include <stdio.h>
#include <string.h>

char *backString(char *str)
{
    static int i;
    static int c;
    static int n;
    static int size;

    size = strlen(str);
    if (str == NULL || size == 1) return str;
    n = size/2;

    for (i = 0; i < n; ++i)
    {
        c = *(str + i);
        *(str + i) = *(str + size - 1 - i);
        *(str + size - 1 - i) = c;
    }
    return str;
}

int main(int argc, char *argv[])
{
    char str[] = "123456\0";
    printf("sour string is %s\n", str);
    printf("back string is %s\n",backString(str));

    getchar();
    return 0;
}


/*****************************
    By   : xlong
    date : 2010-11-5
******************************/

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

#define VSIZE 10
int vector[VSIZE];

void rankvec()
{
    srand((int)time(0));

    static int i;
    for(i = 0; i < VSIZE; i++)
    {
        vector[i] = 999*rand()/RAND_MAX;
        printf("%3d \t",vector[i]);
    }
}

int fun(int list[], int size)
{
    static int i;
    int j = 0;
    for (i = 1; i < size; ++i)
        if(list[i] < list[j]) j = i;

     return j;
}

int main(int argc, char *argv[])
{
    rankvec();
    int index = fun(vector, VSIZE);
    printf("\nmin value = %d\n", vector[index]);

    getchar();
    return 0;
}


/*****************************
    By   : xlong
    date : 2010-11-5
******************************/
#include <stdio.h>
#include <string.h>

//  一般
char *myStrcpy(char *dest, const char *src)
{
    if (dest == NULL || src == NULL) return NULL;

    char *res = dest;
    while ((*dest++ = *src++) != NULL) {}

    return res;
}

//  较好
char *myStrncpy(char *dest, const char *src, int n)
{
    if (dest == NULL || src == NULL) return NULL;

    int i;
    for (i = 0; i < n; ++i)
        *(dest + i) = *(src + i);

    return dest;
}

int main(int argc, char *argv[])
{
    char str1[20];
    char str2[] = "hello\0";

    printf("%s\n", myStrcpy(str1, str2));

//    printf("%s\n", myStrncpy(str1, str2, strlen(str2)));

    getchar();

    return 0;
}

分享到:
评论

相关推荐

    ThinkSAAS开源小组 v0.9极速版

    ThinkSAAS开源小组是参照“豆瓣小组”的功能开发和设计,保持使用简单,界面简洁的用户体验感受。ThinkSAAS开源小组基于ThinkSAAS最简单APP开发PHP开源框架开发,APP应用扩展方便简单。ThinkSAAS开源小组吸取社会化...

    OS2ATC 2021 第九届开源操作系统年度技术会议PPT合集(45份).zip

    OS2ATC 2021 第九届开源操作系统年度技术会议PPT合集(45份) Kata Containers UniKernel WebAssembly-runtime Demo RISC-V向量编程及编译支持 通用机密计算平台技术初探 Python在大数据领域实践和思考 RT-Thread ...

    最新微信付费进群源码全开源版

    最新微信付费进群源码全开源版最新微信付费进群源码全开源版最新微信付费进群源码全开源版最新微信付费进群源码全开源版最新微信付费进群源码全开源版最新微信付费进群源码全开源版最新微信付费进群源码全开源版最新...

    开源期刊第一期

    ### 开源期刊第一期知识点详述 #### 一、开源期刊背景及意义 - **期刊创刊背景**:《开源》期刊始于2008年,经过五年的酝酿与筹备,正式面向公众发布。这份期刊的诞生标志着中国开源运动进入了一个新的阶段。在...

    2024全新付费进群系统源码 Thinkphp框架全开源独立版 九块九进群源码 付费入群进群源码

    最新微信付费进群源码全开源版最新微信付费进群源码全开源版最新微信付费进群源码全开源版最新微信付费进群源码全开源版最新微信付费进群源码全开源版最新微信付费进群源码全开源版最新微信付费进群源码全开源版最新...

    亲测易支付新版彩虹易支付源码全开源10套模板带风控实名系统下载 全新二开版

    全新二开版,原作者二开版本,新加了很多功能,新功能:API退款,轮训支付,网银支付,京东支付,实名认证更多功能自己登录演示后台,再带11套首页模板,比原版不知道好用多少。 这个比老版本好很多,全新支持2代支付宝...

    最新稳定的货源社区源码丨新版云乐购免费开源

    最新稳定的货源社区全开源源码丨新版云乐购免费开源

    heidisql 最新开源版本

    heidisql 最新开源版本heidisql 最新开源版本heidisql 最新开源版本heidisql 最新开源版本heidisql 最新开源版本

    开源软件文集:开源革命之声.pdf

    而对于企业来说,本书揭示了如何利用开源软件提高竞争力的途径,甚至是一种新的经济模式的建立。 书中还提到了一些其他重要的开源项目和人物,比如Emacs编辑器和它的作者、Perl脚本语言的创始人等。这些项目的成功...

    PHP实例开发源码—ThinkSAAS 开源小组php社区统.zip

    【标题】"PHP实例开发源码—ThinkSAAS 开源小组php社区统.zip" 提供的是一个基于PHP的开源社区系统源代码,ThinkSAAS是一个知名的PHP开发框架,专为构建社交网络和协同工作平台而设计。这个压缩包内包含了项目的基本...

    19届智能车镜头组c车模TC264迪克旋转队开源代码

    《19届智能车镜头组C车模TC264迪克旋转队开源代码解析》 在智能车竞赛中,各个参赛队伍会采用各种技术手段提升车辆的性能和稳定性,其中19届智能车镜头组的C车模迪克旋转队就以其独特的技术方案脱颖而出。他们的...

    17届全国大学生智能汽车竞赛无线充电组开源项目.zip

    17届全国大学生智能汽车竞赛无线充电组开源项目 17届全国大学生智能汽车竞赛无线充电组开源项目 17届全国大学生智能汽车竞赛无线充电组开源项目 17届全国大学生智能汽车竞赛无线充电组开源项目 17届全国大学生智能...

    2021中国网络开源技术生态峰会PPT汇总.zip

    2021中国网络开源技术生态峰会PPT汇总,共21份。 轻量级k8s构建开放式边缘计算架构 白盒开放场景及研究探讨 大网网络操作系统+云网融合的智慧大脑 不断扩展的云网络边界和开源技术在其中的应用 网络操作系统-从开源...

    Android 开源在线音乐播放器

    还有简单的密码验证 开发软件:Android StudioAndroid 开源在线音乐播放器Android 开源在线音乐播放器Android 开源在线音乐播放器Android 开源在线音乐播放器Android 开源在线音乐播放器Android 开源在线音乐播放器...

    最新开源PLC编缉软件,可用vsstudio 直接编译

    根据压缩包文件名称“LDmicro-5.3.0.4”,我们可以推测这可能是一个针对某种型号或系列的PLC(可能是LD系列)的微控制器固件或编程软件,版本号为5.3.0.4,意味着这是该软件的第五个大版本,第三次小版本更新,第四...

    天若OCR开源版V5.0.0

    天若OCR开源版V5.0.0天若OCR开源版V5.0.0天若OCR开源版V5.0.0天若OCR开源版V5.0.0天若OCR开源版V5.0.0天若OCR开源版V5.0.0天若OCR开源版V5.0.0天若OCR开源版V5.0.0天若OCR开源版V5.0.0天若OCR开源版V5.0.0天若OCR...

    开源全新开源源码Vue3+TS的前后台分离的开发平台源码

    致力于打造活力开源社区,共建开源新生态! 功能简介 个人办公:待办事项、抄送传阅、办理历史、发起申请、申请历史、我的草稿 内容管理:公告、新闻 组织管理:组织管理、用户管理、角色管理、 岗位管理。笔者十...

    开源时代200901(第5期)

    《开源时代200901(第5期)》是一本聚焦于开源技术与社区发展的杂志,其内容涵盖开源软件、开源硬件、开源文化、开源社区等多个方面。开源,即开放源代码,是信息技术领域的一种重要模式,它鼓励代码共享和透明度,...

Global site tag (gtag.js) - Google Analytics