首页 理论教育 C语言程序设计强化训练复习指导

C语言程序设计强化训练复习指导

时间:2023-10-25 理论教育 版权反馈
【摘要】:x);}A.不输出任何内容B.陷入死循环C.23D.3210.以下程序中,while 循环的循环次数是()。A.pb=&xB.pb=xC.pb=&xD.pb=x24.有如下程序段int p,a=10,b=1;p=&a;a=p+b;执行该程序段后,a 的值为()。

C语言程序设计强化训练复习指导

一、选择题

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

A.在C 程序运算符中,逗号运算符优先级最低

B.C 程序中,A 和a 代表两个不同的变量

C.C 程序中,整数和实数在内存中存放形式相同

D.在C 程序中,%是只能用于整数运算的运算符

2.C 语言规定标识符由( )等字符组成。

A.字母、数字、划线 B.中划线、字母

C.字母、逗号 D.下划线、中划线

3.在下面几组数据类型中,全为最常用的基本数据类型的是( )。

A.整型实型、字符型 B.整型、字符型、指针

C.数组、结构体、共用体 D.指针、字符型、空类型

4.设有定义:int k=0;,以下选项的四个表达式中,k 的值与其他三个不相同的是( )。

A.k++ B.k+=1 C.++k D.k+1

5.若变量c 为char 类型,能正确判断出c 为小写字母的表达式是( )。

A.'a'<=c<='z' B.(c>='a')‖(c<='z')

C.('a'<=c)and('z'>=c) D.(c>='a')&&(c<='z')

6.下列不正确的转义字符是( )。

A.' \' B.' \ " C.'074' D.'\0'

7.以下不合法的字符常量是( )。

A.'\ 018' B.' \ " C.' \' D.' \xcc'

8.以下叙述正确的是( )。

A.do-while 语句构成的循环不能用其他语句构成的循环来表示

B.do-while 语句构成的循环只能用break 语句退出

C.用do-while 语句构成的循环,在while 后的表达式为非零时结束循环

D.用do-while 语句构成的循环,在while 后的表达式为零时结束循环

9.以下程序的执行结果是( )。

main()

{ int x=32;

do{ printf("%d",x--);}while(!x);

}

A.不输出任何内容 B.陷入死循环

C.23 D.32

10.以下程序中,while 循环的循环次数是( )。

main()

{ int i=0;

while(i<10)

{ if(i<1) continue;

if(i==5) break;

i++;

}

}

A.1 B.6

C.10 D.死循环,不确定次数

11.以下程序执行后的输出结果是( )。

main()

{ int i;

for(i=1;i<=40;i++)

{ if(i++%5==0)

if(++i%8==0)printf("%d",i)

}

printf("\n");

}

A.24 B.5 C.40 D.32

12.以下程序段的执行结果是( )。

int a,y;

a=10;y=0;

do{ a+=2;y+=a;

printf("a=%d y=%d\n",a,y);

if(y>20) break;

}while(a=14);

A.a=12 y=12 B.a=12 y=12

a=14 y=16 a=16 y=28

a=16 y=20

C.a=12 y=12 D.a=12 y=12

a=14 y=26 a=14 y=26

13.以下程序的输出结果是( )。

main()

{ int n=9;

while(n>6){n--;printf("%d",n);}

}

A.876 B.987 C.8765 D.9897

14.以下程序段while 循环执行的次数是( )。

int k=0

while(k=1)k++;

A.无限次 B.14 C.不确定 D.0

15.若有如下程序段,其中s,a,b,c 均已定义为整型变量,且a,c 均已赋值(c 大于0)s=a;for(b=1;b<=c;b++) s=s+1;,则与上述程序段功能等价的赋值语句是( )。

A.s=a+b; B.s=a+c; C.s=s+c; D.s=b+c;

16.以下不能对二维数组a 进行正确初始化的语句是( )。

A.int a[2][3]={0};

B.int a[2][3]={{1,2},{3,4},{5,6}};

C.int a[][3]={{1,2},{0}};

D.int a[][3]={1,2,3,4,5,6};

17.若有以下定义,则b 的值是( )。

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

A.5 B.6 C.7 D.8

18.若定义一个名为s 且初值为“123”的字符数组,则下列定义错误的是( )。

A.char s[]={'1','2','3','\0'}; B.char s[]={"123"};

C.char s[]={"123\n"}; D.char s[4]={'1','2','3'};

19.以下定义语句中,错误的是( )。

A.int a[]={1,2}; B.char ∗a[3];

C.char s[10]="test"; D.int n=5,a[n];

20.若有初始化语句:int a[3][4]={0};,则下面正确的叙述是( )。

A.只有元素a[0][0]可得到初值0

B.此初始化语句不正确

C.数组a 中各元素都可得到初值,但其值不一定为0

D.数组a 中每个元素均可得到初值0

21.设有说明int(∗ptr)[M];,其中ptr 是( )。

A.M 个指向整型变量的指针

