C语言程序设计复习题及答案

发布时间:   来源:文档文库   
字号:
C语言程序设计复习题及答案
一、选择题
1.正确的自定义标识符是
Aa=2Ba+bCnameDdefault2.变量的指针含意是指变量的A.值B.地址C.存储D.名字3.关系表达式axb的正确描述是
Aa<=xx>=a&&xx>=a||x!(x=b4.数字12345写入二进制文件和文本文件所占用的字节数分别是A55B52C22D25
5.函数调用语句是:fun(e1,(e2,e3,(e4,e5,e6;实在参数的个数是A1B2C3D6
6.设置inta[10]*p=a;a[1]等价的是A*(a+1B*(p+1Cp[1]D(*p++7.C语言中,正确的说法是
A.函数内部和外部定义的变量同名是合法的B.没有return的函数就失去了返回功能
C.变量的定义和声明(也称说明)功能是相同的
D.只要形参和实参都是变量,那么形实结合一定是地址传递8.下述对C语言字符数组的描术中错误的是A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D.不可以用关系运算符对字符数组中的字符串进行比较9.C语言的关键字是
ANULLBfileCincludeDtypedef10.正确的自定义标识符是AifBiFCa*bD8bq
11.inta=0,b=5;执行表达式++a||++b,a+b后,a,b和表达式的值分别是A0,0,0B0,5,5C1,5,6D1,6,7
12.C语言中最简单的数据类型包括
A.整型、实型、逻辑型B.整型、实型、字符型C.整型、字符型、逻辑型D.整型,,逻辑型,字符型13.有以下程序段intk=0while(k=1k++
while循环执行的次数
A.无限次B.有语法错,不能执行C.一次也不执行D.执行1
14.当调用函数时,实参是一个数组名,则向函数传递的是
A.数组的长度B.数组每一个元素地址C.数组的首地址D.数组每个元素中的值15.为了向二进制文件尾部增加数据,打开文件的方式应采用A.″abB.″rb+C.″wbD.″wb+
16.设有inta[]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;a[0],a[1],a[2]的值依次是

A10,11,12B11,12,12C10,12,12D11,11,1217.设有inti,j,k;则表达式i=1,j=2,k=3,i&&j&k的值为A0B1C2D318.错误的转义字符是A\091B\\C\0D\19.C语言中,错误的常数是A1E+0.0B5C0xafD0L
20.某文件中定义的静态全局变量(或称静态外部变量其作用域是A.只限某个函数B.本文件C.跨文件D.不限制作用域21.C语言中文件的存取的单位是A.函数B.语句C.字节D.记录
22.inta=3,b=4;执行printf("%d,%d",(a,b,(b,a;后的输出结果是A3,4B4,3C4,4D3,3
23.设有inti,j,k;则表达式i=1,j=2,k=3,i&&j&k的值为A0B1C2D3
24.函数返回值的类型是由
Areturn决定B.调用函数决定C定义函数时指定Dmain函数决定25.chars[10],*p;正确的操作语句是
Ap="MBA";Bs++;Cs="MBA";Ds[]="MBA"26.inta,*p;则语句p=&a;中的运算符“&”的含义是
A.位与运算B.逻辑与运算C.取指针内容D.取变量地址
27.设有数组定义:chararray[]="China"则数组array所占的空间为A4字节B5字节C6字节D7字节二、填空题
1.C语言中,单目运算符的结合方向(运算方向)是____________;唯一的一个三目运算符是____________
2.能正确表示“当ch为小写字母为真,否则为假”的表达式是
3.循环语句for(;;printf("OK\n";do{printf("OK\n";}while(0;执行完毕循环,循环次数分别是________________________________
4.若有说明inti,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为________________5..结构化程序设计的三种基本结构是:选择结构、循环结构和________________6.C语言中,一个二维数组可以看成若干个________________数组。7.文件操作步骤通常是:打开、操作和_______________8.一个C语言程序总是从开始执行
9.设宏定义#defineD(xx/x,则引用D(2+3后的值是_______________
10.以下十个运算符+!<<!=,?:&&=||%中优先级别最高和最低的分别是______________________________
11.文件操作方式"w""rb+"的含义分别是______________________________12.文件操作步骤通常是:打开、操作和_______________
13.inta,b=2,c=3;执行表达式a=(b>c?(b+1:(c+2,3a的值是_______________14.FILE*fp;EOFfeof(fp______________________________
15.编译预处理的三种形式除宏定义外,还有______________________________16.语句int(*p(的含义是.

17.全局变量放在内存的
三、阅读程序,写出程序的运行结果(151.运行结果:_______________intfunc(intn{
if(n==0return0;elseif(n==1return1;elsereturnn*n+func(n-2;}
main({
printf("%5d%5d\n",func(4,func(5;}
change(&a,b;
printf("a=%d,b=%d\n",a,b;}
2.运行结果:_______________main(
{inti=1;while(i<=10
if(++i%2!=0continue;elseprintf(“%3d”,i;
}
3.运行结果:_______________Main(
{intj;
for(j=4;j>=2;j--
switch(j
{case0:printf("%4s","ABC";case1:printf("%4s","DEF";
case2:printf("%4s","GHI";breakcase3:printf("%4s","JKL";default:printf("%4s","MNO";}
printf("\n";}
4.运行结果:_______________main(
{char*p,s[]="ABCDEFG";p=s;
while(*p!='\\0'{printf("%s\\n",p;p++;if(*p!='\\0'elsebreak;}

}
5.运行结果:_______________main({
inta[]={1,3,5,7,9};int*p=a;
printf(“%d,%d\\n”,*p,*(a+2;printf(“%d,%d\\n”,*(p+3,*p++;}
四、程序填空(15
1.用循环输出下列形式的数字金字塔。112112321123432112345432112345654321123456765432112345678765432112345678987654321main({
inti,j;
for(i=1;i<=9;i++{
for(j=i;j<=10;j++printf("";/*输出若干个空格*/for(j=1;j;j++printf("%2d",j;for(j=i;j>=1;j--printf("%2d",j;printf("\n";
}}
2.下面程序将输入的一个字符串按逆序存放。main(
{inti,n,temp;;gets(;n=strlen(a;
for(i=0;;i++{temp=a[i];
a[n-i-1]=temp;}puts(a;
}
3.下面程序是用冒泡法对10个数进行从小到大排序的程序。main(
{int30,i,j,temp;

printf("请输入10个整数:\\n";for(i=0;i<10;i++
scanf("%d",31;for(i=1;i<10;i++
for(j=0;32;j++if(a[j]33a[j+1]
{temp=a[j];34;a[j+1]=temp;}printf("\\n排好序的10个整数为:\\n";for(i=0;i<10;i++printf("%5d",a;}
4.打印下列的图形
123456789main(
23456789intI,J;
3456789for(I=1;I<=9;I++
456789for(J=I;J<=9;J++printf("%2d",J;56789printf("\n";678978989
9
五、编程题(30
1.编写程序,输入一个字符串,求出这个字符串的长度(使用strlen函数直接求解不得分2.编写一个程序,将字符串a复制到b中。(使用strcpy函数不得分
3.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。4.编写程序,输入10个学生3门课的成绩,计算每个学生的平均成绩,按平均成绩降序排列并打印出结果。
5.编写程序,在主函数中输入10个数,在函数invert中将10个数按反序存放,并在主函数中输出结果。
6.输入一行字符,统计其中字母字符、数字字符和其它字符的个数。
C语言程序设计复习题答案六、选择题12345CDBDC678910BABDB1112131415DBDCD1617181920BBAAC2122232425DBACC2627282930

DC
七、填空题
1.自右向左?:2.ch>='a'&&ch<='z'3.无限次14.900
5.顺序结构6.一维数组7.关闭8.main函数
9.5
10.&&,
11.为写打开一个文本文件为读写打开一个二进制文件12.关闭13.3
14.
15.条件编译文件包含
16.定义一个指向函数的指针,函数的返回值为整型17.静态存储区

八、阅读程序,写出程序的运行结果(156.7.8.9.
运行结果:_____20,25__________运行结果:___246810____________运行结果:___MNOJKLMNOGHI____________运行结果:___ABCDEFG
CDEFGEFG
G____________
10.运行结果:_____1,5
9,1__________
九、程序填空(15
5.用循环输出下列形式的数字金字塔。112112321123432112345432112345654321123456765432112345678765432112345678987654321main({

inti,j;
for(i=1;i<=9;i++{
for(j=i;j<=10;j++printf("";/*输出若干个空格*/for(j=1;j;j++printf("%2d",j;for(j=i;j>=1;j--printf("%2d",j;printf("\n";}
}
6.下面程序将输入的一个字符串按逆序存放。#include"stdio.h"main(
{inti,n,temp;a[100];gets(a;n=strlen(a;
for(i=0;i;i++{temp=a[i];
a[i]=a[n-i-1]a[n-i-1]=temp;}puts(a;
}
7.下面程序是用冒泡法对10个数进行从小到大排序的程序。main(
{inta[10],i,j,temp;printf("请输入10个整数:\\n";for(i=0;i<10;i++scanf("%d",&a;for(i=1;i<10;i++
for(j=0;j;j++if(a[j]>a[j+1]
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}printf("\\n排好序的10个整数为:\\n";for(i=0;i<10;i++printf("%5d",a;}
8.打印下列的图形
123456789main(23456789intI,J;
3456789for(I=1;I<=9;I++
456789for(J=I;J<=9;J++printf("%2d",J;56789printf("\n";6789789899

十、编程题(30
7.编写程序,输入一个字符串,求出这个字符串的长度(使用strlen函数直接求解不得分8.编写一个程序,将字符串a复制到b中。(使用strcpy函数不得分
9.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。10.编写程序,输入10个学生3门课的成绩,计算每个学生的平均成绩,按平均成绩降序排列并打印出结果。
11.编写程序,在主函数中输入10个数,在函数invert中将10个数按反序存放,并在主函数中输出结果。
输入一行字符,统计其中字母字符、数字字符和

2C语言期末考试复习题及答案

一、选择题:下列各题ABCD)四个选项中只有一个是正确的,请将正确的选项涂写在答案纸上。答在试卷上不得分。

(1C语言规定:在一个源程序中,main函数的位置

A)必须在最后B)必须在系统调用的库函数的后面。
C)必须在最开始。D)可以任意

(2C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符
A)必须为字母或下划线。B)必须为下划线。

C)必须为字母D)可以是字母、数字和下划线中的任一种字符。
(3下面四个选项中,均是正确的八进制数或十六进制数的选项是
A-100x8f-011B010-0x110xf1
C0abc-0170xcD0a12-0x123-0xa

(4C语言中int型数据在内存中占两个字节,则unsegnedint取值范围是
A0~65535B0~32767
C-32767~32768D-32768~327687


(5若有定义:inta=7;floax=2.5,y=4.7;

则表达式x+a%3*(int(x+y%2/4的值是
A2.750000B0.00000C3.500000D2.500000

(6已知ch是字符型变量,下面不正确的赋值语句是

Ach=5+9;Bch='a+b';Cch='\0';Dch='7'+'6';
(7x,yzint型变量,且x=3,y=4,z=5则下面表达式中值为0


A!((x<y&&!z||1B'x'&&'y'Cx||y+z&&y-zDx<=y

(8)设有程序段
intk=10;

while(k=0k=k-1;

以下描述正确的是

A循环体语句一次也不执行。B循环是无限循环。
Cwhile循环语句执行十次。D循环体语句执行一次。
(9以下C程序正确的运行结果是
main(
{longy=23456;
printf("y=%3x\n",y;
printf("y=%8x\n",y;

printf("y=%#8x\n",y;
}
Ay=5ba0By=5ba0Cy=5ba0Dy=5ba0
y=5ba0y=5ba0y=bba0y=5ba0
y=0x5ba0y=0x5ba0y=0x5ba0y=####5ba0

(10a=1,b=3,c=5d=4时,则执行完下面一段程序后,x的值是
if(a
if(cx=1;
else
if(a
if(bx=2;
elsex=3;
elsex=6;
elsex=7;
A1B3C2D6
(11下面程序的运行结果是
#include"stdio.h"
main(
{inta=1,b=10do
{b-=a;a++;}
while(b--<0;


printf("a=%d,b=%d\n,a,b;
Aa=3,b=11Ba=4,b=9
Ca=1,b=-1Da=2,b=8
(12)以下for循环的执行次数是
for(x=0,y=0;(y=123&&(x<4;x++;

A无限次。B4次。C0D3次。
(13以下是死循环的程序段的是

Afor(i=1;;Bi=32767

{if(++i%2==0continue;do{if(i<0break;}while(++i
if(++i%3==0break;}
Cfor(i=1;;Di=1
if(++i<10continue;while(i--;
(14若有说明:inta[10];则对a数组元素的正确引用是

Aa[10]Ba[10-10]Ca(5Da[3.5]

(15根据定义和数据的输入方式,输入语句的正确形式为
已有定义:floatf1,f2;数据输入方式:4.25
3.5

Ascanf("%f%f",&f1,&f2;Bscanf("%f,%f",&f1,&f2;
Cscanf("%3.2f%2.1f",&f1,&f2;Dscanf("%2.1f%3.2f",&f1,&f2;
(16已知ch是字符型变量,下面正确的赋值语句是

Ach='123';Bch='\08';Cch='\xff';Dch="\";
(17以下if语句语法正确的是
Aif(x>0Bif(x>0printf("%f",-x
{x=x+y;printf("%f",x;}elseprintf("%f",-x;
elseprintf("%f",-x;
Cif(x>0Dif(x>0
{x=x+y;printf("%f",x;};{x=x+y;peintf("%f",x}
elseprintf("%f",-x;elseprintf("%f",-x;
(18W=1,X=2,Y=3,Z=4则条件式:

WW:YY:Z的值是
A1B3C4D2
(19以下程序段
x=-1;

do{x=x*x;}
while(!x;
A是死循环B)循环执行一次
C)循环执行二次D)有语法错误
(20逻辑运算符两侧运算对象的数据类型

A)只能是01B可以是任何类型的数据
C只能是整型或字符型数据D)只能是0或非0正数
(21下面程序中有错误的行是(前面数字表示行号)

1main(5scanf("%d",&a;
2{6for(i=1;i<3;i++a[0]=a[0]+a[i],
3inta[3]={1};7printf("a[0]=%d\n",a[0];
4inti;8}
A3B6
(22下面的程序段
for(t=1;t<=100,t++
{scanf("%d",&x;
if(x<0continue;
printf("%3d",t;
}
Ax<0时整个循环结束
Cprintf函数永远也不执行
(23以下对一维整型数组a的正确说明是
Ainta(10
Cintn;
scanf("%d",&n;
inta[n];

(24下面程序的运行结果是
a=1;b=2;c=2;
while(a
printf("%d,%d,%d",a,b,c;
C5DB)当x>=0时什么也不输出D)最多允许输出100个非负整数
Bintn=10;a[n];D#defineSIZE10inta[SIZE];7

A1,2,0B2,1,0C1,2,1D2,1,1
(25若有说明:inta[3][4];则对数组元素的非法引用是
Aa[0][2*1]Ba[0][4]Ca[4-2][0]Da[1][3]
(26对以下说明的正确理解是
inta[10]={6,7,8,9,10}

A5个初值依此赋给a[1]a[5]B)将5个初值依此赋给a[0]a[4]
C)将5个初值依此赋给a[6]a[10]D因长度与初值个数不同,故语句错误
(27若二维数组am列,则在a[i][j]前的元素个数为

Ai*m+jBj*m+iCi*m+j-1Di*m+j+1
(28以下程序段运行的结果是
charc[5]={'a','b','\0','c','\0'};
printf("%s",c;
A'a''b'BabcCabcDab
(29以下正确的函数定义形式是

Adoublefun(intx,intyBdoublefun(intx;inty
Cdoublefun(intx,inty;Ddoublefun(intx,inty;
(30以下不正确的说法是

A实参可以是常量、变量或表达式。B)形参应与其对应的实参类型一致。
C)实参可以为任意类型。D)形参可以是常量、变量或表达式。
(31有两个字符数组a,b,则以下正确的输入格式是
Ascanf("%s%s",&a,&bBgets(a,b
Cscanf("%s%s",a,bDgets("a";gets("b"



(32以下程序正确的运行结果是
main(
{inta=2,i;
for(i=0;i<3;i++printf("%4d",f(a;
}
f(inta

{intb=0;staticintc=3;
b++;c++;
return(a+b+c;}
A777B71013C789D7911

(33#define能做简单的替代,用宏替代计算多项式4*x*x+3*x+2之值的函数f,正确的宏定义是

A#definef(x4*x*x+3*x+2B#definef4*x*x+3*x+2
C#definef(a(4*a*a+3*a+2D#define(4*a*a+3*a+2f(a
(34当运行以下程序时,从键盘输入:ab

c
def
(表示回车则下面程序的运行结果是
#include"stdio.h"
#defineN6


main(
{charc(N;
inti=0;
for(;i
for(i=0;iputchar(c[i];
}

AabcdefBaCb
b
c
d
e
f
(35请读程序:
#defineAD(xx+x
main(

{intm=1,n=2,k=3;
intsum=AD(m+n*k;
printf("sum=%d",sum;}
上面程序的运行结果是
Asum=9Bsum=12Dsum=18

(36对下面程序段正确的判断是:___________
Dab
cdsum=10cdC
#defineA3

#defineB(a((A+1*a
M
x=3*(A+B(7;

A程序错误,不许嵌套宏定义Bx=21

Cx=93D程序错误,宏定义不许有参数。

37执行以下程序后,a,b的值为
main(

{inta,b,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
b=(-*p1/(*p2+7;
printf("a=%d\n",a;
printf("b=%d\n",b;}
A-1B0C1D4
57610
(38以下程序中调用scanf函数给变量a输入数值的方法是错误的,因为
main(

{int*p,*q,a,b;
p=&a;
printf("inputa:";
scanf("%d",*p;
}


A*p表示的是变量a的值,而不是变量a的地址。
B*p表示的是指针变量p的地址。
C*p表示的是指针变量p的值。
D*p只能用来说明p是一个指针变量。

(39以下程序的运行结果是
#defineMIN(x,y(x<(y?(x:(y
main(

{inti=10,j=15,k;
k=10*MIN(i,j;
printf("%d\n",k;
}
A15B10C100D150

(40以下正确的函数形式是

Bdoublefun(intx,intyBfun(intx,y
{z=x+y;returnz;}{intz;returnz;}

Cfun(x,yDdoublefun(intx,inty
{intx,y;doublez;}{doublez;z=x+y;returnz;}
(41以下不正确的说法是
A在不同函数中可以使用相同名字的变量。
B形式参数是局部变量。


C在函数内的复合语句中定义的变量在本函数范围内有效。
D在函数内定义的变量只在本函数范围内有效。

(42C语言提供的预处理功能包括条件编译,其基本形式为:
#XXX标识符
程序段1
#else
程序段2
#endif

这里XXX可以是

Adefineinclude.Bifdefifndefif
CifdefifndefdefineDifdefinclude
(43以下程序的正确运行结果是
#include"stdio.h"
main(
{intk=4,m=1,p;

p=func(k,m;printf("%d,",p;
p=func(k,m;printf("%d\n",p;}
func(inta,intb
{staticintm=0,i=2;
i+=m+1;
m=i+a+b;return(m;}
A8,16B8,17C8,20D8,8


(44已有定义intk=2;int*p1,*p2,p1p2均已指向变量k,下面不能正确执行的赋值语句是

Ak=*p1+*p2;Bp1=p2;
Cp2=k;Dk=*p1*(*p2;
(45若有说明int*p,m=5,n;以下正确的程序段是
Ap=&n;Bp=&n;
Scanf("%d",&p;Scanf("%d",*p;
CScanf("%d",&nDp=&n;
*p=n;*p=m;
(46以下scanf函数调用语句中,对结构体成员的不正确引用为
structpupil
{charname[20];
intage;
intsex;
}pup[5],*p;
p=pup;
Ascanf("%s",pup[0].name;Bscanf("%d",&pup[0].age;
Cscanf("%d",p->sex;Dscanf("%d",&(p->age;

(47若有定义:inta[3][4];则对a数组的第i行第j列(假设i,j已正确说明并赋
值)元素值的正确引用为
A*(*(a+i+jB(a+j[j]
C*(a+i+jD*(a+i+j


(48若已定义charS[10];则在下面表达式中不表示S[1]的地址的是
AS+1B&S[1]C&S[0]+1DS++
(49若有定义:inta[2][3]则对a值的i,第j元素址的正确

A*(a[i]+jBa[i]+jC*(a+jD(a+i
(50若有以下定义,且0<=i<6,则正确的赋值语句是
ints[4][6],t[6][4],(*p[6];
Ap=t;Bp=s[i];Cp=t[i];

(51以下程序的运行结果是
#include"stdio.h"
main(
{union{longa;
intb;
charc;
}m;

printf("%d\n",sizeof(m;}

A4B2C68

(52当顺利执行了文件,关闭操作时,fclose函数的返回值是
A0BTURND1
(53已知学生记录描述为
p=s;CDD-1


structstudent
{intno;
charname[20];
charsex;struct
{intyear;
intmonth;
intday;}birth;
}s;
设变量s中的“生日”应是“198466日”,下列对“生日”的正确赋值方式

Ayear=1984;Bbirth.year=1984;
month=6;birth.month=6;
day=6;birth.day=6;
Cs.year=1984;Ds.birth.year=1984;
s.month=6;s.birth.month=6;
s.day=6;s.birth.day=6;
(54表达式a的运算顺序是.;
A~,&,<,||B~,<,&,||
C~,&,||,<D~,||,&,<
(55设有以下语句:
charx=3,y=6,z;

z=x^y<<2;

z的二进制值是.

A00010100B00011000C00011100D00011011

(56已知函数的调用形式:fread(buffer,size,count,fp,其中buffer代表的

A一个整型变量,代表要读入的数据项总数.
B一个文件指针,指向要读的文件.
C一个存储器,存放要读的数据项.
D一个指针,指向要读入数据的存放地址

(57若有函数max(a,b,并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是

A(*pmax(a,b;B*pmax(a,b;
C*p(a,bD(*p(a,b

(5816IBM-PC机上使用C语言,若有如下定义:
uniondata
{inti;
charch;
doublef;}b;

则其共用体变量b占用内存字节数是
A1B2C8D4



(59若有以下程序段
intx=1,y=2;
x=x^y;
y=y^x;
x=x^y;

则执行以上语句后xy的值分别是

Ax=1Bx=2Cx=2Dx=1

y=2y=2y=1y=1

(60若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是

A"w+"B"ab+"C"wb+"D"ab"

.填空(每空2分,共40分):请在[]处添上正确答案。
(1条件"2x<-10"C语言表达式是[1].

(2以下程序的功能是判断输入的年份是不是闰年,请在[]内添入正确的内容.
main(
{inty,f;
scanf("%d",&y;
if(y%400==0f=1;
elseif([2]f=1;
else[3];


if(fprintf("%dis",y;
elseprintf("%disnot",y;
Printf("aleapyear\n";
}
(3以下程序是用梯形法求sin(x*cos(x的定积分,求定积分的公式为:

其中xi=a+ih,h=(b-a/n
a=0,b=1.2为积分上下限,积分区间分割数n=100,
#include
#include
main(

{inti,n;doubleh,s,a,b;
printf("inputa,b:";
scanf("%lf%lf",[4];
n=100;h=[5]
S=0.5*(sin(a*cos(a+sin(b*cos(b;
for(i=1;i<=n-1;i++S+=[6];S*=h;
Printf("S=%10.4lf\n",S;}
(4下面程序的运行结果是[7]
#include"stdio.h"
main(

{inti=1;

while(i<=15
if(++i%3!=2continue;
elseprintf("%d",i;
printf("\n";}

(5下面程序段运行的结果是[8]
i=1;s=3;
do{s+=i++;
if(s%7==0continue;
else++i;
}while(s<15;
printf("%d",i;

以下程序是矩阵a,b的乘积:
main(
{inta[3][2]={2,-1,-4,0,3,1};
intb[2][2]={7,-9,-8,10}
inti,j,k,s,c[3][2];
for(i=0;i<3;i++
for(j=0;j<2;j++
{for([9];k<2;k++
s+=[10];

c[i][j]=s;}

for(i=0;i<3;i++
{forfor(j=0;j<2;j++
printf(%6d",c[i][j];
[11]}}

(6设数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将这些和存放在数组b中,按每行三个元素的形式输出。
main(

{inta[10],b[10],i;
for(i=0;i<10;i++
scanf("%d",&a[i];
for([12];i<10;i++
[13]
for(i=1;i<10;i++
{printf("%3d",b[i];

if([14]=0printf("\n";
}

(7以下程序的功能是根据公式e的近似值,精度要求为10-6.请填空.
#include
main(
{inti;doublee,new;


[15]new=1.0
for(i=1;[16]i++
{new/=(doublei;e+=new;}
printf("e=%f\n",e;}
8下面add函数的功能是求两个参数的和,并将和值返回调用函数中,错误的部分是
[17]改正后为[18]

Voidadd(floata,floatb
{floatc;
c=a+b;
returnc;
}
9下面程序以每行4个数据的形式输出a数组
#defineN20
main(
{inta[N],i;

for(i=0;ii++scanf("%d",[19];
for(i=0;ii++
{if([20][21]
printf("%3d",a[i];
}
printf("\n";


}
10以下程序是Y4×1=a4×4×X4×1main(
{floata[4][4]={{1,-0.2,0,0},
{-0.8,1,-0.2,-0.2},
{0,-0.8,1,-0.2},
{0,-0.8,-0.8,1};
floatX[4]={1,1,1,1},Y[4];
inti,j,k;
for(i=0;i<4;i++
{Y[i]=0
for(j=0;j<4;j++[22]}
for(k=o;k<4;k++
printf("\nY[%d]=%-6.2f",k+1,[23];

11函数yang能够按以下方式构成一个杨辉三角形:
1
11
121
1331
14641



#defineN11
yang(inta[][N]
{inti,j;
for(i=1;ii++{a[i][1]=1;a[i][i]=1;}
for([24];ii++

for(j=2;[25];i++a[i][j]=[26]+a[i-1][j];
}

12若有定义:inta[2][3]={1,3,5,7,9,11};a[1][0]的值是[27],*(*(a+1+0的值是[28]

13下面程序运行结果是[29]
#definePE(z(z*(z
main(

{printf("%d\n",PE(1+2+3;
}
14下面程序是将字符串b复制到字符串a
#include"stdio.h"
S(char*s,char*t
{inti=0;

while([30][31];}main(

{chara[20],b[10];

scanf("%S",b;
S([32];
Puts(a;}

15若有定义:inta[2][3]={2,4,6,8,10,12};*{&a[0][0]+2*2+1}的值是[33],*(a[1]+2的值是[34]

16下面程序运行结果是[35]
#definef(rr*r
main(

{intx=1,y=2,t;
t=f(x+y;
printf("%d\n",t;}
17若已定义:
{structnum
{inta;
intb;
floatf;
}n={1,3,5.0};
structnum*pn=&n;
则表达式pn->b/n.a*++pn->b+pn->f的值是[36],表达式(*pn.a+pn->f的值是[37]
18以下程序运行的结果是[38]
main(


{structEXA{struct{intx;inty;}in;
inta;
intb;}e;
e.a=1;e.b=2;
e.in.x=e.a*e.b
e.in.y=e.a+e.b;

printf("%d,%d",e.in.x;e.in.y;

(1C语言规定:在一个源程序中,main函数的位置

A)必须在最后B)必须在系统调用的库函数的后面。
C)必须在最开始。D)可以任意

(2C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符
A)必须为字母或下划线。B)必须为下划线。

C)必须为字母D)可以是字母、数字和下划线中的任一种字符。
(3下面四个选项中,均是正确的八进制数或十六进制数的选项是
A-100x8f-011B010-0x110xf1
C0abc-0170xcD0a12-0x123-0xa

(4C语言中int型数据在内存中占两个字节,则unsegnedint取值范围是
A0~65535B0~32767
C-32767~32768D-32768~327687

(5若有定义:inta=7;floax=2.5,y=4.7;

则表达式x+a%3*(int(x+y%2/4的值是


A2.750000B0.00000C3.500000D2.500000
(6已知ch是字符型变量,下面不正确的赋值语句是

Ach=5+9;Bch='a+b';Cch='\0';Dch='7'+'6';
(7x,yzint型变量,且x=3,y=4,z=5则下面表达式中值为0


A!((x<y&&!z||1B'x'&&'y'Cx||y+z&&y-zDx<=y

(8)设有程序段
intk=10;

while(k=0k=k-1;
以下描述正确的是

A循环体语句一次也不执行。B循环是无限循环。
Cwhile循环语句执行十次。D循环体语句执行一次。
(9以下C程序正确的运行结果是
main(
{longy=23456;
printf("y=%3x\n",y;
printf("y=%8x\n",y;
printf("y=%#8x\n",y;}

Ay=5ba0By=5ba0Cy=5ba0Dy=5ba0
y=5ba0y=5ba0y=bba0y=5ba0
y=0x5ba0y=0x5ba0y=0x5ba0y=####5ba0

(10a=1,b=3,c=5d=4时,则执行完下面一段程序后,x的值是
if(a
if(cx=1;
else
if(a

if(bx=2;
elsex=3;
elsex=6;
elsex=7;
A1B3C2
(11下面程序的运行结果是
#include"stdio.h"
main(

{inta=1,b=10
do
{b-=a;a++;}
while(b--<0;
printf("a=%d,b=%d\n,a,b;
Aa=3,b=11D6Ba=4,b=9


Ca=1,b=-1Da=2,b=8
(12)以下for循环的执行次数是
for(x=0,y=0;(y=123&&(x<4;x++;

A无限次。B4次。C0D3次。
(13以下是死循环的程序段的是

Afor(i=1;;Bi=32767

{if(++i%2==0continue;do{if(i<0break;}while(++i
if(++i%3==0break;}

Cfor(i=1;;Di=1
if(++i<10continue;while(i--;
(14若有说明:inta[10];则对a数组元素的正确引用是

Aa[10]Ba[10-10]Ca(5Da[3.5]

(15根据定义和数据的输入方式,输入语句的正确形式为
已有定义:floatf1,f2;数据输入方式:4.25
3.5
Ascanf("%f%f",&f1,&f2;Bscanf("%f,%f",&f1,&f2;
Cscanf("%3.2f%2.1f",&f1,&f2;Dscanf("%2.1f%3.2f",&f1,&f2;
(16已知ch是字符型变量,下面正确的赋值语句是
Ach='123';Bch='\08';Cch='\xff';Dch="\";

(17以下if语句语法正确的是

Aif(x>0Bif(x>0printf("%f",-x
{x=x+y;printf("%f",x;}elseprintf("%f",-x;
elseprintf("%f",-x;

Cif(x>0Dif(x>0
{x=x+y;printf("%f",x;};{x=x+y;peintf("%f",x}
elseprintf("%f",-x;elseprintf("%f",-x;
(18W=1,X=2,Y=3,Z=4则条件式:

WW:YY:Z的值是
A1B3C4D2
(19以下程序段
x=-1;
do{x=x*x;}
while(!x;

A是死循环B)循环执行一次
C)循环执行二次D)有语法错误

(20逻辑运算符两侧运算对象的数据类型
A)只能是01B可以是任何类型的数据
C只能是整型或字符型数据D)只能是0或非0正数
(21下面程序中有错误的行是(前面数字表示行号)

1main(5scanf("%d",&a;
2{6for(i=1;i<3;i++a[0]=a[0]+a[i],


3inta[3]={1};7printf("a[0]=%d\n",a[0];
4inti;8}

A3B6C5D7
(22下面的程序段
for(t=1;t<=100,t++
{scanf("%d",&x;
if(x<0continue;
printf("%3d",t;

}
Ax<0时整个循环结束B)当x>=0时什么也不输出
Cprintf函数永远也不执行D)最多允许输出100个非负整数
(23以下对一维整型数组a的正确说明是

Ainta(10Bintn=10;a[n];
Cintn;D#defineSIZE10
scanf("%d",&n;inta[SIZE];
inta[n];

(24下面程序的运行结果是
a=1;b=2;c=2;
while(a
printf("%d,%d,%d",a,b,c;
A1,2,0B2,1,0C1,2,1D2,1,1
(25若有说明:inta[3][4];则对数组元素的非法引用是


Aa[0][2*1]Ba[0][4]Ca[4-2][0]Da[1][3]
(26对以下说明的正确理解是
inta[10]={6,7,8,9,10}

A5个初值依此赋给a[1]a[5]B)将5个初值依此赋给a[0]a[4]
C)将5个初值依此赋给a[6]a[10]D因长度与初值个数不同,故语句错误
(27若二维数组am列,则在a[i][j]前的元素个数为

Ai*m+jBj*m+iCi*m+j-1Di*m+j+1
(28以下程序段运行的结果是
charc[5]={'a','b','\0','c','\0'};
printf("%s",c;

A'a''b'BabcCabcDab
(29以下正确的函数定义形式是
Adoublefun(intx,intyBdoublefun(intx;inty
Cdoublefun(intx,inty;Ddoublefun(intx,inty;
(30以下不正确的说法是

A实参可以是常量、变量或表达式。B)形参应与其对应的实参类型一致。
C)实参可以为任意类型。D)形参可以是常量、变量或表达式。
(31有两个字符数组a,b,则以下正确的输入格式是
Ascanf("%s%s",&a,&bBgets(a,b
Cscanf("%s%s",a,bDgets("a";gets("b"

(32以下程序正确的运行结果是


main(
{inta=2,i;
for(i=0;i<3;i++printf("%4d",f(a;}
f(inta

{intb=0;staticintc=3;
b++;c++;
return(a+b+c;}

A777B71013C789D7911

(33#define能做简单的替代,用宏替代计算多项式4*x*x+3*x+2之值的函数f,正确的宏定义是
A#definef(x4*x*x+3*x+2B#definef4*x*x+3*x+2
C#definef(a(4*a*a+3*a+2D#define(4*a*a+3*a+2f(a
(34当运行以下程序时,从键盘输入:ab

c
def
(表示回车则下面程序的运行结果是
#include"stdio.h"
#defineN6
main(
{charc(N;


inti=0;
for(;i
for(i=0;iputchar(c[i];}
AabcdefBaCb
b
c
d
e
f
(35请读程序:

#defineAD(xx+x
main(
{intm=1,n=2,k=3;
intsum=AD(m+n*k;
printf("sum=%d",sum;}
上面程序的运行结果是

Asum=9Bsum=12Dsum=18

(36对下面程序段正确的判断是:___________
#defineA3

#defineB(a((A+1*a
Dab
cdsum=10cdC
M

x=3*(A+B(7;
A程序错误,不许嵌套宏定义Bx=21

Cx=93D程序错误,宏定义不许有参数。

本文来源:https://www.2haoxitong.net/k/doc/0e6adb3e580216fc700afdf5.html

《C语言程序设计复习题及答案.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式