C语言编程练习题

C语言

  1. C程序的基本单位是(函数)。
  2. 程序的灵魂是(算法)。
  3. C语言规定:在一个源程序中,main 函数的位置(可以任意)。
  4. 在C语言中下面对函数不正确的描述是(子函数必须位于主函数之前)。
  5. 若 a=-14,b=3,则条件表达式 a<b?a:b+1的值为(-14 )
  6. 已知int n,i=1j=2;执行语句n=i<j?i++:j++;则输出i和j的值(2,2)
  7. 当a=2,b=3,c=0时,表达式(a!=b)&&(a!=c)的值是(1)。
  8. 能够用来描述算法的有(自然语言,流程图,计算机语言)。
  9. 程序中用到 sqrt 函数时,程序头部要加载(#include<math.h)。
  10. 以下对一维整型数组赋值,正确的是(int a[4]={0,1,2,3})。
  11. 以下定义的C 语言标识符不正确的是(ab.c)。
  12. 设变量a是整型,b 是实型,c 是双精度型,则表达式10+a+b*c 值的数据类型为(double )。
  13. 设 x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是( !(x<y) )
  14. 判断 char型变量c 是否为小写字母的正确表达式为((c>=‘a’)&&(c<=z))。
  15. 若有说明:int a[10];则对a数组元素的正确引用是(a[5-3])。
  16. 以下对二维数组 a的正确说明是(int a[3][4])。
  17. 设有定义: int a,*pa=&a;以下 scanf语句中能正确为变量 a读入数据的是(scanf(“%d,*pa))。
  18. i=4;j=++i;i 和j 的值分别是(5,5)。
  19. 先执行循环体后判断条件的循环结构是(do-while),因此不管循环条件是否成立, 循环体语句都至少被执行一次。
  20. char cl={“China”},c数组中元素个数为(6)个。
  21. 下列运算符中优先级最高的是(%)。
  22. 已知 float y=8.9;请定义指针(float *w=&y;),指向变量y。
  23. 字符在计算机中以(ASCll)形式存放。
  24. 若要使程序输出换行,可使用转义字符(\n)。
  25. 变量的指针,其含义是指该变量的(地址)。
  26. 若 int*p,m= 5,n;以下正确的程序段是(p=&n;*p=m;)
  27. 有以下程序段int a[10]={1,2,3,4,5,6,7,8,9,10},*p;p=&a[3]: 输出p的值是 4
  28. 若有以下定义,int a[10],p=a; 则 p+5表 示(元素 a[5]的地址)
  29. “int a[][4]={1,2,3,4,5,6,7,8,9,10};”, 最后一行元素的值是(9,10,0,0)
  30. 有参函数定义语句中的参数属于(形式参数)。
  31. 根据变量的作用域不同,变量分为全局变量和(局部变量)。
  32. 变量的指针,其含义是指该变量的(地址)。
  33. 以下不正确的C 语言标识符是(ab.c)。
  34. 一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的 是 ( 有零个或多个输出) 。
  35. C语言开发过程一般要先后经过(编辑、编译、连接、执行)四个步骤。
  36. 以下关于C 程序结构描述错误的是(一个 C 语言程序必须包括一个或多个main( )函数。)。
  37. 在 C 语言中,以下( ; )符号表示语句结束。
  38. 流程图用以下(菱形框)图形表示判断。
  39. C 的3种基本结构中,包含的结构是(顺序,选择,循环)。
  40. 计算机算法包括数值运算算法和非数值运算算法,以下哪些属于非数值运算 (对一批职工按姓名排序)。
  41. 以下( _sum )是合法标识符。
  42. 用 scanf函数输入double类型数据时,使用(%lf)格式字符串
  43. 存在基本整型 int a=4 使用 sizeof(a)计算结果为(4)。变量在内存中的所占的空间
  44. 描述静态局部变量的关键字是(static)。

1.从键盘上输入整数类型变量x 的值,编写程序计算下面分段函数的值。

在这里插入图片描述

#include <stdio.h>
int main() {
    int x, y;
    printf("请输入整数 x 的值:");
    scanf("%d", &x);
    if (x < -2) {
        y = 8 * x - 5;
    } else if (x >= -2 && x <= 5) {
        y = x * x - 7 * x - 15;
    } else {
        y = x * x * x + 6 * x;
    }
    printf("分段函数的值 y 为:%d\n", y);
    return 0;
}
2.编程求一个一维数组和一个2*3的二维数组的平均分。
#include <stdio.h>
double c1D(int arr[], int size) {
    int i,sum = 0;
    for (i = 0; i < size; i++) {
        sum += arr[i];
    }

    return (double)sum / size;
}
double c2D(int arr[][3], int rows, int cols) {
    int i,j,sum = 0;
    int count = rows * cols;
    for (i = 0; i < rows; i++) {
        for (j = 0; j < cols; j++) {
            sum += arr[i][j];
        }
    }

    return (double)sum / count;
}

int main() {
    int arr1D[] = {1, 2, 3, 4, 5};
    int size1D = sizeof(arr1D) / sizeof(arr1D[0]);

    int arr2D[][3] = {{1, 2, 3}, {4, 5, 6}};
    int rows2D = sizeof(arr2D) / sizeof(arr2D[0]);
    int cols2D = sizeof(arr2D[0]) / sizeof(arr2D[0][0]);

    double avg1D = c1D(arr1D, size1D);
    double avg2D = c2D(arr2D, rows2D, cols2D);

    printf("一维数组的平均值:%f\n", avg1D);
    printf("二维数组的平均值:%f\n", avg2D);

    return 0;
}
3.输入1个字符,若输入的字符是小写,则转换成大写;若是大写,则转换成小写。
#include <stdio.h>
int main() {
    char ch;
    printf("请输入一个字符:");
    scanf(" %c", &ch);
    if (ch >= 'a' && ch <= 'z') {
        ch = ch - 'a' + 'A';
    } else if (ch >= 'A' && ch <= 'Z') {
        ch = ch - 'A' + 'a';
    } else {
        printf("输入的不是字母。\n");
        return 1; 
    }
    printf("转换后的字符:%c\n", ch);
    return 0;
}
4.有10个学生编程课成绩,数据由键盘输入,输出这些学生的成绩,计算总分、 平均分,并找出最高分和最低分,输出结果。
#include <stdio.h>
int main() {
    int stu[10];
    int sum = 0;
    double pjf;
    int max = 0;
    int min = 100;

    printf("请输入10个学生的编程课成绩:\n");
    int i;
    for (i = 0; i < 10; i++) {
        printf("学生%d的成绩:", i + 1);
        scanf("%d", &stu[i]);
        sum += stu[i];
        if (stu[i] > max) {
            max = stu[i];
        }
        if (stu[i] < min) {
            min = stu[i];
        }
    }
    pjf = (double)sum / 10;
    printf("\n学生的成绩如下:\n");
    int j;
    for (j = 0; j < 10; j++) {
        printf("学生%d的成绩:%d\n", j + 1, stu[j]);
    }
    printf("\n总分:%d\n", sum);
    printf("平均分:%.2f\n", pjf);
    printf("最高分:%d\n", max);
    printf("最低分:%d\n", min);
    return 0;
}
5.编程求N的阶乘, N是一个大于1的正整数,要求采用递归函数调用方法。
#include <stdio.h>
int fun(int n) {
    if (n == 0 || n == 1) {
        return 1;
    } else {
        return n * fun(n - 1);
    }
}
int main() {
    int N;
    printf("请输入一个大于1的正整数 N:");
    scanf("%d", &N);
    if (N <= 1) {
        printf("输入的数字必须大于1。\n");
        return 1;
    }
    int res = fun(N);
    printf("%d的阶乘为:%llu\n", N, res);
    return 0;
}
6.输入3个整数,按从大到小的顺序进行输出。
#include <stdio.h>
int main() {
    int a, b, c;
    printf("请输入三个整数:\n");
    scanf("%d %d %d", &a, &b, &c);
    if (a < b) {
        int t = a;
        a = b;
        b = t;
    }
    if (a < c) {
        int t = a;
        a = c;
        c = t;
    }
    if (b < c) {
        int t = b;
        b = c;
        c = t;
    }
    printf("从大到小的顺序为:%d %d %d\n", a, b, c);
    return 0;
}
7.找出所有的水仙花数。
#include <stdio.h>
int main() {
    int i, j, k;
    printf("所有的水仙花数为:\n");
    for (i = 1; i <= 9; i++) {
        for (j = 0; j <= 9; j++) {
            for (k = 0; k <= 9; k++) {
                int num = i * 100 + j * 10 + k;
                int sum = i * i * i + j * j * j + k * k * k;
                if (num == sum) {
                    printf("%d\n", num);
                }
            }
        }
    }
    return 0;
}
8.求5个整数的最大值,要求使用函数。
#include <stdio.h>
int fun(int arr[], int size) {
    int i, max = arr[0];
    for (i = 1; i < size; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
    }
    return max;
}

int main() {
    int i, num[5];
    printf("请输入5个整数:\n");
    for (i = 0; i < 5; i++) {
        printf("整数%d:", i + 1);
        scanf("%d", &num[i]);
    }
    int maxv = fun(num, 5);
    printf("这5个整数的最大值是:%d\n", maxv);
    return 0;
}
9.求300内所有的素数。
#include <stdio.h>
int fun(int num) {
    if (num < 2) {
        return 0;
    }
	int i;
    for (i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return 0;
        }
    }
    return 1;
}

