c语言模拟错题整理12.7

目录

一、选填题

二、判断题

三、填空补全代码

四、写运行结果


一、选填题

1.一个c语言程序是由函数组成

2.设有如下定义: int   a=1,b=2,c=3,d=4,m=2,n=2; 则执行表达式:(m=a>b)&&(n=c>d)后,n的值为2

逻辑与的短路问题:当左操作数为假时,即可判断表达式结果为假,右操作数不执行。

3.当执行以下程序段时 ,循环体将执行一次

{
 y=1;

   do

   {y--;}

   while(y);

 printf("%d\n",y);  
}

非0为真,循环继续;否则只执行一次,退出循环

do while 结构至少循环一次

4.若有定义:int x[10], *p=x;,则*(p+5)表示数组元素x[5]的值

p+5表示数组元素x[5]存储的地址,即&x
5.C编译对枚举类型的枚举元素按 常量 处理。

6.对于基类型相同的两个指针变量之间,不能进行的运算是+

7.以下程序段执行后,y的值是4。

int a[ ]={1, 3, 5, 7, 9};

int x=0, y=1, *ptr;

ptr=&a[1];

while (!x) { y+=*(ptr+x); x++; }

y=4,x=1

非0即为真

8.if语句嵌套时应注意,else总是与它上面的  最近的未配对的 if配对。

9.下面程序段的运行结果是  ab 

 char c[5]={'a','b','\0','c','\0'};  

 printf("%s",c);

遇空字符结束输出

10.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。

 int add(int x, int y, int * z) {  * z=x+y; }

如用int 无法改变形参的值,在一个函数中修改另一个函数中的值,只能通过指针来实现

11.下列程序的输出结果是 CDABC 

 main( )

 {  char b[30],*chp; 

    strcpy(&b[0],"CH"); 

    strcpy(&b[1],"DEF"); 

    strcpy(&b[2],"ABC"); 

    printf("%s\n",b); 

 } 

H,E,F分别被覆盖

12.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是p[5]或*(p+5) 

int w[10]={23,54,10,33,47,98,72,80,61}, *p=w;

下标法和指针法,w默认为第一个元素值
 

二、判断题

1.符号常量是一种常量,在程序运行过程中会占内存

变量分配内存,故符号常量不占内存

2.条件运算符?:的结合性是自左至右

?:结合性:自右向左                                                                                                         C语言运算符知识点

3.for语句的一般形式为for(表达式1;表达式2;表达式3),其中表达式2一定不能省略

两分号不可省,三个表达式均可省略,表达式2省略表示恒为真

4.在对数组全部元素赋初值时,不可以省略行数,但能省略列数 

行可省列不可省

5.在定义函数时,一个函数内能够再定义另一个函数。

函数可以嵌套调用,不可嵌套定义

6.函数必须有返回值,否则无法实现调用。错

void函数无返回值

7.指针变量可以存放指针(地址)、数值和字符

只能存放地址

8.指针数组的每个元素都是一个指针变量

指针数组,如int *a[5]

9.结构体成员的类型必须是基本数据类型

数组,结构体,共用体,枚举,指针可以为成员,但都不是基本数据类型(short、int、long、char、float、double )

三、填空补全代码

1.下列程序定义函数用选择排序法对一维整型数组进行由小到大排序

#include 

void select_sort(int  b[], int n)

{   int i,j,k,t;

    for(i=0;i

(1) if(b[j]

(2) t=b[i];b[i]=b[k];b[k]=t;

(3) select_sort(a, 5);

冒泡排序法

四、写运行结果

1.输入0

#include 

int main()

{

    int i;

    scanf("%d",&i);

    switch(i+1)

    {

    case 1: printf("r=1\n");

    case 3: printf("r=3\n");

    case 8: printf("r=8\n"); break;

    default:printf("r=other\n");

}

    return 0;

}

r=1

r=3

r=8

无break,继续循环

break continue return相关知识点

2.

#include 

int main()

{

    int a[]={10,8,23,6,-3,9};

    int* p1=&a[3],*p2=a;

    printf("%d\n",p1-p2);

    p1--;

    p2++;

    printf("%d,%d\n",*p1,*p2);

    if(p1>p2)

        printf("%d,%d\n",*(a+2),a-p1);

    else

        printf("%d,%d\n",*a,p2-a);

    return 0;

}

3

23,8

23,-2

你可能感兴趣的:(c语言程序设计错题集,学习,c++)