C语言编程题

848 阅读8分钟
100以内最大能被17整除的数
int fun1(){
    int i;
    for(i = 100; i >= 17; i--){
        if ( i % 17 == 0) {
            return i;
        }
    }
    return -1;
}
已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值。
void fun2(){
    int a = 0,b = 0,c = 0;
    int i,j,k;
    int sum1,sum2;
    for (i = 0; i < 10; i++){
        for (j = 0; j < 10; j++) {
            for (k = 0; k < 10; k++) {
                a = i;
                b = j;
                c = k;
                sum1 = a * 100 + b * 10 + c;
                sum2 = c * 100 + b * 10 + a;
                if ((sum1 + sum2) == 1333) {
                    printf("%d,%d,%d \n",a,b,c);
                }
            }
        }
    }
}
计算并输出200-400之间不能被3整除的整数的和。
void fun3(){
    int i;
    int sum = 0;
    for( i = 200; i <= 400; i++) {
        if( i % 3 != 0) {
            sum += i;
        }
    }
    printf("%d",sum);
}
从键盘输入10个数,统计非负数的个数,并计算非负数的和。
void fun4() {
    int i = 0;
    int a[10] = {0};
    int sum = 0 , count = 0;
    for (i = 0; i < 10; i++) {
        scanf("%d",a + i);
        if (a[i] < 0) {
            sum += a[i];
            count ++;
        }
    }
    printf("%d,%d", count, sum);
}
求100之内自然数中偶数之和。
int fun5() {
    int i = 0;
    int sum = 0;
    for (i = 2; i <= 100; i++) {
        if (i % 2 == 0) {
            sum += i;
        }
    }
    return sum;
}
输入5个数,求和并输出。要求编写求和的函数。
int fun6() {
    int sum = 0, i;
    int a[5] = {0};
    for (i = 0; i < 5; i++) {
        scanf("%d",a+i);
        sum += a[i];
    }
    return sum;
}
编程计算1×2×3+3×4×5+5×6×7+...+99×100×101的值
int fun7() {
    int sum = 0, i;
    for (i = 1; i < 99; i+=2 ) {
        sum += i * (i+1) * (i+2);
    }
    return sum;
}
编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。
void fun8() {
    char str[100];
    gets(str);
    char* p;
    for (p = str; *p != '\0'; p++){
        if(*p == 'a') {
            *p = '*';
        }
    }
    puts(str);
}
编写程序,将一个一维数组的元素逆序存放并输出。例如,原顺序为1,2,3,4,5,逆序后为5,4,3,2,1
void fun9(int a[], int length) {
    int i;
    for (i = 0; i < (length)/2; i++) {
        int temp = a[i];
        a[i] = a[length-1-i];
        a[length-1-i] = temp;
    }
    for(i = 0; i < length; i++) {
        printf("%d\n",a[i]);
    }
}
求3行3列矩阵a‘[ 3] [ 3]={1,2,3,4,5,6,7,8,9}非对角线上元素之和。
int fun10() {
    int i, j, sum = 0;
    int a[3][3] = {1,2,3,4,5,6,7,8,9};
    for (i = 0; i < 3; i ++) {
        for (j = 0; j < 3; i ++) {
            if (i != j) {
                sum += a[i][j];
            }
        }
    }
    return sum;
}
编程判断输入的整数的正负性和奇偶性。如果为正数,输出z;如果为负数,输出f;如果为偶数,输出 o ;如果为奇数,输出 j
void fun11 () {
    int answer;
    scanf("%d",answer);
    if (answer >= 0) {
        printf("z");
    } else {
        printf("f");
    }
    if (answer % 2 == 0) {
        printf("o");
    } else {
        printf("j");
    }
}
计算并输出1-200之间不能被5整除的整数的和。
int fun12() {
    int i, sum = 0;
    for (i = 1; i <= 200; i++) {
        if (i % 5 != 0) {
            sum += i;
        }
    }
    return sum;
}
从键盘输入n 和 a的值,计算 a+aa+aaa+aaaa...+aa....aaa(n个a相乘)的值
int fun13() {
    int i, sum = 0;
    int a, n;
    scanf("%d,%d", &a, &n);
    for (i = 1; i <= n; i++) {
        sum += a * i;
    }
    return sum;
}
输入5个数,求他们中最大值和平均值并输出。
void fun14() {
    int i;
    double avg, max, sum = 0;;
    double a[5];
    scanf("%d",a);
    max = a[0];
    for (i = 1; i < 5; i++) {
        scanf("%f",a+i);
        sum += a[i];
        if (max < a[i]) {
            max = a[i];
        }
    }
    avg = sum / 5;
    printf("%f,%f",max,avg);
}
输出所有200-400之间能被3整除,且各位数字为6的整数
void fun15() {
    int i;
    for (i = 200; i <= 400; i++) {
        if ((i%3==0) && (i%10==6)) {
            printf("%d",i);
        }
    }
}
编写程序,将用户出入的字符串中所有的字符a去掉,然后输出剩余的字符。
void fun16() {
    char str[100];
    gets(str);
    char *p = str, *fp;
    while(*p != '\0') {
        if (*p == 'a') {
            for (fp = p; *(fp) != '\0'; fp++) {
                *fp = *(fp+1); 
            }
        }
        else {
            p++;
        }
    }
    puts(str);
}
计算并输出200-400之间不能被7整除的整数的和
void fun17() {
    int i, sum = 0;
    for (i = 200; i <= 400; i++) {
        if (i % 7 != 0) {
            sum += i;
        }
    }
    printf("%d", sum);
}
计算并输出200-400之间不能被5整除的整数的和
void fun18() {
    int i, sum = 0;
    for (i = 200; i <= 400; i++) {
        if (i % 5 != 0) {
            sum += i;
        }
    }
    printf("%d", sum);
}
从键盘输入10个数,统计非整数的个数,并计算非正数的和
void fun19() {
    int i, count = 0;
    double a[10] = {0}, sum = 0;
    for (i = 0; i < 3; i++) {
        scanf("%lf",&a[i]);
        if (a[i] < 0) {
            sum = sum + a[i];
        }
        int temp = (int)a[i];
        if ((a[i]-temp) != 0) {
            ++count;
        }
    }
    printf("%f,%d,%f",sum,count,a[0]);
}
输入一串字符,将其中的大写字母变成对应的小写字母并输出
void fun20() {
    char str[100];
    gets(str);
    char* p = str;
    for(p = str; *p != '\0'; p++) {
        if (*p >= 'A' && *p <= 'Z') {
            *p += 32;
        }
    }
    puts(str);
}
打印所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字的立方和等于该数。例如153 = 111 + 555 + 333
void fun21() {
    int n = 0, i;
    int a, b, c, t;
    scanf("%d",&n);
    for (i = 100; i <= 999; i++) {
        a = i % 10;
        b = i / 10 % 10;
        c = 1 / 100;
        t = a*a*a + b*b*b + c*c*c;
        if (t == i) {
            printf("%d",t);
        }
    }
}
一个皮球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求他当第10次落地时,共仅过了多少米,第十次反弹多高。
void fun22() {
    int i;
    double heigh = 100;   //弹起高度
    double longUp = 0;      //每次弹起时经过的总路程
    double longDown = 0;    //每次落地时经过的总路程
    for (i = 0; i < 10; i++) {
        longUp += heigh;    //皮球落地
        longDown = longUp;  //保存当前落地时的总路程
        heigh = heigh / 2;  //先计算反弹高度
        longUp += heigh;    //皮球反弹
    }
    printf("%f\n%f",longUp,heigh);
}
输出所有0-200之间能被3整除且个位数字为6的整数
void fun23() {
    int i;
    for (i = 0; i <= 200; i++) {
        if ( (i % 3 == 0) && (i % 10 == 0)) {
            printf("%d\n",i);
        }
    }
}
输入一个正整数,输出他的阶乘
void fun24() {
    int n, i , answer = 1;
    scanf ("%d",&n);
    for(i = 1; i < n; i++) {
        answer *= i;
    }
    printf("%d",answer);
}
编写程序,判断从键盘输入的字符中数字字符的个数,大写字母的个数,小写字母的个数以及其他字符的个数,以*字符作为输入结束的标志
void fun25() {
    char str[100];
    char *p = str;
    int number = 0, small = 0, big = 0, other = 0;
    for (p = str; *p != '\0'; p++) {
        scanf("%c",p);
        if (*p == '*') {
            break;
        }
        if (*p >= '0' && *p <= '9') {
            number++;
        } else if (*p >= 'A' && *p <= 'Z') {
            big++;
        } else if (*p >= 'a' && *p <= 'z') {
            small++;
        } else {
            other++;
        }
    }
    *p = '\0';
    puts(str);
}

