《C语言程序设计》习题集.docx
- 文档编号:24348644
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:97
- 大小:51.50KB
《C语言程序设计》习题集.docx
《《C语言程序设计》习题集.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》习题集.docx(97页珍藏版)》请在冰豆网上搜索。
《C语言程序设计》习题集
《C语言程序设计》习题集
一、单选题
1.C程序的基本构成单位是(C)
A)文件B)命令C)函数D)语句
2.在C语言中,'a'是(B)
A)字符串常量B)字符常量C)变量D)函数
3.设a、b为整型,则表达式(a=2,b=5,b++,a+b)的值是(D)
A)2B)6C)7D)8
4.若有以下变量定义:
intb=2;
floata=5;
则表达式“a/b”之值为(A)
A)2.5B)2C)3D)5/2
5.若j=3,则表达式(++j)+(j++)的值为(C)
A)6B)7C)8D)10
6.以下只能输入单个字符的函数是(C)
A)printf()B)puts()C)getchar()D)putchar()
7.若a的原值为4,则表达式“a*=a-=3”运算后,a的值是(D)
A)13B)4C)3D)1
8.若a=5、b=3、c=1,则表达式“a>b>c”的值为(A)
A)0B)1C)3D)5
9.若有代数式:
?
?
?
?
?
?
以下错误的C语言表达式是(C)
A)a/b/c*e*3B)3*a*e/b/cC)3*a*e/b*cD)a*e/c/b*3
10.下列能输出字符数组str中字符串的语句是(B)
A)printf("%c",str[0]);B)printf("%s",str);
C)printf("%s",str[]);D)putchar(str);
11.若p=&x,则下列关系表达式之值为1的是(B)
A)p==xB)*p==xC)&p==xD)*x==p
12.C语言中最基本的数据类型包括(B)
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、逻辑型、字符型D)整型、实型、字符串型
13.C语言中,要求运算对象必须是整型数据的运算符是(A)
A)%B)/C)\D)&&
14.表示数学关系“x≥y≥z”的C语言表达式是(C)
A)x>=y>=zB)x>=y||y>=zC)x>=y&&y>=zD)x≥y≥z
15.以下说法中正确的是(C)
A)C程序总是从文件中第一个函数开始执行
B)C程序中,只有main()函数才可以调用其他函数
C)C程序总是从main()函数开始执行
D)C程序中的main()函数必须放在程序的开头
16.若有定义:
inta=7;
floatx=2.5,y=4.7;
则表达式x+a%3*(int)(x+y)%2/4的值为(A)
A)2.5B)2.75C)3.5D)0
17.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为(C)
A)intB)floatC)doubleD)不确定
18.有输入语句:
scanf("%d,%d",&a,&b);
为使变量a、b分别为5和3,从键盘输入数据的正确形式为(B)
A)53<回车>B)5,3<回车>C)a=5b=3<回车>D)a=5,b=3<回车>
19.定义如下变量和数组:
intj;
intx[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是(C)
for(j=2;j>=0;j--)
printf("%2d",x[j][2-j]);
A)159B)147C)753D)369
20.执行下面程序后,a的值是(B)
#include
#defineSQR(x)x*x
voidmain()
{inta=10,k=2,m=1;
a=SQR(k+m);
printf("%d\n",a);
}
A)10B)5C)2D)1
21.以下叙述不正确的是(C)
A)在函数内部定义的变量是局部变量
B)函数中的形式参数是局部变量
C)全局变量的作用范围仅限于其所在的整个文件
D)局部变量的作用范围仅限于本函数
22.设a=3,b=4,c=2,d=1,则表达式“a>b?
a:
c>d?
c:
d”的值为(C)
A)4B)3C)2D)1
23.有以下程序段:
x=-1;
do
x=x*x;
while(!
x);
执行时,循环体执行的次数为(B)
A)0B)1C)2D)不确定
24.以下不正确的if语句形式是(C)
A)if(x>y&&x!
=y);
B)if(x==y)x+=y;
C)if(x!
=y)scanf("%d",&x)
elsescanf("%d",&y);
D)if(x 25.以下程序的输出结果是(C) #include voidmain() {intx=2,y=-1,z=2; if(x if(y<0)z=0; elsez+=1; printf("%d\n",z);} A)0B)1C)2D)3 26.以下能正确计算1×2×3×…×10的程序段是(A) A)i=1,s=1;B)s=1;i=1; dowhile(i<=10) {s=s*i;i++;}s=s*(++i); while(i<11); C)for(i=1,s=0;i<=10;i++)D)for(i=1,s=1;;i++) s=s*i;s=s*i; 27.若j为整型变量,则以下循环执行次数是(C) for(j=0;j==0;) printf("%d",j--); A)无限次B)0次C)1次D)2次 28.若有说明: inta[10];则对a数组元素的正确引用是(C) A)a[3.5]B)a(8)C)a[6-5]D)a[10] 29.C语言规定,变量做实参时,它和对应形参之间的数据传递方式是(B) A)地址传递B)单向值传递C)双向值传递D)由用户指定传递方式 30.C中,一个float类型的数据在内存中占(C)个字节。 A)1B)2C)4D)8 31.设有程序段: intk=5; while(k<=0) k--; 则下列描述中正确的是(C) A)while循环执行5次B)循环是无限循环 C)循环语句一次也不执行D)循环体语句执行一次 32.下面程序段的运行结果是(B) charc[5]={'a','b','\0','c','\0'}; printf("%s",c); A)'a''b'B)abC)AbcD)"abc" 33.以下不正确的字符串赋值语句是(C) A)char*s;s="abcde";B)chars[]="abcde"; C)chars[10];s="abcde";D)char*s="abcde"; 34.设p1、p2是指向int型一维数组的指针变量,k为int型变量,以下错误的语句是(B) A)k=*p1+*p2;B)p2=k;C)p1=p2;D)k=p2-p1; 35.下面程序的输出结果是(A) #include voidmain() {chars[]="ABCD"; char*p; for(p=s;p printf("%s\n",p); } A)ABCDB)AC)DD)ABCD BCDBCABC CDCBAB DDAA 36.以下关于C函数的定义和调用描述正确的是(B) A)函数的定义可以嵌套,但函数的调用不可嵌套 B)函数的调用可以嵌套,但函数的定义不可嵌套 C)函数的定义和调用均可以嵌套 D)函数的定义和调用均不可嵌套 37.以下关于变量的作用域说法正确的是(D) A)在不同函数中不能使用相同名字变量 B)在函数外部定义的变量只在本函数范围内有效 C)在函数内的复合语句定义的变量在本函数内有效 D)形式参数是局部变量 38.以下关于变量的作用域叙述不正确的是(C) A)在函数内部定义的变量是局部变量 B)函数中的形式参数是局部变量 C)全局变量的作用范围仅限于其所在的文件 D)局部变量的作用范围仅限于本函数 39.以下关于C函数参数说法不正确的是(B) A)实参可以是常量、变量和表达式 B)形参可以是常量、变量和表达式 C)实参可以为任意数据类型 D)形参应与对应的实参类型一致 40.以下关于C函数返回值的叙述正确的是(D) A)被调函数中只有使用return语句才能返回主调函数 B)使用一个return语句可以返回多个函数值 C)函数返回值类型取决于return语句中的表达式类型 D)函数返回值类型取决于定义该函数时所指定的类型 41.在C中,“a>b>c”属于哪种表达式? (A) A)关系B)赋值C)逻辑D)非法 42.以下不合法的C表达式是(C) A)10||8B)12==9+1C)++5D)x! =y 43.给定以下程序段: intn=10; while(n>6) {n--; printf("%3d",n); } 以上程序段输出结果是(D) A)1098B)987C)10987D)9876 44.若i,j已定义为int型,则以下程序段中内循环总的执行次数是(C) for(i=5;i>0;i--) for(j=1;j<6;j++) {……} A)30B)24C)25D)20 45.若已定义: float*p,m=3.14159;则使p指向m正确的赋值语句是(B) A)p=m;B)p=&m;C)*p=m;D)*p=&m; 46.若已定义: chars[10];则下面表达式中不能表示s[1]地址的是(A) A)s++B)s+1C)&s[0]+1D)&s[1] 1.定义一个变量使之保存值的范围是0-65535,应该选择(A)类型。 A.unsignedshortint B.int C.shortint D.longint 2.设x、y、z都是整型变量,x、y的初值都是5,执行z=(++x)+(y--)+1后,x、y、z三变量的值按顺序是(D)。 A.5,5,11 B.6,6,13 C.4,6,12 D.6,4,12 3.下列字符中不属于转义字符的是(D) A.\n B.\t C.\b D.\k 4.下列不正确的标识符是(B) A._char B.a? b C.x D.st2_flag 5. 6.在内存中应该开辟(A)多少个字节来存放字符‘\n’. A.1 B.2 C.3 D.4 7.下面的(C)不是合法的c语言常量。 A.123 B.‘M’ C.0892 D.“Flag” 8.下面(A)对变量的说明是错误的。 A.charc1,intx; B.inta,b;floatx,y; C.inta;intb; D.charc1;intx; 9.有变量说明inta=3;,则表达式a<1&&--a>1的运算结果和a的值应该是(A) A.0和2 B.0和3 C.1和2 D.1和3 10.设intx=12;,则执行完语句a+=a-=a*a;后,a的值是(C)//应该是a=12 A.552 B.264 C.-264 D.144 11.c语言中,运算对象必须是整型数的运算符是()//题目有问题,选项C是什么东东? ? A.% B./ C.%和\ D.%和/ 12.以下关于break语句的描述,只有(C)是正确的。 A.在循环语句中必须使用break语句。 B.break语句只能用于switch语句中。 C.在循环语句中可以根据需要使用break语句。 D.break语句可以强制跳出所有循环。 13.下面的叙述中,不正确的是(A) A.在main函数中说明的变量的作用域是整个程序。 B.全局变量在程序运行期间一直占用分配给它的存储单元。 C.形式参数是局部变量。 D.return()语句中括号内可以是常量、有确定值的变量或表达式。 14.定义函数时,默认的函数类型是(A) A.auto B.register C.static D.extern 15.c语言中的函数(B) A.可以嵌套定义 B.嵌套调用和递归调用均可 C.不可以嵌套调用 D.可以嵌套调用,但不可以递归调用 阅读下列程序,写出执行结果 1.#include main() { intx,m,n,a,b; m=n=a=b=8; x=(m=a>b)&&(n=a>b); printf(“x=%d,m=%d,n=%d\n”,x,m,n); } 答: x=0,m=0,n=8 程序设计题 1.整形数组a有五个元素,其值分别为: 1、2、3、4、5,移动该数组的数,使其变成2、3、4、5、1 #include Main{ inti,temp; inta[5]={1,2,3,4,5}; temp=a[0]; for(i=0;i<4;i++) { a[i]=a[i+1]; } a[4]=temp; } 2.用户从键盘输入一个字符串(字符中不包含空格),当输入回车时认为输入结束,统计输入字符串中小写英文字母、大写英文字母、数字字符、其他字符的个数 #include"stdio.h" #include"string.h" voidmain() { inti=0;//小写英文字母数量 intj=0;//大写英文字母数量 intk=0;//数字字符数量 intothers=0;//其他字符数量 chartemp;//接收字符。 inttempcounter; printf("Pleaseinputthestring"); for(tempcounter=0;;tempcounter++) { scanf("%c",&temp); if(temp=='\n')break; else { if((temp>='a')&&(temp<='z')) { i=i+1; continue; } if((temp>='A')&&(temp<='Z')) { j=j+1; continue; } if((temp>='0')&&(temp<='9')) { k=k+1; continue; } others=others+1; } } printf("小写英文字母数量: %d\n",i); printf("大写英文字母数量: %d\n",j); printf("数字数量: %d\n",k); printf("其他: %d\n",others); } 二、填空题 (1)a=a! =b? b: c (2)a>b? b+1: c+1 (3)(a=4)? a--: b-- (1)0关系运算符的优先级高于赋值运算符。 (2)4 (3)1注意条件表达式的条件部分是一个赋值表达式。 写出满足下面条件的关系或逻辑表达式。 (1)a在区间(3,10)内。 (2)x是3的倍数。 (3)x和y的和大于100且x大小于45。 (4)a等于c或b不等于0 (5)a是小写字母 (1)a>3&&a<10 (2)x%3==0 (3)x+y>100&&x>45 (4)a==c||b! =0 (5)a>=‘a’&&a<=‘z’ 计算下面逻辑表达式的值。 设a=0,b=1,c=2,d=4。 (1)a>=b (2)c-b==a(3)c! =d-b (4)b>a&&c>b(5)a&&d-c(6)! a&&b>c (7)(b>a)||c a||c>d (10)(a||b)&&c a&&c>d 解: (1)0 (2)0(3)0 (4)0(5)0(6)0 (7)0(8)1(9)1 (10)0(11)0(12)1 1.函数是C程序的基本构成单位,C程序总是从main函数____开始执行的。 2.赋值表达式x*=y+5的另一种书写形式为x=x*(y+5) 3.已知a=10,b=20,c=3,则表达式a>b||c的值为1 4.整数m既能被3整除又能被4整除的逻辑表达式为(m%3==0)&&(m%4==0) 5.若有定义: doublea[10][5];则数组a中行下标最大值为9,列下标最大值为4。 6.若有定义: inta[]={1,4,6,5,8,9};则*(a+5)的值为9 7.设有如下定义inta[5][6],*p;取数组元素a[4][2]的地址放到p中的语句为p=&a[4][2]; 8.未加特别说明(说明为静态的)的全局变量是外部的,能被其它文件中的函数使用,而在引用它的文件中,需要用关键字extern说明。 9.已知a=10,b=20,则表达式! a>b的值为0 10.写出0 11.若有定义: inta[10],*p=a;则元素a[5]的值用p表示的形式是*(p+5) 12.若有定义: int*p[4];则标识符p表示数组长度为4的一维指针数组 13.凡是函数中未指定存储类型的局部变量,其默认的存储类型为auto 完成下面一组关于函数的判断: (1)一个C语言程序的基本组成单位是函数。 (对) (2)C语言程序的主函数必须在其他函数之前,一个C语言程序总是从主函数开始执行。 (错) (3)C语言程序的主函数可以在其他函数之后,一个C语言程序总是从第一个定义的函数开始执行。 (错) (4)C语言中只有主函数中可以定义其他函数,其他函数中不能再定义函数。 (错) (5)函数定义中返回值类型定义为void的意思是函数没有返回值。 (对) (6)函数定义中返回值类型定义为void的意思是函数不返回。 (错) (7)在C语言中调用函数时,只能将实参的值传递给形参,形参的值不能传递给实参。 (对) (8)C语言程序中有调用关系的函数必须放在同一源程序文件中。 (错) (9)在C语言中,函数形参的存储类型是自动类型的变量。 (对) (10)在C语言中求sin(60°)的值,可以调用库函数sin,格式应为sin(60)。 (错) (11)在C语言中函数返回值的类型是由定义函数时所指定的函数类型决定的。 (对) (12)在C语言中,不同函数中可以使用相同的变量名。 (对) 完成下面一组关于递归函数的判断: (1)所有的递归程序均可以采用非递归算法实现(对) (2)只有部分递归程序可以采用非递归算法实现(错) (3)C语言允许函数的递归调用(对) (4)C语言不允许在函数中再定义函数(对) (5)递归函数中的形参是静态变量(错) (6)递归函数中的形参是自动变量(对) (7)在递归函数在中使用自动变量,不同层次的同名变量在赋值时不会互相影响。 (对) (8)在递归函数在中使用自动变量,要注意不同层次的同名变量在赋值会互相影响。 (错) (9)如果函数funA中又调用了函数funA,称直接递归。 (对) (10)如果函数funA中调用了函数funB,函数funB中又调用了函数funA,称间接递归。 (对) 完成下面一组关于变量作用域和存在期的判断: (1)在函数中未指定存储类别的变量,其隐含存储类别为extern。 (错) (2)在C语言中,对于存储类型为auto和register的变量,只有在使用它们时才占用内存单元。 (错) (3)在一个源文件中定义的外部变量的作用域为本文件的全部范围。 (错) (4)在一个源文件中定义的外部变量的作用域为本程序的全部范围。 (错) (5)在一个C源程序文件中,若要定义一个只允许在该源文件中所有函数使用的变量,该变量的存储类别应该是static。 (对) 三、程序填空 1.下面程序的功能是: 从键盘输入一个字符,若是大写字母,则转换为小写字母并输出,若为小写字母则直接输出,请在_____处填上合适内容,使程序完整。 #include voidmain() {charch; ch=getchar(); if(ch>='A'&&ch<='Z') ch+=32; printf("%c",ch); } 2.下面程序的功能是: 求1~100间的偶数和,请在_____处填上合适内容,使程序完整。 #include voidmain() {intnum,sum=0; for(num=2;num<=100;num=num+2) sum=sum+num; printf("1-100间的偶数和是: %d\n",sum); } 3.下面程序段是求n! 的递归函数,请将函数补充完整。 doublefac(intn) {doubleresult; if(n==1) result=1; else result=n*fac(n-1); return(result); } 4.以下程序的功能是: 输入一整数n,判断是否为素数。 #include #include voidmain() {inti,n; scanf("%d",&n); for(i=2;i<=sqrt(n);i++) if(n%i==0) break; if(i>sqrt(n)) printf("%disaprimenumber.\n",n); else printf("%disnotaprimenumber.\n",n); } 四、阅读程序 1.#include voidmain() {charc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 习题集