C程序chapter练习+参考答案.docx
- 文档编号:30103070
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:21
- 大小:24.12KB
C程序chapter练习+参考答案.docx
《C程序chapter练习+参考答案.docx》由会员分享,可在线阅读,更多相关《C程序chapter练习+参考答案.docx(21页珍藏版)》请在冰豆网上搜索。
C程序chapter练习+参考答案
《C程序设计》练习题(chapter1)
选择
1一个C程序的执行是从____
A)本程序的main函数开始,到main函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序main函数结束
2以下叙述不正确的是______
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中注释说明只能位于一条语句的后面
3一个C语言程序是由_____
A)一个主程序和若干子程序组成
B)函数组成
C)若干过程组成
D)若干子程序组成
判断
1.编译时可以发现注释中的错误。
(F)
2.C程序的执行总是从程序第一句开始。
(F)
C程序练习题(chapter2)
选择
1下列标识符中,合法的是_______
A)signedB)5abC)INT#D)_num2
2以下合法的C常量是_____
A)098B)3cC)3HD)’a’
3下列各组字符序列中,全部为合法标识符的一组是____
A)S.B,sum,average,_aboveB)class,day,lotus_1,2day
C)#md,&12x,month,student_n1D)D56,r_1_2,name,st_1
4下列形式的常数中,C程序不允许出现的是_____
A).45B)E5C)25.6e-2D)4e3
5若有代数式,则不正确的C语言表达式是_____
A)a/b/c*e*3B)3*a*e/b/c
C)3*a*e/b*cD)a*e/c/b*3
6设x=2.9,a=8,y=3.7,算术表达式x+a%3*(int)(x+y)%5/2的值是__
A)3.9B)4C)4.2D)3.75
7inta;floatf;doublei;则表达式10+’a’+i*f结果的数据类型是____
A)intB)floatC)doubleD)不确定
8在C语言中,char型数据在内存中的存储形式是___
A)补码B)反码C)原码D)ASCII码
9设一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围是______
A)0~255B)0~32767C)-32768~32767D)0~65535
10设x=3,y=2,则表达式x*=y+8的值为_____。
A)3B)2C)30D)10
填空
1.intx=5,n=5;计算表达式x+=n++后x的值为_10_,n的值为_6_。
2.C语言运算符中,优先级最低的是,或者(逗号运算符)。
3.优先级仅高于逗号运算符的是赋值或者(=)运算符。
4.在16位C环境里,char型变量占__1___个字节,double型占__8___个字节。
《C程序设计》练习(chapter3)
选择
1若输入12345abc,下列程序的输出结果是____
main()
{inta;
charch;
scanf(“%3d%3c”,&a,&ch);
printf(“%d,%c”,a,ch);
}
A)123,abcB)123,4C)123,aD)12345,abc
2正确输出结果是_____
main()
{intx=1,y=5,z;floatf;
f=x/y;z=f*10;printf(“%d”,z);
f=1.0*x/y;z=f*10;printf(“%d”,z);
f=x/y*1.0;z=f*10;printf(“%d”,z);
}
A)222B)000C)022D)020
3正确输出结果是______
main()
{chara=15;intb=’a’;
printf(“%d%o%x”,b,a,a);
}/*a的ASCII码为97*/
A)a17fB)a15fC)9717fD)9715f
4执行下面两个语句后,输出的结果为_____。
charc1=’B’;
printf(“%d%c”,c1,c1+32);
A)6698B)66bC)b98D)66B
填空
1、intx;floaty;且执行scanf(“%3d%f”,&x,&y);语句时,从第一列开始输入数据12345678,则x的值是__123y的值是_45678.0___。
2、要得到下列结果:
a,b
A,B
97,98,65,66
请按要求完善程序。
main()
{charc1,c2;
c1=’a’;c2=’b’;
printf(“_%c,%c_”,c1,c2);
printf(“%c,%c\n”,_c1-32,c2-32__);
printf(“%d,%d,%d,%d\n”,_c1,c2,c1-32,c2-32)_;
}
3、程序的运行结果为__total=300______
#defineGZ30
main()
{intnum,total,gz;
gz=40;num=10;total=num*GZ;
printf(“total=%d\n”,total);
}
4、计算圆的周长,要求输出结果5位,带1位小数。
#definePI3.1415
main()
{floatr=2.3,l;
l=2*PI*r;
printf(“theareais%5.1f\n”,l);
}
《C程序设计》练习(chapter4)
选择
1能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是_________
A)(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B)(x>=1)||(x<=10)||(x>=200)||(x<=210)
C)(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)
2intx=10,y=20,z=30;以下语句执行后x,y,z的值是____
if(x>y)
z=x;x=y;y=z;
A)x=10,y=20,z=30B)x=20,y=30,z=30
C)x=20,y=30,z=10D)x=20,y=30,z=20
3以下程序运行结果是_____
main()
{intm=5;
if(m++>5)printf(“%d\n”,m);
elseprintf(“%d\n”,m--);
}
A)4B)5C)6D)7
填空
1inta=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
a的值为__0__,b的值为__6__。
2以下程序把大写字母转换成对应的小写字母,其他字符不转换:
main()
{charch;
scanf(_”%c”,&ch__);
ch=(_ch>=’A’&&ch<=’Z’_)?
ch+32:
ch;
printf(“char=%c\n”,_ch___);
}
写出程序的运行结果
main()
{intx=7,y;
if(x<5)y=x;
elseif(x<10)y=2*x+1;
elsey=3*x-1;
printf(“%d\n”,y);
}
运行结果:
15
Chapter5练习
选择
1与“for(i=0;i<10;i++)putchar(‘a’+i);”功能不同的语句是___
A)for(i=0;i<10;)putchar(‘a’+(++i));
B)for(i=0;i<10;)putchar(‘a’+(i++));
C)for(i=0;i<10;putchar(‘a’+i),i++);
D)for(i=0;i<=9;i++)putchar(‘a’+i);
2以下程序的运行结果为___
main()
{intn;
for(n=1;n<=10;n++)
{if(n%3==0)continue;
printf(“%d”,n);
}
}
3设有程序段
intx=0,s=0;
while(!
x!
=0)s+=++x;
printf(“%d”,s);
则_____
A)运行后输出0B)运行后输出1
C)控制表达式非法D)无限循环
4下面程序段的运行结果是____
intn=0;
while(n++<=2);
printf(“%d”,n);
A)2B)3C)4D)有语法错
填空
1下列程序计算1到100的整数的累加和。
main()
{inti,__sum=0____;
for(_i=1;i<=100;i++)sum+=i;
printf(“sum=%d\n”,sum);
}
2以下程序计算数的阶乘。
main()
{inti,n;
longnp;
scanf(“%d”,&n);
np=_1___;
for(i=2;i<=n;i++)
_np*=i__;
printf(“n=%dn!
=%ld\n”,n,np);
}
写出运行结果
main()
{inti,j;
for(i=1;i<=3;i++)
{for(j=1;j<=i;j++)
printf(“%d”,j);
printf(“\n”);
}
}
运行结果:
1
12
123
C程序chapter6练习
选择
1若有以下语句
staticinta[4]={1,2,3},i;
i=a[0]*a[1]+a[2]*a[3];
i的值为________
A)2B)5C)3D)以上都不对
2若二维数组a有m列,则在a[i][j]前的元素个数为_____
A)j*m+iB)i*m+jC)i*m+j-1D)i*m+j+1
3对两个数组a和b进行如下初始化
chara[]=“ABCDEF”;
charb[]={‘A’,’B’,’C’,’D’,’E’,’F’};
则以下叙述正确的是_____
A)a和b数组完全相同B)a和b长度相同
C)a和b中都存放字符串D)a数组比b数组长度长
4有两个字符数组a、b,则以下正确的输入语句是_____
A)gets(a,b);B)scanf(“%s%s”,a,b);
C)scanf(“%s%s”,&a,&b);D)gets(“a”),gets(“b”);
5下面程序段的运行结果是____
chara[7]=“abcdef”,b[4]=“ABC”;
strcpy(a,b);
printf(“%c”,a[5]);
A)空格B)\0C)eDf
6以下程序运行结果是______
main()
{intn[4]={0,0,0,0},k;
for(k=0;k<4;k++)
{if(k==2)break;
n[k]++;
}
printf(“%d\n”,n[++k]);
}
A)不确定的值B)0C)1D)2
7下列语句中,不正确的是_________
A)staticinta[5]={1,2,3,4,5};
B)staticinta[5]={1,2,3};
C)staticinta[]={0,0,0,0,0};
D)staticinta[5]={0*5};
8下列定义数组的语句中正确的是_________
A)#definesize10
charstr1[size],str2[size+2];
B)charstr[];
C)intnum[‘10’];
D)intn=5;inta[n][n+2];
填空
1从键盘输入由5个字符组成的单词,判断此单词是不是hello,并显示结果。
#include
main()
{
___intflag_;
staticcharstr[]=”hello”;
charstr1[6];
_gets(str1)_;
flag=0;
for(i=0;str1[i]!
=’\0’;i++)
if(str[i]!
=str1[i])
{flag=1;break;}
if(flag)
printf(“thiswordisnothello\n”);
else
printf(“thiswordishello\n”);
}
2采用折半查找法在数组中查询某个数据,假设数组已排好序。
main( )
{inta[10]={-12,0,6,16,23,56,80,100,110,114};
intn,low=0,high=9,mid,flag=0;
scanf(“%d”,&n);
while(low<=high)
{mid=(low+high)/2;
if(n==a[mid])
{_flag=1_;
break;
}
elseif(n>a[mid])
low=mid+1;
else
high=mid-1
}
if(flag==1)
printf(“找到\n”);
else
printf(“没找到\n”);
}
Chapter7练习
选择
1以下正确的函数定义形式是___
A)doublefun(intx,inty)
B)doublefun(intx;inty)
C)doublefun(intx,inty);
D)doublefun(intx,y);
2如果要限制一个变量只能为本文件所使用,必须通过_____来实现。
(这道题值得商榷)
A)外部变量说明B)静态内部变量
C)静态外部变量D)局部变量说明
3以下正确的说法是_______
A)实参和与其对应的形参各占用独立的存储单元
A)实参和与其对应的形参共占用一个存储单元
B)只有当实参和与其对应的形参同名时才共占用存储单元
C)形参是虚拟的,不占用存储单元
4以下不正确的说法是____________
A)实参可以是常量、变量或表达式
B)形参可以是常量、变量或表达式
C)实参可以为任意类型
D)形参应与其对应的实参类型一致
5若调用一个函数(类型为void),此函数中没有return语句,则正确的说法是____________
A)没有返回值
B)返回若干个系统默认值
C)能返回一个用户所希望的函数值
D)返回一个不确定的值
6以下正确的说法是____________
A)定义函数时,形参的类型说明可以放在函数体内
B)return后边的值不能为表达式
C)如果函数值的类型与返回值类型不一致,以函数值类型为准。
D)如果形参与实参的类型不一致,以实参类型为准
7C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是____________
A)地址传递
B)单向值传递
C)由实参传给形参,再由形参传回给实参
D)由用户指定传递方式
8C语言规定,函数返回值的类型是由____________
A)return语句中的表达式类型所决定
B)调用该函数时的主调函数类型所决定
C)调用该函数时系统临时决定
D)在定义该函数时所指定的函数类型所决定
9C语言允许函数值类型缺省定义,此时该函数值隐含的类型是____________
A)float型
B)int型
C)long型
D)double型
10下面函数调用语句含有实参的个数为____________
func((exp1,exp2),(exp3,exp4,exp5));
A)1B)2C)4D)5
11以下错误的描述是____________
函数调用可以A)出现在执行语句中
B)出现在一个表达式中
C)作为一个函数的实参
D)作为一个函数的形参
12以下正确的描述是____________
A)函数的定义可以嵌套,函数的调用不可以嵌套
B)函数的定义不可以嵌套,函数的调用可以嵌套
C)函数的定义和函数的调用均不可以嵌套
D)函数的定义和函数的调用均可以嵌套
13若用数组名作为函数调用的实参,传递给形参的是____________
A)数组的首地址
B)数组第一个元素的值
C)数组中全部元素的值
D)数组元素的个数
14若使用一维数组名作函数实参,则以下正确的说法是____________
A)必须在主调函数中说明此数组的大小
B)实参数组类型与形参数组类型可以不匹配
C)在被调函数中,需要考虑形参数组的大小
D)实参数组名与形参数组名必须一致
15以下不正确的说法是____________
A)在不同函数中可以使用相同名字的变量
B)形参是局部变量
C)在函数内定义的变量只在本函数范围内有效
D)在函数内的复合语句中定义的变量在本函数范围内有效
16凡是在函数中未指定存储类别的局部变量,其隐含的存储类别是____________
A)自动(auto)B)静态(static)
C)外部(extern)D)寄存器(register)
填空
1以下程序的运行结果是___111______
main()
{voidinc(void);
inc();
inc();
inc();
}
voidinc(void)
{intx=0;
x+=1;
printf(“%d”,x);
}
2计算数组元素的平均值。
floataverage(intn,intarray[])
{inti;floatsum=0;
for(i=0;i _sum+=i____; return(_sum/n); } main() {inti; floataver,score[10]; printf(“input10score: \n”); for(i=0;i<10;i++) scanf(“%f”,&score[i]); aver=average(10,__score_); printf(“averagescoreis%.2f\n”,aver); } 写出运行结果 1. main() {inta=4,x=5,b=8; fun(b,6); printf("%d,%d,%d\n",a,b,x); } fun(inta,intb) {intx=3; printf("%d,%d,%d\n",a,b,x); } 运行结果: 8,6,3 4,8,5 2.intabc(intu,intv); main() {inta=48,b=32,c; c=abc(a,b); printf("%d\n",c); } intabc(intu,intv) {intw; while(v) {w=u%v;u=v;v=w;} returnu; } 运行结果: 16 Chapter8C语言练习 选择 1在宏定义#definePI3.14159中,用宏名PI代替一个_____ A)常量B)单精度数C)双精度数D)字符串 2以下有关宏替换的叙述不正确的是_____ A)宏替换不占用运行时间B)宏名无类型 C)宏替换只是字符替换D)宏名必须用大写字母表示 3C语言的编译器对宏命令的处理是_____ A)在程序运行时进行的 B)在程序连接时进行的 C)和C程序中的其他语句同时进行编译的 D)在对源程序中其他成分正式编译之前进行的 4#defineADD(x)x+x main() {intm=1,n=2,k=3,sum; sum=ADD(m+n)*k; printf(“sum=%d”,sum); } 上面程序的运行结果是_____ A)sum=9B)sum=10C)sum=12D)sum=18 5若有以下宏定义: #defineN2 #defineY(n)((N+1)*n) 则执行语句z=2*(N+Y(5));后,z的结果是_____ A)语法错误B)34C)70D)无定值 C程序指针练习 选择 1.变量的指针,其含义是指该变量的_____ A)值B)地址C)名D一个标志 2.若有语句inta=4,*point=&a;下面均代表地址的一组选项是___ A)a,point,*&aB)&*a,&a,*point C)&point,point,&aD)&a,&*point,point 3.若已定义chars[10];则在下面表达式中不表示s[1]的地址的是___ A)s+1B)s++C)&s[0]+1D)&s[1] 4.下面程序段的运行结果是___ char*s=“abcde”; s+=2;printf(“%d”,s); A)cdeB)字符‘c’C)字符‘c’的地址D)无确定结果 5.若有以下定义,则对a数组元素的正确引用是____ inta[5],*p=a; A)*&a[5]B)a+2C)*(p+5)D)*(a+2) 6.若已定义a为整型变量,则____是对指针变量p的正确定义和初始化。 A)int*p=a;B)int*p=a; C)intp=&a;D)int*p=&a; 7.两个指针变量不可以_______ A)相加B)比较C)相减D)指向同一地址 8.以下程序的输出结果是______ #include main() {chars[]=”123”,*p; p=s; printf(“%c%c%c\n”,*p++,*p++,*p++); /*++是右结合性,从右往左运算,可以上机调试*/ } A)123B)321C)213D)312 9.执行以下语句的结果为_____ intx=3,y; int*px=&x;y=*px++; A)x=3,y=4B)x=3,y=3 C)x=4,y=4D)x=3,y不知 填空 下面的程序把数组元素按相反顺序进行存放。 voidinv(intn,int*x) {__inti,j,t____________________; for(i=x,j=n-1____;i {t=*i;*i=*j;*j=t;} } main() { inti,a[10]={3,7,9,11,0,6,7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 chapter 练习 参考答案