C语言专升本编程题

这是历年湖南省专升本考试,C语言编程题,各位可自取,那个#if 0 和 #endif 是注释

#define _CRT_SECURE_NO_WARNINGS
#include 
#include
#include
#include
using namespace std;

//输入一个字符,判断该字符是数字、字母、空格还是其它字符。
#if 0 
int main(){   
    char ch;
    ch = getchar();
    if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z') {
        printf("It is an English character\n");
    }
    else if (ch >= '0' && ch <= '9') {
        printf("It is a dugit character\n");
    }
    else if (ch == ' ') {
        printf("It is a space character\n");
    }
    else {
        printf("It is other character\n");
    }
    return 0;
}
#endif 

//下列程序的功能是从输入的整数中,统计大于零的整数个数和小于零的整数个数。
//用输入0来结束输入,用i、j来统计数
#if 0
int main() {
    int n, i = 0, j = 0;
    scanf("%d", &n);
    while (n != 0) {
        if (n > 0) {
            i += 1;;
        }
        else {
            j += 1;
        }
        n--;
    }
    printf("i=%4d,j=%4d\n", i, j);
    return 0;
}
#endif 


//计算1+3+5+....+101的值
#if 0
int main() {
    int i, sum = 0;
    for ( i = 0; i <=101; i+=2){
        sum += i;
    }
    printf("sum=%d\n", sum);
    return 0;
}


#endif


//计算1+3+5+....+99的值
#if 0
int main() {
    int i=1, sum = 0;
    
    while (i < 100) {
        sum += i;
        i += 2;
    }
    printf("sum=%d\n", sum);
    return 0;
}


#endif

//在a数组中查找与x值相同的元素所在的位置
#if 0
int main() {
    int a[10], x, i;
    for ( i = 0; i < 10; i++){
        scanf("%d", &a[i]);
    }
    scanf("%d", &x);
    for ( i = 0; i < 10; i++){
        if (a[i] == x) {
            break;
        }
    }
    if (x < 10) {
        printf("the pos of x is:%d\n", i);
    }
    else {
        printf("can not find x!\n");
    }
    return 0;
}

#endif

//程序读入20个整数,统计非负数个数,并计算非负数之和。
#if 0
int main() {
    int i, a[20], sum = 0, count = 0;
    for ( i = 0; i < 20; i++){
        scanf("%d", &a[i]);
    }
    for ( i = 0; i < 20; i++){
        if (a[0] < 0) {
            continue;
        }
        sum += a[i];
        count++;
    }
    printf("sum=%d\t count=%d\n", sum, count);
    return 0;
}

#endif

//输入一个正整数n,在输入n个整数,用选择法将它们从小到大排序后输出
#if 0
int main() {
    int a[10], n, i, j, t;
    scanf("%d", &n);
    for ( i = 0; i < n; i++){
        scanf("%d", &a[i]);
    }
    for ( j = 0; j < n-1; j++){
        for ( i = j+1; i < n; i++){
            if (a[j] > a[i]) {
                t = a[j];
                a[j] = a[i];
                a[i] = t;
            }
        }
    }
    for ( i = 0; i < n; i++){
        printf("%d\t", a[i]);

    }
    return 0;
}

#endif

//找出2-500之间的所有质数,并输出它们的和
#if 0
int main() {
    int i, j, k, m = 0, sum = 0;
    for ( i = 2; i <= 500; i++){
        k = sqrt(i);
        for ( j = 2; j <= k; j++){
            if (i % j == 0) {
                break;
            }
        }
        if (j >= k + 1) {
            printf("%4d", i);
            sum += i;
            m++;
            if (m % 10 == 0) {
                printf("\n");
            }
        }
    }
    printf("\nsum=%d\n", sum);
    return 0;
}

#endif


//找出二维数组a中的最大元素,并要求输出该元素以及该元素的行号和列号
#if 0
#define ROW 3
#define COL 3
int main() {
    int a[ROW][COL] = { 1,2,3,4,5,6,7,8,9 };
    int i,j;
    int maxRow = 0, maxCol = 0;
    int max = a[0][0];
    for ( i = 0; i < ROW; i++){
        for ( j = 0; j < COL; j++){
            if (max < a[i][j]) {
                max = a[i][j];
                maxRow = i;
                maxCol = j;
            }

        }
    }
    printf("max=%d,ROW=%d,COL=%d", max, maxRow, maxCol);
    return 0;
}

