C语言程序设计
(2008/2009学年第二学期)
1 . switch(i) {case0:i+=l; case 10: case 11:
1+=1; i+=l; i+=l;
B.11C.12D.13
四 五 八 七 八 九 十 总分 default: } A.10
9.下列语句中不正确的字符串赋值或初始化的是_L。
得分
一.选择题(满分30分,每题2分)
1.若a、b、c都定义为int类型且初值为0,则以下不正确的赋值语句是―D
A.a=bB.a+=y+3; 二c+8; C.c++;
D.a+b+c
2.已知intj,i=l;执行语句\"j=i++;”后,
变量i的值是B
A.1B.2 C.-1D.-2 3.执行下面程序:
-include\"stdio.h〃 、
voidmain()
一 ,
inta=l,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf(u
%d,%d,%dw
,a,b,c); }
则输出结果是:
A
C. 4.若要求在A.2,2,4 if后一对圆括号中表示B.4,2,3
5,5,3
D.4,2,5
a不等于。的关系,则能正确表示这一关系的表达式 为Do
A. a<>0B.
!a
C.a=0D.a
5. for (j=0;
j++);循环结束后,j的值是B A. 12
B.11
C.10D.9
6. C语言中函数返回值的类型由
D决定的。
A.return语句中的表达式类型
B.调用该函数的主调函数的类型 C.调用函数时临时决定 D.定义函数时所指定的函数类型
7. 下列说法中正确的是
B
A 在调用用户自定义函数时,必须对其进行声明。 B 函数可以返回一个值,也可以什么值也不返回。
C 说明函数时,必须明确参数的类型和返回值。 D 在程序设计中空函数没有什么作用。
A.charstr[10]={/,
strings//
};B.charstr[8]={,
s','t','r', C.charstr[10];str=\"strings”; D. charstr[]=\"strings”;
10.有如下程序:
#include 该程序的运行结果是D A.3 B.2 C.1 D.0 11.在函数调川,对参数传递的说法正确的是 Ao A 实参和形参各占一个独立的存储单元。 B 实参和形参始终共用一个相同的存储单元。 C 可以由用户指定实参和形参是否共用一个存储单元。 D 可以由系统指定实参和形参是否共用一个存储单元 12.以下正确的程序段是 C A. char strl[]=\"12345〃,str2[]=〃abcdef〃;strcpy(strl,str2); B. char str[10],*st=〃abcde〃;strcat(str,st); C. char str[10]=〃\",*st=〃abed。\";strcat(str,st); D. char *stl=”12345”,*st2二〃abcde〃;strcat(stl,st2); 13.若有定义:int*p[4];则标识符p B。 A.是一个指向整型变量的指针 B.是一个指针数组名 C.是一个指针,它指向一个含有四个整型元素的一维数组 D.说明不合法 14.以下程序的运行结果是 C. typedefunion ( longa[l]; intb[2]; charc[8]; }TEST; TESTm; main() ( printf(<< %d\\n,\" ,sizeof(m)); ) A.32B.16C.8D.24 15.设有以下结构体类型: structst ( char name[8]; intnum; float s[4]; }student[50]; 并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件file,txt 中,以下不正确的形式是C. A. fwrite(student,sizeof(structst),50,fp); B. fwrite(student,50*sizeof(structst),1,fp); C. fwrite(student,25*sizeof(structst),25,fp); D. for(i=0 ; i<50 ; i++) fwrite(student+i,sizeof(structst),1,fp); 得分 二、填空题(满分20分,每空2分) 1 .每个C语言编写的程序必须有一个,并且只能有一个主函数。 2 .设x和y均为int型变量,且x=l,y=2,则表达式3+x/y的值为3 。 3 .若有定义:inta[]={2,4,6,8,10,12},*p;a;则*(p+1)的值是4 。 4 .设x=0xAB,若要通过x|y使x低4位置1,高4位不变,则一OxOF。 5 .测试char型变量m的最高位数据是否为1的表达式是a&0x80 。 6 .若x=2,尸一3贝ljx&&y的结果是 1 。 7 .和二进制数101等值的十进制数为 5 。 8 .定义inti=l;执行语句while(i++<5);后,i的值为6 。 9.下面程序的运行结果为22222 。 ^include int i=2, j=5, s; s=i; for (1—j;) s=s*10+i; printf ( \"%d\",s); ) 10.写出程序的执行结果:i=10, main () { int i=0, j=0; while (i<10) i++; 得分 三、读程序写结果(满分16分,每题1.判断下面程序的运行结果。 #include int a=0,b=l; int fun(int a,int b); printf(,'%d\\n,',fun(a,b)); printf(H%d\\nu ,fun(a,b)); ) int fun(int m, int n) ( static s=l; s++; retum(s*(m+n)); ) 2 程序运行的结果为:3 4分) 2.以下程序的输出结果是 structchain 3,2 ttinclude〃stdio.h〃 intx; inty; structchain voidmain() m[0].x=l m[0].y=2 m[l].x=3 m[l].y=4; m[0].p=&m[l]; m[l].p=m; printf(/z%d,%d\\nz,,(m[0].p)->x,(m[l].p)->y); 3.卜.面程序的运行结果是7654321 ttinclude chart,*sl,*s2; sl=w; s2=w+n-l; while(si 。 voidmain() charp□二〃1234567〃; fun(p,strlen(p)); puts(p); 4.下面程序的输出结果为4,2 ttinclude\"stdio.hstructks ( inta; int*b; }s[4],*p; voidmain() ( intn=l,i; printf(( s[i].a=n; s[i].b=a; n=n+l; } P=&s[0]; p++printf() ° 〃 〃\\n〃); for(i=0;i<4;i++) ; , z %d,%d\\n ,z ,(++p)->a,(p++)->a); 得分 四、程序设计(满分34分) 1 .编写一个程序,判断某一年是否为闰年。(6分) #include intyear; printf(\"inputyear=\"); scanf(,&year); if((year%4==0&&year%100!0)||year%400==0) printf(\"%4disaleapyear\\n\else printf(isnotaleapyear\\n\ 2.用公式求乃的近似值,直到最后一项的绝对值小于IO\"为止,请编程实 4.将一个整数字符串转换为一个整数,如〃-1234〃转换为-1234。(10分) #include chnum(char*p); main() 现。(8分) #include\"math,h” voidmainO ( ints;floatn,t,pi; t=1;pi=0;n=l.0;s=l; chars[6]; intn; gets(s); while((fabs(t))>lE-6) ( pi=pi+t; n=n+2; s=一s; t=s/n; ) pi=pi*4; printfC€pi=%10.6f\\n\ 3.编写程序,利用子函数实现计算字符串的长度。线#include int length(char*s); void main() ( char a[100]; int i; printf(/zPleaseinputthestring:\\nz/); gets(a); i=length(a); printf(,z \\nThelengthofstringis%d〃,i); ) intlength(char*s) ( char*p=s; while(*p) p++; return(p-s); 分) if n=-chnum(s+l); else n=chnum(s); printf(\"刎\\n〃,n); ) chnum(char*p) ( intnum=0,k,len,j; len=strlen(p); for(;*p!='\\0';p++) ( k二*p」O'; j=(-len); while(j—>0) k=k*10; num=num+k; ) return(num); ) (10 因篇幅问题不能全部显示,请点此查看更多更全内容