1.利用泰勒公式计算sin(x)

利用泰勒公式计算sin(x)

代码如下:

#include <stdio.h>
#include <math.h>
int main()
{
    double function(int a);
    int i = 1, x, flag = 1;
    double y = 0, p = 1;
    scanf("%d", &x);
    while (p >= 1e-5)
    {
        p = (pow(x, 2 * i - 1)) / function(2 * i - 1);
        y = y + flag * p;
        flag = -flag;
        i++;
    }
    printf("%.3lf\n%d", y, i - 1);
    return 0;
}

double function(int a)        //计算阶乘 
{
    int j;
    double z = 1;
    for (j = 1; j <= a; j++)
        z = z * j;
    return z;
}

运行结果如下图:

运行结果

2.字符串排序输出

输入长度未知的字符串并排序输出字符。

代码如下:

//输入长度未知的字符串并排序输出字符。
#include <stdio.h>
int main()
{
    char a[100], t;
    int i, j;
    scanf("%s", a);
    for (i = 0;; i++)
    {
        if (a[i] == '\0')
            break;
        for (j = i + 1;; j++)
        {
            if (a[j] == '\0')
                break;
            if (a[i] > a[j])
            {
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
    }
    printf("%s", a);
    return 0;
}

运行结果如下图:

运行结果

3.数组问题

数组a中存放5个四位十进制整数,统计千位和十位之和与百位和个位之和相等的数据个数,并将满足条件的数据存入数组b中。

代码如下:

#include <stdio.h>
int main()
{
    int a[5], b[5], i = 0, j = 0, c, d, e, f;
    for (i = 0; i < 5; i++)
        scanf("%d", &a[i]);
    for (i = 0; i < 5; i++)
    {
        c = a[i] / 1000;        //千位 
        d = (a[i] / 100) % 10;        //百位 
        e = (a[i] / 10) % 10;        //十位 
        f = a[i] % 10;            //个位 
        if ((c + e) == (d + f))
        {
            b[j] = a[i];
            j++;
        }
    }
    for (i = 0; i < j; i++)
        printf("%d ", b[i]);
    return 0;
}

运行结果如下图:

运行结果

4.输出矩阵中值最大的元素的值,行号,列号

有一个3*4的矩阵,编程输出矩阵中值最大的元素的值,行号,列号。

代码如下:

#include <stdio.h>
int main()
{
    int i, j, row = 0, colum = 0, max;
    int a[3][4] = { 1,2,3,4,9,8,7,6,-10,10,-5,2 };
    max = a[0][0];
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 4; j++)
        {
            if (a[i][j] > max)
            {
                max = a[i][j];
                row = i;
                colum = j;
            }
        }
    }
    printf("max=%d\nrow=%d\ncolum=%d", max, row, colum);
    return 0;
}

运行结果如下图:

运行结果

5.字符串复制

将一个字符串中的元音字母(a、e、i、o、u)复制到另一个字符串,然后按照ASCII码从小到大的顺序输出。

代码如下:

#include <stdio.h>
int main()
{
    char a[100] = { '\0' }, b[100] = { '\0' }, c;
    int i, j = 0;
    scanf("%s", a);
    for (i = 0;; i++)
    {
        if (a[i] == '\0')
            break;
        if (a[i] == 'a' || a[i] == 'e' || a[i] == 'i' || a[i] == 'o' || a[i] == 'u' || a[i] == 'A' || a[i] == 'E' || a[i] == 'I' || a[i] == 'O' || a[i] == 'U')
        {
            b[j] = a[i];
            j++;
        }
    }
    for (i = 0;; i++)
    {
        if (b[i] == '\0')
            break;
        for (j = i + 1;; j++)
        {
            if (b[j] == '\0')
                break;
            if (b[i] > b[j])
            {
                c = b[i];
                b[i] = b[j];
                b[j] = c;
            }
        }
    }
    printf("%s", b);
    return 0;
}

运行结果如下图:

运行结果

