C语言程序设计复习题.docx
- 文档编号:29092470
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:16
- 大小:24.72KB
C语言程序设计复习题.docx
《C语言程序设计复习题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计复习题.docx(16页珍藏版)》请在冰豆网上搜索。
C语言程序设计复习题
《C语言程序设计》复习题
一、判断题(本大题共60个小题)
1.C程序执行的入口是main()函数,所以main函数必须放在程序的开头。
2.定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。
3.注释内容太多会影响程序的执行效率。
4.变量要“先定义,后使用”。
5.字符常量'a'与字符串常量"a"没有区别。
6.数学公式y=-6xz+5[2(a-5)+3]写成C语言表达式是y=-6*x*z+5*[2*(a-5)+3]。
7.数学公式y=|x|+ab-c写成C语言表达式是y=fabs(x)+a*b-c。
8.表达式5/2+5.0/2+7%6的值为5.5。
9.设intb=7;floata=2.5,c=4.7;则表达式a+(int)(b/2*(int)(a+c)/2)%4的值为:
4.5。
10.设inta=12;则表达式a/=a+a的值是0.5。
11.在C语言中,运算符!
比&&的优先级高。
12.在C语言中,运算符的优先级最小的是逗号运算符。
13.scanf("%d,%d",&x,&y);的输入格式:
3,4<回车>。
14.以下程序运行结果是:
1,7,0
voidmain()
{
intx=1,y=1,z=10;
if(z<0)
if(y>0)x=3;
elsex=5;
printf("%d,",x);
if(z=y<0)x=3;
elseif(y==0)x=5;
elsex=7;
printf("%d,%d",x,z);
}
15.该程序运行结果是:
BCother
voidmain()
{charx=‘B’;
switch(x)
{
case‘A’:
printf(“A”);
case‘B’:
printf(“B”);
case‘C’:
printf(“C”);
default:
printf(“other”);
}
}
16.下面程序段运行时输出结果是a=2,b=8
voidmain()
{
intx=1,y=1,a=2,b=7;
switch(x)
{
case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
17.下面程序,当输入为:
"abc?
"时,执行结果是:
abc
voidmain()
{charc;
c=getchar();
while(c!
='?
'){putchar(c);c=getchar();}
}
18.该程序运行结果是:
<><><>#
voidmain()
{inti;
for(i=1;i<=5;i++)
{
if(i%2)putchar(‘<’);
elsecontinue;
putchar(‘>’);
}
putchar(‘#’);
}
19.break语句可用于循环语句和if语句中。
20.continue语句不可用于循环语句中。
21.以下程序的功能是判断一个数是否是素数
#include
#include
voidmain()
{intm,i;
scanf("%d",&m);
for(i=2;i<=sqrt(m);i++)if(m%i==0)break;
if(i>sqrt(m))printf(“%d是素数",m);
elseprintf(“%d不是素数",m);}
22.以下程序的功能是计算2+4+6+8+...+98+100。
voidmain(){inti,s;for(i=2;i<=100;i+=2)s+=i;}(注意s的初始值)
23.数组的下标是从1开始计数的。
24.若有ints[4]={1,2,3,4};,则s[s[0]+2*s[2]-s[3]]的值是4。
25.下面程序段运行时输出结果是:
01524
voidmain(){inti=0,a[10];for(i=0;i<=9;i++)a[i]=i*3;printf("%d%d%d",a[0],a[5],a[8]);}
26.下面程序段运行时输出结果是:
10334566
voidmain()
{inta[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(“%d”,a[i]);}
27.以下程序的功能是:
将一个数组中的元素按逆序重新存放并打印交换后的数组。
#defineN7
#include
voidmain()
{staticinta[N]={12,9,16,5,7,2,1},k,s;
for(k=0;k printf("\n交换后的数组: \n");for(k=0;k 28.若有定义inta[3][5];则排列在数组中的第9个元素是a[1][3]。 29.下面程序段运行时输出结果是: 456 voidmain(){inta[][3]={1,2,3,4,5,6,7,8,9},i,k=2;for(i=0;i<3;i++)printf(“%d”,a[k][i]);} 30.下面程序段运行时输出结果是: "AAAA" voidmain(){charch[3][5]={"AAAA","BBB","CC"};printf("\"%s\"",ch[1]);} 31.strlen("Howareyou\n")的值是12。 32.C语言中字符串结束的标志是'\0' 33.strcmp("how","How")的值>0。 34.以下程序的功能是: 字符串a连接到字符串b,并显示字符串b。 voidmain() {chara[200]=”howareyou.”,b[200];inti=0; while(a[i]! ='\0'){b[i]=a[i];i++;}b[i]='\0'; printf(“新字符串是%s”,b);} 35.当运行以下程序时,从键盘输入: AAAaaaAAAAbcd234abcAAaa,运行结果为: AaaAAAaaa。 voidmain() {chars[80],c='a'; inti=0; scanf("%s",s);(注意scanf遇到空格的处理,与gets的不同) while(s[i++]! ='\0') if(s[i]==c)s[i]=s[i]-32; elseif(s[i]==c-32)s[i]=s[i]+32; puts(s); } 36.下面程序段运行时输出结果是: 6 voidmain(){int*p,a=5,b=1;p=&a;*p=10;a=*p+b;printf(“%d”,a);} 37.下面程序段运行时输出结果是: 135 voidmain() {inta[2][3]={1,3,5,7,9,11};intm,*ptr; ptr=&a[0][1]; m=(*ptr)*(*(ptr+1))*(*(ptr+3)); printf("%d",m);} 38.下面程序段运行时输出结果是: -5,-12,-7 voidsub(intx,inty,int*z) {*z=y-x;} voidmain() { inta,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf("%4d,%4d,%4d\n",a,b,c); } 39.下面程序段运行时输出结果是: 4 fun(char*s) {char*p=s; while(*p)p++; return(p-s); } voidmain() {char*str="abcd"; inti; i=fun(str); printf("%d",i); } 40.int*f();表示函数返回一个整型指针。 41.下面程序段运行时输出结果是: 0,01,3 f(){intx=0;staticinty=0;printf("%d,%d",x,y);x++;y=y+3;} voidmain(){inti;for(i=0;i<2;i++)f();} 42.下面程序段运行时输出结果是2 intf(intn){ints;if(n==1||n==2)s=1;elses=n-f(n-1);returns;} voidmain(){printf(“%d”,f(3));} 43.下面程序段运行时输出结果是7 voidfun(intx,inty,intz){z=x+y;} voidmain(){inta=3;fun(5,2,a);printf("%d",a);} 44.在定义函数时,函数名后面的括号中的变量名称为实参。 45.为了保证被调用函数不返回任何值,其函数定义的类型应为void。 46.若定义的函数没有参数,则函数名后的圆括号可以省略。 47.函数的实参和形参可以是相同的名字。 48.函数调用中,形参与实参的类型和个数必须保持一致。 49.函数的函数体可以是空语句。 50.在调用一个函数的过程中又出现直接或间接调用该函数本身,称为函数的递归调用。 51.在函数内定义的变量是局部变量,在函数外定义的变量是外部变量。 外部变量是全局变量。 52.变量的存储类别有自动型、静态型、寄存器型、和外部类型共4种,它们分别用auto、static、register、extern标识。 53.对10个数进行从小到大排序。 要求排序在函数sort内完成,用起泡算法。 main函数内进行数据输入、调用排序函数sort、并输出排序后的数据。 判断以下程序是否正确: voidsort(inta[],intn) {inti,j,k; for(i=0;i for(j=0;j if(a[j]>a[j+1]){k=a[j];a[j]=a[j+1];a[j+1]=k;}} voidmain() {inta[10],i,j,k; for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n"); sort(a[10],10);(注意数组作函数参数) for(i=0;i<10;i++)printf(“%d,",a[i]);} 54.预处理命令#include的作用是文件包含。 55.结构体的成员不能是结构体变量。 56.“按位与”运算指两个运算数相应的二进制位中只要有一个为1,则该位结果值为1,比如0|0=0,1|0=1。 57.C语言库函数fgets(str,n,fp)的功能是从文件fp中读取n个字符串存入str指向的内存。 。 58.函数rewind的作用是使位置指针自动移至下一个字符位置。 59.函数fseek的作用是使位置指针移至第一个字符位置。 60.C语言中以w+方式打开文件后,可执行的文件操作是可任意读写。 二、单项选择题(本大题共45个小题) 61.一个C语言程序总是从开始执行。 A.主过程B.主函数C.子程序D.主程序 62.下面四个选项中,均是不合法的用户标识符的选项是。 A.BA、x_0、doB.float、1a0、_Y C.x-y、goto、123D._123、tmp、CHAR 63.C语言中,int型数据在内存中的存储形式是。 A.ASCII码B.原码C.反码D.补码 64.下列属于C语言合法的字符常量的是。 A.‘\85’B.“n”C.‘\t’D.“\0” 65.下面正确的字符串常量是。 A.'a'B.'376'C."\\n"D.376 66.不合法的常量是: 。 A.‘\2’B.""C.‘3’D.‘\483’ 67.字符串"\\\"123\"\\"的长度是。 A.11B.7C.5D.3 68.存储字符串"\\\'abc\376"需要的字节数是。 A.11B.13C.)6D.)7 69.表达式'A'+4*25.0-'b'的正确结果是。 A.67B.67.0C.不确定D.67L 70.下面哪个式子在a为奇数时结果为假。 A.a%2==1B.! (a%2==0)C.! (a%2)D.a%2 71.若x是int型变量,y是float型变量,所用的scanf调用语句格式为: scanf("x=%d,%f",&x,&y);则为了将数据10和66.6分别赋给x和y,正确的输入应是: 。 A.x=10,66.6<回车>B.1066.6<回车> C.10<回车>66.6<回车>D.x=10<回车>66.6<回车> 72.w=4,x=3,y=2,z=1,则条件表达式w w: y y: z的结果为。 A.4B.3C.2D.1 73.能表示条件0≤x≤100的表达式是。 A.0<=x<=100B.x>=0,x<=100 C.0≤x≤100D.x>=0&&x<=100 74.判断char型变量ch为数字的正确表达式是。 A.ch>="0"&&ch<="9"B.ch>='0'&&ch<='9' C.'0'≤ch≤'9'D.ch>='0'||ch<='9' 75.分析以下程序,下列说法正确的是。 voidmain() { intx=0,a=0,b=0; if(x=a+b)printf("tttt\n"); elseprintf("kkkk\n"); } A.有语法错,不能通过编译B.通过编译,但不能连接 C.输出ttttD.输出kkkk 76.程序段如下,则以下说法中正确的是: 。 intk=-5; while(k=0)k=k+1; A.while循环执行5次B.循环体语句一次也不执行 C.循环是无限循环D.循环体语句执行一次 77.下述for循环语句。 inti,k; for(i=0,k=-1;k=2;i++,k++)printf("****"); A.判断循环结束的条件非法B.是无限循环 C.只循环一次D.一次也不循环 78.下列程序段执行后k值为。 intk=0,i,j; for(i=0;i<5;i++) for(j=0;j<3;j++) k=k+1; A.15B.3C.5D.8 79.以下关于数组的描述正确的是。 A.数组的大小是固定的,但可以有不同的类型的数组元素。 B.数组的大小是可变的,但所有数组元素的类型必须相同。 C.数组的大小是固定的,但所有数组元素的类型必须相同。 D.数组的大小是可变的,但可以有不同的类型的数组元素。 80.在c语言中引用数组元素时,其数组下标的数据类型允许是。 A.整型常量B.整型表达式 C.整型常量或整型表达式D.任何类型的表达式 81.对以下说明语句的正确理解是。 inta[10]={6,7,8,9,10}; A.将5个初值依次赋给a[1]至a[5] B.将5个初值依次赋给a[0]至a[4] C.将5个初值依次赋给a[6]至a[10] D.因为数组长度与初值的个数不相同,所以此语句不正确 82.在执行inta[][3]={1,2,3,4,5,6};语句后,a[1][1]的值是。 A.4B.1C.2D.5 83.对于类型相同的两个指针变量之间,不能进行的运算是。 A. 84.以下不能正确赋值的是。 A.chars1[10];s1="test";B.chars2[]={’t’,’e’,’s’,’t’} C.chars3[20]="test";D.chars4[4]={’t’,’e’,’s’,’t’} 85.对字符串"Boy"进行完整赋值的操作是。 A.chars[3]={'B','o','y'};B.chars[]="Boy"; C.chars[3]={"Boy"};D.chars[3];s="Boy"; 86.在C语言程序中,以下描述正确的是。 A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用均不可以嵌套 D.函数的定义和函数的调用均可以嵌套 87.以下函数调用语句中实参的个数为。 exce((v1,v2),(v3,v4,v5),v6); A.3B.4C.5D.6 88.下述函数定义形式正确的是。 A.intf(intx;inty)B.intf(intx,y) C.intf(intx,inty)D.intf(x,y: int) 89.关于函数参数,说法正确的是。 A.实参与其对应的形参各自占用独立的内存单元 B.实参与其对应的形参共同占用一个内存单元 C.只有当实参和形参同名时才占用同一个内存单元 D.形参是虚拟的,不占用内存单元 90.一个函数的返回值由确定。 A.return语句中的表达式B.调用函数的类型 C.系统默认的类型D.被调用函数的类型 91.当调用函数时,实参是一个数组名,则向函数传送的是_______。 A.数组的长度B.数组的首地址 C.数组每一个元素的地址D.数组每个元素中的值 92.若有以下说明: inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为3的表达式是。 A.*p+3B.*(p+3)C.*p+=2D.p+2 93.下面程序用于输出数组中的最大值,则程序段中空白处应是。 voidmain() {inta[5]={3,2,5,6,4},*p,*s; for(p=a,s=a;p-a<10;p++) if()s=p; printf(“maxis%d”,*s); } A.*s<*pB.s 94.设有如下的程序段: charstr[]=“china"; char*ptr; ptr=str; 执行上面的程序段后,*(ptr+5)的值为。 A.'o'B.'\0'C.不确定的值D.'o'的地址 95.以下程序输出结果为。 main() {char*str[]={"zhao","qian","sun","li"}; inti; for(i=0;i<4;i++) printf("%c",str[i][0]); } A.zqslB.zhaoqiansunliC.zhaoD.以上都不对 96.若x=5,y=5,则x&y的结果是_________. A.0B.2C.3D.5 97.在位运算中,操作数每左移两位,则结果相当于________. A.操作数乘以2B.操作数除以2 C.操作数除以4D.操作数乘以4 98.当用户定义一个结构体变量时,系统分配给它的内存为各成员所需内存的 A.和B.最大值C.不确定D.无关 99.若有以下结构体定义,则正确的引用或定义是。 structexample {intx;inty; }v1; A.example.x=10;B.examplev2.x=10; C.structv2;v2.x=10;D.structexamplev2={10}; 100.设有如下定义: structsk{inta;floatb;}data,*p;若有p=&data;,则对data中的a域的正确引用是。 A.(*p).data.aB.(*p).aC.p->data.aD.p.data.a 101.C语言可以处理的文件类型是。 A.文本文件和数据文件B.文本文件和二进制文件 C.数据文件和二进制文件D.数据代码文件 102.如果要打开C盘file文件夹下的abc.dat文件,fopen函数中第一个参数应为。 A.c: file\abc.datB.c: \file\abc.dat C."c: \file\abc.dat"D."c: \\file\\abc.dat" 103.若想对文本文件只进行读操作,打开此文件的方式为。 A."r"B."W"C."a"D."r+" 104.在C程序中,可把整型数以二进制形式存放到文件中的函数是。 A.fprintf函数B.fread函数C.fwrite函数D.fputc函数 105.打开文件,操作完毕后用函数关闭它。 A.fopenB.openC.fcloseD.close 三、编程题(本大题共10个小题) 106.求200到800之间所有能被3整除但不能被7整除的数的和。 107.求1! +2! +3! +…+100! 。 108.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 例如153是一个水仙花数,因为153= 。 109.有10个地区的面积,要求对它们按由小到大的顺序排列(采用起泡法排序)。 110.有一行文字,要求删去某一个字符。 此行文字和要删去的字符均由键盘输入,要删去的字符以字符形式输入(如输入a表示要删去所有的a字符)。 111.有一个3×4的矩阵,编程求出其中值最大的那个元素的值,以及其所在的行号和列号。 112.任意输入10个学生4门课成绩,求每门课的最高分,放入一个一维数组中,并输出每个学生成绩和每门课的最高分。 113.有10个整数的数组中找出最小的数与最后一个交换。 要求: 编写函数实现上述交换功能,在main()函数里进行数据输入、函数调用并打印。 114.输入N个数到数组中,输出所有大于N个数平均值的数。 要求: 计算N个数的平均值用函数实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 复习题
![提示](https://static.bdocx.com/images/bang_tan.gif)