资源描述
目 录
第一单元 程序设计与C语言 1
第二单元 顺序程序设计 3
第三单元 分支程序设计 7
第四单元 循环程序设计 14
第五单元 数 组 23
第六单元 函 数 34
第七单元 指 针 42
第八单元 结构体与共用体 61
第九单元 文 件 78
附加题 82
模拟试卷一 102
模拟试卷二 108
模拟试卷三 114
第一单元 程序设计与C语言
一、 选择题
1. C语言得基本构成单位就是: 。
A、 函数 B、 函数与过程 C、 超文本过程 D、 子程序
2. 一个C语言程序总就是从 开始执行。
A、 主过程 B、 主函数 C、 子程序 D、主程序
3. C语言得程序一行写不下时,可以 。
A、 用逗号换行 B、 用分号换行 C、 在任意一空格处换行 D、 用回车符换行
4. 以下叙述不正确得就是: 。
A、 在C程序中,语句之间必须要用分号";"分隔
B、 若a就是实型变量,C程序中a=10就是正确得,因为实型变量中允许存放整型数
C、 在C程序中,无论就是整数还就是实数都能正确无误地表示
D、 在C程序中,%就是只能用于整数运算得运算符
5. 以下不正确得C语言标识符就是 。
A、 ABC B、 abc C、 a_bc D、 ab、c
6. 下列字符串就是标识符得就是: 。
A、 _HJ B、 9_student C、 long D、 LINE 1
7. 以下说法中正确得就是: 。
A、 C语言程序总就是从第一个定义得函数开始执行
B、 在C语言程序中,要调用得函数必须放在main函数中定义
C、 C语言程序总就是从main函数开始执行
D、 C语言程序中得main函数必须放在程序得开始部分
8. 不合法得常量就是: 。
A、 ‘\2’ B、 " " C、 ‘3’ D、 ‘\483’
9. 已知各变量得类型说明如下,则以下不符合C语言语法得表达式就是: 。
int k,a,b;
unsigned long w=5;
double x=1、422;
A、 x%(3) B、 w+=2 C、 k=(a=2,b=3,a+b) D、 a+=a=+(b=4)*(a=3)
10. 在C语言中,字符型数据在内存中以 形式存放。
A、 原码 B、 BCD码 C、 反码 D、 ASCII码
11. 若有定义:int a=7; float x=2、5; y=4、7;
则表达式x+a%3*(int)(x+y)%2/4得值就是: 。
A、 2、 B、 2、 C、 3、 D、 0、
12. 设有说明:char w; int x; float y; double z;
则表达式w*x+zy值得数据类型为: 。
A、 float B、 char C、 int D、 double
13. 以下 就是不正确得转义字符。
A、 '\\' B、 '\' C、 '081' D、 '\0'
14. 若x为int型变量,则执行以下语句后,x得值为 。
x=6; x+=x=x*x;
A、 36 B、 60 C、 60 D、 24
15. 字符串"\\\"ABC\"\\"得长度就是 。
A、 11 B、 7 C、 5 D、 3
二、 填空题
1. 一个函数由两部分组成,它们就是 与 。
2. 一个C源程序至少包含一个 ,即 。
3. 设int a=12; 则表达式a/=a+a得值就是 。
4. 表达式x=(a=3,6*a)与表达式x=a=3,6*a分别就是 表达式与 表达式,两个表达式执行完得结果分别就是 与 ,x值分别就是 与 。
5. 在C语言中,实数有两种表示形式,即 与 。
6. 在C语言中,运算符得优先级最小得就是 运算符。
第二单元 顺序程序设计
一、 选择题
1. 若m为float型变量,则执行以下语句后得输出为 。
m=1234、123;
printf("%8、3f\n",m);
printf("%10、3f\n",m);
A、 1234、123 B、 1234、123 C、 1234、123 D、 1234、123
1234、123 1234、123 1234、123 、123
2. 若x,y,z均为int型变量,则执行以下语句后得输出为 。
x=(y=(z=10)+5)5;
printf("x=%d,y=%d,z=%d\n",x,y,z);
y=(z=x=0,x+10);
printf("x=%d,y=%d,z=%d\n",x,y,z);
A、 X=10,Y=15,Z=10 B、 X=10,Y=10,Z=10
X=0,Y=10,Z=0 X=0,Y=10,Z=10
C、 X=10,Y=15,Z=10 D、 X=10,Y=10,Z=10
X=10,Y=10,Z=0 X=0,Y=10,Z=0
3. 若x就是int型变量,y就是float型变量,所用得scanf调用语句格式为:
scanf("x=%d,y=%f",&x,&y);
则为了将数据10与66、6分别赋给x与y,正确得输入应就是: 。
A、 x=10,y=66、6<回车> B、 10 66、6<回车>
C、 10<回车>66、6<回车> D、 x=10<回车>y=66、6<回车>
4. 已知有变量定义:int a;char c;用scanf(“%d%c”,&a,&c);语句给a与c输入数据,使30存入a,字符‘b’存入c,则正确得输入就是: 。
A、 30’b’<回车> B、 30 b<回车>
C、 30<回车>b<回车> D、 30b<回车>
5. 已知有变量定义:double x;long a; 要给a与x输入数据,正确得输入语句就是 。若要输出a与x得值,正确得输出语句 。
A、 scanf(“%d%f”,&a,&x); B、 scanf(“%ld%f”,&a,&x);
printf(“%d,%f”,a,x); printf(“%ld,%f”,a,x);
C、 scanf(“%ld%lf”,&a,&x); D、 scanf(“%ld%lf”,&a,&x);
printf(“%ld,%lf”,a,x); printf(“%ld,%f”,a,x);
6. 若有定义double x=1,y;则以下得语句执行得结果就是 。
y=x+3/2; printf(“%f”,y);
A、2、 B、2、5 C、2、 D、2
7. 若a为整型变量,则以下语句 。
a=2L; printf("%d\n",a);
A、 赋值不合法 B、 输出为不确定得值 C、 输出值为2 D、 输出值为2
二、 读程序写结果
1. main
{ int x,y;
scanf("%2d%*2d%ld",&x,&y);
printf("%d\n",x+y);
}
执行时输入:
2. main
{ int x=4,y=0,z;
x*=3+2;
printf("%d",x);
x*=y=z=4;
printf("%d",x);
}
3. main
{ float x; int i;
x=3、6; i=(int)x;
printf("x=%f,i=%d",x,i);
}
4. main
{ int a=2;
a%=41; printf("%d, ",a);
a+=a*=a=a*=3; printf("%d",a);
}
5. main
{ int x=02,y=3;
printf("x=%d,y=%%d",x,y);
}
6. main
{ char c1=’6’,c2=’0’;
printf("%c,%c,%d,%d\n",c1,c2,c1c2,c1+c2);
}
7. main
{ int x,y,z;
x=y=1; z=++x1;
printf("%d,%d\n",x,z);
z+=y++;
printf("%d,%d\n",y,z);
}
三、 填空题
1. 在C语言中,字符型数据与整型数据之间可以通用,一个字符数据既能以 输出,也能以 输出。
2. "%ms"表示如果串长小于m,则在m列范围内,字符串向 靠, 补空格。
3. printf函数得“格式控制”包括两部分,它们就是 与 。
4. 编写程序求矩形得面积与周长,矩形得长与宽由键盘输入,请填空。
#include <stdio、h>
void main
{ float l,w;
printf(“please input length and width of the rectangle\n”);
scanf(“%f%f”,&l,&w);
area= ;
girth= ;
}
5. 编写程序,输入一个数字字符(‘0’~‘9’)存入变量c,把c转换成它所对应得整数存入n,如:字符‘0’所对应得整数就就是0。请填空。
void main
{ char c;
;
printf(“please input a char:\n”);
c= ;
n= ;
printf( ,c,n);
}
四、 编程
1. 将华氏温度转换为摄氏温度与绝对温度得公式分别为:
c=(f32) (摄氏温度)
k=273、16+c (绝对温度)
请编程序:当给出f时,求其相应摄氏温度与绝对温度。
测试数据:① f=34
② f=100
2. 写一个程序把极坐标(r,θ) (θ之单位为度)转换为直角坐标( X,Y)。转换公式就是:
x=r、cosθ
y=r、sinθ
测试数据:① r=10 θ=45°
② r=20 θ=90°
3. 写一个程序,按如下格式输出数据。
name number math english puter
zhanghua 9901 80、50 87、0 80
lina 9902 70、00 80、0 90
wanggang 9903 87、00 76、0 78
4. 输入3个双精度实数,分别求出它们得与、平均值、平方与以及平方与得开方,并输出所求出各个值。
5. 输入一个3位整数,求出该数每个位上得数字之与。如123,每个位上得数字与就就是1+2+3=6。
第三单元 分支程序设计
一、 选择题
1. 若x=0,y=3,z=3,以下表达式值为0得就是
A、 !x B、x<y? 1:0 C、 x%2&&y==z D、 y=x||z/3
2. 以下运算符中优先级最低得运算符为 ,优先级最高得为 。
A、 && B、 ! C、 != D、 || E、 ?: F、 ==
3. 若w=1,x=2,y=3,z=4,则条件表达式w<x?w:y<z?y:z得结果为 。
A、 4 B、 3 C、 2 D、 1
4. 若w,x,z均为int型变量,则执行以下语句后得输出为 。
w=3;z=7;x=10;
printf("%d\n",x>10?x+100:x10);
printf("%d\n",w++||z++);
printf("%d\n",!w>z);
printf("%d\n",w&&z);
A、 0 B、 1 C、 0 D、 0
1 1 1 1
1 1 0 0
1 1 1 0
5. 分析以下程序, 下列说法正确得就是 。
main
{ int x=5,a=0,b=0;
if(x=a+b) printf("* * * *\n");
else printf("# # # #\n");
}
A、 有语法错,不能通过编译 B、 通过编译,但不能连接
C、 输出* * * * D、 输出# # # #
6. 分析以下程序, 下列说法正确得就是 。
main
{ int x=5,a=0,b=3;
if(x=a+b) printf("* * * *\n");
else printf("# # # #\n");
}
A、 有语法错,不能通过编译 B、 通过编译,但不能连接
C、 输出* * * * D、 输出# # # #
7. 分析以下程序, 下列说法正确得就是 。
main
{ int x=0,a=0,b=0;
if(x=a+b) printf("* * * *\n");
else printf("# # # #\n");
}
A、 有语法错,不能通过编译 B、 通过编译,但不能连接
C、 输出* * * * D、 输出# # # #
8. 分析以下程序, 下列说法正确得就是 。
main
{ int x=0,a=0,b=0;
if(x==a+b) printf("* * * *\n");
else printf("# # # #\n");
}
A、 有语法错,不能通过编译 B、 通过编译,但不能连接
C、 输出* * * * D、 输出# # # #
二、 读程序写结果
1. include <stdio、h>
main
{ int a=1,b=4,k;
k=(a++<=0)&&(!(b<=0));
printf("%d,%d,%d\n",k,a,b);
}
2. main
{ int x=4,y=0,z;
x*=3+2;
printf("%d",x);
x*=(y==(z=4));
printf("%d",x);
}
3. main
{ int x,y,z;
x=3; y=z=4;
printf("%d",(x>=z>=x)?1:0);
printf("%d",z>=y && y>=x);
}
4. main
{ int x=1,y=1,z=10;
if(z<0)
if(y>0) x=3;
else x=5;
printf("%d\t",x);
if(z=y<0) x=3;
else if(y==0) x=5;
else x=7;
printf("%d\t",x);
printf("%d\t",z);
}
5. main
{ char x=‘B’;
switch(x)
{ case ‘A’: printf(“It is A、”);
case ‘B’: printf(“It is B、”);
case ‘C’: printf(“It is C、”);
default: printf(“other、”);
}
}
6. main
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1: switch(y)
{ case 0: a++;break;
case 1: b++;break;
}
case 2: a++;b++;break;
case 3: a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
三、 填空题
1. 若a=5,b=6,c=7,d=8,则表达式d=a/2&&b==c||!a得值为
2. 定义 int x=10,y,z;执行y=z=x;x=y==z后,变量x得值为 。
3. 分段函数:输入x,计算y值,输出y,其中:
x<0 y=2x+3
x=0,y=0
x>0,y=(x+7)/3
#include <stdio、h>
main
{
int x,y;
scanf("%d",&x);
if(x<0) (1) ;
(2) y=0;
(3) y=(x+7)/3;
printf(“%d”,y);
}
4. 由键盘输入三个数,计算以这三个数为边长得三角形面积。
(1)
main
{
(2) ;
printf("Please enter 3 reals:\n");
scanf("%f%f%f",&a,&b,&c);
if( (3) )
{ s=(a+b+c)*0、5;
s1=s*(sa)*(sb)*(sc);
s= (4) ;
printf("\nArea of the triangle is %f\n",s);
}
(5)
printf("It is not triangle!\n");
}
5. 有一方程a+bx+c=0,a,b,c得值由键盘输入,请编程序,打印出以下情况时方程得解。
(1) a=0,b≠0
(2) a=0,b=0,c=0
(3) a=0,b=0,c≠0
(4) a≠0,4ac≥0
(5) a≠0,4ac≤0
#include "math、h"
main
{ float a,b,c,d,pr,pi,x1,x2;
scanf("%f%f%f",&a,&b,&c);
printf("a=%f,b=%f,c=%f\n",a,b,c);
if(a==0)
{ if( (1) )
printf("only one solution x=%f\n",c/b);
else
if( (2) )printf("no solution\n");
else printf("x is any value\n");
}
else
{ d=b*b4*a*c;
if( (3) )
{ x1=(b+sqrt(d))/ (4) ;
x2=(bsqrt(d))/ (5) ;
printf("x1=%6、2f, x2=%6、2f\n",x1,x2);
}
else
{ pr=b/(2*a); (6) ;
printf("x1=%6、2f +%6、2fi\n",pr,pi);
printf("x2=%6、2f %6、2fi\n",pr,pi);
}
}
}
6. 投票表决器:
– 输入Y、y,打印agree
– 输入N、n,打印disagree
– 输入其她,打印lose
main
{
char c;
scanf("%c",&c);
(1)
{
case ‘Y’:
case ‘y’: printf(“agree”); (2) ;
case ‘N’:
case ‘n’: printf(“disagree”); (3) ;
(4) :printf(“lose”);
}
四、 编程
1. 写一程序求y值 (x值由键盘输入)。
2. 输入一个字符,判断它如果就是小写字母输出其对应大写字母;如果就是大写字母输出其对应小写字母;如果就是数字输出数字本身;如果就是空格,输出“space”;如果不就是上述情况,输出“other”。
3. 有三个数a、b、c,由键盘输入,输出其中最大得数。
4. 输入一个数,判断它能否被 3或者被 5整除, 如至少能被这两个数中得一个整除则将此数打印出来,否则不打印,编出程序。
5. 读入1到7之间得某个数,输出表示一星期中相应得某一天得单词:Monday、 Tuesday等等,用switch语句做。
6. 给出一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’,90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
7. 有一函数
请编程序计算y得值(x得值由键盘输入)。
第四单元 循环程序设计
一、 选择题
1. 程序段如下:则以下说法中正确得就是: A 。
int k=5;
do{
k;
}while(k<=0);
A、 循环执行5次 B、 循环就是无限循环
C、 循环体语句一次也不执行 D、 循环体语句执行一次
2. 设i与x都就是int类型,则for循环语句 B 。
for(i=0,x=0;i<=9&&x!=876;i++) scanf("%d",&x);
A、 最多执行10次 B、 最多执行9次
C、 就是无限循环 D、 循环体一次也不执行
3. 下述for循环语句 B 。
int i,k;
for(i=0,k=1;k=1;i++,k++) printf("* * * *");
A、 判断循环结束得条件非法 B、 就是无限循环
C、 只循环一次 D、 一次也不循环
4. 程序段如下:则以下说法中正确得就是: C 。
int k=20;
while(k=0) k=k+1;
A、 while循环执行20次 B、 循环就是无限循环
C、 循环体语句一次也不执行 D、 循环体语句执行一次
5. 下列程序段执行后k值为 A 。
int k=0,i,j;
for(i=0;i<5;i++)
for(j=0;j<3;j++)
k=k+1 ;
A、 15 B、 3 C、 5 D、 8
6. 程序段如下:则以下说法中不正确得就是: D 。
#include <stdio、h>
main
{
int k=2,;
while(k<7)
{
if(k%2) {k=k+3; printf(“k=%d\n”,k);continue;}
k=k+1;
printf(“k=%d\n”,k);
}
}
A、 k=k+3;执行一次 B、 k=k+1;执行2次
C、 执行后k值为7 D、 循环体只执行一次
二、 读程序写结果
1. main
{ int num=0;
while(num<=2)
{ num++; printf("%d\n",num);}
}
1
1
3
2. main
{ int i=0,s=0;
do
{ s+=i*2+1; printf("i=%d,s=%d\n",i,s); i++;}
while(s<10);
}
i=0,s=1
i=1,s=4
i=2,s=9
i=3,s=16
3. #include <stdio、h>
main
{ int i,m=1;
for(i=5;i>=1;i)
{
m=(m+1)*2;
printf("m=%d\n",m);
}
}
m=4
m=10
m=22
m=46
m=94
4. 指出下面三个程序得功能,当输入为:"quert?"时,它们得执行结果就是什么?
⑴ #include <stdio、h>
main
{ char c;
c=getchar;
while (c!='?')
{ putchar(c); c=getchar;}
}
quert
⑵ #include <stdio、h>
main
{ char c;
while ((c=getchar)!='?') putchar(++c);
}
⑶ #include <stdio、h>
main
{ while (putchar(getchar)!='?');
}
5. #include <stdio、h>
main
{ int i;
for(i=1;i<=5;i++)
{ if(i%2)
putchar(‘<’);
else
continue;
putchar(‘>’);
}
putchar(‘#’);
}
6. main
{ int a,b;
for(a=1,b=1;a<=100;a++)
{ if(b>10) break;
if(b%3==1)
{ b+=3; continue;}
}
printf("a=%d\n",a);
}
7. main
{ int i=1;
while (i<=15)
if (++i%3!=2) continue;
else printf("%d ",i);
printf("\n");
}
8. #include <stdio、h>
void main
{ int i,j;
for(i=0;i<=3;i++)
{ for(j=0;j<=i;j++)
printf("(%d,%d),",i,j);
printf("\n");
}
}
9. main
{ int i,j,k;
char space=' ';
for (i=0;i<=5;i++)
{ for (j=1;j<=i;j++) printf("%c",space);
for (k=0;k<=5;k++) printf("%c",'*');
printf("\n");
}
}
10. #include <stdio、h>
main
{ int i,j,k=0;
for (j=11;j<=30;j++)
{ if (k%10==0)
printf("\n");
for (i=2;i<j;i++)
{ if (!(j%i)) break;
if (i>=j1)
{ printf("%d\t",j);k++;}
}
}
}
三、 填空题
1. break语句只能用于 语句与 语句中。
2. 计算2+4+6+8+、、、+98+100
main
{
int i, (1) ;
for(i=2;i<=100; (2) )
s+=i;
}
3. 求满足下式得 x,y,z
X Y Z
+ Y Z Z
──────
5 3 2
main
{ int x,y,z,i,result=532;
for (x=1; (1) ;x++)
for (y=1; (2) ;y++)
for ( (3) ; (4) ;z++)
{ i= (5) +(100*y+10*z+z);
if (i==result) printf("x=%d, y=%d, z=%d\n",x,y,z);
}
}
4. 求 Sn=a+aa+aaa+、、、+aa、、、a之值,其中 a就是一个数字。 例如 2+ 22 +222+2222( 此时n=4),n由键盘输入。
main
{ int a,n,count=1,Sn=0,Tn=0;
printf("请输入 a 与 n 得值:\n");
scanf("%d,%d",&a,&n);
while (count<= (1) )
{ Tn= (2) ;
Sn= (3) ;
a=a*10;
(4) ;
}
printf("a+aa+aaa+、、、=%d\n",Sn);
}
5. 一球从 100米高度自由落下,每次落地后反跳回原来高度得一半,再落下,求它在第十次落地时,共经过多少米?第十次反弹多高?
main
{ float Sn=100、0,hn=Sn/2;
int n;
for (n=2;n<= (1) ;n++)
{ Sn= (2) ; hn= (3) ; }
printf("第10次落地时共经过%f米\n",Sn);
printf("第10次反弹%f米\n",hn);
}
6. 打印出以下图形
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
main
{ int i,j,k;
展开阅读全文