C语言(六)

main.c

//
//  main.c
//  -C-6
//
//  Created by lanqs on 14/12/11.
//  Copyright (c) 2014年 . All rights reserved.
//

#include <stdio.h>
#include <string.h>
#include "haha.h"
int daxiao(char *a,char *b);
void paixu(char * str[], int a);
int main(int argc, const char * argv[]) {
#pragma mark - 1、编写一个标准strcpy函数(不使用系统库strcpy(),自己实现将一个字符串拷贝到另一个字符串中,并在主函数中打印输出)
//    char a[]="hello world";
//    char b[100]="hahaad";
//    one(b,a);
//    puts(b);
#pragma mark - 2、在字符串中找出字符,并组成字符串输出  "i2334P434h99o44n32e898";(等会儿做)
//    char a[]="i2334P434h99o44n32e898";
//    char b[100]={0};
//    int number = 1;
//    int c =-1;
//    for (int i = 0 ; a[i] != 0; i ++) {
//        number++;
//        if ((*(a+i) >= 'a' && *(a+i) <= 'z') ||(*(a+i) >= 'A' && *(a+i) <= 'Z')  ) {
//            //在这里才开始存入,我原来用的i不行。。。
//            c++;
//            b[c]=*(a+i);
//        }
//    }
//    //做出来了。。我晕。。。
//    puts(b);
//    printf("\n");
#pragma mark - 3、输入一个五位以内的正整数 *(1)判断它是一个几位数; *(2)请按序输出其各位数字; *(3)逆序输出其各位数字。  *如输入:56439,输出:五位数5,6,4,3,9           9,3,4,6,5要求:使用指针的形式
    //(完成一半)!!!没有强制类型转换
//    char b[]={0};
//    gets(b);
//    //用强制类型转换至于为什么,我也不晓得就是用了才的得到正确答案
//    int len =(int)strlen(b);
//    printf("%d",len);
//    printf("\n");
//    for (int i = 0 ; i < strlen(b); i ++) {
//        
//         printf("%c ",*(b+i));
//
//    }
//    printf("\n");
//    for (int i = 0 ; i < strlen(b); i ++) {
//        
//        printf("%c ",*(b+(strlen(b)-1-i)));
//        
//    }

#pragma mark -4、在主函数中给定6个字符串,用另一个函数对他们按从小到大的顺序,然后在主函数中输出这6个已经排好序的字符串。
    
//        //str[6]代表黎明存了3个元素,是int * 类型
//        char * str[6] = {"one","two","three","four","five","six"};
//    
//        //去执行
       sortString(str,6);
//    paixu(str, 6);
//        for (int i = 0; i < 6; i++) {
//            printf("%s\n",str[i]);
//        }
  
    return 0;
}
#pragma mark - 提升题:1、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一开始报号:1,2,3,1,2,3...,凡是报到“3”就是退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。(要求:使用指针或则数组)

#pragma mark - 升级版:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?

#pragma mark -2、编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2;移位后应该是“hiabcdefg”
//
//void paixu(char * str[], int a){
//    char * temp;
//    for (int i = 0; i < a; i ++) {
//        for (int j = i; j < a; j ++) {
//            //比较大小的时候就是在字符串里的字母依次来比较
//            if(daxiao(str[i],str[j])>0){
//                //daxiao(str[i],str[j])>0
//                //*str[i]-*str[j]>0
//                //交换
//                temp = str[i];
//                str[i] = str[j];
//                str[j] = temp;
//            }
//            
//        }
//    }
//}
//int daxiao(char *a,char *b){
//    for (int i = 0; i < 100; i ++) {
//        if (*(a+i) - *(b+i)) {
//            return *(a+i)-*(b+i);
//        }
//    }
//    return 0;
//}

haha.h

//
//  haha.h
//  -C-6
//
//  Created by lanqs on 14/12/11.
//  Copyright (c) 2014年 . All rights reserved.
//

#ifndef ______C_6__haha__
#define ______C_6__haha__

#include <stdio.h>
void one(char *a,char b[]);
void sortString(char * str[],int count);
int mystringCmp(char *a,char *b);
#endif /* defined(______C_6__haha__) */
haha.c

//
//  haha.c
//  -C-6
//
//  Created by lanqs on 14/12/11.
//  Copyright (c) 2014年 . All rights reserved.
//

#include "haha.h"
void one(char *a,char b[]){
    for (int i = 0; b[i] != '\0'; i ++) {
        a[i] = b [i];
    }
}

//在里面的比较是否相同
int mystringCmp(char *a,char *b)
{
    while (*a || *b)//等于空的话直接跳出循环
    {
        if (*a - *b)//判断a 与 b 的是否相同
        {
            return *a - *b;//如果不同返回a 与 b 的Ascii差
        }
        else            // 相同,让指针指向a 和 b 下一个字符比较
        {
            a++;
            b++;
        }
    }
    return 0;
}
//在外面的排序
void sortString(char * str[],int count)
{
    char *temp;
    for (int i = 0 ; i < count - 1; i++)
    {
        for (int j = 0; j < count -1 -i; j++)
        {
            if ( mystringCmp(str[j], str[j+1]) > 0) {
                temp = str[j];
                str[j] = str[j+1];
                str[j+1] = temp;
            }
        }
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值