C语言复习题旅游学院.docx
- 文档编号:10380834
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:18
- 大小:22.33KB
C语言复习题旅游学院.docx
《C语言复习题旅游学院.docx》由会员分享,可在线阅读,更多相关《C语言复习题旅游学院.docx(18页珍藏版)》请在冰点文库上搜索。
C语言复习题旅游学院
C语言复习题
一、选择题
1.一个完整的计算机系统包括_____
A)主机健盘与显示器B)计算机与外部设备
C)硬件系统与软件系统D)系统软件与应用软件
2.十进制数269转换成十六进制数是
A)10EB)10DC)10CD)10B
3.下面各语句行中,能正确地给字符串进行赋值的语句行是
A)CHARST[4][5]={“ABCDE”};
B)CHARS[5]={'A','B','C','D','E'};
C)CHAR*S;S=“ABCDE”;
D)CHAR*S;SCANF(“%S”,S);
4.请读程序:
#include“stdio.h”
f(char*s)
{char*p=s;
while(*p!
='\0')p++;
return(p-s);
}
main()
{printf(“%d\n”,f(“ABCDEF”));}
上面输出结果是
A)3B)6C)8D)0
5.请读程序:
#include“stdio.h”
main()
{inta;floatb,c;
scanf(“%2d%3f%4f”,&a,&b,&c);
PRINTF(“\nA=%D,B=%F,C=%F\n”,a,b,c);
}
若运行时从键盘上输入9876543210(表示回车),则上面程序的输出结果是
A)A=98,B=765,C=4321
B)A=98,B=765.000000,C=4321.000000
C)A=98,B=765.0,C=4321.0
6.请读程序:
#INCLUDE《STDIO.d》
MAIN()
{INTN[2],I,J,K;
FOR(I=0;I<2;I)N[J]=N[I];
PRINTF(“%D\N”,N[K]);
}
上面程序的输出结果是
A)不确定的值B)3C)2D)1
7.请读程序片段:
CHARSTR[]=“ABCD”,*P=STR;
PRINTF(“%D\N”,*(P+3));
上面程序片段的输出结果是
A)68B)0C)字符'D'的地址D)不确定的值
8.请读程序片段(字符串内没有空格字符):
PRINTF(“%D\N”,STRLEN(“ATS\N012\1\\”));
上面程序片段的输出结果是
A)11B)10
C)9D)8
9.请读程序:
#include“stdio.h”
#include“math.h”
main()
{floatx,y,z;
scanf(“%f%f”,&x,&y,),
z=x/y;
while
(1)
{if(fabs(z)>1.0)
{x=y;y=z;z=x/y;
}
elsebreak;
}
printf(“%f、n”,y);
}
若运行时从键盘上输入3.62.4(表示回车),则输出结果是
A)1.500000B)1.600000C)2.000000D)2.400000]
10.请读程序:
#include
f(intb[],intn)
{inti,r;
r=1;
for(i=0;i<=n;i)r=r*b[i];
returnr;
}
main()
{intx,a[]={2,3,4,5,6,7,8,9};
x=f(a,3);
printf(“%d、n”,x);
}
上面程序输出结果是
A)720B)120C)24D)6
11.设inta=-1;则a对应的内存单元中存储的是常量1的。
A)补码B)BCD码C)反码D)ASCII码
12.ch已知是字符型变量,下列不正确的赋值语句为。
A)ch=’\0’;B)ch=’a+b’;C)ch=’7’+’9’;D)ch=65+1;
13.若输入字符串:
abcdef<回车>,则一下while循环体将执行次。
While((ch=getchar())!
=’f’)printf(“*”);
A)0B)1C)4D)5
14.正确的自定义标识符是
A)a=2B)a+bC)nameD)default
15.错误的转义字符是
A)'\091'B)'\\'C)'\n'D)'\''
16.若有定义:
inta[10],*p=a;则*(p+5)表示。
A)元素a[5]的地址B)元素a[5]的值
C)元素a[6]的地址D)元素a[6]的值
17.以下表达式10&8,10&&8结果分别为
A)1,1B)8,1C)0,0D)10,1
18.C语言的编译系统对宏命令的处理是。
A)在程序运行时进行的。
B)在程序连接时进行的
C)和c程序中的其它语句同时进行编译的
D)在对源程序中其他成分正式编译之前进行的
19.设有inti;则表达式(i=1,i=10)?
i++:
++i,i的值为
A)2
B)11
C)12
D)13
20.有以下程序段
intk=0;
while(k=1)k++;
while循环执行的次数是
A)无限次B)有语法错,不能执行C)一次也不执行D)执行1次
21.请读程序:
#include"stdio.h"
#include"string.h"
voidfun(char*s)
{chara[10];
strcpy(a,“STRING”);
s=a;
}
main()
{char*p;
fun(p);
printf(“%s\n”,p);
}
上面程序的输出结果是("_"表示空格)
A)STRINGB)__STRING
C)STRING__D)不确定的值
22.在C语言提供的合法的关键字是
A)swicthB)cher
C)CaseD)default
23.在C语言中,合法的字符常量是
A)84B)'\0x43'
C)'ab'D)“\0”
24.若已定义x和y为double类型,则表达式:
x=1,y=x+3/2的值是
A)1B)2
C)2.0D)2.5
25.合法的数组定义是
A)inta[]=“string”;B)inta[5]={0,1,2,3,4,5};
C)vhsts=“string”;D)chara[]={0,1,2,3,4,5};
26.若有定义和语句:
chars[10];s=“abcd”;printf(“%s\n”,s);
则结果是(以下u代表空格)
A)输出abcdB)输出a
C)输出abcduuuuuD)编译不通过
27.若有定义和语句:
int**pp,*p,a=10,b=20;
pp=&p;p=&a;p=&b;printf(“%d、n”,*p,**pp);
则输出结果是:
A)10,20B)10,10
C)20,10D)20,20
28.若有以下定义和语句:
intu=010,v=0x10,w=10;
printf(“%d,%d,%d、n,u,v,w);”
则输出结果是:
A)8,16,10B)10,10,10
C)8,8,10D)8,10,10
29.若有以下定义和语句
charc1='b',c2='e';
printf(“%d,%c、n”,c2-c1,c2-'a'+'A');
则输出结果是:
A)2,MB)3,E
C)2,ED)输出项与对应的格式控制不一致,输出结果不确定
30.若有以下定义:
chars[20]=“programming”,*ps=s;
则不能代表字符o的表达式是
A)ps+2B)s[2]
C)ps[2]D)ps+=2,*ps
31.以下选项中合法的字符常量是
A)"B"B)'\010'C)68D)D
31.若有说明:
chars[]=”China”;则数组s的长度是
A)5B)10C)6D)10
32.设x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是
printf("%d,%d\n",x--,--y);
A)10,3B)9,3C)9,2D)10,2
33.x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是
A)INPUTx、y、z;B)scanf("%d%d%d",&x,&y,&z);
C)scanf("%d%d%d",x,y,z);D)read("%d%d%d",&x,&y,&z);
34.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为
A)0B)1C)2D)3
35.t为int类型,进人下面的循环之前,t的值为0
while(t=l)
{……}
则以下叙述中正确的是
A)循环控制表达式的值为0B)循环控制表达式的值为1
C)循环控制表达式不合法D)以上说法都不对
36.以下各选项企图说明一种新的类型名,其中正确的是
A)typedefv1int;B)typedefv2=int;
C)typedefintv3;D)typedefv4:
int;
37.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是
A)地址传递B)单向值传递
C)由实参传给形参,再由形参传回实参D)传递方式由用户指定
38.以下叙述中不正确的是
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效
39.若有说明:
inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是
A)i=*p;B)*p=*&j;C)i=&j;D)i=**p;
(16)以下定义语句中,错误的是
A)inta[]={1,2};B)char*a[3];
C)chars[10]="test";D)inta[n];
40.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是
for(i=5;i;i--)
for(j=0;j<4;j){……}
A)20B)25
C)24D)30
41.若有以下定义和语句:
char*s1=“12345”,*s2=“1234”;
printf(“%d、n”,strlen(strcpy(s1,s2)));
则输出结果是
A)4B)5
C)9D)10
42.若有以下定义和语句:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是
A)*pB)a[10]
C)*aD)a[p--a]
43.以下程序输出的结果是
#include"stdio.h"
#include"string.h"
main()
{charw[][10]={“ABCD”,“EFGH”,“IJKL”,“MNOP”};intk;
for(k=1;k<3;k++)
printf(“%s\n”,&w[k][k]);
}
A)ABCDB)DCBA
C)EFGAD)FKP
44.若有以下的定义:
inta[]={1,2,3,4,5,6,7,88,9,10),*p=a;
则值为3的表式是
A)p+=2,*(p)B)p=2,*p
C)p+=3,*pD)p=2,p
45.在以下一组运算符中,优先级最高的运算符是
A)<=B)=
C)%D)&&
46.若有以下定义和语句:
intw[2][3],(*pw)[3];pw=w;
则对w数组元素非法引用是
A)*(w[0]+2)B)*(pw+1)
C)pw[0][0]D)*(pw[1]+2)
47.若有以下程序片段:
charstr[]=“ab\n\012”;
printf("%d",strlen(str));
上面程序片段的输出结果是
A)3B)4
C)6D)12
48.函数调用:
strcat(strcpy(str1,str2),str3)的功能是
A)将串str1复制到串str2中后再连接到串str3之后
B)将串str1连接到串str2之后再复制到串str3之后
C)将串str2复制到串str1中后再将串str3连接到串str1之后
D)将串str2连接到串str1之后再将串str1复制到串str3中
49.以下对C语言函数的有关描述中,正确的是
A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B)C函数既可以嵌套定义又可以递归调用
C)函数必须有返回值,否则不能使用函数
D)C程序中有调用关系的所有函数必须放在同一个源程序文件中
50.以下叙述中不正确的是
A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。
B)在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。
C)在C中,外部变量的隐含类别是自动存储类别。
D)在C中,函数形参可以说明为register变量。
51.以下程序的输出结果是
#include
subl(chara,charb){charc;c=a;a=b;b=c;}
sub2(char*a,charb){charc;c=*a;*a=b;b=c;}
sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}
{chara,b;
a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);
a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);
a='A';b='B';sub1(a,b);putchar(a);putchar(b);
}
A)BABBABB)ABBBBA
C)BABABAD)BAABBA
52.以下对枚举类型名的定义中正确的是
A)enuma={one,two,three};
B)enuma{one=9,two=-1,three};
C)enuma={“one”,“two”,“three”};
D)enuma{“one”,“two”,“three”};
写出运行结果
1、main()
{inta[]={2,4,6,8,10},y=1,x;
for(x=0;x<=4;x++,x++)
y+=a[x];
printf(“%d”,y);
}
2、main()
{intn=10;
while(n>7)
{n--;
printf(“%d\n”,n);
}
}
3、intf(intn)
{staticints=1;
while(n)s*=n--;
returns;
}
main()
{
inti,j;
i=f(3);j=f(5);
printf("\nTheoutputis:
\n");
printf("i=%d,j=%d\n",i,j);
}
4、fac(intn)
{intf;
if(n==1)f=1;
elsef=n*fac(n-1);
printf(“%d!
=%d\n”,n,f);
}
main()
{inta=5;
fac(a);
}
5、以下程序的输出结果是
voidfun()
{staticinta,b;
a=100;b=200;}
main()
{inta=5,b=7;
fun();
printf("%d,%d\n",a,b);
}
7、以下程序的输出结果是
#include
#definePI3.14
#defineS(r)PI*r*r
main()
{floata,area;
a=4.0;
area=S(a);
printf("%f\n",area);
}
8、以下程序的输出结果是
main()
{inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
}
9、以下程序的输出结果是
main()
{charc='z';
printf("%c",c-24);
}
10、设有以下程序:
main()
{intn1,n2;
scanf("%d",&n2);
while(n2!
=0)
{n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序运行后,如果从键盘上输入129;则输出结果为:
11、以下程序的输出结果是
main()
{charst[20]="hello\0\t\\\";
printf(%d,%d\n",strlen(st),sizeof(st));
}
12、以下程序运行后的输出结果是()。
main()
{chars[]="9876",*p;
for(p=s;p
}
13、以下程序的输出结果是
main()
{inta,b;
for(a=1,b=1;a<=50;a++)
{if(b>=10)break;
if(b%3==1)
{b+=3;continue;}
}
printf("%d\n",a);
}
14、以下程序的输出结果是
inta,b;
voidfun()
{a=50;b=100;}
main()
{inta=3,b=5;
fun();
printf("%d,%d\n",a,b);
}
15、以下程序的输出结果是
unionmyun
{struct
{intx,y,z;}u;
intk;
}a;
main()
{a.u.x=6;a.u.y=7;a.u.z=8;
a.k=0;
printf(%d\n",a.u.x);
}
16、以下程序的输出结果是
#include
#definePI3.14
#defineS(r)4*PI*r
main()
{floata,area;
a=3.0;
area=S(a);
printf("%f\n",area);
}
17、以下程序的输出结果是
main()
{inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};
printf("%d%d%d%d\n",a[0][2],a[1][1],a[2][0]);
}
18、以下程序的输出结果是
main()
{charc='a';
printf("%c",c+2);
}
程序填空
1.以下函数的功能是:
找出一个3*4矩阵中的最大元素的值,以及其所在的行号和列号。
#include“stdio.h”
voidmain()
{inti,j,row=0,column=0,max;
inta[2][4]={{1,2,3,4},{7,8,9,5}};
max=();
for(i=0;i<=1;i++)
for(j=0;j<=3;j++)
if()
{
max=a[i][j];
row=i;
column=j;
}
printf(“max=%d,row=%d,column=%d\n”,max,row,column);
}
2.若有定义语句:
chars[50],d[50];intj=0,i=0;,且s中已赋字符串,请填空以实现字符串拷贝。
(注:
不得使用逗号表达式)
while(s[i]){d[j]=();j++;}
d[j]=’/0’;
3.以下函数的功能是:
求x的y次方,请填空。
doublefun(doublex,inty)
{inti;
doublez;
for(i=1,z=x;i returnz;} 4.若已定义: inta[8],i;以下fun函数的功能是: 在第一个循环中给前8个数组元素依次赋1、2、3、4、5、6、7、8;在第二个循环中使a数组前8个元素中的值对称折叠,变成1、2、3、4、4、3、2、1。 请填空。 fun(inta[]) {inti; for(i=1;i<=8;i++)()=i; for(i=0;i<4;i++)()=a[i]; } 编程题 1、输入一行字符串,将次字符串中最长的单词输出。 2、求一个4*4的整型矩阵对角线元素之和。 3、有10个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。 如果不存在,则输出‘无此数’。 4、用“起泡法”对输入的10个字符按由小到大顺序排序。 5、找出一个5*5的整型矩阵中最大元素及其该元素的下标值。 6、用筛选法求200之内的素数。 7、输出一个菱形图(使用数组)。 8、有一个数列1/2,2/5,3/10,4/17,5/26….,求出这个数列的前20项之和。 9、输入两个正整数m和n,求其最大公约数和最小公倍数。 10、有一篇文章,共有2行文字,每行有80个字符。 要求分别统计出其中英文大写字母,小写字母,数字,空格以及其他字符的个数。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习题 旅游 学院