`

第五届开源小组招新题目

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics