打印倍数

int main(){    int x = 0;//倍数指标    int y = 0;//倍数范畴    int i = 1;    scanf("%d %d", &x,&y);    for (; x <= y; x = i * x)    {        printf("%d ", x);        i++;    };    return 0;}

三数排序

int main(){    int a;//最大值    int b;//两头值    int c;//最小值    scanf("%d %d %d", &a, &b,&c);//随机输出数值(无序)    if (a < b)    {        int tmp;        tmp = a;        a = b;        b = tmp;    }    if (a < c)    {        int tmp;        tmp = a;        a = c;        c = tmp;    }    if (b < c)    {        int tmp;        tmp = b;        b = c;        c = tmp;    }        printf("%d %d %d", a, b, c);    return 0;}

求两数间最大公约数(辗转相除法)

以除数和余数重复做除法运算,当余数为 0 时,取以后算式除数为最大公约数。

{    int a;//数字a    int b;//数字b    int ret;    scanf("%d %d", &a, &b);    while (ret=a % b)//a%b=0时跳出循环    {        a = b;        b = ret;    }    printf("%d", b);    return 0;}

判断某个范畴内各个自然数的个位或十位是否为九

int main(){    int a;//判断指标    int b;//范畴    int count=0;//计数  scanf("%d %d",&a,&b);    for (a = 1; a <= b; a++)    {        if (a % 10 == 9)        {            printf(" %d", a);            count++;        }       //若应用else if会短少99(个位和十位都是9,必须反复计数)        if (a / 10 == 9)        {            printf(" %d", a);                count++;        }    };        printf("\ncount=%d", count);        return 0;}

打印素数

素数是除一及其自身外无其余公约数的自然数2。
判断办法:

试除法(将小于指定数的自然数一一试除,皆无奈整除者为素数)

int main()    {    int i = 0;    int k = 0;//起始数    int p = 0;//完结数    int j = 0;    int count = 0;//计数范畴内素数个数    scanf("%d %d ",&k,&p)    for (i = k; i <= p; i++)//给出范畴内各个数    {        //素数的判断        for (j = 2; j <= i - 1; j++)        {            if (i % j == 0)                break;        }        if (j == i)        {           count++;            printf("%d ", i);        }    }    printf("\ncount=%d", count);    return 0;    }

优化:

{    int i = 0;    int k = 0;//起始数    int p = 0;//完结数    int count = 0;    for (i = k; i <=p; i += 2)//跳过所有偶数,缩小计算量。    {        int j = 0;        //素数的判断:无奈被2到指定数的开方数整除的自然数        for (j = 2; j <= sqrt(i); j++)        {            if (i % j == 0)                break;        }        if (j > sqrt(i))        {            count++;            printf("%d ", i);        }    }    printf("\ncount=%d", count);    return 0;}

求某个范畴的平年

  • 非整百年份:能被4整除的是平年。(如2004年就是平年,2001年不是平年)
  • 整百年份:能被400整除的是平年。(如2000年是平年,1900年不是平年)
int main(){    int a;    int b;    int count = 0;    scanf("%d %d", &a, &b);    for (; a < b; a++)    {    if (((a % 4 == 0) && (a % 100 != 0)) || (a % 400 == 0))        {            printf("%d ", a);            count++;        }    }    printf("\ncount=%d", count);    return 0;}

计算阶乘(计算数学上的n!)

int main(){    long x=0;//指标n    int y=0;    int ret = 1;    scanf("%d/n", &x);    for (y = 1; y <= x; y++)//给出计算所需值    {        ret = ret * y;//进行累乘    };    printf("%d\n", ret);    return 0;}

加大难度:计算阶乘相加

int main(){    long x = 1;    int y = 0;    int ret = 1;//累乘媒介    int sum = 0;//相加后果    int n = 0;//阶乘范畴    scanf("%d/n", &n);    while(x<=n)    {        ret = 1;        for (y = 1; y <= x; y++)            {                ret = ret * y;            };        sum += ret;        x++;    }    printf("%d", sum);    return 0;}

打印1 / 2 + 1 / 3 - 1 / 4.... - 1 / 100后果

int main(){    int a = 1;    int f = 1;    double sum = 0;    //因为计算结果为小数,只能应用浮点数    double b = 0.0;    for (b=1; b <= 100; b++)    {        sum +=( f * 1 / b);        f = -f;//交替呈现加号与减号    }    printf("%lf", sum);//浮点数对应%lf    return 0;}

二分查找

注:只能在有序数组中能力应用。

int main(){    int left = 0;//左下标    int right = 0;//右下标    int k = 0;//查找值    int n = 0;//数组长度    int z = 0;//两头值    char arr[] = { 1,2,3,4,5,6,8,9 };//查找范畴    scanf("%d", &k);    right = n - 1;    n = sizeof(arr) / sizeof(arr[0]);//计算数组大小    while (left <= right)//易错:等于号不可省略    {        z = (left + right) / 2;        if (arr[z] < k)        {            left = z + 1;        }        else if (arr[z] > k)        {            right = z - 1;        }        else        {            printf("找到了,下标是%d", z);            break;        }    }    if (left > right)        printf("找不到");    return 0;}

打印乘法口诀表

右下角

int main(){    int a;//行数    int b;//列数    for (a= 1; a <= 9; a++)    {        for (b = 1; b <= a; b++)        {        printf("%d*%d=%d\t", b, a, a * b);//\t一个制表符间隔        }        printf("\n");    }    return 0;}

正方形

int main(){    int a;//行数    int b;//列数    for (a = 1; a <= 9; a++)    {        for (b = 1; b <=9; b++)        {           //%-2d为向左对齐两个字符            printf(" %d*%d=%-2d", a, b, a * b);        }        printf("\n");    }    return 0;}

总结

或者,以上只是常见的c语言编程题,但在这其中我体会了一些简略算法的利用,直至懂得了分支与循环语句的根底应用逻辑。置信我将会缓缓提高,在这条路线上。