`

第五届开源小组招新题目

阅读更多
这是学校的开源小组招新题。
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;
}

分享到:
评论

相关推荐

    java课后题答案1-9章

    耿祥义编著的《Java程序设计》第三版是一本深入浅出的Java学习教材,涵盖了从基础语法到高级特性的全面讲解。 在"java课后题答案1-9章"中,我们可以预期这些章节涵盖了Java编程的基础到进阶内容。通常,一个Java...

    ACM第二次集训(2023.3.11)(20247m).7z

    通常,一个团队由三人组成,他们需要在五个小时内解决多道编程题目,这些题目覆盖了从基础数据结构到高级算法的广泛内容。因此,集训就显得格外重要,它提供了一个模拟比赛环境,让选手们能在这个过程中不断磨练自己...

    rust如何快速上手文档

    - **生态系统建设**:相较于 Python、Java 等成熟语言,Rust 的第三方库和框架尚处于发展中阶段。 #### 学习资源推荐 对于想要快速上手 Rust 的开发者,以下是一些建议的学习资源: 1. **官方文档**:Rust 官方...

    山西省2015年上半年中学教师资格考试信息技术基础强化练习(三)试题.docx

    24. 小组活动:小组活动是小型分散、多样的课外活动形式,有助于学生发展个人兴趣和才能。 25. 交往:交往是班级人际关系形成和发展的主要手段,通过交流和互动增进理解和合作。 26. 教师节设立:1985年,我国确定...

    基于php的在线培训管理系统

    5. **论坛与讨论区**:为了促进学员之间的互动,系统通常包含论坛功能,允许学生提问、讨论,分享知识,增进合作学习。 6. **协作工具**:在线培训管理系统往往包含协作工具,如小组项目、在线文档编辑、实时聊天等...

    人工智能与大数据学院2022-2023-2GPA考试安排.zip

    5. **学习资源**:压缩包中可能包含了相关教材、讲义、参考文献、习题集和模拟试题等学习资料,这些都是帮助学生准备考试的重要辅助材料。教师可能会提供额外的在线资源,如开源代码库、研究论文和行业报告,以拓宽...

Global site tag (gtag.js) - Google Analytics