C语言基础题

选择题

1.(   )是构成C语言程序的基本单位。

A.函数        B.过程        C.子程序        D.子例程

答案:A

2.下面(   )表达式的值为4。

A.11/3        B.11.0/3       C.(float)11/3     D.(int)(11.0/3+0.5)

答案:D

3.若有以下数组说明,则i=10;a[a[i]]元素数值是(   )。

int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

A.10          B.9            C.6               D.5

答案:C

4.C语言中有语句:char a[]="\0abc\012345";则数组a所占的内存空间的字节数为:(   )。

A.0                          B.9             

C.11                         D.10

答案:B

5.若有定义"char a; int b; float c; double d;",则表达式"a*b+d-c"值的类型为(   )。

A. float                       B.int

C. char                        D.double

答案:D

6.在C语言中,函数的数据类型是指(   )。

A.函数返回值的数据类型        

B.函数形参的数据类型

C.调用该函数时的实参的数据类型   

D.任意指定的数据类型

答案:A

7.以下标识符中,不能作为合法的C用户定义标识符的是(   )。

A.answer   B.signed

C.to   D._if

答案:D

8.下面的这个循环的循环次数是(    )。

int i,j;

for( i=0,j=10; i=j=10; i++,j--)

A.语法错误,不能执行                 B.无限次

C.10                                 D.1

答案:B

9.C语言执行程序的开始执行点是(    )。

A.程序中第一行代码               B.程序中第一个函数

C.程序中的main函数              D.包含文件中的第一个函数

答案:C

10.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是(   )。

A.p=q          B.*p=*q       C.n=*q           D.p=n scanf("%d",*p)

答案:D

11.若a是基本整型变量,c是单精度实型变量,输入语句(    )是错误的。

A.scanf("%d,%f", &a, &c);          

B.scanf("d=%d, c=%f", &a, &c);

C.scanf("%d%f", &a, &c);

D.scanf("%d%f", a, c);

答案:D

12.在进行文件操作时,文件读操作的一般含义是(   )。

A.将计算机内存中的信息写入磁盘

B.将磁盘中的信息读入计算机内存

C.将计算机 CPU 中的信息写入磁盘

D.将磁盘中的信息读入计算机CPU

答案:B

13.设有int x=11;则表达式(x++*1/3)的值是(   )。

A.3                          B.4

C.11                         D.2

答案:A

答案解析:运算符的优先级;x++先使用再自增 ++x先自增再使用

14.若"int n; float f=13.8;",则执行"n=(int)f%3"后,n的值是(   )。

A.1                           B.4

C.4.33333                     D.4.6

答案:A

答案解析:运算符的优先级;% 取余

15.以下对一维数组a的正确说明是(   )。   

A.char a(10);                B.int a[];

C.int k=5,a[k];            D.char  a[3]={‘a’,’b’,’c’};

答案:D

16.已知字符 'a' 的ASCII码为 97,执行语句printf ("%d, %c", 'b', 'b'+1 )

后输出是(    )。

A.98, b                       B.语法不合法

C.98, c                       D.98, 99

答案:C

17.以下叙述中不正确的是(    )。

A.C程序可以由一个或多个函数组成

B.C程序可以由多个程序文件组成

C.一个C语言程序只能实现一种算法

D.一个C函数可以单独作为一个C程序文件存在

答案:C

18.计算机能直接执行的程序是(    )。

A.汇编程序                           B.目标程序

C.可执行程序                         D.源程序

答案:C

答案解析:

19.在C语言程序中,表达式5%(-2)的结果是(   )。

A.1           B.-1           C.2               D.3

答案:A

20.结构化程序的三种基本控制结构是(    )。

A.过程、子程序和分程序        B.调用、返回和转移

C.顺序、选择和调用            D.顺序、选择和循环

答案:D

填空题:

1.算法的表示方法有自然语言、计算机语言、 流程图            N-S图           伪代码    

2.数组是一组具有    相同    类型的数据的集合。

3.已知a=10,b=20,则表达式!a<b的值为    1    

