c语言一些例题

Test2:在一个有序一个数组中查找具体的某个数,

#include <stdio.h>

int main()

{

    int arry1[]={1,2,3,4,5,6,7,8,9,10};

    int i,numb_arry1;

    int n,marb=0;

    scanf("%d",&n);

 

numb_arry1=sizeof(arry1)/sizeof(arry1[0]);

//这行代码是计算数组有多少个元素的比较好的方法

    for(i=0;i<numb_arry1;i++)

    {

        if(n==arry1[i])

        {

            printf("discover the number:%d i=%d ",arry1[i],i);

            marb++;

        }

        else

        {

        if(marb==0&&i==numb_arry1-1)

        printf("unfound ");

        }

    }

    return 0;

}

 

但是!!!它是有序的序列,所以有更好的方法! 如:折半查找算法(二分查找算法)复杂度log2n,如下:

int arry1[]={1,2,3,4,5,6,8,9,10,14};

    int left=0;  //数组左边的下标

    int right=sizeof(arry1)/sizeof(arry1[0])-1;

    int n,mid=0;

    scanf("%d",&n);

 

    while(left<=right)

    {

        mid=(left+right)/2;

        if(n>arry1[mid])

        {

            left=mid+1;

        }

        else if(n<arry1[mid])

        {

            right=mid-1;

        }

        else

        {

            printf("discavered it,subscript is:%d ",mid);

            break;

        }

    }

    if(left>right)

    {

        printf("no found ");

    }

    return 0;

Test3

//welcome to the world!!!

    //w#####################!

    //we###################!!

    //wel#################!!!

    //in this way to output

    char str1[]="welcome to the world!!!";

    char str2[]="#######################";

    int left=0;

    int right=strlen(str1)-1;

    printf("%s ",str2);

    while(left<=right)

    {

        str2[left]=str1[left];

        str2[right]=str1[right];

        printf("%s ",str2);

        left++;

        right--;

    }

确定字符串的大小用sn=sizeof(str1)/sizeof(str1[0])-2,就太差劲了,因为有函数strlen

“-2是因为字符串的末尾为‘’”!!!

 

关于这道题,选“c”,“b”错在非零表示为真。

 

 

这道题也选c因为default语句没有顺序,但是比较规范的写法是放在最后的case后面;

 

答案是0;

题目用于优化寻找素数:(试除法)素数求解的n钟境界。

用到sqrt()开平方函数,

又因为偶数是不可能是素数的,所以还可易在优化!!!,如:再for的调制模块中写上i=i+2;

这种优化代码的思想一定要谨记在心!!!

 

 

这个flag用的很巧妙呀,要记住!!!式子的符号也可以用字符来代替。

 

Test4 printf(“%-2d”)           //注意百分号后面的“-2”:输出两位,向左对齐

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值