C语言练习题(2)

输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。

#include 
using namespace std;

int main(void)
{
    char ch;

    int digit, letter, space, other;
    digit = letter = space = other = 0;

    while ((ch=getchar())!='\n')
    {
        if (ch >= 'a'&&ch <= 'z' || ch >= 'A'&&ch <= 'Z')//注意不能写做a
            letter++;
        else if (ch >= '0' && ch <= '9')
            digit++;
        else if (ch == ' ')//注意这里不能写作ch=' ',会给ch赋值为' '
            space++;
        else
            other++;
    }

    cout << "letter =" << letter << endl;
    cout << "digit =" << digit << endl;
    cout << "space =" << space << endl;
    cout << "other =" << other << endl;

    return 0;
}

运行结果:
C语言练习题(2)_第1张图片

2、求下列算式的值:1-1/2+1/3-1/4+……+1/99-1/100,将结果输出。

int main(void)
{
    double sum = 0.0;//注意sum的类型

    for (int i = 1; i <= 100; i++)
    {
        if (i % 2 == 0)
            sum -= (double)1 / i;//这里需要将1/i的值强制转换为浮点型,不然会发生截断
        else
            sum += (double)1 / i;
    }

    cout << sum << endl;

    return 0;
}

运行结果:
C语言练习题(2)_第2张图片

3、矩阵转置:将一个m行n列矩阵(即m×n矩阵)的每一行转置成另一个n×m矩阵的相应列

int main(void)
{
    int P[10][10];

    int m, n;
    cout << "input m,n:" << endl;
    cin >> m >> n;

    int i = 0, j = 0;
    for (int i = 0; i < m; i++)
    {
        cout << "input line " << i + 1 << endl;//输入一整行
        int L;
        cin >> L;
        for (int j = n-1; j >=0 ; j--)//取余放入数组,注意应为倒序
        {
            P[i][j] = L % 10;
            L = (L -= L % 10) / 10;
        }
    }

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout << P[j][i] << ' ';//注意输出,先列后行
        }
        cout << endl;
    }

    return 0;
}

运行结果:
C语言练习题(2)_第3张图片

你可能感兴趣的:(C语言练习题(2))