B.指向M 个整型变量的函数指针

C.一个指向具有M 个整型元素的一维数组的指针

D.具有M 个指针元素的一维指针数组,每个元素都只能指向整型量

22.在说明语句int ∗f[ ];中,标识符代表的是( )。

A.一个用于指向整型数据的指针变量 B.一个指针型数组名

C.一个用于指向函数的指针变量 D.一个返回值为指针型的函数名

23.若int x,∗pb;,则正确的赋值表达式是( )。

A.pb=&x B.pb=x C.∗pb=&x D.∗pb=∗x

24.有如下程序段

int ∗p,a=10,b=1;

p=&a;a=∗p+b;

执行该程序段后,a 的值为( )。

A.12 B.11 C.10 D.编译出错

25.若有以下定义和语句:

double r=99,∗p=&r;

∗p=r;

则以下正确的叙述是( )。

A.以上两处的∗p 含义相同,都说明给指针变量p 赋值

B.在“double r=99,∗p=&r;”中,把r 的地址赋给了p 所指的存储单元

C.语句“∗p=r;”把变量r 的值赋给指针变量p

D.语句“∗p=r;”取变量r 的值放回r 中

二、程序填空题

1.输出行、列号之和为3 的数组元素。

main()

{ char ss[4][3]={'A','a','f','c','B','d','e','b','C','g','f','D'};

int x,y,z;

for(x=0;____①___;x++)

for(y=0;____②___;y++)

{ z=x+y;

if(____③___)printf("%c\n",ss[x][y]);

}

}

2.下面程序可求出1~100 的自然数中所有的完数(因子和等于该数本身的数),请填空。

main()

{ int m,n,s;

for(m=2;m<100;m++)

{ ___①___;(www.xing528.com)

for(n=1;n<=m/2;n++)

if(____②___) s+=n;

if(____③___) printf("%d\n",m);} }

3.下面的程序是输出数组中最大元素的下标(p 表示最大元素的下标)。

void main()

{

int s[]={1,-3,0,-9,8,5,-20,3};

for(i=0,p=0;i<8;i++)

if(s[i]>s[p]);

}

4.输入20 个数,输出它们的平均值,输出与平均值之差的绝对值最小的数组元素。

#include <stdio.h>

void main()

{

float a[20],pjz=0,s,t;

int i,k;

for(i=0;i<20;i++)

{

scanf("%f",&a[i]);

pjz+=________;

}

pjz/=20;

s=fabs(a[0]-pjz);

t=a[0];

for(i=1;i<20;i++)

if( fabs(a[i]-pjz)<s)

{________;

t=a[i];

}

________;

}

三、根据程序写结果

1.以下程序的运行结果是________。

#include <stdio.h>

void main()

{

int a[8]={1,0,1,0,1,0,1,0},i;

for(i=2;i<8;i++)

a[i]+=a[i-1] +a[i-2];

for(i=0;i<8;i++)

printf("%5d",a[i]);

}

2.以下程序的运行结果________。

#include <stdio.h>

void main()

{

float b[6]={1.1,2.2,3.3,4.4,5.5,6.6},t;

int i;

t=b[0];

for(i=0;i<5;i++)

b[i]=b[i+1];

b[5]=t;

for(i=0;i<6;i++)

printf("%6.2f",b[i]);

}

3.以下程序的运行结果________。

#include <stdio.h>

void main()

{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;

while(i<7 && p[i]%2)

{k=k+p[i];i++;}

printf("k=%d\n",k);

}

4.以下程序的运行结果________。

void main()

{ int a[3][3]={1,3,5,7,9,11,13,15,17};

int sum=0,i,j;

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

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

{ a[i][j]=i+j;

if(i==j)

sum=sum+a[i][j];

}

printf("sum=%d",sum);

}

5.以下程序的运行结果________。

void main()

{ int a[4][4],i,j,k;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

a[i][j]=i-j;

for(i=0;i<4;i++)

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

printf("%4d",a[i][j]);

printf("\n");

}

}

6.程序运行结果是________。

int t(int x,int y,int cp,int dp)

{ cp=x∗x+y∗y;

dp=x∗x-y∗y;

}

main()

{ int a=4,b=3,c=5,d=6;

t(a,b,c,d);

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

}

7.程序运行结果是________。

fun(int x,int y,int z)

{z=x∗x+y∗y;}

main()

{ int a=31;

fun(5,2,a);

printf("%d",a);

}

8.程序运行结果是________。

int a,b;

void fun()

{ a=100;b=200;}

main()

{ int a=5,b=7;

fun();

printf("%d%d\n",a,b);

}

9.程序运行结果是________。

int x=3;

main()

{ int i;

for(i=1;i<x;i++) incre();

}

incre()

{ static int x=1;

x∗=x+1;

printf("%d",x);

}

10.程序运行结果是________。

int func(int a,int b)

{ return(a+b);}

main()

{ int x=2,y=5,z=8,r;

r=func(func(x,y),z);

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

}

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