二、类型及表达式 一)合法的标志符: 例题:
1. 是合法的用户自定义标识符的( D )
A)ah-spks B)double C)
A)%x B)a+b C)a123 D)test! 3. 以下不能定义为用户标识符的是( C )
A) Void B) b_2 C) int D) name
二)合法的整型常量 例题:
1. 以下选项中可作为C语言合法整数的是( D )
A) 11010 B B) 0583 C) x2b2 D) 0xafb
三)合法的实型常量 例题:
1. 以下选项中可作为C语言合法常量的是(A)
A)-80. B)-080 C)-8e1.0 D)-80.0e
四)合法的字符型常量 例题:
1. 设有说明语句:char a=?\\123?;则变量a( A )
A)包含1个字符 B)包含2个字符 C)3个字符 D)说明不合法 2. C 语言中,“\\x5d”在内存中占用的字节数是( A )
A) 2 B) 5 C) 4 D) 1
3. 字符串“\\t\\x42\\\\bcd\\n”的长度是( A )。
A)7 B)10 C)12 D)13
五)各种基本类型变量所占的字节数 例题:
1. 下列式中,值不为4的表达式是( C)
A)sizeof(unsigned long) B)sizeof(long) C)sizeof(unsigned int) D)sizeof(float)
六)合法的表达式 例题:
1. 设变量a、b、c已定义并赋值,则下列表达式中符合C语言语法规则的是( BC )
A)a=5++ B)a=b=c++ C)a%=2 D)b=a+1=2
七)表达式的值 例题:
1. 设整型变量a的值为2,下列表达式值为1的是( C )
A)a%3 B)a/3 C)--a D)a++ 2. 下列表达式的值为0的是( A )
A) 7/8 B) 7%8 C) 7/8.0 D) 7<8
3. 设float m=4.0, n=4.0; 使m为10.0的表达式是( D )
A) m-=n*2.5 B) m/=n+9 C) m*=n-6 D) m+=n+2 4. 逗号表达式(a=4*5,a*2),a+15 的值是( A )
A) 35 B) 40 C) 55 D) 20
八)++、--运算 例题:
当i=4,j=5时,表达式3-(i++)*4+(--j)的值如何,i,j的值多少? 表达式值为-9,i=5,j=4
九)表达式的类型 例题:
1. 下列式中,最终运算结果的数据类型不是双精度的表达式的是( A )
A)(int)(3+3.0) B)1e-3 C)(double)(3) D)(int)3.0+3.0
二、顺序结构 例题:
1. putchar函数可以向终端输出一个( D )
A)整数 B)实数 C)字符串 D)字符
二)printf和scanf语句的使用方法: 例题:
1. 设有语句scanf(%d,%d”,&m,&n);要使m、n的值依次是2、3,正确是输入是( B )
A)2 3 B)2,3 C)2;3 D)2
2. 设变量定义为int a,b;执行下列语句时,输入( B),则a和b的值都是10
scanf(“%d,%d”,&a,&b);
A)10 10 B) 10,10 C)a=10 b=10 D)a=10,b=10 3. 有以下程序
main()
{ int m,n,p;
scanf(\ printf(\
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是( A )
A)m=123n=456p=789 B)m=123 n=456 p=789 C)m=123,n=456,p=789 D)123 456 789
例题:
1. 有如下程序段:
int a=3,b=15; float f=7.5;
printf(“%.1f”,(float)a+b/2+(int)f%3);
执行该程序段后,运算结果为:( B ) A)11.5 B)11.0 C)11 D)12.0
三、选择结构
一)关系表达式、逻辑表达式和条件表达式 例题:
1. 在C程序中,用( B )表示逻辑”真”。
A)1 B)非0的数 C)非1的数 D)大于0的数
2. 若有定义:int x=2,y=3,z=4;则表达式!(x+y)+z-1&&y+z%2的值为( C ) A)4 B)0 C)1 D)2
3. 设int a=0,b=0,c=0;c=++a||b++;则a、b、c值分别为( d ) A)0 1 0 B)1 1 1 C)1 1 0 D)1 0 1 4. 执行语句:int a=1,b=0,c;c=a>0||++b;后,b的值为( a ) A)0 B)1 C)2 D)不确定
5. 设int x,y,z=4;x=y=++z;x=(y>z)?x+2:x++;则x的值是( C ) A)4 B)5 C)6 D)7
6.
为表示关系x>y>=z,则正确的c语言表达方式为( C )。 A)(x>y>=z) B)(x>y)and(y>=z)
C)(y
7. 若变量ch为char类型,能正确判断出ch为大写字母的表达式是(A)?A?<=CH<=‘Z’ B)(ch>=?A?)||(ch<=?Z?) C)(?A?<=ch) and (?Z?>=ch) D)(ch>=?A?)&&(ch<=?Z?)
二)if语句 例题:
1.有以下程序 main( )
{ int a=0,b=0,c=0,d=0; if(a=1)b=1;c=2; else d=3;
printf(%d,%d,%d,%d\\n,a,b,c,d); }
程序输出( D )
A)0,1,2,0 B)0,0,0,3 C)1,1,2,0 D)编译有错
2.以下程序运行后的输出结果是 4599 main() {
int a=3,b=4,c=5,t=99;
if(b } D ) 三)switch语句 (1)switch的执行过程 (2)break的用法 例题: 1.#include { int x=1,y=1,a=0,b=0; switch(x) {case 1:switch(y) { case 0:a++; case 1:b++; case 2:b++;break; } case 2:a++;b++;break; case 3:a++;b++; } printf(“a=%d,b=%d\\n”,a,b); } 输出结果:a=1,b=3 2.#include main() {charc; while((c=getchar())!=’\\n’) {switch(c-‘1’) {case 0: case 1:putchar(c+2); case 2:putchar(c+3);break; case 3:putchar(c+4); default:putchar(c+1);break; } printf(“\\n”); } } 输出结果: 6 45 34 1 四)算法 输入出租车里程S,输出应付车费F。 S和F的关系如下: 8?F???8?(S?3)*2S??3 S?3#include scanf(“%f”,&S); if(S<=3) F=8; else F=8+(S-3)*2; printf(“F=%f\\n”,F); } 四、循环结构 一)循环条件均以条件为真(非0)进行循环,以条件为假(0)结束循环) 例题: 1. 以下叙述正确的是(D ) A) do-while语句构成的循环不能用其它语句构成的循环来代替 B) do-while语句构成的循环只能用break语句退出 C) do-while语句构成的循环,在while后的表达式为非零时结束循环 D) do-while语句构成的循环,在while后的表达式为零时结束循环 2. 设有程序段: int k=10; while(k=0) k=k-1; 则循环体执行的次数为( C ) A)10次 B)9次 C)0次 D)1次 3. 下列( D ) 循环不是无限循环 A) for(y=0; x=1 ; ++y); B) for(; ; x=0); C) while (x=1) {x=1; } D) for(y=0,x=1;x> ++ y; x++) 二)三种循环的执行流程 例题: 1. 设变量y值为3,执行下列循环语句后,变量y的值的是(C ) do y++; while(y++<4); A)3 B)4 C)5 D)6 2. 执行语句for(I=1;I++<4;); 后变量I的值是( C ) A)3 B)4 C)5 D)0 三)循环嵌套的执行次数 例题: 1.#include “stdio.h” void main() { int I,j; for(I=0;I<=3;I++) { for(j=0;j printf(”%d”,I); printf(“*\\n”); } } 输出结果: * 1* 22* 333* 四)break 和continue的用法 例题: 1.有以下程序 void main() { int a=1,b; for(b=1;b<=10;b++) { if(a>=8) break; if(a%2==1) { a+=5; continue;} a-=3; } printf(\ } 输出结果:4 2.#include { int I, m=0, n=0, k=0; for(I=5;I<=7;I++) switch(i/6) { case 0: m++; n++; case 6: n++; break; default: k++; n++; } printf(“%d,%d,%d\\n”, m, n, k); } 输出结果:1,4,2 算法略 五、数组 一)数组语法 1. 数组定义为int a[10][10];,则数组a有( A A)100 B)81 C)20 D)121 2. 以下一维数组 a的正确定义是(D ) A)int a(10); B)int n=10,a[n]; C) int n; D)#define N 10 )个数组元素。 Scanf(“%d”,&n); int a[N]; Int a[n]; 3. 设有语句”int a[]={3,4,5,9,8,7};”则表达式a[1]-a[4]的值是( C ) A)-6 B)6 C)-4 D)2 4. 以下不能正确定义二维数组的是( D ) A) int a[2][2]={ {4}, {5}};B) int a[][2]={4,5,6,7}; C) int a[2][2]={ {4},5,6}; D) int a[2][]={{4,5},.{6,7}}; 二)字符串 例题: 1. 以下程序的输出结果是( B) #include { char st[20]=”2000\\0\\t\\\\”; printf(“%d,%d\\n”,strlen(st),sizeof(st)); } A)7,7 B)4,20 C)10,20 D)20,20 2. 要将字符串a连接到字符串b后面,使用下面( D)语句 A)strcpy(a,b); B)strcat(a,b); C)strcpy(b,a); D)strcat(b,a) 三)算法 例题: 1. 已知字符串char s[50]=”Iamstudent.”,请编写程序将字符a插入到student之前,结果 为“Iamastudent”。 程序如下: #include car s[50]=”Iamstudent.”; int j,len; len=strlen(s); s[len+1]=’\\0’ for(j=len-1;j>=3;j--) s[j+1]=s[j]; s[3]=’\\0’ puts(s); } 2. 有一个3×4的矩阵,要求编程以求出其中值最大的那个元素,以及它所在的行号和列 号。 程序如下: #include void main() { int i,j,row,col,max; static int a[3][4]={{3,5,1,8},{6,4,11,7},{9,3,10,2}}; max=a[0][0]; for(i=0;i<_3_;i++) /*$BLANK1$*/ for(j=0;j<4;j++) if(a[i][j]>max) /*$BLANK2$*/ { max=_ a[i][j]__; /*$BLANK3$*/ row=i; col=j; } printf(\ } 六、函数 一)函数语法 例题: 1. 在C程序中,若对函数类型未加说明,则函数的隐含类型为( A ) A)int B)double C)void D)char 2. C语言中的函数( D ) A)可以嵌套定义 B)不可以嵌套调用 C)可以嵌套定义,但不能递归调用 D)嵌套调用和递归调用都可以。 3. 有以下函数定义: void fun( int n, double x) { ????} 下面函数调用正确的是( A ) A) fun( x, n) B) k=fun(10,12.5) C) fun(int x, double y) D) void fun(n, x) 4. 有以下程序 #define N 20 fun(int a[],int n,int m) { int i,j; for(i=m;i>=n;i--) a[i+1]=a[i]; } main() { int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,2,9); for(i=0;i<5;i++) printf(\} 程序运行后的输出结果是( C ) A)10234 B)12344 C)12334 D)12234 5. 有以下程序 void sum(int a[]) { a[0] = a[-1]+a[1]; } main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; sum(&a[2]); printf(\ } ( A) A)6 B)7 C)5 D)8 6. 以下程序运行后的输出结果是: 4 3 3 4 4 3 4 3 二)递归函数 例题: 【程序1】#include”stdio.h” int fun( int n) { if(n<10) return n; else return (n)*fun(n/10); } main() { printf(“%d”,fun(218)); } 运行结果: 16 【程序2】 # include if( n== 1|| n==2) s=2; else s=n+ fun(n-1); return s; } void main ( ) { printf(“\\n %ld”, fun (5)); } 运行结果: 14 三)变量的作用域和存储类型(见课件) 例题: 1. C语言auto型变量是( A ) A) 存储在动态存储区中 B) 存储在静态存储区中 C) 存储在外存储器中 D) 存储在计算机CPU的寄存器中 【程序1】int w=2; int f(int x) {int y=1; static int z=3; y++;z++; return(x+y+z); } main() { int k; for(k=0;k<3;k++) printf(“M”,f(w++)); } 运行结果:8 10 12 【程序2】以下程序运行后的输出结果是: fun(int a) { int b=0;static int c=3; b++; c++; return (a+b+c); } main() { int i,a=5; for(i=0;i<3;i++) printf(\ \ printf(\ } 运行结果: 0 10 1 11 2 12 七、指针 例题: 1. 设有定义:int s[]={1,3,5,7,9},*p=&s[0];则值为7的表达式是( C ) A)*p+3 B)*p+4 C)*(p+3) D)*(p+4) 2. 若有以下定义,则值为4的表达式是( A ) int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; A)p+=3,*(p++) B)p+=3,*++p C)p+=4,*p++ D)p+=4,++*p 3. 若有定义及赋值: int a[10]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9} , *p; p=a; 则引用a中的值是5的元素的表达式为( C ) A) a[4] B) *(p+4) C) *(a+5) D) *p[5] 4. 设int x[]={1,2,3,4,5,6},*p=x; 则值为3的表达式是 ( A ) A) p+=2, *p++ B) p+=2, *++p C) p+=3 D) p+=2 , ++*p 5. 若有定义及赋值: int a[5][5], (*p)[5]; p=a; 则下列各式中表示地址的表达式为( C ) A) a[3][3] B) *(*(p+1)) C) a[2]+2 D) *(*(a+3)+1) 6. 设有一下语句 int a[4][2]={1,2,3,4,5,6,7,8}; 则*(*(a+2)+1) ( D ) A)3 B)4 C)5 D)6 四)字符串及字符串数组涵义 例题: 1. 不正确的赋值或赋初值方式是( B ) A)char str[]=”Hell0 2006” B)char str[20];str=”Hell0 2006”; C) char *p=”Hell0 2006” D) char *p;p=”Hell0 2006” 2. 下列语句中合法的数组定义是( D ) A)char a[3][]={‘abc’,’12’,”fox”} B)char a[][3]={‘abc’,’12’,”cd”} C)char a[3][]={‘a’,”12”,”fox”} D)char a[][3]={“a”,”12”,”cd”} 3. 以下语句或语句组中,能正确进行字符串赋值的是 ( D ) A)char *sp; *sp=\ B)char s[10]; s=\C)char s[10]; *s=\ D)char *sp=\ 八、宏定义、结构体与共用体 一)宏定义 例题: 1. 运行程序: #define Tap(X) 2*X+1 main() { int a=6,k=2,m=1; a+=Tap(k+m); printf(“%d\\n”,a); }则输出结果是( A ) A)12 B)13 C)7 D)6 2. 对于以下宏定义 # define M(x) x*x # define N(x,y) M(x)+M(y) 宏调用N (2, 2+5)执行后,值为( A ) A) 21 B) 16 C) 9 D) 19 二)结构体 例题: 1. 设有结构体及其数组和指针变量的定义语句 struct {int x;} y[2],*p=y; 则下列表达式中不正确的表示结构体成员的是( B ) A)(*p).x B) (p+1).x C)y[0].x D)(&y[1])->x 2. 设有定义struct st { int x ; float y; } time, *t; t=&time;则对于time 中成员x 的正确引用是( C ) A) w.time.x B) t. x C) (*t). x D) time->x 三)共用体 例题: 1. 若定义union ex{int I;float f;char a[10];} x;则sizeof(x)的值是( C ) A)4 B)6 C)10 D)16 2. 设有下列结构型变量w的定义,则表达式”sizeof(w)”的值是( C ) struct { long num; char name[15]; union{float y;short z;} yz; }w; A)19 B)20 C)23 D)25 四)typedef 例题: 1. 以下语句中,指针p的data域正确的引用方式为( B ) typedef struct node { int data; struct node lchile,rchild; }Btree; Btree *p; A)p.data B)p->data C)(*p)->data D)p[data] 2. 设有如下说明 typedef struct ST { long a; int b; char c[2]; } NEW; 则下面叙述中正确的是 ( C ) A)以上的说明形式非法 B)ST是一个结构体类型 C)NEW是一个结构体类型 D)NEW是一个结构体变量 3. 以下对结构体类型变量td的定义中,错误的是 ( C ) A)typedef struct aa B)struct aa { { int n; int n; float m; float m; }AA; } ; AA td; struct aa td; C)struct D)struct { { int n; int n; float m; float m; }aa; }td; struct aa td; 九、位运算 例题:请计算:(题有变) 4&6=4 3|5=7 ~4=-5 5>>2=1 5<<2=20 十、文件 例题: 1. 为了向二进制文件尾部追加内容,打开文件的方式应采用( A ) A) ‘ab’ B) ‘rb+’ C) ‘wb’ D) ‘wb+’ 2. 设有下面结构体 struct st {char name[8]; int num; float s[4]; }student[50]; 若数组student中已有数据,将这些元素写到磁盘文件中,下列不正确的形式是( C)。 A)fwrite(student,sizeof(struct st),50,fp); B)fwrite(student,50*sizeof(struct st),1,fp); C)fwrite(student,25*sizeof(struct st),25,fp); D)for(I=0;I<50;I++) fwrite(student+i,sizeof(struct st),1,fp); 3. 当顺利地执行了文件关闭操作时,fclose的返回值是( C ) A)-1 B)TURE C)0 D)1 模拟试卷1答案 一、选择题(40分) 1-5 CBACD 6-10 BDCAA 21-25 CDBDC 26-30 ABCCB 二、填空题(每空2分,共20分) 1.F10 2.11.5 3.30 6.12345 7.ef 8.16 11-15 CADDC 31-35DCBBD 16-20 ABDBC 36-40 CCBCA 4.2 9.feof(fp) 5.3 10.7 三、阅读理解题 1.35 2.3,4 3.228 四、编程题 1.#include for(i=1;i<=99;i=i+2) { s=s+1.0/i; } printf(“.2f”s); } 2.#include for(i=5;i>=1;i--) { for(j=1;j<=i;j++) printf(“ “); for(k=1;k<=i;k++) printf(“%d”,i); printf(“\\n”); } } 3.#include #include { char s[100]; int i; gets(s); i=1; while(s[i]!=?\\0?) { if(s[i] i=i+1;} if(s[i]= =?\\0?) printf(“yes”); else printf(“no”); } 4.35 5.29 模拟试卷2答案 一、选择题(40分) 1-5 ADCBA 6-10 CDACB 11-15 CACBA 21-25 CAABC 26-30 BDBBB 31-35BADBA 16-20 DADCC 36-40 DCBDA 二、填空题(每空2分,共20分) 1.十六 2.18 3.int 6.0 7.20 8.Strcat(s1,s2) 三、阅读理解题 1.65,A 2.2 3.10 65,A 3.141590,3.1416 四、编程题 1.#include for(i=5;i<=500;i=i+52) { s=s+i; } printf(“%d”s); } 2.#include for(i=1;i< =5;i++) { for(j=5;j>=i;j--) printf(“ “); for(k=i;k>=1;k--) printf(“%d”,k); printf(“\\n”); } } 3.#include int main() { char s[100]=”Hello 2009, We are ready.”; int n=0; int i=0; while(s[i]!=?\\0?) { if(s[i]<=?z?&&s[i]>=?a?) {s[i]=s[i]-32;n=n+1;} else if(s[i]<=?Z?&&s[i]>=?A?) n=n+1; 4.0 5.= = 9.16 10.1 4.5 5.-15 19 i++; } puts(s); printf(“N=%d”,n); } 模拟试卷3答案 一、选择题(40分) 1-5 AABAC 6-10 DBCDC 21-25 BCBCD 26-30 ADDAB 11-15DBACD 31-35BDABC 16-20 BDCBA 36-40 ACABD 二、填空题(每空2分,共20分) 1.65 2.56.8 3.14 6.6 7.Hello 8.8 三、阅读理解题 1.a=4,b=5,c=1 2.23 3.A 四、编程题 1.#include for(i=2009;i<=9002;i=i+1) { if(i)==0||i?==0) s=s+i; } printf(“s=%d”,s); } 2.#include for(i=1;i<=4;i++) { for(k=1;k { if(i==4&&k==1)x=2; else x=0; printf(“%d”,x); } printf(“9\\n”); } } 3.void change(char s[ ]) { int i=0; while(s[i]!=?\\0?) 4.2.0 9.math.h 4.1 2 6 24 5.x>=1&&x<=3 10.0 5.15 { if(s[i]>=?A?&&s[i]=?a?&&s[i] i=i+1; } } 模拟试卷4答案 一、选择题(40分) 1-5 DACBD 6-10 CADCB 11-15ACBBD 16-20 CDBAB 21-25 DDCCA 26-30 CDBAB 31-35ABDCC 36-40 BACDA 二、填空题(每空2分,共20分) 1.数字 2.10 3.11 4.回车(Enter) 5.! 6.12 7.long 8. 6 9. st.num=20100109; 10.17 三、阅读理解题 1.B,b 2.n=86,grade=B 3.141590,3.1416 4.The string:WORLD CPU 2010! 5.s=10 四、编程题 1.#include scanf(“%f”,&S); if(S<=3) F=8; else F=8+(S-3)*2 printf(“.2f”,F); } 2.#include for(i=1;i<=5;i++) { for(k=1;k<=i;k++) printf(“%d”,k); printf(“\\n”); } } 3.#include void main() { int a[10]={4,6,2,1,9,6,8,7,1,5}; int min,i; min=a[0]; for(i=1;i<10;i++) if(a[i] if(a[i]==min) printf(“%d,”,i); } 3.1 1 2 3 5 8 21 13 模拟试卷5答案 一、选择题(40分) 1-5 BACBD 6-10 CCDDA 11-15 CBCDA 21-25 CBACA 26-30 CACDB 31-35DACBD 16-20 CDCBD 36-40 BCAAD 二、填空题(每空2分,共20分) 1.选择结构 2.41 3.56.79 6.strcmp 7.static 8.H 三、阅读理解题 1.2010 is not a leap year! 2.pass! 4.n=4,m=15 5.ABCDEFGH abCDefGH CDGH 四、编程题 1.#include scanf(“%d,%d”,&a,&b); if(a%b==0) printf(“%d”,a/b); else printf(“5d…….%d”,a/b,a%b); } 2.#include for(i=1;i<=5;i++) { t=t*10+1; s=s+t; } printf(“%d”,s); } 3.#include int main() { int s[10],mc[10]={0}; int i,j; for(i=0;i<10;i++) { scanf(\ } for(i=0;i<=9;i++) { for(j=0;j<=9;j++) if(s[j]>s[i]) mc[i]++; mc[i]=mc[i]+1; 4.3 5.9 9.5 10.0 3.num=4 } for(i=0;i<=9;i++) printf(\ printf(\ for(i=0;i<=9;i++) printf(\}