1)答案解析:运算符优先级:! 高于<

2)! | & 逻辑运算符,不为0则为真(1)

4.C语言的基本数据类型中,     结构体     是一种复合数据类型,可以包含多个元素。

5.函数之间可以相互调用,除了    主函数(main)      函数。

6.在C语言中,    for      语句用于循环,可以实现计数器的功能。

7.C语言中逻辑与逻辑非。其中,     逻辑非     的优先级比较高。

8.在C语言中的      strlen     函数用于求字符串的长度。

9.C语言中的基本数据类型分别是     整形;浮点型;字符型    、、枚举型变量。

10.定义变量int x=1.20,则%d格式输出x的结果为    1    

11.C语言中有一种特殊类型的变量,专门用于存放其他变量的地址,这种变量称为    指针变量     

12.在C语言中,    strcpy    函数用于字符串的复制。

13.在C语言的运算符中,    地址     运算符和逻辑运算符是用“真”和“假”来表达结果。

14.定义结构体类型的关键字是    struct    

15.在C语言中,    %      运算符用于取模。

16.指针变量指向的是     地址   

判断题

1.结构体变量不可以在定义时直接进行初始化。                    (    )

答案:错

2.do-while语句构成的循环只能用break语句退出。                 (    )

答案:错

3.C语言中的注释都可以嵌套使用。                                (   )

答案:错

4.编写C程序计算1.0/3*3的结果肯定等于1。                     (    )

答案:错

5.字符数组就是字符串。                                           (   )

答案:错

5.break语句的作用是结束整个循环的执行。                         (   )

答案:正确

6.数组中的元素可以通过数组名和下标来引用。                      (   )

答案:正确

8.标识符的命名只能以数字和字母开头。                             (   )

答案:错

9.C程序中变量可以不定义而直接使用。                           (   )

答案:错

10.二维数组在内存的存放不是二维的。                            (    )

答案:正确

11.语句j=i++;与j=++i没有什么区别。                            (    )

答案:错

12.C语言中多个以“;”结束的语句不能放在同一行。                 (    )

答案:错

13.‏C语言中强制类型转换不会改变变量的原有数据类型。             (    )

答案:对 

14.C语言中,指针不属于三大基本数据类型。                       (    )

答案:正确

15.scanf函数的输入项如果是字符数组名,也要再加地址符&。         (    )

答案:错

答案解析:数组名本身就是地址

16.C语言中的逻辑值“真”是用1表示的,逻辑值“假”是用0表示的。      (   )

答案:正确

17.局部变量只有当它所在的函数被调用时才会被使用,当函数调用结束时局部变量还会一直存在。                                             (    )

答案:错

18.指针变量实际上存储的并不是变量的值,而是变量的地址。        (    )

答案:正确

19.计算机语言可分为四大类:机器语言、汇编语言、脚本语言和高级语言。    (   )

答案:错误

20.C语言提供了fopen()函数,该函数用于打开文件,其返回值类型为空。 (   )

答案:错误

程序填空题

1.把下列程序补充完整,实现两个字符串的比较,即自己写个strcmp函数,函数原型为:int strcmp(char  *p1,char  *p2),设p1指向字符串s1,p2指向字符串s2。要求:当s1=s2时,返回值为0。当sl≠s2时,返回它们两者的第一个不同的字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如果sl<s2,则输出负值。

#include<stdio.h>

int main()

{          1        ;

  int m;

  char  str1[20],str2[20],*p1,*p2;

  printf("Input two string:\n");

  scanf("%s",str1);

  scanf("%s",str2);

  p1=str1;

        2        ;

  m=strcmp(p1,p2);

  printf("result:%d\n",m);

 }

int strcmp(char  *p1,char *p2)

/*两个字符串比较的函数*/

{ int i=0;

while(*(p1+i)==*(p2+i))

     if(*(p1+i++)=='\0')  return(0);

  return(*(p1+i)-*(p2+i)); /*不等时返回结果为第一个不等字符ASCII码的差值*/

}

