}
D )
三)switch语句
(1)switch的执行过程 (2)break的用法 例题:
1.#include main()
{ 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输入:3210
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 void main( ) { float S,F;
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 void main( )
{ 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 #include main()
{ 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 #include void main() {
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 long fun( int n) { long s;
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 void main( ) { int i; float s;
for(i=1;i<=99;i=i+2) { s=s+1.0/i; }
printf(“.2f”s);
}
2.#include void main( ) { int i,j,k;
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 main()
{ 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 void main( ) { int i, s=0;
for(i=5;i<=500;i=i+52) { s=s+i; }
printf(“%d”s);
}
2.#include void main( ) { int i,j,k;
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 void main( ) { int i,s=0;
for(i=2009;i<=9002;i=i+1)
{ if(i)==0||i?==0) s=s+i; }
printf(“s=%d”,s);
}
2.#include void main( ) { int i,k,x;
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 void main( ) { float S,F;
scanf(“%f”,&S); if(S<=3) F=8; else F=8+(S-3)*2 printf(“.2f”,F);
}
2.#include void main( ) { int i,k;
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 void main( ) { int a,b;
scanf(“%d,%d”,&a,&b);
if(a%b==0) printf(“%d”,a/b); else printf(“5d…….%d”,a/b,a%b); }
2.#include void main( ) { int s=0,t=0,i;
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(\}