#endif

//输入一行字符,单词之间用一个空格分隔,统计其中有多少个单词
#if 0
int main() {
    char str[80];
    int i = 0, num = 0, flag = 1;
    gets_s(str);
    for ( i = 0;  str[i] != '\0'; i++){
        if (str[i] != ' ') {
            num++;
        }
    }
    printf("%d\n", num);
    return 0;
}

#endif


//求以为数组a中的最小元素及其下标
#if 0

int main() {
    int a[10] = { 1,4,2,7,3,12,5,34,5,0 };
    int i, num = 0, min = a[0];
    for ( i = 0; i < 10; i++){
        if (min > a[i]) {
            min = a[i];
            num = i;
        }
    }
    printf("The min is:%d,pos is:%d", min, num);

    return 0;
}

#endif


//写一个程序计算下列函数的值:
//Sum(n,x)=1+x+x^2/x!+x^3/3!+x^4/4!+....+x^n/n!
#if 0
  
int main() {
    int x, n, i = 1;
    double a = 1, b = 1, sum = 1;
    scanf("%d%d", &x, &n);
    for ( ; i <=n; i++){
        a = pow(x, i);
        b *= i;
        sum += a / b;
    }
    printf("%lf", sum);
}
#endif

//输入一个圆的半径r,当r>=0时,计算并输出圆的面积和周长,否则。输出提示信息
#if 0
#define PI 3.14
int main() {
    double r, m, z;
    scanf("%lf", &r);
    if (r >= 0) {
        m = PI * r * r;
        z = 2 * PI * r;
        printf("圆的面积是:%.2f,周长是%.2f", m, z);
    }
    else {
        printf("输入有误");
    }
    return 0;
}

#endif


//从键盘上输入一个百分之成绩score,按下列原则输出其等级
#if 0
int main() {
    int data;
    char ch;
    scanf("%d", &data);
    switch (data/10){
        case 10:
        case 9:
            ch = 'A';
            break;
        case 8:
            ch = 'B';
            break;
        case 7:
            ch = 'C';
            break;
        case 6:
            ch = 'D';
            break;
        default:
            ch = 'E';
    }
    printf("%c", ch);
    return 0;
}

#endif