输入一串字符,要求逆序输出,使用数组实现
void fun27() {
    char str[100];
    gets(str);
    char* fp = str;     //终点指针
    while (*fp != '\0') {
        fp++;
    }
    char* q = str;      //起点指针
    while (q < fp) {
        int temp = *q;
        *q = *fp;
        *fp = temp;
        q++;        //起点++
        fp--;       //终点--
    }
}
求 1- 1/2 + 1/3 - 1/4 ... + 1/99 - 1/100
void fun28() {
    int i;
    double sum = 1;
    int falg = -1;
    for (i = 2; i <= 100; i++) {
        sum += falg * 1.0 / i;
        falg *= -1;
    }
    printf("%d",sum);
}
输入三个学生的四门课的成绩{{60,70,65,75},{75,80,75,90},{95,75,90,65}},计算每个学生的总分和平均成绩并输出,结果保留1位小数
void fun29() {
    int i , j;
    double sum[3],avg[3],a[3][4] = {{60,70,65,75},{75,80,75,90},{95,75,90,65}};
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 4; j++) {
            sum[i] += a[i][j];
        }
        avg[i] = sum[i] / 4;
        printf("%.1f  %.1f\n",sum[i],avg[i]);
    }
}
求两个正整数的最大公约数
void fun30() {
    int a, b, i;
    scanf("%d,%d", &a, &b);
    int gcd = 0;
    for (i = 1; (i <= a) && (i <= b); i++) {
        if ( (a % i == 0) && (b % i == 0)) {
            gcd = i;
        }
    } 
    printf("%d",gcd);
}
求100之内自然数中奇数之和
void fun31() {
    int i, sum = 0;
    for (i = 0; i <= 100; i++) {
        if (i % 2 != 0) {
            sum += i;
        }
    }
    printf("%d",sum);
}
要求编写函数求平方。输入n的值,计算并输出 11 + 22 + ... n*n 的值
void fun34(int n) {
    int i, sum = 0;
    for (i = 1; i <= n; i++) {
        sum += i*i;
    }
    printf("%d",sum);
}
输入一个华氏温度,输出摄氏温度。计算公式:c = 5 / 9 * (F - 32)。保留一位小数。
void fun37 () {
    int f;
    scanf ("%d",&f);
    double c = 5.0 /9 * (f - 32);
    printf("%.1f",c); 
}
输入任意三个数,按从大到小顺序输出
void fun38() {
    int a[3], i, j;
    scanf ("%d,%d,%d",&a[0],&a[1],&a[2]);
    int chu = a[1];     //中位
    for(i = 0; i < 2; i++) {
        for(j = i+1; j < 3; j++) {
            if (a[i] < a[j]) {
                int temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    printf("%d,%d,%d",a[0],a[1],a[2]);
}
用1元人民币兑换5分、2分、1分的硬币共50枚,每种硬币至少一枚,共有多少种方案,输出每一种方案中三种硬币的数量
void fun39() {
    int five, one, two;
    for(five = 1; five < 20; five++) {
        for(two = 1; two < 50; two++) {
            if((five+two) >= 50) {
                break;
            }
            one = 50 - five - two;
            int sum = five * 5 + two * 2 + one * 1;
            if(sum == 100) {
                printf("%d,%d,%d\n",five,two,one);
            } else if ( sum > 100) {
                break;
            }
        }
    }
}
从键盘输入圆的半径,计算并输出圆面积与周长,要求结果保留两位小数
void fun40() {
    int r;
    scanf("%d",&r);
    double m = 3.14 * r * r;
    double l = 3.14 * r * 2;
    printf("%d,%d",m,l);
}