1int strcmp(char  *p1,char  *p2)

2p2=str2 ;

2. #include <stdiod.h>

  #include <math.h>

int main() {

    int arr[3][3]={ {1, -2, 3}, {-4, 5, -6}, {7, -8, 9} };

    int i, j, sum = 0, min= arr[0][0];

    for (i = 0; i < 3; i++) {

        for (j = 0; j < 3; j++) {

            sum+= abs(arr[i][j]);

            if (arr[i][j] < min) {

                min = arr[i][j];

            }

        }

    }

    printf("%d\n", sum);

    printf("%d\n", min);

    return 0;

}

则程序输出结果:

(3)         45               

(4)          -8              

3. #include <stdio.h>

  void swap(int *a,int *b)

{

      int temp=*a;

      *a=*b;

      *b=temp;

   }

int main() {
    int x = 10, y = 20;
    int *px = &x, *py = &y;
    printf("Before swap: x = %d, y = %d\n", x, y);
    swap(px, py);
    printf("After swap: x = %d, y = %d\n", x, y);
    return 0;
}

则程序输出结果:

(5)      x=10,y=20                  

(6)      x = 20, y = 10                 

编程题

1.输入一个字符,如果是大写字母就输出“upper”,如果是小写字母,就输出“lower”,如果是数字,就输出“digit”,如果是其他字符,就输出“others”,

#include <stdio.h>

int main() {
    char ch;
    scanf("%c", &ch);

    if (ch >= 'A' && ch <= 'Z') {
        printf("upper");
    } else if (ch >= 'a' && ch <= 'z') {
        printf("lower");
    } else if (ch >= '0' && ch <= '9') {
        printf("digit");
    } else {
        printf("others");
    }

    return 0;
}

2.请用c语言编写程序,要求输出100以内的偶数和与奇数和。

#include <stdio.h>

int main() {
    int sum_even = 0, sum_odd = 0;
    for (int i = 1; i <= 100; i++) {
        if (i % 2 == 0) {
            sum_even += i;
        } else {
            sum_odd += i;
        }
    }
    printf("%d\n", sum_even);
    printf("%d\n", sum_odd);
    return 0;
}

3.有1、2、3、4四个数字,能组成多少个各位互不相同且无重复数字的三位数,请用c语言编程实现并打印输出。

#include <stdio.h>

int main() {
    int count = 0;
    for (int i = 1; i <= 4; i++) {
        for (int j = 1; j <= 4; j++) {
            for (int k = 1; k <= 4; k++) {
                if (i != j && i != k && j != k) {
                    count++;
                }
            }
        }
    }
    printf("%d\n", count);
    return 0;
}

4.请用c语言编写程序,要求输入两个整数,求其中最大值,用函数调用实现。

#include <stdio.h>

int max(int a, int b) {
    return (a > b) ? a : b;
}

int main() {
    int x, y;
    scanf("%d %d", &x, &y);
    printf("%d\n", max(x,y));
    return 0;
}

5.函数fun的功能是计算下面表达式的值:

S=a+aa+aaa+aaaa+......;

其中a的值和位数n的值均由用户指定,例如:a=2,n=4,则S=2+22+222+2222。请利用c语言函数编程实现上述功能。

#include <stdio.h>

int fun(int a, int n) {
    int sum = 0, term = 0;
    for (int i = 0; i < n; i++) {
        term = term * 10 + a;
        sum += term;
    }
    return sum;
}

int main() {
    int a, n;
    scanf("%d%d", &a, &n);
    printf("%d\n", fun(a, n));
    return 0;
}

5.请用c语言编写程序,有一个整型数组a,要求先输入10个元素,然后输出数组中的全部元素,用指针实现。

#include <stdio.h>

int main() {
    int a[10];
    int *p;
    for (int i = 0; i < 10; i++) {
        scanf("%d", &a[i]);
    }

    for (p = a; p < a + 10; p++) {
        printf("%d ", *p);
    }

    printf("\n");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凉茶铺子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值