C语言试题.docx
- 文档编号:18189256
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:50
- 大小:39.83KB
C语言试题.docx
《C语言试题.docx》由会员分享,可在线阅读,更多相关《C语言试题.docx(50页珍藏版)》请在冰点文库上搜索。
C语言试题
1999~2000学年“程序设计基础--C”试卷
试题一、单项选择题(每小题2分,共20分)
1.C语言程序的三种基本结构是顺序结构、选择结构和______结构。
A、循环B、递归C、转移D、嵌套
2.若x是单精度实型变量,表达式(x=10/4)的值是_____。
A、2.5B、2.0C、3D、2
3.表达式!
x等价于_____。
A、x==0B、x==1C、x!
=0D、x!
=1
4.若变量已正确定义且k的值是4,计算表达式(j=k--)后,_____。
A、j=3,k=3B、j=3,k=4C、j=4,k=4D、j=4,k=3
5.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为_____。
A、算术运算、赋值运算、关系运算B、关系运算、赋值运算、算术运算
C、算术运算、关系运算、赋值运算D、关系运算、算术运算、赋值运算
6.C语言中,形参的缺省的存储类说明是______。
A、autoB、staticC、registerD、extern
7.下列语句定义pf为指向float类型变量f的指针,_____是正确的。
A、floatf,*pf=f;B、floatf,*pf=&f;C、float*pf=&f,f;D、floatf,pf=f;
8.表达式sizeof(“key”)的值是______。
A、1B、2C、3D、4
9.将程序prog.c编译后运行:
prog–nlahelloworld则*(*(argv+2))是______。
A、’p’B、‘-‘C、‘h’D、‘w’
10.若a是整型变量,表达式~(a^~a)等价于______。
A、~aB、1C、0D、2
试题二、填空题(每小题3分,共24分)
1.写出语句printf("%d,%o,%x",0x12,12,012);的输出结果。
2.写出下列程序段的输出结果。
#defineF(x)x-2
#defineD(x)x*F(x)
printf("%d,%d",D(3),D(D(3)));
3.写出下列程序段的输出结果。
intk;char*s=“ABC”;
for(k=10;k!
=0;k--);
printf("%d",k);
while(*s++)putchar(*s);
4.写出下列程序的输出结果。
voidfun(intk)
{staticinta;
printf(”%d,”,a);
a+=k;
}
main()
{intk;
for(k=1;k<=3;k++)
fun(k);
}
5.写出下列程序的输出结果。
main()
{structst{
intx,y;
}a[4]={{10,20},{30,40},{50,60},{70,80}};
structst*p=a;
printf("%d,",p++->x);
printf("%d,",++p->y);
printf("%d\n",(a+3)->x);
}
6.写出下列程序的输出结果。
#include"stdio.h"
voidmain()
{intk,j,m,n,a[6][6],b[6];
m=3,n=2;
for(k=0;k for(j=0;j a[k][j]=k*n+j+1; for(k=0;k b[k]=0; for(j=0;j b[k]+=a[k][j]; } for(k=0;k printf("%d,",b[k]); } 7.写出下列程序的输出结果。 #include longfib(intg) {switch(g){ case0: return(0); case1: case2: return (2); } printf("g=%d,",g); return(fib(g-1)+fib(g-2)); } main() {longk; k=fib(4); printf("k=%ld\n",k); } 8.用typedef定义一个长度为10的整型数组NUM。 试题三、程序阅读题(每题5分,共20分) 1.写出下列程序的输出结果。 #include intx,y,z; voidp(int*x,inty) {--*x; y++; z=*x+y; printf("%d,%d,",*x,y); } voidmain() {x=5;y=2;z=0; p(&x,y); printf("%d,%d,%d--",x,y,z); p(&y,x); printf("%d,%d,%d\n",x,y,z); } 2.写出下列程序的输出结果,并指出该程序的功能。 #include voidmain() {intx,k; x=14; for(k=0;x! =0;x&=x-1) ++k; printf("%d\n",k); } 3.写出下列程序的输出结果。 #include voidmain() { intv[]={6,3,4,1,2};intn=5; intgap,j,k,temp; for(gap=n/2;gap>1;gap/=2) for(j=gap;j for(k=j-gap;k>=0&&v[k]>v[k+gap];k-=gap){ temp=v[k]; v[k]=v[k+gap]; v[k+gap]=temp; } for(k=0;k<5;k++)printf("%d,",v[k]); } 4.输入123450后,写出下列程序的输出结果。 #defineLENsizeof(structline) #defineNULL0 structline{ intnum; structline*next; } main() {structline*p1,*p2,*head; intj,k=0; p1=p2=head=(structline*)malloc(LEN); scanf("%d",&p1->num); while(p1->num! =0){ p1=(structline*)malloc(LEN); scanf("%d",&p1->num); if(p1->num==0)p2->next=NULL; else{p2->next=p1; p2=p1; } k++; } p2->next=head;p1=head->next;p1=p1->next; for(j=1;j<=k;j++){ printf("-->%d",p1->num); p1=p1->next; } } 试题四、程序填空题(每空2分,共20分) 1.输入10个点的坐标(设坐标为整数值),输出距原点最远的点(设唯一)的坐标及该点距原点的距离. #include voidmain() { struct{ intx,y; floatlength; }point[10]; intk,sub=0; for(k=0;k<10;k++){ scanf("%d%d",&point[k].x,&point[k].y); point[k].length= (1) } for(k=1;k<10;k++) if( (2))(3) printf("(%d,%d)%f\n",point[sub].x,point[sub].y,point[sub].length); } 2.将输入的n个字符串连接成1个字符串,然后输出该字符串. #include #include voidmain() { charstr[10][20],string[200]; intk,n; scanf("%d",&n); for(k=0;k gets(str[k]); (4) for(k=1;k (5) puts(string); } 3.函数xtoi的功能是将放在字符串中的十六进制数(可以出现’0’~’9’、’a’~’f)转换成十进制整数。 例如: 调用xtoi("1f")将返回31。 xtoi((6)) {intk,d=0; for(k=0;s[k]==’’||s[k]==’\t’;k++); while(s[k]>=’0’&&s[k]<=’9’||s[k]>=’a’&&s[k]<=’f’){ if(s[k]>='0'&&s[k]<='9') (7) if(s[k]>='a'&&s[k]<='f') (8) k++; } returnd; } 4.函数month_day(year,yearday,&month,&day)的功能是将给定的某年第几天转换为相应的月和日。 例如: 调用month_day(1988,60,&m,&d)后,m的值是2,d的值是29(即1988年的第60天是1988年2月29日)。 判别闰年的条件: 能被4整除但不能被100整除或能被400整除。 voidmonth_day(intyear,intyearday,int*pmonth,int*pday) {staticintday_tab[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}}; intk,leap; leap=year%4==0&&year%100! =0||year%400==0; for(k=1;yearday>day_tab[leap][k];k++) (9) *pmonth=(10) *pday=yearday; } 试题五、编程题(共16分) 1.[程序说明](5分) 请编写函数sum_fact(number),返回number的因子之和。 (能整除number的数就是它的因子,number定义为int) 例如sum_fact(6)=12(因为1,2,3,6是6的因子) 2.[程序说明](11分) 文本文件input.txt中存放了一批整数,将其中每个数的因子之和顺序写入文件output.txt。 (必须调用第1小题中定义的函数sum_fact(number)计算number的因子之和) 例: 若文件input.txt中存放了1,2,6,则每个数的因子之和分别是1312,它们被写入文件output.txt。 2000~2001学年“程序设计基础--C”试卷 一、单项选择题(每题2分,共30分) 1. ______是合法的用户自定义标识符。 A、b-bB、floatC、 2. 若变量已正确定义并赋值,表达式______不符合C语言语法。 A、a*b/c;B、3.14%2C、2,bD、a/b/c 3. _____是不正确的字符常量。 A、'\n'B、'1'C、"a"D、'\101' 4. 在C程序中,用_____表示逻辑值“真”。 A、1B、非0的数C、非1的数D、大于0的数 5. ______把x、y定义成float类型变量,并赋同一初值3.14。 A、floatx,y=3.14;B、floatx,y=2*3.14; C、floatx=3.14,y=x=3.14;D、floatx=y=3.14; 6. 若变量已正确定义,表达式______的值不是2。 A、2&3B、1<<1C、a==2D、1^3 7. 若变量已正确定义,语句“if(a>b)k=0;elsek=1;”和______等价。 A、k=(a>b)? 1: 0;B、k=a>b; C、k=a<=b;D、a<=b? 0: 1; 8. 设变量定义为“inta,b;”,执行下列语句时,输入_____,则a和b的值都是10。 scanf("a=%d,b=%d",&a,&b); A、1010B、10,10C、a=10b=10D、a=10,b=10 9. 下列程序的输出结果是_____。 fun(inta,intb,intc) {c=a*b;} main() {intc; fun(2,3,c); printf(”%d\n”,c); } A、0B、1C、6D、无法确定 10. 在C程序中,若对函数类型未加说明,则函数的隐含类型为_____。 A、intB、doubleC、voidD、char 11. 表达式strlen(”hello”)的值是_______。 A、4B、5C、6D、7 12. 设变量定义为“inta[4];”,则表达式______不符合C语言语法。 A、*aB、a[0]C、aD、a++ 13. 设变量定义为“intx,*p=&x;”,则&*p相当于_____。 A、pB、*pC、xD、*&x 14. 若变量已正确定义,____不能使指针p成为空指针。 A、p=EOFB、p=0C、p=’\0’D、p=NULL 15. 对于以下的变量定义,表达式______不符合C语言语法。 structnode{ intlen; char*pk; }x={2,"right"},*p=&x; A、p->pkB、*p.pkC、*p->pkD、*x.pk 二、填空题(每题2分,共20分) 1. 表示“x≥y≥z”的C表达式是_______。 2. 下列程序段的输出是______。 printf("%o\n",010<<1^1); 3. 下列程序段的输出是______。 intk; floats; for(k=0,s=0;k<7;k++) s+=k/2; printf("%d,%f\n",k,s); 4. 下列程序段的输出是_______。 #definef(a,b,x)a*x+b printf("%d,%d\n",f(3,2,1),f(6,5,f(3,2,1))); 5. 下列程序段的输出是_____。 main() {intk; for(k=1;k<5;k++){ if(k%2)printf("*"); elsecontinue; printf("#"); } } 6. 下列程序段的输出是_____。 #include intf(intx) {staticy=1; y++; x+=y; returnx; } voidmain() {intk; k=f(3); printf("%d%d\n",k,f(k)); } 7. 下列程序段的输出是_____。 int*p,*q,k=5,j=6; q=&k;p=q;q=&j; printf("%d",*p); 8. 函数 voidf(chars[],chart[]) {intk=0; while(s[k]=t[k])k++; } 等价于 voidf(char*s,char*t) {while(_____); } 9. 下列程序段的输出是_____。 char*a[2]={"one","two"},**p=a; printf("%s,",*(p++)+1); printf("%c\n",**p-1); 10. 用typedef定义一个文件指针FP。 三、程序阅读题(每题4分,共16分) 1. 输入elephant后,下列程序的输出结果是_______。 #include voidmain() {inti=0,k,ch; staticintnum[5]; charalpha[]={'a','e','i','o','u'},in[80]; gets(in); while(in[i]){ for(k=0;k<5;k++) if(in[i]==alpha[k]){ num[k]++; break; } i++; } for(k=0;k<5;k++) if(num[k])printf("%c%d",alpha[k],num[k]); printf("\n"); } 2. 下列程序的输出结果是_______。 #include voidf(intn) {if(n<0){ putchar('-'); n=-n; } if(n/10)f(n/10); putchar(n%10+'0'); } main() { f(-610); } 3. 输入01027后,下列程序的输出结果是_______。 #include voidp(intv[]) {inti,k,temp; for(i=1;i<4;i++) for(k=i-1;k>=0&&v[k] temp=v[k]; v[k]=v[k+1]; v[k+1]=temp; } } main() {intk,a[4]; for(k=0;k<4;k++) scanf("%d",&a[k]); p(a); for(k=0;k<4;k++) printf("%d",a[k]); } 4. 下列程序编译后生成t.exe,运行tinputoutputzoooil的输出结果是_______。 voidmain(intargc,char*argv[]) { intk; char*p=argv[1]; for(k=2;k if(strcmp(argv[k],p)>0)p=argv[k]; printf("%s\n",p); } 四、程序填空题(每空2分,共20分) 1. 验证哥德巴赫猜想: 任何一个大于6的偶数均可表示为两个素数之和。 要求将6~100之间的偶数都表示成两个素数之和。 素数指只能被1和自身整除的正整数,1不是素数,2是素数。 #include intprime(intn)/*判断n是否为素数*/ {intk; for(k=2;k<=n/2;k++) if(n%k==0)return0; return (1); } main() {inti,k; for(i=6;i<=100;i+=2) for(k=2;k<=i/2;k++) if( (2)){ printf("%d=%d+%d\n",i,k,i-k); break; } } 2. 下列程序调用swap函数交换a和b的值,并输出交换后的a和b的值。 程序的输出结果是: Afterswap5,3。 voidmain() { inta,b; a=3,b=5; swap((3)); printf("Afterswap%d,%d",a,b); } swap((4)) {intt; (5); (6); (7); } 3. 函数del将头指针为head的链表中所有的节点全部删除,并释放相应的内存空间。 structnode{ intk; structnode*next; }; structnode*del(structnode*head) {structnode*p,*q; p=head; while((8)){ (9); free(p); (10); } returnNULL; } 五、编程题(第1题4分,第2题10分,共14分) 1. 对任意输入的x,用下式计算并打印出y的值。 exx>10 y=0x=10 3x+5x<10 2.输出文本文件input.txt中的非空格字符。 2000~2001学年《程序设计基础-C》试卷 一、单项选择题(每小题2分,共30分) 1. C语言程序中可以对程序进行注释,注释部分必须用符号_____括起来。 A、‘{‘和’}’B、‘[‘和’]’C、“/*”和”*/”D、“*/”和”/*”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 试题