一、判断题:(每小题1分,共6分)
1、若有说明int c;则while(c=getchar());是正确的C语句。 ( )
2、int i,*p=&i;是正确的C说明。 ( )
3、7&3+12的值是15。 (
)
4、while 1 i,j;
一定是错误的C说明。 ( )
5、for( ; ; )S中的语句S必执行无穷多次。
( )
6、unsigned 和void 在C中都是保留的。 ( )
二、单项选择题(每小题1分,共5分)
1、设有int i;则表达式i=1,++i,++i||++i,i的值为 ( )
A.1
B.2
C.3
D.4
2、设有int i;则表达式(i=1,i=10)?i++||++i:++i的值为 ( )
A.1
B.2
C.3
D.10
3、设有int a[
]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是 ( )
A.10,11,12
B.11,12,12
C.10,12,12
D.11,11,12
4、设有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&k 的值为 ( )
A.1 B.2 C.3 D.0
5、设有说明int
s[2]={0,1},*p=s; 则下列错误的C语句是 ( )
A.s+=1; B.p+=1; C.*p++; D.(*P)++;
三、填空题(每小题2分,共10分)
1、char *(*pa)[10];说明pa是______________。
2、表达式98&&8&&31&1的值为________________。
3、printf("%5.3f\n",123456.12345);输出为_____________。
4、表达式~3&(2&3^4)的值为_______________。
5、若有说明int i,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为_______________。
四、程序分析,给出下列各程序的执行结果(输出)
1、#include <stdio.h>
int f(n)
int n;
{static
int s=1;
while(n)
s*=n--;
return
s;
}
main()
{int i,j;
i=f(3); j=f(5);
printf("\nThe output of 5.1. is:\n\n");
printf("i=%d j=%d \n",i,j);
}
2、#include <stdio.h>
trans(m,n)
int m,n;
{int i;
if
(m>n){
i=m%n;trans(m/n,/);
}
else
i=m;
if
(i<10) printf("%d",i);
else
printf("%c",'A'+i-10);
}
main(
)
{int i;
printf("\nThe output of 5.3 is:\n\n");
printf("\n%d->-",-23);
trans(21,3);
printf("\n%d->",123);
trans(123,16);
}
3、#include <stdio.h>
#include <malloc.h>
typedef struct node
{
int d;
struct node *next;
}t_node;
create(h)
t_node
**h;
{
int i,m=0;t_node *p,*q;
scanf("%d",&i);
while(i)
{
p=(t_node*)malloc(sizeof(t_node));
p->d=i>m?i:m;m=i;p->next=NULL;
if(*h)
{
q->next=p;
q=p;
}
else
{
*h=p;
q=p;
}
scanf("%d",&i);
}
}
void
main()
{
t_node
*h=NULL,*p;
create(&h);p=h;printf("\nThe output of
4.3 is:\n\n");
while(p)
{printf("%d",p->d);
p=p->next;
}
}
4、#include <stdio.h>
main()
{ int m,n,sign,t;
scanf("%d%d",&m,&n);
while(m*n){
if
(m>=0&&n>=0||m<=0&&n<=0) sign=0;
else
sign=1;
m=m>0?m:-m; n=n>0?n:-n;
t=0;
while(n--)
t+=m;
printf("\nThe result is:");
if
(sign) printf("-");
printf("%d\n",t);
scanf("%d%d",&m,&n);
}
}
5、#include <stdio.h>
int
a[10]={1,2,3,4,5,6,7};
rev
(m,n)
int *m,n;
{int t;
if(n>1)
{t=*m;*m=*(m+n-1);*(m+n-1)=t;
rev(m+1,n-2);
}
}
main()
{int i;
printf("\nThe output of 5.5 is:\n\n");
rev(a+2,6);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
rev(a,5);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
五、在下面程序中横线处填上适当字句,使其能正确执行(6分)
[程序说明] 该程序用于计算cos
x值,依据公式为:

要求输入X(以角度计)和误差值epsil。当epsil<=0时程序停止执行。
#include <stdio.h>
#define PI 3.141526
double ex(x,epsil)
float x,epsil;
{
double t,s; int n;
s=0.0; t=1.0; n=1;
while ((t>=0.0?t:-t)>epsil){
s+=t;___(1)___;___(2)___;
}
return s;
}
main()
{
float x,epsil;
printf("Input x,epsil:(epsil<=0 to quit)\n");
scanf("%f%f",&x,&epsil);
while(epsil>0.0){
x*=PI/180;
printf("e^%f=%f\n",x,ex(x,epsil));
printf("Input x,epsil:(epsil<=0 to quit)\n");
scanf("%f%f",&x,&epsil);
}
}
六、在下面程序中横线处填上适当字句,使其能正确执行(18分)
[程序说明]该程序能计算两个整数集合A与B的差,其中A与B的元素都以值的递增
次序存放中单链表中,A中的同一元素允许在单链表中出现多次,A与B的差也以值的
递增次序存于单链表内,但是同一元素不允许出现多次。假定调用diff前a,b的值已
创建。
#include <stdio.h>
typedef struct node{
int d;
struct node *next;
}tnode;
void diff(a,b,c)
tnode *a,*b,__(1)__;
{
int last_a; tnode *p;
*c=NULL; last_a=-9999;
while(a&&b){
if(a->d==b->d){
__(2)__;
a=a->next;
__(3)__;
}
else
if (a->d>d->d)
__(4)__;
else {
if (a->d!=last_a){
last_a=a->d;
p=(tnode *)malloc(sizeof(tnode));
p->d=last_a;
p->next=*c;
*c=p;
}
a=a->next;
}
}
while(a){
if(__(5)__){
last_a=a->d;
p->d=last_a;
p->next=*c;
__(6)__;
}
a=a->next;
}
}
void print(h)
tnode *h;
{
while(h){
printf("%d ",h->d);
h=h->next;
}
}
main()
{
tnode *a,*b,*c;
...
diff(a,b,&c);
print(c);
}
一、选择题
1 C语言中最简单的数据类型包括
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型
2 C语言中,运乍对象必须是整型数的运算符是
A) %B) 、C) %和、D) **
3 为表示关系x≥y≥z,应使用C语言表达式
A)(x)=y)&&(y)=z)B(x)=y)AND(y)=z)
C)(x)=y)=z)D)(x)=y)&(y)=z)
4下述对C语言字符数组的描术中错误的是
A)字符数组可以存放字符串
B)字符数组中的字符串可以整体输入、输出
C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D)不可以用关系运算符对字符数组中的字符串进行比较
5 设有如下定义:
int x=10,y=3,z;
则语句
printf(“%d、n”,z=(x%y,x/y));
的输出结果是
A)1 B)0
C)4 D)3
6 以下程序的输出结果是
main()
{int x=10,y=10;
printf(“%d %d、n”,x——,——y);
}
A)10 10 B)9 9
C)9 10 D)10 9
7 以下说法中正确的是
A)C语言程序总是从第一个的函数开始执行
B)在C语言程序中,要调用的函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
8 执行下面的程序后,a的值为
main()
{int a,b;
for (a=1,b=1;a<=100;a)
{if(b)=20}break;
if(b%3==1)
{b=3;
continue;
}b--=5;
}
}
A}7 B}8 C)9 D)10
9 以下程序段的输出结果是
int x=3;
do
{printf(“%3d”,x——=2);}
while(!(——x));
A)1 B)3 0 C)1——2 D)死循环
10 定义如下变量:
int n=10;
则下列循环的输出结果是
while(n>7)
{n——;
printf(“%d、n”,n);
}
A)10B)9 C)10 D)9
9898
8787
76
11 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是
main()
{int x;
scanf(“%d”,&x);
if(x>)5}printf(“%d”,x);
else printf(“%d、n”,x ——);
}
A)7和5 B)6和3 C)7和4 D)6和4
12 执行以下程序后,y的值是
main ()
{int a[]={2,4,6,8,10};
int y=1,x,*p;
p=&a[1];
for(x=0;x<3;x)
y =*(p+x);
printf(“%d\n”,y);
}
A)17 B)18 C)19 D)20
13 下列程序执行后输出的结果是:
int d=1;
fun (int q)
{int d=5;
d =p ;
printf(“%d”,d);
}
main()
{int a=3;
fun(a);
d =a ;
printf(“%d\n”,d);
}
A)8 4 B)9 6 C)9 4 D)8 5
14 C语言提供的合法的数据类型关键字是
A)Double B)short C)integer D)Char
15 在C语言中,合法的长整型常数是
A)0L B)4962710 C)0.054838743 D)2.1869e10
16 表达式:10!=9的值是
A)true B)非零值C)0 D)1
17 若有说明和语句:
int a=5;
a;
此处表达式a的值是
A)A)7 B)6 C)5 D)4
18 在下列选项中,不正确的赋值语句是
A)t;B)n1=(n2=(n3=0));
C)k=i==j;D)a=bc=1;
19 若有说明:int i,j=7,*p=&i;,则与i=j;等价的语句是
A)I=*P;B)*P=*&J;C)i=&j;D)i=**p;
20 不能把字符串:Hello!赋给数组b的语句是
A)char b[10]={'H','e','l','l','o','!'};
B)char b[10];b=“Hello!”;
C)char b[10];strcpy(b,“Hello!”);
D)char b[10]=“Hello!”
21 以下程序的输出结果是
A)6 B)6789 C)'6'D)789
main()
{char a[10]=”6789”,*p;
p=a;
printf(“%s\n”,p);
22 以下程序的输出结果是
A}2 0 B}3 1 C}3 2 1 0 D}2 1 0
main()
{int n=4;
while(n>0){ n--; printf(“%d ”,n); }
}
23 以下程序运行后,输出结果是
A)84 B)99 C)95 D)44
int d=1l
fun (int p)
{int d=5;
d=p;
printf(“%d”,d);
}
main()
{itn a=3;
fun(a);
d=a;
printf(“%d、n”,d);
}
24 在下列选项中,没有构成死循环的程序估是
A)int i =100;
whine(1)
{i=i%3;
if (i>100)break;
}
B)for (;;);
C)int k=1000;
do {k;} while(k>1000);
D)int s=36;
while (s);--s;
25 阅读以下程序:
main()
{ int x;
scanf("%d",&x);
if(x--<5) printf("%d"'x);
else printf("%d"'x++);
}
程序运行后,如果从键盘上输人5,则输出结果是
A)3 B) 4 C) 5 D) 6
26 以下程序的输出结果是
main()
{ int num= 0;
while(num<=2)
{ num++; printf("%d\n",num);
}
A} 1 B} 1 C}1 D} l
222
33
4
27 以下程序的输出结果是
main()
{ char c='z';
printf("%c",c-25);
}
A) a B) Z C) z-25 D) y
28以下选项中,非法的字符常量是
A) '\t' B) '\17' C)"n" D) '\xaa'
29 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是
A) i=*p; B) p*=*&j; C) i=&j; D) i=**p;
30 以下定义语句中,错误的是
A) int a[]={1,2}; B) char *a[3];
C) char s[10]="test"; D) int n=5,a[n];
31 以下程序的输出结果是
main()
{ int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A) 258 B) 741 C) 852 D) 369
32以下数组定义中不正确的是
A) int a[2][3];
B) int b[][3]={0,1,2,3};
C) int c[100][100]={0};
D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
33以下程序的输出结果是
main()
{ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0];
)
A} 0650 B} 1470 C} 5430 D} 输出值不定
34以下选项中,不能正确赋值的是
A) char s1[10];s1="Ctest";
B) char s2[]={'C', 't', 'e', 's', 't'};
C) char s3[20]="Ctest";
D) char *s4="Ctest\n"
35 以下程序的输出结果是
main()
{ int a, b;
for(a=1, b=1; a<=100; a++)
{ if(b>=10) break;
if (b%3= =1)
{ b+=3; continue; }
}
printf("%d\n",a);
}
A) 101 B) 6 C) 5 D) 4
36 有以下程序段
int k=0
while(k=1) k++;
while 循环执行的次数是
A) 无限次 B) 有语法错,不能执行
C) 一次也不执行 D) 执行1次
37 以下程序执行后sum的值是
A)10 B)6 C) 不确定 D)0
min()
{ int i , sum;
for(i=1;i<4;i++) sum+=i;
printf("%d\n",sum);
}
38 以下程序的输出结果是
A) 1,5,9 B) 1,4,7 C) 3,5,7 D)3,6,9
main()
{ int i, x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++) printf("%d,",x[i][2-i]);
}
39 以下程序的输出结果是
A) 18 B) 19 C) 20 D)21
main()
{ int a[3][2]={ {1,2},{3,4},{5,6} },i,j,s=0;
for(i=0;i<3;i++)
for(j=0;j<2;j++)s+=a[i][j];
printf("%d\n",s);
}
40 以下程序的输出结果是:
main()
{ int a=1, b=2;
a=a+b; b=a-b; a=a-b;
printf("%d,%d\n", a, b );
}
A)1,2 B)3,1 C)3,2 D)2,1
二、填空题
1 以下程序运行后的输出结果是【1】。
main()
{ int i=10, j=0;
do
{ j=j+i; i-;
while(i>2);
printf("%d\n",j);
}
2 设有以下程序:
main()
{ int n1,n2;
scanf("%d",&n2);
while(n2!=0)
{ n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序运行后,如果从键盘上输入1298;则输出结果为【2】。
3 以下函数的功能是:求x的3次方,请填空。
double fun( double x)
{ int i;
double z;
for(i=1, z=x; i<3;i++) z=z* 【3】;
return z;
}
4 下面的程序是求1+2+…+10的值,请填空:
main()
{int I,s=0;
for(I=1;I<=10;I++)
【4】;
}
5 下面的程序是求1*2*3*…10,请填空:
main()
{int I,s=【5】;
【6】
s=s*I;
}
6 下面的程序是求数组a中的最大值,请填空
main()
{int a[5]={23,4,5,2,32},I,max;
max=【7】;
for(I=1;I<=4;I++)
if(max<a[i]) 【8】;
}
7下面程序的输出结果是【9】:
int abc(int z)
{return z+10;
}
main()
{int x=3,y;
y=abc(x);
printf(“%d”,y);
}
8下面程序的输出结果是【10】:
main()
{int x=11,*p=x;
*p=23;
printf(“%d”,x);
}
答案
选择题
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
B |
A |
A |
C |
D |
D |
C |
B |
C |
B |
A |
C |
A |
B |
A |
D |
C |
D |
B |
B |
B |
C |
A |
C |
B |
B |
A |
C |
B |
D |
C |
D |
A |
A |
D |
A |
B |
C |
D |
D |
填空题
1 |
52 |
2 |
8921 |
3 |
x |
4 |
S=s+i |
5 |
1 |
6 |
For(I=1;I<=10;I++) |
7 |
A[0] |
8 |
Max=a[i] |
9 |
13 |
10 |
23 |
一、单项选择题 (本大题共10小题,每小题1分,共10分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填在题后的括号内。错选、多选或未选均无分。
1.正确的自定义标识符是 ( )
A.a=2 B.a+b
C.name D.default
2.错误的转义字符是 ( )
A.'\091' B.'\\'
C.'\0' D.'\''
3.设int a,b,c;执行表达式a=b=1,a++,b+1,c=a+b--后,a,b和c的值分别是 ( )
A.2,1,2 B.2,0,3
C.2,2,3 D.2,1,3
4.在C语言中,错误的常数是 ( )
A.1E+0.0 B.5.
C.0xaf D.0L
5.下面运算符优先级最高的是 ( )
A.<= B.=
C.% D.&&
6.若数组名作实参而指针变量作形参,函数调用实参传给形参的是 ( )
A.数组的长度 B.数组第一个元素的值
C.数组所有元素的值 D.数组第一个元素的地址
7.变量的指针含意是指变量的 ( )
A.值 B.地址
C.存储 D.名字
8.设int k;则语句for(k=0;k=1;k++);和语句for(k=0;k==1;k++);执行的次数分别是 ( )
A.无限和0 B.0和无限
C.都是无限 D.都是0
9.某文件中定义的静态全局变量(或称静态外部变量)其作用域是 ( )
A.只限某个函数 B.本文件
C.跨文件 D.不限制作用域
10.设struct {int a; char b; } Q, *p=&Q;错误的表达式是( )
A.Q.a B.(*p),b
C.p->a D.*p.b
二、填空题 (本大题共5小题,每空2分,共20分)
请在每小题的空格上填上正确答案。错填、不填均无分。
11.在C语言中,单目运算符的结合方向(运算方向)是_____________;唯一的一个三目运算符是_____________。
12.字符串"A\\B"的内容是_____________,存储需要的字节数是_____________。
13.设int a[10],b[3][3];数组元素a[5]和b[1][2]分别用指针表示的形式是_____________和_____________。
14.编译预处理的三种形式除宏定义外,还有_____________和_____________。
15.文件操作方式"w"和"rb+"的含义分别是__________________________和__________________________。
三、程序分析题 (本大题共7小题,每小题5分,共35分)
阅读下列程序,将输出结果分别写到各题右侧的空白处。
16.
main()
{int a=3,b=9,c=2;
if(a if(a printf("%5d%5d%5d\n",a,b,c);
17.
void change(int *x,int y)
{int t;
t=*x;*x=y;y=t;
}
main()
{int a=3,b=5;
change(&a,b);
printf("a=%d,b=%d\n",a,b);
}
18.
main()
{int j;
for(j=4;j>=2;j--)
switch(j)
{case 0: printf("%4s","ABC");
case 1: printf("%4s","DEF");
case 2: printf("%4s","GHI");break
case 3: printf("%4s","JKL");
default: printf("%4s","MNO");
}
printf("\n");
}
19.
main()
{int j,a[6]={1,2}};
for(j=3;j<6;j++)
a[j]=a[j/2]+a[j%3]-a[j-2];
for(j=0;j<6;j++)
printf("%5d",a);
printf("\n");
}
20.
int a=10;
int f(int a)
{int b=0;static int c=3;
a++;++c;++b;
return a+b+c;
}
main()
{int i;
for(i=0;i<2;i++)print("%5d",f(a));
printf("\n");
}
21.
#define N 2
#define M N+1
#define NUM 2*M+1
int fib(int n)
{
return n<3?2:fib(n-1)+fib(n-2);
}
main()
{
printf("%5d%5d\n",NUM,fib(5));
}
22.假设在DOS提示符下显示源程序如下(PROG.exe程序也在C盘中):
C>type PROC.c
main(int argc,char * argv[])
{while(--argc>0)
printf("%s",argv[argc]);
printf("\n");
}
写出执行下列命令后的输出结果
C>PROG 2008 OLYMPIC BEIJING <回车>
四、程序填空题 (本大题共2小题,每空3分,共15分)
23.任意输入三条边(a,b,c)后,若能构成三角形且为等腰、等边和直角,则分别输出DY、DB和ZJ,若不能构成三角形则输出NO。
main()
{ float a,b,c,a2,b2,c2
scanf("%f%f%f%,&a,&b,&c);
printf("%5.1f,%5.1f,%5.1f",a,b,c);
if(a+b>c&&b+c>a&&a+c>b)
{
if(____________________________________)printf("DY");
if(____________________________________)printf("DB");
a2=a*a;b2=b*b;c2=c*c;
if(____________________________________)printf("ZJ");
printf("\n");
}
else printf("NO\n");
}
24.输出下列图形。
1 2 3 4 5 6 7 8 9 main()
2 3 4 5 6 7 8 9 int I,J;
3 4 5 6 7 8 9 for(I=1;I<=_________;I++)
4 5 6 7 8 9 for(J=_________;J<=9;J++)printf("%2d",J);
5 6 7 8 9 printf("\n");
6 7 8 9
7 8 9
8 9
9
五、程序设计题 (本大题共2小题,每小题10分,共20分)
写出下列问题的程序。
25.输入十个整数,计算出平均值(aver),找出其中最大者(max)和最小者(min)并将三者输出。
26.将十个实型数输入数组(float n[10];)逆序存放后再输出。
一.选择题(40%)
1.下列各选项中,()是有效的标识符。
A)abB)3dayC)day-3D)#abc
2.已知有定义:char ch;则如下正确的赋值为()。
A)ch='M'B)ch='55'C)ch="M"D)ch="55"
3.已知int y; float x=-3;执行语句 y=x%2;则变量y的值是()。
A)1B)-1C)0D)语句本身是错误的
4.已知字母b的ASCII码为98,如ch为字符型变量,则表达式ch='b'+'5'-'2'的值为()。
A)eB)dC)102D)100
5.已知int j,i=1;则执行j=-i++; i和j的值为()。
A)1,-1B)1,1C)2,-1D)2,1
6.已知 int a=-1,b=4,k; k=(++a<0&&!(b――<0));则k, a, b的值分别为()。
A)1,0,4B)1,0,3C)0,0,3D)0,0,4
7.C语言程序的基本单位是( )。
A)语句B)程序行C)函数D)字符
8.下列程序的运行结果是()。
main( )
{char s[20]=“China”;
printf("%d\n",strlen(s));
}
A)5B)6C)20D)无显示
9.已知int i,j,k;scanf(“%d%d%d”,&i,&j,&k);若从键盘送入i,j,k的值分别为1,2,3时,则错误的输入方式是()。
A)1,2,3B)1(回车)2(回车)3(回车)
C)123 D)1(回车)23
10.有以下程序段
int k=0;
while(k=1) k++;
while循环执行的次数 ()。
A)无限次B)有语法错,不能执行C)一次也不执行D)执行1次
11.当调用函数时,实参是一个数组名,则向函数传递的是()。
A)数组的长度B)数组每一个元素的地址C)数组的首地址D)数组每个元素中的值
12.以下程序的输出结果是()。
main( )
{Int j,x[3][3]={1,2,3,4,5,6,7,8,9};
for(j=0;j<3;j++) printf("%d,",x[j][2-j])) ;
}
A)1,5,9B)1,4,7C)3,5,7D)3,6,9
13.语句for( i =0;i++<3;) ;执行后,变量i的值为( )。
A)2B)3C)4D)5
14.以下程序的输出结果是()。
main( )
{int a=0,b=3,k;
printf("%d\n",k=(a%b,a/b));
}
A)0B)1C)2D)4
15.下列叙述中正确的是()。
16.已知说明语句int (*p)( );,则下列叙述正确的是()。
17.若x为整型变量,以下定义指针的正确语句是()。
A)int p=&x;B)intp=x;
C)int *p=&x;D)p=x;
18.若有以下结构变量
struct x
{int a;
char c;
float b;
}x,*p;
p=&x;
则对成员a合适的引用为以下的( )项。
A)p.x.aB)p->x.aC)(*p).x.aD)(*p).a
19.C语言中文件的存取是以()单位
A)函数B)语句C)字节D)记录
20.当调用函数fputc输出字符时,若操作不成功,则返回的值是()。
A)EOFB)1C)0D)输出的字符
二.请给出下列程序的运行结果(40%)
1.main( )
{int i=3,j=4;
printf(“%d,%d\n”,i++,j++);
printf(“%d,%d\n”,++i,++j);
}
运行结果:
2.#define SQR(x) x*x
main( )
{int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a);
}
运行结果:
3.main( )
{char *p="Wednesday";
p=p+6;
printf("%s\n",p);
}
运行结果:
4.long fun(int n)
{long s;
if(n==1||n==2) s=2;
else s=n-fun(n-1);
return s;
}
main( )
{printf("%ld\n",fun(3));
}
运行结果:
5.#include"stdio.h"
main( )
{char b[ ] ="program";
char *a="PROGRAM";
printf("\n%c%s\n",*a,b+1);
printf("%s\n",&b[3]);
}
运行结果:
6.main( )
{char ch[2][5]={"6937",,8254"},p[2][5];
int j,k,s=0;
for(j=0;j<2;j++)p[j]=ch[j];
forj=0;j<2;j++)
for(k=0;p[j][j]>'\0';j+=2)
s=10*s+p[j][k]-'0';
printf("%d\n",s);
}
运行结果:
7.main( )
{int j;
for(j=1;j<=5;j++)
{if(j%2==0) printf("*");
else continue;
printf("#");
}
printf("$\n");
}
运行结果:
8.main( )
{int j;
for(j=0;j<10;j++)
{if(j%2!=0) continue;
printf("%d",j);
}
}
运行结果:
三.编程题(20%)(四题中任选二题)
(1) 在C语言中,如果下面的变量都是int类型,则输出的结果是() 。
sum=pad=5; pAd=sum + + ,pAd + + , + + pAd;
printf("%d\n",pad);
A) 7 B) 6 C) 5 D) 4
(2) 以下程序的输出结果是() 。
# include <stdio.h>
main()
{
int i=010 , j = 10;
printf("%d,%d\n",+ +i , j - -);
}
A) 11,10 B) 9,10 C) 010,9 D) 10,9
(3) 已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是() 。
# include <stdio.h>
main()
{
char c1='A', c2='Y';
printf("%d,%d\n",c1,c2);
}
A) 因输出格式不合法,输出错误信息 B)65,90 C)A,Y D)65,89
(4) 语句while(!E);中的条件!E等价于 () 。
A)E = = 0 B)E!=1 C)E!=0 D)~E
(5) 以下程序的输出结果是 ()。
# include <stdio.h>
main()
{
printf("%d\n",NULL);
}
A) 不确定的(因变量无定义) B)0 C)-1 D)1
(6) 以下函数调用语句中含有()个实参。
func((exp1,exp2),(exp3,exp4,exp5));
A) 1 B) 2 C) 4 D) 5
(7) 下面的程序中()有错误(每行程序前面的数字是行号)。
1 #include <stdio.h>
2 main()
3 {
4 float a[3]={0,0};
5 int i;
6 for(i=0;i<3;i + + ) scanf("%d",&a[i]);
7 for(i=1;i<3;i + + ) a[0]=a[0]+a[i];
8 printf("%f\n",a[0]);
9 }
A) 没有 B)第4行 C)第6行 D)第8行
(8) 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是() 。
A)3 B)0 C)9 D)-12
(9) 以下的for循环() 。
for(x=0,y=0; (y!=123)&&(x<4); x + + );
A) 是无限循环 B)循环次数不定 C)执行4次 D)执行3次
(10) 设有语句char a='\72';则变量a () 。
A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法
(11) C语言中 () 。
A)不能使用do-while语句构成的循环
B)do-while语句构成的循环必须用break语句才能退出
C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环
(12) 以下程序的输出结果是() 。
# include <stdio.h>
# include <string.h>
main()
{
char str[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str));
}
A) 6 B) 7 C) 11 D) 12
(13) 以下程序的输出结果是 () 。
# include <stdio.h>
main()
{
int a=2,c=5;
printf("a=%%d,b=%%d\n",a,c);
}
A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d
(14) 以下程序的输出结果是 () 。
# include<stdio.h>
main()
{
int a ,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
A) 6,1 B) 2,1 C) 6,0 D) 2,0
(15) 以下for语句构成的循环执行了() 次。
# include <stdio.h>
# define N 2
# define M N+1
# define NUM (M+1)*M/2
main()
{
int i , n=0;
for ( i=1;i<=NUM;i + + );
{
n + + ;
printf("%d",n);
}
printf("\n");
}
A) 5 B) 6 C) 8 D) 9
(16) 设有以下语句,则()不是对a数组元素的正确引用,其中0≤i<10。
int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;
(17) 以下程序的输出结果是() 。
# include<stdio.h>
main()
{
int i=1,j=3;
printf("%d",i + + );
{ int i=0; i+=j*2; printf("%d,%d",i,j); }
printf("%d,%d\n",i,j);
}
A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3
(18) 以下程序的输出结果是() 。
# include <stdio.h>
main()
{
int k=4,m=1,p;
p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p);
}
func(int a,int b)
{
static int m=0,i=2;
i+=m+1; m=i+a+b;
return(m);
}
(19) 设有以下语句:
char str1[]="string",str2[8],*str3,*str4="string";
则 () 不是对库函数strcpy的正确调用,此库函数用业复制字符串。
A) strcpy(str1,"HELLO1"); B) strcpy(str2,"HELLO2");
C) strcpy(str3,"HELLO3"); D) strcpy(str4,"HELLO4");
(20) C语言中形参的缺省存储类别是 () 。
A)自动(auto) B)静态(static) C)寄存器(register) D)外部(extern)
(1)以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。
#include <stdio.h>
main()
{
int i,a[10],*p=a,sum=0;
printf("Enter 10 num:\n");
for(i=0;i<10;i + + ) scanf("%d",&a[i]);
for(i=0;i<10;i + + )
if(isprime(*(p+ ____(1)_____ )) = = 1)
{
printf("%d",*(a+i));
sum+=*(a+i);
}
printf("\nThe sum=%d\n",sum);
}
isprime(int x)
{
int i;
for(i=2;i<=x/2;i + + )
if(x%i = = 0)
return (0);
______(2)______;
}
(2) 以下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中的值在main函数中读入。
#include <stdio.h>
#define N 10
invert(int *s,int i,int j)
{
int t;
if(i<j)
{
t=*(s+i);
*(s+j)=(s+j);
*(s+j)=t;
invert(s, ___(3)___ ,j-1);
}
}
main()
{
int a[N],i;
for(i=0;i<N;i + + ) scanf("%d",a+ ____(4)___ );
invert(a,0,N-1);
for(i=0;i<N;i + + ) printf("%d",a[i]);
printf("\n");
}
(3)以下程序的功能是将字符串a中下标值为偶数的元素由小到大排序,其他元素不变.
#include <stdio.h>
main()
{
char a[ ]=”labchmfye”,t;
int i,j;
for(i=0;i<7;i+=2)
for(j=i+2;j<9;____(5)___)
if(____(6)____)
{
t=a[i];
a[i]=a[j];
a[j]=t;
j++;
}
puts(a);
printf(“\n”);
}
(1) 阅读下列程序:
#include<stdio.h>
main()
{
int i, j, row, column,m;
static int array[3][3]={{100,200,300},{28,72,-30},{-850,2,6}};
m=array[0][0];
for (i=0; i<3; i++)
for (j=0; j<3; i++)
if (array[i][j]<m)
{
m=array[i][j]; row=i; column=j;
}
printf("%d,%d,%d\n",m,row,column);
}
上述程序的输出结果是_________ 。
(2) 下面程序的输出结果是_______ 。
#include<stdio.h>
main()
{
int a=3, b=2, c=1;
c-=++b;
b*=a+c;
{ int b=5, c=12;
c/=b*2;
a-=c;
printf( '%d,%d,%d,",a,b,c);
a+=--c;
}
printf( '%d,%d,%d,",a,b,c);
}
(10) 请读程序 。
#define PR(ar) printf("%d", ar)
main()
{ int j, a[]={ 1,3,5,7,9,11,13,15}, *p=a+5;
for(j=3; j; j--)
{
switch(j)
{ case 1:
case 2: PR(*p++); break;
case 3: PR(*(--p));
}
}
}上面程序的输出结果是__________.
(4) 下面程序的输出是__________ 。
long fun5(int n)
{
long s;
if((n==1)||(n==2))
s=2;
else
s=n+fun5(n-1);
return(s);
}
main()
{ long x;
x=fun5(4);
printf("%ld\n",x);
}
(1) 下列语句中符合C语言语法的赋值语句是
A) a=7+b+c=a+7; B) a=7+b++=a+7; C) a=7+b,b++,a+7 D) a=7+b,c=a+7;
(2) 在C语言中,要求运算数必须是整型的运算符是
A) % B) / C) < D) !
(3) 已知字母A的ASCII码为十进制的65,下面程序的输出是
A) 67,D B) B,C C) C,D D) 不确定的值
main()
{ char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
(4) 下面程序的输出是
A) 0 B) 1 C) 3 D) 不确定的值
main()
{ int x=10,y=3;
printf("%d\n",y=x/y);
}
(5) 若执行下面的程序时从键盘上输入3和4,则输出是
A) 14 B) 16 C) 18 D) 20
main()
{
int a,b,s;
scanf("%d %d",&a,&b);
s=a;
if(a<b)s=b;
s=s*s;
printf("%d\n",s);
}
(6) 下面的程序
A) 有语法错误不能通过编译
B) 输出* * * *。
C) 可以通过编译,但是不能通过连接,因而不能运行。
D) 输出# # # #。
main()
{ int x=3,y=0,z=0;
if(x=y+z)printf("* * * *");
else printf("# # # #");
}
(7) 下面的程序
A) 输出的是1 B) 输出的是1和-2 C) 输出的是3和0 D) 是死循环
main()
{ int x=3;
do {
printf("%d\n",X-=2);
}while(!(--x));
}
(8) 下面程序的输出是
A) 17 B) 18 C) 23 D) 24
main()
{ int x=023;
printf(%d\n",--x);
}
(9) 若执行下面的程序时从键盘上输入5,则输出是
A) 7 B) 6 C) 5 D) 4
main()
{ int x;
scanf("%d",&x);
if(x++>5) printf("%d\n",x);
else printf("%d\n",x--);
}
(10) 下面程序的输出是
A) 3 B) 4 C) 1 D) 2
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));
}
(11) 执行下面程序中的输出语句,a的值是
A) 65 B) 20 C) 15 D) 10
main()
{ int a;
printf("%d\n",(a=3*5,a*4,a+5));
}
(12) 下面程序的输出是
A) 0 0 3 B) 0 1 2 C) 1 0 3 D) 1 1 2
main()
{ int a=-1, b=4,k;
k=(a++<=0)&&(!(b--<=0));
printf("%d %d %d\n",k,a,b);
}
(13) 下面程序的输出是
A) xyzabcABC B) zabcABC C) yzabcABC D) xyabcABC
#include<stdio.h>
#include<string.h>
main()
{
char *p1="abc",*p2="ABC",str[50]="xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n", str);
}
(14) 下面程序的输出是
A) 741 B) 852 C) 963 D) 875421
main()
{
int y=9;
for( ; y>0; y--)
{
if(y%3==0)
{
printf("%d", --y);continue;
}
}.
}
(15) 下面程序的输出是
A) 100 B) 160 C) 120 D) 64
main()
{
char x=040;
printf("%d\n",x=x<<1);
}
(16) 以下说法中正确的是
A) C语言程序总是从第一个的函数开始执行
B) 在C语言程序中,要调用的函数必须在main()函数中定义
C) C语言程序总是从main()函数开始执行
D) C语言程序中的main()函数必须放在程序的开始部分
(17) 执行下面的程序后,a的值为
main()
{
int a,b;
for (a=1,b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1)
{
b+=3;
continue;
}
b-=5;
}
}
A) 7 B) 8 C) 9 D) 10
(18) 以下程序段的输出结果是
int x=3;
do {
printf("%3d",x-=2);
} while(!(--x));
A) 1 B) 3 0 C) 1-2 D) 死循环
(19) 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是
main( )
{
int x;
scanf("%d",&x);
if(x + + >5)
printf("%d",x);
else
printf("%d\n",x - -);
}
A) 7和5 B) 6和3 C) 7和4 D) 6和4
(20) 设有如下定义: char *aa[2]={"abcd","ABCD"}; 则以下就法中正确的是
A) aa数组成元素的值分别是"abcd"和ABCD"
B) aa是指针变量,它指向含有两个数组元素的字符型一维数组
C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D) aa数组的两个元素中各自存放了字符'a'和'A'的地址
(1) 以下程序的功能是:人键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空.
main()
{
float x,amax,amin;
scanf("%f",&x);
amax=x; amin=x;
while(___(1)____)
{
if(x>amax) amax=x;
if(____(2)____) amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
(2) 下面程序通过函数average计算数组中各元素的平均值,请填空.
float average(int * pa,int n)
{ int i;
float avg=0.0;
for(i=0;i<n;i++) avg=avg+___(3)___;
avg=___(4)___;
return avg;
}
main()
{
int i,a[5]={2,4,6,8,10};
float mean;
mean=average(a,5);
printf("mean=%f\n",mean);
}
(3) 以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。
#include"ctype.h"
#include"stdio.h"
main()
{
char str[81],*sptr;
int i;
for(i=0;i<80;i++)
{
str[i]=getchar();
if(str[i]=='\n')
break;
}
str[i]=___(5)___;
sptr=str;
while(*sptr) putchar(*sptr___(6)____);
}
(1) 下面程序的输出是_______。
#define MAX 5
int a[MAX],k;
main()
{ fun1();fun3(); fun2(); fun3();
printf("\n");
}
fun1()
{
for(k=0;k<MAX;k++)
a[k]=k+k;
}
fun2()
{
int a[MAX],k;
for(k=0;k<5;k++)
a[k]=k;
}
fun3()
{
int k;
for(k=0;k<MAX;k++)
printf("%d",*(a+k)):
}
(2)以下程序运行后,输出结果是________
main ()
{
int y=18,i=0,j,a[8];
do
{
a[i]=y%2;i++;
y=y/2;
} while(y>=1);
for(j=i-1>0;j--)
printf(%d",a[j]);
printf("h\n");
}
(3)以下程序的输出结果是________
main()
{
int i,j,x=0;
for (i=0;i<2;i++)
{ x++;
for(j=0;j<3;j++)
{
if (j%2)
continue;
x++;
}
x++;
}
printf("=%d\n",x);
}
(4) 以下程序的输出结果是_______
main( )
{
char *s="12134211";
int v[4]={0,0,0,0},k,i;
for(k=0;s[k];k++)
{
switch(s[k])
{
case '1':i=0;
case '2':i=1;
case '3':i=2;
case '4':i=3;
}
v[i]++;
}
for(k=0;k<4;k++)
printf("%d ",v[k]);
}
1.从键盘输入一个字符串a,并在a串中的最大元素后边插入字符串b(b[ ]=”ab”). 试编程.
(1) 以下选项中属于C语言的数据类型是
A) 复数型 B) 逻辑型 C) 双精度型 D) 集合型
(2) 在C语言中,不正确的int类型的常数是
A) 32768 B) 0 C) 037 D) 0xAF
(3) 语句:printf("%d",(a=2)&&(b= -2);的输出结果是
A) 无输出 B) 结果不确定 C) -1 D) 1
(4) 下列描述中不正确的是
A) 字符型数组中可以存放字符串
B) 可以对字符型数组进行整体输入、输出
C) 可以对整型数组进行整体输入、输出
D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
(5) 设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&++y));的输出结果是
A) 1 B) 0 C) -1 D) 2
(6) 当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是
A) c=b=a; B) (a=c) ‖(b=c) ;
C) (a=c) &&(b=c); C) a=c=b;
(7) 以下程序的输出结果是
A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1
main( )
{
int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d,%d ",x--,y);
}
(8) 以下程序的输出结果是
A) 5 2 B) 5 1 C) 5 3 D) 9 7
main( )
{
int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i<4;i+=2)
printf("%d ",p[i]);
}
(9) 以下程序的输出结果是
A)6 B) 6789 C) '6' D) 789
main( )
{
char a[10]={'1','2','3','4','5','6','7','8','9',0},*p;
int i;
i=8;
p=a+I;
printf("%s\n",p-3);
}
(10) 以下程序的运行结果是
A) 运行后报错 B) 6 6 C) 6 12 D) 5 5
#include "stdio.h"
main( )
{
int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12,};
int *p=a+5, *q=NULL;
* q=*(p+5);
printf("%d %d \n",*p,*q);
}
(11) 以下说法中正确的是
A) #define和printf都是C语句 B) #define是C语句,而printf不是
C) printf是C语句,但#define不是 D) #define和printf都不是C语句
(12) 语句:printf("%d \n",12 &012);的输出结果是
A) 12 B) 8 C) 6 D) 012
(13) 能正确表示a和b同时为正或同时为负的逻辑表达式是
A) (a>=0‖b>=0)&&(a<0‖b<0)
B) (a>=0&&b>=0)&&(a<0&&b<0)
C) (a+b>0)&&(a+b<=0)
D) a*b>0
(14) 以下程序的输出结果是
A) 2 0 B) 3 1 C) 3 2 1 D) 2 1 0
main( )
{
int n=4;
while(n--)
printf("%d ",--n);
}
(15) 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是
A) p+1 B) a+1 C) a++ D) ++p
(16) 以下程序的输出结果是
A) 17,021,0x11 B) 17,17,17 B) 17,0x11,021 D) 17,21,11
main( )
{
int k=17;
printf("%d,%o,%x \n",k,k,k);
}
(17) 以下程序的输出结果是
A) -1 1 B) 0 1 C) 1 0 D) 0 0
main( )
{ int a= -1,b=1,k;
if((++a<0)&& ! (b-- <=0))
printf("%d %d\n",a,b);
else
printf("%d %d\n",b,a);
}
(18) 若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是
A) *p=&a; scanf("%ld",p);
B) p=(long *)malloc(8); scanf("%ld",p);
C) scanf("%ld",p=&a);
D) scanf("%ld",&a);
(19) 若有以下定义和语句:
double r=99, *p=&r;
*p=r;
则以下正确的叙述是
A) 以下两处的*p含义相同,都说明给指针变量p赋值
B) 在"double r=99, *p=&r;"中,把r的地址赋值给了p所指的存储单元
C) 语句"*p=r;"把变量r的值赋给指针变量p
D) 语句"*p=r;"取变量r的值放回r中
(20) 以下程序的输出结果是
A) 编译不通过,无输出 B) acegC) acegi D) abcdefghi
main( )
{
int i;
for(i='A';i<'I';i++,i++)
printf("%c",i+32);
printf(" \n");
}
(1) 以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。
main( )
{
float x[1000], sum=0.0, ave, a;
int n=0, i;
printf("Enter mark:\n");scanf("%f",&a);
while(a>=0.0&& n<1000)
{
sum+ ___(1)___ ;
x[n]= _____(2)_____ ;
n++;
scanf("%f",&a);
}
ave= ____(3)____ ;
printf("Output:\n");
printf("ave=%f\n",ave);
for (I=0;I<n;I++)
if (_____(4)_____)
printf ("%f\n",x[I]);
}
(2) 以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空。
#define N 3
#define M 4
void LineMax(int x[N][M])
{
int i,j,p;
for(i=0; i<N;i++)
{
p=0;
for(j=1; j<M;j++)
if(x[i][p]<x[i][j]) ____(5)____ ;
printf("The max value in line %d is %d\n", i, _____(6)_____ );
}
}
main()
{
int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
______(7)______;
}
#include "stdio.h"
#include"string.h"
main( )
{
char b[30],*chp;
strcpy(&b[0],"CH");
strcpy(&b[1],"DEF");
strcpy(&b[2],"ABC");
printf("%s \n",b);
}
(2) 下列程序的输出结果是___________ 。
int t(int x,int y,int cp,int dp)
{
cp=x*x+y*y;
dp=x*x-y*y;
}
main( )
{
int a=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d %d \n",c,d);
}
(3) 下列程序中字符串中各单词之间有一个空格,则程序的输出结果是______________ 。
#include "string.h"
#include"stdio.h"
main( )
{
char strl[]="How do you do", *p1=strl;
strcpy(strl+strlen(strl)/2,"es she");
printf("%s \n",pl);
}
(4) 以下程序的运行结果是__________
#include <stdio.h>
main( )
{
int k=4, m=1, p;
p=func(k,m); printf("%d,",p);
p=func(k,m); printf("%d \n",p);
}
func(int a, int b)
{
static int m=0, i=2;
i+=m+1;
m=i+a+b;
return m;
}
一、选择题(共20题,每题2分,共40分)
1、设有说明语句:char a= '\72abc';则变量a ()
A) 包含6个字符B) 包含5个字符C) 包含4个字符D) 说明不合法
2、在C语言中,数字029是一个()
A)八进制数B)十六进制数C)十进制数D)非法数
3、有如下程序
main( )
{ int y=3,x=3,z=1;
printf("%d %d\n",(++x,y++),z+2);}
运行该程序的输出结果是()
A)3 4B)4 2C)4 3D)3 3
4、有如下程序段
int a=14,b=15,x;
char c='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为( )
A)tureB)falseC)0D)1
5、如下程序
main( )
{ int x=1,a=0,b=0;
switch(x)
{ case 0:b++;
case 1:a++;
case 2:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是()
A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2
6、
main( )
{ int i,j;
for(i=0,j=1; i<=j+1; i+=2, j--)printf("%d \n",i);
}
以上循环体的执行次数是( )
A)3 B)2 C)1D)0
7、设有数组定义:char array [ ]="China";则数组 array所占的空间为( )
A)4个字节B)5个字节C)6个字节D)7个字节
8、C语言的编译系统对宏命令是()
A)在程序运行时进行代换处理的
B)在程序连接时进行代换处理的
C)和源程序中其它C语句同时进行编译的
D)在对源程序中其它成份正式编译之前进行处理的
9、以下说法中正确的是()。
A)C语言程序总是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在main( )中有定义
C)C语言程序的执行既可以采用解释方式,也可以采用编译方式
D)C语言程序中的main( )函数可以不放在程序的开始部分
10、下面程序的输出是( )
#define SUB(X,Y)(X)*Y
main( )
{int a=3,b=4;
printf("%d\n",SUB(a++,b++));
}
A)12B)15C)16D)20
11、设有如下定义:
char*aa[2]={“abcd”,”ABCD”};则以下说法中正确的是()
A)aa数组元素的值分别是“abcd”,”ABCD”
B)aa是指针变量,它指向含有两个数组元素的字符型一维数组
C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D)aa数组的两个元素中各自存放了字符’a’,’A’的地址
12、若变量已正确说明为float类型,要通过语句scanf("%f %f %f ",&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:()
A) 10<回车> B) 10.0,22.0,33.0<回车>
22<回车>
33<回车>
C) 10.0<回车> D) 10 22<回车>
22.0 33.0<回车> 33<回车>
13、当调用函数时,实参是一个数组名,则向函数传送的是()
A) 数组的长度B) 数组的首地址C) 数组每一个元素的地址D) 数组每个元素中的值
14、有以下函数
char *fun(char *p)
{ return p; }
该函数的返回值是( )
A) 无确切的值 B) 形参p中存放的地址值
B) 一个临时存储单元的地址 D) 形参p自身的地址值
15、若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是()
A) &t[3][2] B) t[3][2] C) t[1][0] D) t[2]+1
16、以下程序的输出结果是()
A)#*#*# B)##### C)***** D)*#*#*
main( )
{ int i;
for(i=1;i<6;i++)
{ if(i%2){printf("#");continue;}
printf("*");
}
printf("\n");
}
17、已知有声明语句char s1[10]= "abcde",s3[10];以下语句中能将s1中存储的字符串和s2中存储的字符串正确交换的是。
A.s3=s1,s1=s2,s2=s3;
B.s3[0]=s1[0],s1[0]=s2[0],s2[0]=3[0];
C.strcpy(s3[0],s1[0]),strcpy(s1[0],s2[0]),strcpy(s2[0],s3[0]);
D.strcpy(s3,s1),strcpy(s1,s2),strcpy(s2,s3);
18、若有声明语句int a[10],b[3][3];则以下对数组元素赋值的操作中,不会出现越界访问的是___。
A.a[-1]=1B.a[10]=0C.b[3][0]=0D.b[0][0]=0
19、以下是一个自定义函数的头部,其中正确的是。
A.int fun(int a[ ],b)B.int fun(int a[ ],int a)
C.int fun(int *a,int b)D.int fun(char a[ ][ ],int b)
20、下列4个函数中,()能实现交换变量值的功能。
A)void fun_a(int x,int y)B)void fun_b(int *x,int *y)
{int *p;{int *p;
*p=x;x=y;y=*p;}*x=*y;*y=*x;}
C)void fun_c(int *x,int *y)D)void fun_d(int x,int y)
{*x=*x+*y;{int p;
*y=*x-*y;p=x;x=y;y=p;
*x=*x-*y;}}
二、填空题(每空2分,共26分)
1、已知:int x=3;则
printf(x%2?"**%d":"##%d\n",x);
printf("00000\n");
输出结果为:
2、若有以下定义和语句,则通过指针p对值为8的数组元素的引用表达式是
inta[10]={1,2,3,4,5,6,7,8,9},*p;
p=&a[1];
#include "stdio.h"
main()
{char a[11]="0123456789",*p;
p=&a[4];
puts(p);}
4、求两数中的较大
main()
{ float a,b,max;
scanf(“%f%f”,&a,&b);
;
printf(“the max is %f\n”,max);
}
5、下列程序用于将从键盘输入的整数逆序输出
main( )
{ int n1,n2;
scanf("%d",&n2);
while()
{ n1=n2%10;
n2=;
printf("%d",n1);}
}
6、下面的程序输出3到1000之间的所有素数,且每5个一行。
main( )
{int i,j;
int b=0,c=0;
for(i=3;i<=1000;i++)
{ for(j=2;j<=i-1;j++)
if ( ){b=1;break;}
if (!b)
{ c++;printf("%4d",i);
if () printf(“\n”);
}
}
}
7、利用插入排序法将十个字符从小到大排序
#include <stdio.h>
void insert(char s[])
{
int i,j,t;
for (i=1;i<=9;i++)
{t=s[i];j=i-1;
while ((j>=0)&&())
{ s[j+1]=s[j];;}
s[j+1]=t;
}
}
main()
{
char a[11];int i;
for (i=0;i<10;i++)a[i]=getchar();
insert(a);
puts)a);
}
8、用递归法将一个整数n转换成字符串。如输入整数483,则输出字符串“483”。
void convert(n)
int n;
{ int k;
if ((k/10)!=0) convert();
putchar(n%10+'0');
}
main()
{ int num;
printf("\n输入整数:”);
scanf("%d",&num);
printf("\n输出是:");
if (num<0) {putchar('-');num=-num;}
;
}
三、判断题(每题2分,共20分)
()1、在对某一函数进行多次调用时,系统会对相应的自动变量重新分配存储单元。
()2、在C语言的复合语句中,只能包含可执行语句。
()3、自动变量属于局部变量。
()4、一个函数利用return只能返回一个函数值。
()5、在程序运行过程中,系统分配给实参和形参的内存单元是不同的。
()6、用scanf输入字符时,字符串中不能包含空格。
()7、Continue 和break都可用来实现循环体的中止。
()8、若将C源程序经过编译、连接后生成可执行文件,则可直接在DOS系统下输入可执行文件名执行。
()9、字符常量的长度肯定为1。
()10、已知:char c=48;int i=1,j=10;执行语句j=!(c>j)&&i++;则i和j的值分别是1和0。
四、编程题:(14分)
编写程序,求1!+2!+……n!,要求从主函数输入n的值,用函数实现阶乘的计算,并通过函数值返回(请注意合理的类型选取)。
答案
一、选择题
1、c2、d3、D4、D5、A
6、C7、C8、D9、D10、A
11、C12.B13.B14.B15.D
16.A17.D18.D19.C20.C
二、填空题:
1、**300000
2.*(p+6)
3. 456789
4.max=a>b?a:b
5、n2!=0
n2/10
6、 i%j= =0;c%5==0;
7、t<s[j]
j—
a[i]=’\0’;
8.n/10convert(num)
三、判断题
对,错,对,对,对,对,错,对,对,对
四、编程题
略
一、选择题(共20题,每题2分,共40分)
1、有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}
int (*ptr)[3]=a,*p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是()。
A)*((*ptr+1)[2])B)*(*(p+5))
C)(*ptr+1)+2D)*(*(a+1)+2)
2、# include <stdio.h>
void main ( )
{int a[3][3]={1,2,3,4,5,6,7,8,9};
int s=0,i;
for (i=0;i<3;i++)
s+=(*(a+i))[i];
printf("%d",s);
}
A)9 B)12 C)14D)15
3、设有说明语句:char a= '\123abc';则变量a ()
A) 包含7个字符B) 包含6个字符C) 包含5个字符D) 包含4个字符
4、有以下程序段
int k=0
while(k=1)k++;
while 循环执行的次数是()
A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次
5、在C语言中,()。
A)函数定义可以嵌套,但函数调用不能嵌套
B)函数定义不可以嵌套,但函数调用可以嵌套
C)函数定义和调用均不能嵌套
D)函数定义和调用均可以嵌套
6、以下叙述正确的是( )
A)do-while语句构成的循环不能用其它语句构成的循环代替。
B)do-while语句构成的循环只能用break语句退出。
C)用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D)用do-while语句构成的循环,在while后的表达式为零时结束循环。
7、若有声明语句char ch=’a’,*pc=&ch;以下语句中,有语法错误的是。
A.(*pc)++B.ch+=-‘a’+’A’;C.toupper(ch)=ch;D.ch++;
8、以下关于函数叙述中,正确的是。
A.在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值
B.在函数体中至少必须有一个return 语句
C.在函数体中可以定义另一个函数
D.在函数体中可以调用函数自身
9、以下数组声明语句中正确的是。
A.int a,a[n];B.int a[ ];
C. int a[2][3]={{1},{2},{3}};D.int a[ ][3]={{1},{2},{3}};
10、以下程序执行后的结果是()
A)9B)程序出错C)死机D)15
#include <stdio.h>
#defineAREA(x,y)x*y;
main()
{int i;
i=AREA(3+2,3)
printf(“%d”,i);}
11、以下程序的输出结果是()
main( )
{int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++)
t=t+b[j][j]];
printf("%d\n",t);
}
A)3B)4C)1D)9
12、以下不能正确进行字符串赋初值的语句是()
A)char str[5]="good!";B)char str[ ]= "good!";
C)char *str="good!";D)char str[5]={ 'g','o','o','d'};
13、以下关于switch语句和break语句的描述中,只有()是正确的。
A)在switch语句中必须使用break语句
B)在switch语句中,可以根据需要使用或不使用break语句
C)break语句只能用于switch语句中
D)break语句是switch语句的一部分
14、判断变量ch中的字符是否为数字字符,最简单的正确表达式是()。
A)ch>=0&&ch<=9B)’0’<=ch<=’9’
C)ch>=’0’||ch<=’9’D)ch>=’0’&&ch<=’9’
15、若执行以下程序时从键盘上输入9,则输出结果是()
A)11B)10C)9D)8
main()
{ int n;
scanf("%d",&n);
if(n++<10) printf("%d\n",n);
else printf("%d\n",n--);
}
16、若w=1,x=2,y=3,z=4;则条件表达式w>x?w:y<z?y:z的结果是()
A)4B)3C)2D)1
17、设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后y的值为()
A)不定值B)4C)3D)1
18、以下程序的输出结果是()
main( )
{int x=023;
printf("%d\n",--x);
}
A)18B)22C)23D)19
19、下列4个函数中,()能实现交换变量值的功能。
A)void fun_a(int x,int y)B)void fun_b(int *x,int *y)
{int *p;{int *p;
*p=x;x=y;y=*p;*x=*y;*y=*x;
}}
C)void fun_c(int *x,int *y)D)void fun_d(int x,int y)
{*x=*x+*y;{int p;
*y=*x-*y;p=x;x=y;y=p;
*x=*x-*y;}
}
20、以下所列的各函数首部中,正确的是()
A) void play(var :integer,var b:integer)
B) void play(int a,b)
C) void play(int a,int b)
D) Sub play(a as integer,b as integer)
二、填空题(每空2分,共26分)
1、判断n是否是素数,若是,则返加1,否则返回0
int prim(int n)
{ int m;
for (m=2;m<=n/2;m++)
if
return 0;
;
}
2、下述程序段是要实现在数组中查找最大元素和最小元素的下标,
# include <stdio.h>
void find(int *a,int n,int *max,int *min)
{int i;
*max=*min=0;
for(i=1;i<n;i++)
if(a[i]>a[*max])
;
else
if(a[i]<a[*min])
;
return;
}
void main( )
{int a [ ]={5,8,7,6,2,7,3};
int max,min;
find();
printf("\nmax=%d,min=%d",max,min);
}
3、下面的程序当输入为字符串”qwert?”时的输出结果是
Main()
{ char c;
while((c=getchar())!=’?’) putchar(++c);
}
4、假设有如下语句:
int a;float b,c;
scanf("%2d%3d%4f",&a,&b,&c);
printf("\na=%d,b=%f,c=%f\n",a,b,c);
若从键盘输入:9876543210
则输出应为:
5、下面的函数用于实现将一个字符串按逆序存放。
Void convert(char s[])
{ char m;int i,j;
for (i=0,j=strlen(s);i<;i++,j++)
{
m=s[i];
s[i]=;
s[j-1]=m;
}
printf(“%s\n”,s);
}
6、以下函数fun的功能是用选择排序法对数组的数据按从小到大的顺序排列。
void fun(int a[ ],int n)
{int i,j,k,temp;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;;j++)
if(a[j]<a[k])k=j;
if()
{temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
7、函数fun,其功能是求两个整数的最大公约数
fun(int x,int y)
{int a,b,t,r;
a=x;
b=y;
while()
{a=b;
}
return (b);
}
#define N 3
#define M 4
void LineMax(int x[N][M])
{ int i,j,p;
for(i=0;i<N;i++)
{ p=0;
for(j=1;j<M;j++)
if(x[i][p]<x[i][j]);
printf("The max value in line %d is %d\n", i,x[i][p]);
}}
main()
{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
;
}
三、判断题(每题2,共20分)
()1、C语言允许在复合语句内定义自动变量。
()2、全局变量可以和局部变量重名,且全局变量优先。
()3、若一个函数的返回类型为void,则表示其没有返回值。
()4、在程序运行过程中,系统分配给实参和形参的内存单元是相同的。
()5、对于Continue 和break这两条语句,只有break可用来实现循环体的中止。
()6、已知:char c='A';int i=1,j;执行语句j=!c&&i++;则i和j的值分别是0,1
()7、所有定义在主函数之前的函数无需进行声明。
()8、&既可以用作单目运算符也可以用作双目运算符
()9、宏定义和文件包含都是C语言中的编译预处理命令,对它们的处理是在编译前完成的。
()10、一个函数利用return不可能同时返回多个值。
四、编程题:(14分)
编程打印如下的杨辉三角形,具体要求如下:
(1)从主函数中输入欲打印的杨辉三角形行数;
(2)用子函数实现杨辉三角形的显示;
1
121
1 331
1464 1
1 5101051
1615201561
……
答案:
一、选择题
1、D2、D3.D4,A5.B
6.D7.C8.D9.C10.A
11.B12.A13.B14.D15.B
16.B17.C18.A19.A20.C
二、填空题
1. n%m==0;return 1;
2、
*max=i
*min=i
a,7,&max,&min
3.rxfsu
4.a=98,b=765.000000,c=4321.000000
6.j<n;a[k]!=a[i]
7.(r=a%b)!=0b=r
8.x[i][p]=x[i][j];LineMax(x)
三、判断题
对,错,对,错,对,对,对,错,对,对
四、略
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1.属于C语言基本数据类型的是( )
A.指针型 B.无符号整型
C.数组型 D.结构型
2.C语言的长整型数值在计算机中占用的字节个数是( )
A.1 B.2
C.3 D.4
3.C语言中,″\x3d″在内存中占用的字节数是( )
A.1 B.2
C.4 D.5
4.设int x;则执行printf(″%x\n″,~x^x);的结果是( )
A.0 B.1
C.ff D.ffff
5.对于while语句,错误的说法是( )
A.用条件控制循环体的执行次数
B.循环体至少要执行一次
C.循环体有可能一次也不执行
D.循环体中可以包含若干条语句
6.设int a=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是( )
A.9,19 B.9,20
C.10,19 D.10,20
7.执行下列语句
int a=8,b=7,c=6;
if(a<b)if(b>c){a=c;c=b;}
printf(″%d,%d,%d\n″,a,b,c);
后输出的结果是( )
A.6,7,7 B.6,7,8
C.8,7,6 D.8,7,8
8.设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\0′};那么( )
A.x数组的长度等于y数组的长度
B.x数组的长度大于y数组的长度
C.x数组的长度少于y数组的长度
D.x数组与y数组的存储区域相同
9.设int i,x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句
for(i=0;i<3;i++)
printf(″%d″,x[i][2-i]);
的输出结果是( )
A.147 B.159
C.357 D.369
10.设int b[ ]={1,2,3,4},y,*p=b;
则执行语句y=*p++;之后,变量y的值为( )
A.1 B.2
C.3 D.4
二、填空题(本大题共10小题,每小题2分,共20分)
11.设int y;执行表达式(y=4)||(y=5)||(y=6)后,y的值是______。
12.设char ch=′A′;则printf(″%c″,(ch>=′A′ && ch<=′Z′)?ch+32:ch);的值是_____。
13.结构化程序设计的三种基本结构是:选择结构、循环结构和______。
14.下列程序
int x=3;
do{printf(″%d″,--x);}while(!x);
循环执行的次数是______。
15.在C语言中,一个二维数组可以看成若干个______数组。
16.设int a[3][4]={{1,3,5,7},{2,4,6,8}};则*(*a+1)的值为______。
17.若函数定义为
int data( )
{ float x=9.9;
return(x);
}
则函数返回的值是______。
18.设struct student
{int no;char name[12];
float score[3];
{s1,*p=&s1;.
用指针变量p给s1的成员no赋值1234的方法是______。
19.判断文本文件是否结束时使用的符号常量EOF的值是______。
20.设有一个名为″myfile.c″的C程序,
其主函数为mian(int argc,char *argv[ ])。如果在执行时,输入的命令行为
myfile aa bb ↙
则形式参数argc的值是______。
三、程序分析题(本大题共5小题,每小题5分,共25分)
阅读下列程序,将输出结果写到各题右侧的空白处
21.fun(int x)
{
int y=0;
static int z=3;
z++;++y;
return(x+y+z);
}
main( )
{
int I,x=2;
for(i=0;i<2;i++)
printf(″%5d″,fun(x++));
}
22.main( )
{
int s=0,i;
for(i=1;;i++)
{
if(s>50)break;
if(i%2==0) s+=i;
}
printf(″i=%d,s=%d\n″,i,s);
}
23.gcd(int m,int n)
{ if(m==n)return m;
else if(m>n) return gcd(m-n,n);
else return gcd(m,n-m);
}
main( )
{
printf(″Gcd=%d\n″,gcd(24,36));
}
24.# include<stdio.h>
main( )
{ int i=0;
char c,s[]=″SABC″;
while(c=s[i])
{
switch(c)
{
case ′A′:i++;break;
case ′B′:++i;
default:putchar(c);i++;
}
putchar(′*′);
}
}
25.int a1=300,a2=400;
main( )
{int a3=100,a4=200;
sub1(a3,a4);
sub1(a1,a2);
printf(″%d,%d,%d,%d\n″,a1,a2,a3,a4);
}
sub1(int x,int y)
{ a1=x;
x=y;
y=a1;
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
给出下列程序,将横线处缺少的部分补上,使其能正确运行。
26.将十个整数输入数组,求出其平均值并输出。
main( )
{int i,a[10],sum=0,*p=_________________; /*第一空*/
for(i=0;i<10;i++)
{ scanf(″%d″,p);sum+=________________; /*第二空*/
printf(″%8.2f\n″,_____________________); /*第三空*/
}
27.输入一个无符号整数后求出它的各位数之和并输出。
例如若输入123,则将各位之和6(即1+2+3)输出。
__________f(num) /*第一空*/
unsigned int num;
{ unsigned int k=0;
do
{ k+=__________; /*第二空*/
num/=10;
} while(num);
__________; /*第三空*/
}
main( )
{unsigned int n;
scanf(″%d″,&n);
printf(″%u\n″,f(n));
}
28.为数组输入数据,逆序置换后输出。(逆序置换是指:数组的首元素和末元素置换,第二个元素和倒数第二个元素置换,………)
# define N 8
main( )
{ int i,j,t,a[N];
for(i=0;i<N,i++)scanf(″%d″,a+i);
i=0;j=N-1;
while(i<j)
{ t=*(a+i);__ __________; /*第一空*/
__________=t; /*第二空*/
i++;__________; /*第三空*/
}
for(i=0;i<N;i++)printf(″%5d″,*(a+i));
}
五、程序设计题(第29小题7分,第30小题各10分,共17分)。
29.将100个整数输入数组后按每行10个数输出。
30.计算e=1+
的值并输出(设n=20)。
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1.有以下语句:int a=6;a+=a-=a*a;printf(“%d”,a);输出结果
A.–132B.–60C.-24D.0
2.字符a的ASCII码为97,在C程序中可用下列方法表示,除了
A. ‘a’B. ‘97’C.‘\141’D. ‘\x61’
3.设int a,*p;则语句p=&a;中的运算符“&”的含义是( )
A.位与运算 B.逻辑与运算
C.取指针内容 D.取变量地址
4.下面函数定义有错误的是( )
A.f1(x1,x2) B.f1(x1,x2)
int x1,x2; int x1;int x2;
{函数体} {函数体}
C.f1(int x1,x2) D.f1(int x1,int x2)
{函数体} {函数体}
5.下列定义正确的是( )
A.anum t={a,b}x; B.enum t{1,2}x;
C.anum {′+′,′-′}x; D.enum t{a,b}x;
6.设有定义:
union u{int a[4];float b[3]};
char c[16];}aa;
则printf(″%d\n″,sizeof(aa));的输出是( )
A.32 B.16
C.12 D.8
7.数据-35.78在文本文件中占用的字节个数是( )
A.4 B.5
C.6 D.8
8.在下列有关宏替换的叙述中,正确的说法是( )
A.宏替换占用运行时间
B.宏名有类型
C.带参数的宏替换和函数等价
D.宏替换只是字符替换
9.下列程序的运行结果是( )
# define A 5
# define B A+1
main( )
{int a;
a=B;
printf(″%d\n″a--);
}
A.6 B.5
C.4 D.出错
10.为了向二进制文件尾部增加数据,打开文件的方式应采用( )
A.″ab″ B.″rb+″
C.″wb″ D.″wb+″
二、填空题(本大题共10小题,每小题2分,共20分)
11.设int y;执行表达式(y=4)||(y=5)||(y=6)后,y的值是______。
12.设char ch=′A′;则printf(″%c″,(ch>=′A′ && ch<=′Z′)?ch+32:ch);的值是_____。
13.结构化程序设计的三种基本结构是:选择结构、循环结构和______。
14.下列程序
int x=3;
do{printf(″%d″,--x);}while(!x);
循环执行的次数是______。
15.在C语言中,一个二维数组可以看成若干个______数组。
16.设int a[3][4]={{1,3,5,7},{2,4,6,8}};则*(*a+1)的值为______。
17.若函数定义为
int data( )
{ float x=9.9;
return(x);
}
则函数返回的值是______。
18.设struct student
{int no;char name[12];
float score[3];
{s1,*p=&s1;.
用指针变量p给s1的成员no赋值1234的方法是______。
19.判断文本文件是否结束时使用的符号常量EOF的值是______。
20.设有一个名为″myfile.c″的C程序,
其主函数为mian(int argc,char *argv[ ])。如果在执行时,输入的命令行为
myfile aa bb ↙
则形式参数argc的值是______。
三、程序分析题(本大题共5小题,每小题6分,共30分)
阅读下列程序,将输出结果写到各题右侧的空白处
21 . 以下程序的输出结果为
main( )
{ int x=12;
float a=3.14159;
printf("%5d##\n",x);
printf("%-5d##\n",x);
printf("%10.6f##\n",a);
printf("%-10.6f##\n",a);
}
22. 以下程序输入一个字母,并将它转换为密码。转换规则:将 ‘a’变成‘z’, 将 ‘b’变成‘y’......, 将 ‘Z’变成‘A’, 将‘Y’变成‘B’......。
#include "stdio.h"
main( )
{
char c;
c=;
if(c>=‘A’&&c<=‘Z’)
c=;
else if(c>=‘a’&&c<=‘z’)
c=;
putchar(c);
}
23. 以下函数应用折半查找法从有序(由小到大)数组a中对m进行查找,若找到返回其下标值,否则返回-1。
int binary(int a[10],int m)
{
int low = 0, high = 9, mid;
while(low <= high);
{
mid= ;
if(m ==a[mid]) return (mid);
else if(m < a[mid]) ;
else ;
}
return(-1);
}
24. 以下程序对一个3×3的矩阵进行行列互换。
main( )
{
int i,j,temp;
int a[3][3]={1,2,3,4,5,6,7,8,9};
for( i=0 ; i<3; i++)
for( ; j<3; j++)
temp=a[i][j],,;
printf("\n the rusult array is:\n");
for(i=0;i<3;i++)
{
printf("\n");
for(j=0;j<3;j++)
printf("%5d",a[i][j]); }
}
}
25. 以下程序使用递归的方法求两个数的最大公约数。
int GYS(int m,int n)
{ if(n==0)return m ;
elsereturn );
}
void main()
{ int m,n;
printf("Please enter Number m and n:(m、n>0))\n");
scanf("%d,%d",&m,&n);
printf("GYS(%d,%d)=%d\n",m,n,);
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
26.将十个整数输入数组,求出其平均值并输出。
main( )
{
int i,a[10],sum=0,*p=_________________; /*第一空*/
for(i=0;i<10;i++)
{
scanf(″%d″,p);
sum+=________________; /*第二空*/
}
printf(″%8.2f\n″,_____________________); /*第三空*/
}
27. 以下程序输入一行字符,并将其转换为密码。转换规则:将字母A变成字母E,即变成其后的第4个字母;W变成A,z变成d。所有字母按上述规律转换,非字母字符不变。
#include "stdio.h"
main( )
{
char c;
while( !=’\n’)//第1空
{
if()//第2空
c+=4;
else if(c>=‘W’&&c<=‘Z’|| c>=‘w’&&c<=‘z’)
;//第3空
putchar(c);
}
}
28. 以下函数copy将字符数组p1中的元音字母复制到字符数组p2中。。
void copy(char p1[],char p2[])
{
int i=0,j=0;
char c;
while((c=)//第1空
if(c=='a' || c=='A' || c=='e' || c=='E' || c=='i' || c=='I'
|| c=='o' || c=='O' || c=='u' || c=='U' )
;//第2空
;//第3空
}
五、 程序设计题(第26小题10分,共12分)。
26.生成Fibonacci数列的前20项并输出,其中
fi=