//自定义一个函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数
#if 0
int IsPrimeNumber(int n) {
    for (int i = 2; i <=sqrt(n); i++){
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
    
}
int main() {
    int n,ret;
    scanf("%d", &n);
    ret = IsPrimeNumber(n);
    if (ret == 1) {
        printf("%d是素数\n", n);
    }
    else {
        printf("%d不是素数\n", n);
    }
    return 0;
}

#endif


//输入一个正整数n(n<=6),再输入n*n的矩阵,求其主对角线元素之和及副对角元素之和并输出
#if 0
int main(){
    int n, i, j, sum1 = 0, sum2 = 0;
    int a[6][6];
    scanf("%d", &n);
    for ( i = 0; i < n; i++){
        for ( j = 0; j < n; j++){
            scanf("%d", &a[i][j]);
            if (i == j) {
                sum1 += a[i][j];
            }
            if (i + j == n - 1) {
                sum2 += a[i][j];
            }
        }
    }
    printf("sum1=%d,sum2=%d", sum1, sum2);
    return 0;
}

#endif

//从键盘输入30个学生的成绩数据,求其中的最高分、最低分、平均分
#if 0
#define N 5
int main() {
    int i;
    double max, min, avg, a[N];
    for ( i = 0; i < N; i++){
        scanf("%lf", &a[i]);
    }
    max = a[0];
    min = a[0];
    avg = a[0];
    for ( i = 1; i < N; i++){
        if (max < a[i]) {
            max = a[i];
        }if (min > a[i]) {
            min = a[i];
        }
        avg += a[i];
    }
    printf("max=%lf,min=%lf,avg=%lf", max, min, avg / N);
    return 0;
}

#endif

//将一个有5个元素的数组中的值(整数)按逆序重新存放
#if 0
#define N 5
int main() {
    int a[N], temp, i;
    for ( i = 0; i < N; i++){
        scanf("%d", &a[i]);
    }
    for ( i = 0; i < N / 2; i++){
        temp = a[i];
        a[i] = a[N - i - 1];
        a[N - i - 1] = temp;
    }
    for ( i = 0; i < N; i++){
        printf("%4d", a[i]);

    }
    return 0;
}

#endif


//从键盘输入10名学生的成绩,按成绩从高到低的顺序排列并输出
#if 0
#define N 5
int main() {
    int a[N], i, j, temp;
    for ( i = 0; i < N; i++){
        scanf("%d", &a[i]);
    }
    for ( i = 0; i < N; i++){
        for ( j = 0; j < N-1; j++){
            if (a[j] < a[j + 1]) {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
    for ( i = 0; i < N; i++){
        printf("%3d", a[i]);
    }
    return 0;
}

#endif

//从键盘输入一个4*3的整型数组,找出数组中的最小值及其在数组中的下标
#if 0
#define RWO 3
#define COL 3
int main() {
    int a[RWO][COL], i, j, min, m, n;
    for ( i = 0; i < RWO; i++){
        for ( j = 0; j < COL; j++){
            scanf("%d", &a[i][j]);
        }
    }
    min = a[0][0];
    for (i = 0; i < RWO; i++) {
        for (j = 1; j < COL; j++) {
            if (min > a[i][j]) {
                min = a[i][j];
                m = i;
                n = j;
            }
        }
    }
    printf("最小值是:%d\n", min);
    printf("%d,%d\n", m, n);
    return 0;
}

#endif

//有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13......前20项之和,输出结果保留2位小数
#if 0
int fun(int a,int b,int n) {
    if (n == 1) {
        return a;
    }
    else if (n == 2) {
        return b;
    }
    else {
        return fun(a, b, n - 1) + fun(a, b, n - 2);
    }
}
int main() {
    double sum = 0;
    int i;
    for ( i = 1; i <=20; i++){
        sum += fun(2, 3, i) * 1.0 / fun(1, 2, i);

    }
    printf("%.2lf\n", sum);
    return 0;

}

#endif

//方法二:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13......前20项之和,输出结果保留2位小数
#if 0
int main() {
    int i;
    float sum = 0 , fz = 1, fm = 1,  t;
    for ( i = 0; i < 20; i++){
        t = fz;
        fz += fm;
        fm = t;
        sum += fz / fm;
    }
    printf("%.2f\n", sum);
    return 0;
}

#endif

//计算1-1/2+1/3-1/4+....+1/99-1/100+....直到最后一项的绝对值小于10-4为止
#if 0
int main() {
    int  i = 1;
    float sum = 0, sign = 1.0;
    while ((1.0 / i) >= 1e-4)
    {
        sum += sign / i;
        i++;
        sign = -sign;
    }
    printf("sum=%.4f", sum);
    return 0;
}

#endif


//编写一个实现对数组a的10个数按小到大排序的程序
#if 0
#define N 10
int main() {
    int i, j, t, a[N] = { 5,4,3,2,1,9,8,7,6 };
    for (i = 0; i < N - 1; i++) {
        for (j = 0; j < N - 1 - i; j++) {
            if (a[j] > a[j + 1]) {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    for (i = 0; i < N; i++) {
        printf("%d\t", a[i]);

    }
    return 0;
}

#endif


#if 0
int main() {
    int i, j;
    //控制行数
    for ( i = 4; i >0; i--){
        //控制空格
        for ( j = 1; j <= 4-i; j++){
            printf(" ");
        }
        //控制*号
        for ( j = 1; j <= 2*i-1; j++){
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

#endif


//计算1-1/2+1/3-1/4+...+1/99-1/100
#if 0
int main() {
    int i, k = 1;
    float sum = 0;
    for ( i = 1; i <=100; i++){
        sum += k  / (float)i;
        k = -k;
    }
    printf("%f", sum);
    return 0;
}

#endif


//编程输出fibonacci(斐波那契)数列的前40项
#if 1
long fib(int n) {
    return n <= 2 ? 1 : fib(n - 1) + fib(n - 2);
}
int main() {
    int i = 0;
    for ( i = 1; i <= 40; i++){
        printf("%12ld", fib(i));
        if (i % 2 == 0) {
            printf("\n");
        }
    }
    return 0;
}

#endif

你可能感兴趣的:(c语言,蓝桥杯,c++,经验分享)