6.字符串单词统计

输入一串字符,统计其中有多少个单词,单词之间用空格隔开。

代码如下:

#include <stdio.h>
#include <string.h>
int main()
{
    char a[300] = { '\0' }, c;
    int i, count = 0, word = 0;
    gets(a);
    for (i = 0; (c = a[i]) != '\0'; i++)
    {
        if (c == ' ')
            word = 0;
        else if (word == 0)
        {
            word = 1;
            count++;
        }
    }
    printf("%d", count);
    return 0;
}

运行结果如下图:

运行结果

7.判定素日期

判定一个日期是否为素日期。素日期的定义:比如1993年5月1日,变成一个8位整数19930501(注意这里有时需补0),如果这个整数是素数,则定义该日期是素日期。

代码如下:

#include <stdio.h>
#include <math.h>

int main()
{
    int y, m, d, sum;
    int function(int sum);
    int judge(int y, int m, int d);

    scanf("%d%d%d", &y, &m, &d);
    if (judge(y, m, d))            //调用judge() 
    {
        sum = y * 10000 + m * 100 + d;
        if (function(sum))        //调用function() 
            printf("y");
        else
            printf("n");
        return 0;
    }
    else
    {
        printf("data error.");
        return 0;
    }
}

int function(int sum)     //判断素数 
{
    int i, p;
    p = sqrt((double)sum);
    for (i = 2; i <= p; i++)
    {
        if (sum % i == 0)
            return 0;    //不是素数 
    }
    return 1;            //素数 
}

int judge(int y, int m, int d)                //判断日期输入是否有误 
{
    if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))    //闰年情况 
    {
        if (y <= 0 || m <= 0 || m > 12 || d <= 0 || ((m == 1 || m == 3 || m == 5
            || m == 7 || m == 8 || m == 10 || m == 12) && d > 31) || (m == 2 && d > 29)
            || ((m == 4 || m == 6 || m == 9 || m == 11) && d > 30))
            return 0;
        else
            return 1;
    }
    else
    {
        if (y <= 0 || m <= 0 || m > 12 || d <= 0 || ((m == 1 || m == 3 || m == 5
            || m == 7 || m == 8 || m == 10 || m == 12) && d > 31) || (m == 2 && d > 28)
            || ((m == 4 || m == 6 || m == 9 || m == 11) && d > 30))
            return 0;
        else
            return 1;
    }
}

运行结果如下图:

运行结果

8.杨辉三角

输出杨辉三角形(要求输入10行)

代码如下:

#include <stdio.h>
int main()
{
    int i, j, k, n = 0, a[10][10];
    for (i = 0; i < 10; i++)
        a[i][0] = a[i][i] = 1;
    for (i = 2; i < 10; i++)
        for (j = 1; j <= i - 1; j++)
            a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
    for (i = 0; i < 10; i++)
    {
        {
            for (j = 0; j <= i; j++)
                printf("%d    ", a[i][j]);
            printf("\n");
        }
    }
    return 0;
}

运行结果如下图:

运行结果

9.字符串插入

输入整数n,及两个字符串s1,s2,在字符串s1中的第n个字符处插入字符串s2。

代码如下:

#include <stdio.h>
#include <string.h>
int main()
{
    char a[100] = { '\0' }, b[100] = { '\0' }, c[200] = { '\0' };
    int i = 0, j = 0, n = 0, l = 0;
    scanf("%d%s%s", &n, a, b);
    l = strlen(b);
    //字符串1的前一部分 放入c 
    for (i = 0; i < n - 1; i++, j++)
        c[j] = a[i];
    //字符串2 放入c 
    for (i = 0; i < l; i++, j++)
        c[j] = b[i];
    //字符串2后一部分放入c 
    for (i = n - 1; a[i] != '\0'; i++, j++)
        c[j] = a[i];
    //输出 
    printf("%s", c);
    return 0;
}

运行结果如下图:

运行结果

最后修改:2020 年 10 月 30 日 09 : 28 PM