int main() {
    printf("300以内的所有素数:\n");
    int i;
    for (i = 2; i <= 300; i++) {
        if (fun(i)) {
            printf("%d ", i);
        }
    }
    printf("\n");
    return 0;
}
10.用星号画下面图形。
    *
   ***
  *****
 ********
**********
#include <stdio.h>
int main() {
    int i, j, k;
    for(i = 0;i < 5;i++){
		for(j = 4;j > i;j--){
    		printf(" ");
		}
    	for(k = 0;k < 2*i+1;k++){
    		printf("*");
		}
		printf("\n");
	}
    return 0;
}
11.用星号画菱形。
#include <stdio.h>
int main() {
    int i, j, k;
    for(i = 0;i < 5;i++){
		for(j = 4;j > i;j--){
    		printf(" ");
		}
    	for(k = 0;k < 2*i+1;k++){
    		printf("*");
		}
		printf("\n");
	}
	for (i = 4; i > 0; i--) {
        for (j = 5; j > i; j--) {
            printf(" ");
        }
        for (k = 0; k < 2 * i - 1; k++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
12.输入a,b的值,求a的阶乘除以b的阶乘。
#include <stdio.h>
int main() {
    int a, b;
    printf("请输入a的值:");
    scanf("%d", &a);
    printf("请输入b的值:");
    scanf("%d", &b);
    
    int i, fa = 1, fb = 1;
    for(i = a;i > 1;i--){
    	fa *= i;	
	}
	for(i = b;i > 1;i--){
    	fb *= i;	
	}
	printf("%d的阶乘除以%d的阶乘为:%d\n", a, b, fa*fb);
    return 0;
}
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

If True

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值