c语言将数组的列项向左移动,C语言期末考试试题

本篇博客详细解析了C语言的多项选择题、填空题及编程题,涵盖运算符优先级、数组操作、指针应用、结构体与联合体、文件操作等核心概念,并提供了完整的代码示例及运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

江苏省仪征中学-2013河北中考数学

C语言试题1

一 填空题(15分)

1.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为( )。

2.设 int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是(

)。

3.下面程序段的输出结果是( )。

int

a=1234; a=a&0377; printf(“%d %on”,a,a);

4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是( )。

char a[3];

5.设有以下宏定义,则执行赋值语句

a=PP*20;(a为int型变量)后,a的值是( )。

#define

PR 80

#define PP PR+403

6.在C程序中,可以通过三种运算方式为指针变量赋地址值,它们是:( )、( )和(

)。

7.在C文件中,数据存在的两种代码形式是( )和( )。

8.C语言中调用( )函数打开文件,调用( )函数关闭文件,调用(

)函数

可实现文件的随机读写。

9.若有int

a[3]={10,12,30};则a+1是( )的地址,*(a+2)=( )。

判断对错(5分,对的划“√”,错的划“×”

1.在Turbo

C中,整型数据在内存中占2个字节。( )

2.表达式14+2.75的值是3。( )

3.结构体类型只有一种。( )

4.函数若无返回值,则它一定无形参。( )

5.C语言只能处理文本文件和二进制文件。( )

三 选择题(20分)

1.设 int a=12; 表达式a+=a-=a*=a的值是( )。

A

12 B 144 C 0 D 132

2.以下程序的输出结果是( )。

main( )

{ int

a=011;

printf(“%dn”,++a);

}

A 12 B

11 C 10 D 9

3.以下程序的输出结果是( )。

#define ADD(x) (x)+(x)

main()

{ int a=4,b=6,c=7,d=ADD(a+b)*c;

printf(“d=%d”,d);

}

A d=70 B

d=140 C d=280 D d=80

4.下面的选项中正确的赋值语句是(char a[5],*p=a;)( )。

A p=“abcd”; B a=“abcd”; C *p=“abcd”;

D *a=“abcd”;

5.若k为整形,则while循环执行( )次。

k=2; while(k==0) printf(“%d”,k); k--;

printf(“n”);

A 10 B 9 C 0

D 1

6.数组名作为实参传递给形参时,数组名被处理为(

)。

A 该数组的长度 B 该数组的元素个数 C 该数组的首地址 D

该数组中各元素的值

7.两个指针变量不可以( )。

A. 相加 B

比较 C 相减 D 指向同一地址

8.若有以下程序段,则值为6的表达式是(

)。

struct st{ int n;struct st *next;};

static struct st

a[3]={5,&a[1],7,&a[2],9,„0‟},*p; p=&a[0];

A

p++->n B p->n++ C (*p).n++ D ++p->n

9.要打开一个已存在的非空文件"file"用于修改,选择正确的语句( )。

A

fp=fopen( B fp=fopen(

C fp=fopen( D

fp=fopen(

四 写出下列程序的运行结果。(28分)

1.main( )

{ int a[6]={10,6,23,-90,0,3},i;

invert(a,0,5);

for(i=0;i<6;i++)

printf(“%d,”,a[i]);

printf(“n”);

}

invert(int *s,int i,int j)

{ int t;

if(i{ invert(s,i+1j-1);

t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;

}

}

2.f1(int a)

{ int b=0; static int

c=3;

b+=1; c++;

return(a+b+c);

}

main()

{

int a=1,i;

char

s1[10]=“java”,s2[10]=“basic”,s[10];

for(i=0;i<3;i++) printf(

printf(“n”);

if(strcmp(s1,s2)) { strcpy(s,s1);

puts(s);}

printf(“%d,%sn”,strlen(s2),strcat(s2,s1));

}

3.#define MAX 100

main()

{

int f[MAX],i,j,k=2,m=5;

for(i=0;i<=m;i++)

f[i]=1; f[k-1]=2;

for(i=k;i<=m;i++)

for(j=i-k;j<=i-1;j++) f[i]+=f[j];

printf(

}

阅读下列程序,在 处填入适当内容,使程序完整。(32分)

1.求100~200间的全部素数。

(1)

main()

{ int m,k,i,n=0;

for(m=101;m<=200;m+=2)

{ if(n%10==0) printf(

k=sqrt(m);

for(i= (2) i<=k;i++)

if(m%i==0) (3)

if(i== (4)

)

{ printf(;n++;}

}

}

2.用选择法对数组中的10个字符按由大到小排序。

void sort( (1)

)

char a[ ]; int n;

{ int i,j,k;

char t;

for (i=0;i{

(2)

for(j=i+1;jif ( (3) ) k=j;

t=a[k];a[k]=a[i];a[i]=t;}

}

main( )

{ char s[10];

int i;

for(i=0;i<10;i++) scanf(“%c”,&s[i]);

(4)

printf(“the sorted array:n”);

for(i=0;i<10;i++)

printf(“%c”, (5) );

printf(“n”);

}

33.输入3×4数组,用指针方法实现将每行中的最小数与第0列元素对调。

main()

{ int a[3][4],i,j,*p=a[0];

for(i=0;i<3;i++)

for(j=0;j<4;j++)

scanf(“%d”,p++);

for(p=&a[0][0];pswap(p);

(2)

for(i=0;i<3;i++)

{

for(j=0;j<4;j++) printf(“%3d”,*p++);

printf(“n”);}

}

swap(int (3) )

{

int min,i,*p2=p1,*p3;

(4)

for(i=0;i<4;i++)

{ if(*p2 }

min=*p1;*p1=*p3;*p3=min;

}

2002试题2

一 填空题(20分,每空1.5分)

1.当执行完以下语句后,变量a的值为( ),b的值为( ),c的值为(

)。

a=6; b=++a; c=--a;

2.已知a=3、b=2,则表达式a*=b+8的值是( )。

3.下面程序段的输出结果是( )。

int a=125;

printf(“%dn”,a>>4);

4.a数组定义如下,a数组中可用最小下标值是(

),最大下标值是( )。

char a[3];

5.设有以下宏定义

,则执行赋值语句a=ADD(4+6)*7;(a为int型变量)后,a的值是( )。

#define ADD(x) (x)+(x)

6.若有以下说明、定义和语句,则对x.b成员的另外两种引用方式是:( )和(

)。

struct st

{ int a;

struct st b;

} *p,x;

p=&x;

7.在C中,文件指针变量的类型只能是( )。

8.在C中文件结束标志EOF只可用于( )文件。

9.a数组定义如下,若使数组a中存放字符串“friend” ,写出为数组a赋值的语句(

)。

char a[10];

判断对错(10分,每题1分。对的划“√”,错的划“×”)

1.在Turbo

C中,实型数据在内存中占4个字节。( )

2.被main函数调用的函数只能是库函数。(

)

3.对整型变量可进行自加或自减运算,而对常量或表达式不可以。( )

4.算术运算符和赋值运算符的结合方向均由左自右。( )

5.定义在main函数后的任何函数都需在main中进行函数声明。( )

6.一个函数中只允许有一条return语句。( )

7.任何数组在使用时必须先定义。( )

8.在int

*p;和语句printf(“%d”, *p);中的*p含义相同。( )

9.在定义枚举时,枚举常量可以是标识符或数字。( )

10.用fopen(“file1”,”r+”)方式打开的文件可进行修改。( )

三 选择题(20分,每题2分)

1.若有代数式 ,则错误的C语言表达式是( )。

A a*ecb B a*ebc C a*eb*c D abc*e

2.以下程序的输出结果是( )。

main( )

{ int

a=7,b=5;

printf(“%dn”,b=ba);

}

A 不确定值

B 5 C 1 D 0

3.以下程序的输出结果是( )。

main()

{ int k1=1,k2=2,k3=3,x=15;

if(!k1) x--;

else if(k2) if(k3) x=4;else

x=3;

printf(“x=%dn”,x);

}

A x=4 B x=15 C x=14 D x=3

4.

以下程序的输出结果是( )。

main()

{ char

s1[20]=“China”,s2[20]=“for”,s[10];

if(strcmp(s1,s2)) printf(“%sn”, strcat(s2,s1));

else printf(“%dn”,strlen(s1));

}

A

Chinafor B 5 C forChina D 3

5.C语言中函数调用的方式有( )。

A 函数调用作为语句1种

B 函数调用作为函数表达式1种

C 函数调用作为语句或函数表达式2种 D

函数调用作为语句、函数表达式或函数参数

3种

6.关于return语句,下列正确的说法是( )。

A

可以在同一函数中出现多次 B 必须在每个函数中出现

C

只能在除主函数之外的函数中出现一次 D 在主函数中不能出现

7.已知职工记录描述如下,设

变量w中的“生日”是“1993年10月25日”,下列对“生日”的

正确赋值方式是( )。

struct worker

{ int no; char name[20];

char sex;

struct birth{ int day; int month;

int year;}a;

};

struct worker w;

A

day=25; month=10; year=1993;

B =25; =10;

=1993;

C =25; =10; =1993;

D =25; =10;

=1993;

8.已知函数fread的调用形式为fread(buffer,size,coun

t,fp),其中buffer代表的是( )。

A

存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针

C

一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数

9.若有下面的变量定义,以下语句中合法的是( )。

int

i,a[10],*p;

A p=a+2; B p=a[5]; C

p=a[2]+2; D p=&(i+2);

10.若有以下的定义和语句,则值为12的表达式是( )。

struct wc{

int a;int *b;}*p;int x0[]={11,12},x1[]={31,32};

static struct wc x[2]={100,x0,300,x1}; p=x;

A *++p->b B ++p->a C p->b D

*(p++)->b

四 写出下列程序的运行结果(25分,每题5分)

1.main()

{ int number=0;

while(number++<=1) printf(

printf(

}

2.#define N 7

main()

{ int

i,j,a[N][N];

for(i=1;i{ a[i][i]=1; a[i][1]=1; }

for(i=3;ifor(j=2;j<=i-1;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(j=1;j<=4;j++) printf(

printf(

}

3.hcf(int u,int v)

{ int a,b,c,r;

if(u>v) { c=u; u=v; v=c; }

a=u;

b=v;

while((r=b%a)!=0) { b=a; a=r;}

return(a);

}

main()

{ int

u,v,h,l;

u=32; v=48;

h=hcf(u,v);

printf(

}

4.main()

{ int

a[]={1,2,3,4,5,6},*p;

p=a; *(p+3)+=2;

printf(

}

5.main()

{ int y;

fac(4,&y);

printf(“y=%dn”,y);

}

fac(int n,int *t)

{ int s;

if((n==1)||(n==0)) *t=1;

else {

fac(n-1,&s); t=n*s; }

}

五 阅读下列程序,在

处填入适当内容,使程序完整(25分,每个空2分)

1.试求出1000以内的“完全数

”。(提示:如果一个数恰好等于它的因子之和(因子包括1,

不包括数本身),则称该数为“完全数”

。如:6的因子是1、2、3,而6=1+2+3,则6是个“完

全数”。)

main()

{

int i,a,m;

for(i=1;i<1000;i++)

{

for(m=0,a=l;a<=i2;a++)

if(!(i%a))

(1)

if( (2) ) printf(

}

}

2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。

#define N 10

char str[N];

main()

{

int i,flag;

for(i=0;i<10;i++)

scanf(

sort(_(1)__);

for(i=0;iprintf(

printf(

}

sort(str)

char str[N];

{ int i,j;

char t;

for(j=1;jfor(i=0;iif(str[i]> (2) )

{ t=str[i];

______(3)______;

______(4)______;

}

}

3.3.将一个磁盘文件中的信息复制到另一个磁盘文件中。

#include

main()

{ (1) *in,*out;

char ch,infile[10],outfile[10];

printf(

scanf(

printf(

scanf(

if((in=fopen(infile,

{

printf(

exit(0);

}

if((out=fopen(outfile,

{ printf(

exit(0);

}

while(!feof(in))

fputc( (2) ,out);

(3)

(4)

}

4.4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

#define N 10

main()

{

void

maxmin(int arr[],int *pt1,int *pt2,int n);

int

array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

p1=&a; p2=&b;

maxmin(array,p1,p2,N);

printf(

}

void maxmin(int arr[],int *pt1,int *pt2,int

n)

{

int i;

*pt1=*pt2=arr[0];

for(i=1;i{

if(arr[i]>*pt1) (1)

if(arr[i] }

}

2002试题3

填空题(20分)

1.C语言表达式 5>2>7>8 的值是( )。

2.当执行完以下语句后,变量a的值为( ),d的值为( ),e的值为(

)。

a=6; b=++a; c=--a; d=a++; e=a--;

3.下面程序段的输出结果是( )。

char a=111;

a=a^00; printf(“%d %on”,a,a);

4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是(

)。

char a[3];

5.设有以下宏定义,则执行赋值语句

a=PP+20;(a为int型变量)后,a的值是(

#define PR 8

#define PP PR*40

6.定义结构体类型时,应使用关键字(

),定义枚举类型时,应使用关键字(

7.C文件可以分为两种类型,它们是(

)文件和( )文件。

8.若有char a[3]=“as”;则*a=(

),*(a+2)=( )。

二 判断对错(5分,对的划“√”,错的划“×”)

1.。( )

2.表达式14+2.75的值是3。( )

3.结构体类型只有一种。( )

4.函数若无返回值,则它一定无形参。( )

5.C语言只能处理文本文件和二进制文件。( )

判断对错(10分,每题1分。对的划“√”,错的划“×”)

1.在Turbo

C中,实型数据在内存中占4个字节。( )

2.被main函数调用的函数只能是库函数。(

)

3.对整型变量可进行自加或自减运算,而对常量或表达式不可以。( )

4.算术运算符和赋值运算符的结合方向均由左自右。( )

5.定义在main函数后的任何函数都需在main中进行函数声明。( )

6.一个函数中只允许有一条return语句。( )

7.任何数组在使用时必须先定义。( )

8.在int

*p;和语句printf(“%d”, *p);中的*p含义相同。( )

9.在定义枚举时,枚举常量可以是标识符或数字。( )

10.用fopen(“file1”,”r+”)方式打开的文件可进行修改。( )

三 选择题(20分,每题2分)

1.a,b为整形变量,二者均不为0,以下关系表达式中恒成立的是( )。

(A) a*ba*b==1 (B) ab*ba==1

(C)

ab*b+a%b==a (D) ab*b==a

2.C语言源程序的基本单位是( )。

(A) 过程 (B) 函数

(C) 子程序 (D) 标识符

3.以下函数调用语句中含有( )个实参。

func((e1,e2),(e3,e4,e5));

(A) 2 (B) 3

(C) 5 (D) 语法错误

)。

)

4.以下的 for 循环( )。

for(x=0,y=0;(y!=123)&&(x<4);x++)

(A) 执行

3 次 (B) 执行 4 次

(C) 循环次数不定

(D) 是无限循环

5.以下程序的输出结果为( )。

#define N

2

#define M N+2

#define CUBE(x)

(x*x*x)

#include

main( )

{

int i=M;

i=CUBE(i);

printf(

}

(A) 17 (B) 64 (C)

125 (D) 53

6.以下程序的输出结果为( )。

main(

)

{ int i=010,j=10,*pi,*pj;

pi=&i; pj=&j;

printf(

}

(A)

10,10 (B) 8,10 (C) 010,10 (D) 8,8

7.在下列程序段中,枚举变量 c1,c2 的值依次是( ),( )。

enum color { red,yellow,blue=4,green,white}

c1,c2;

c1=yellow; c2=white;

printf(

(A) 1 (B) 3 (C) 5

(D) 6

8.要打开一个已存在的非空文件"file"用于修改,选择正确的语句( )。

(A) fp=fopen( (B) fp=fopen(

(C)

fp=fopen( (D) fp=fopen(

9.以下程序的输出结果是( )。

main()

{ char

s1[20]=“abc”,s2[20]=“123”;

if(strcmp(s1,s2)>0) printf(“%sn”,s1));

else

printf(“%sn”,s2);

}

(A) abc (B) 123

(C) abc123 (D) 123abc

10.已知职工记录描述如下,设变量w

中的“生日”是“1993年10月25日”,下列对“生日”

的正确赋值方式是( )。

struct worker

{ int no; char name[20];

char sex;

struct { int day; int month; int

year;}birth;

};

struct worker w;

(A) day=25; month=10; year=1993;

(B) =25; =10; =1993;

(C) =25; =10; =1993;

(D) =25; =10; =1993;

写出下列程序的运行结果(25分,每题5分)

()

{ int i,j;

i=16; j=(i++)+i; printf(

i=15;

printf(

}

2.#include

main()

{ int i;

for(i=1;i+1;i++)

{ if(i>4)

{ printf(

break;

}

printf(

}

}

3.#include

main()

{

int i,j,a[]={0,2,8,4,5};

printf(

for(i=1;i<=5;i++)

{ j=5-i;

printf(

}

}

4.#include

main()

{ char string1[]={

s(string1,string2,5);

printf(

}

s(p,q,m)

char *p.*q;

int m;

{ int n=0;

while(n{ n++;

p++;

}

while(*p!='0')

{

*q=*p;

p++;

q++;

}

*q='0';

}

5.main()

{

int y;

fac(5,&y);

printf(“y=%dn”,y);

}

fac(int n,int

*t)

{ int s;

if((n==1)||(n==0))

*t=2;

else { fac(n-1,&s); t=n*s; }

}

五 阅读下列程序,在

处填入适当内容,使程序完整(25分,每个空2分)

1.试求出1000以内的“完全数”。(提示

:如果一个数恰好等于它的因子之和(因子包括1,

不包括数本身),则称该数为“完全数”。如:6的

因子是1、2、3,而6=1+2+3,则6是个“完

全数”。)

main()

{

int i,a,m;

for(i=1;i<1000;i++)

{

for(m=0,a=l;a<=i2;a++)

if(!(i%a))

(1)

if( (2) ) printf(

}

}

2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。

#define N 10

char str[N];

main()

{

int i,flag;

for(i=0;i<10;i++)

scanf(

sort(_(1)__);

for(i=0;iprintf(

printf(

}

sort(str)

char str[N];

{ int

i,j;

char t;

for(j=1;jfor(i=0;iif(str[i]>

(2) )

{ t=str[i];

______(3)______;

______(4)______;

}

3.将一个磁盘文件中的信息复制到另一个磁盘文件中。

#include

main()

{ (1) *in,*out;

char ch,infile[10],outfile[10];

printf(

scanf(

printf(

scanf(

if((in=fopen(infile,

{

printf(

exit(0);

}

if((out=fopen(outfile,

{ printf(

exit(0);

}

while(!feof(in))

fputc( (2) ,out);

(3)

(4) }

4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

#define

N 10

main()

{

void maxmin(int

arr[],int *pt1,int *pt2,int n);

int

array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

p1=&a; p2=&b;

maxmin(array,p1,p2,N);

printf(

void maxmin(int arr[],int *pt1,int *pt2,int

n)

{

int i;

*pt1=*pt2=arr[0];

for(i=1;i{

if(arr[i]>*pt1) (1)

if(arr[i] }

}

2003C语言试题1

一 选择题(7分,每小题0.5分)

1.设a为整型变量,初值为12,执行完语句 a+=a-=a*a后,a的值是( )。

A 552 B 144 C 264 D -264

2.下列标识符中,不能作为合法的C用户定义标识符的是( )。

A a3_b3

B void C _123 D IF

3.下列整数值中,不正确的八进制或十六进制数值常量是( )。

A 0xcd

B -017 C -ox123 D 0xfdc

4.若给定条件表达式(M)?(a++):(a--),则其中表达式M和( )等价。

A M==0 B M=1 C M!=1 D M!=0

5.在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式为( )。

A

只能是逻辑表达式 B只能是关系表达式

C

只能是逻辑表达式或关系表达式 D可以是任意表达式

6.以下程序的输出结果为( )。

main( )

{ char c;

int i;

for(i=65;i<68;i++)

{ c=i+32;

switch(c)

{ case „a‟:printf(

case

„b‟:case „e‟:printf(

default: printf(

}

}

}

A a,ok,end B a,ok,endend C

a,ok,end,end D a,ok,ok

7.数组名作为实参数传递给函数时,数组名被处理为( )。

A 该数组的长度

B 该数组的元素个数

C 该数组的首地址 D 该数组中各元素的值

8.关于return语句,下列正确的说法是( )。

A 可以在同一函数中出现多次

B 在主函数中不能出现

C 必须在每个函数中出现 D

只能在除主函数之外的函数中出现一次

9.以下程序的输出结果为( )。

#define A 3

#define B(a) (A+1)*a

main()

{ int x;

x=3*A+B(7);

printf(

}

A x=93 B x=37

C x=60 D x=90

10.设有以下定义,则以下对变量w的赋值( )是错误的。

enum week{sun,mon=4,tue,wed,thu,fri,sat}w;

A w=sun; B w=(enum week)4; C w=san; D

w=(enum week)9;

11.以下定义结构体类型st1,其中正确的是( )。

A typedef struct student

{ int num; int

age; }STD;

STD st1;

B struct st1{int

num,age;}s;

C struct { int num; float

age;}st1;

D struct st1 {int num; int age; }

12.若有下面的变量定义,以下语句中合法的是( )。

int

i,a[10],*p;

A p=a+2; B p=a[5]; C

p=a[2]+2; D p=&(i+2);

13.若有以下定义和语句,则值为12的表达式是( )。

struct

wc{ int a;int *b;}*p;

int

x0[]={11,12},x1[]={31,32};

static struct

wc x[2]={100,x0,300,x1};

p=x;

A *++p->b B ++p->a C p->b D *(p++)->b

14.要打开一个已存在的非空文件“file”用于修改,选择正确的语句( )。

A

fp=fopen( B fp=fopen(

C fp=fopen( D

fp=fopen(

二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分)

1.在Turbo C中,实型数据在内存中占4个字节。( )

2.若有形参定义:int a[10];则a++是合法的表达式。( )

3.若有宏定义:#define PI 3.14i5926,则系统预编译时会报错。( )

4.函数的递归调用不过是一个函数直接地调用它自身。( )

5.定义在main函数后的任何函数都需在main中进行函数声明。( )

6.若有定义:int a;则scanf(“%d可以给变量a赋值。( )

7.任何数组在使用前必须先定义。( )

8.在int

*p;和语句printf(“%d”, *p);中的*p含义相同。( )

9.共用体变量的各个成员所占内存单元的地址相同。( )

10.在使用缓冲文件系统时,与文件输入和输出相关的数据都先送到缓冲区中。(

写出下列程序的运行结果(10分,每小题2分)

( )

{ char

c1=„A‟,c2=„144‟,c3=„x44‟,c=0xf5,x=13,a;

int

i=0122,j=0xa4;

printf(“c1=%c,c4=%ctc5=%cn”,c1,c2,c3);

)

printf(“%d,%dn”,i,j);

i=-34;

j=20;

printf(“%d,%d,%dn”,i%j,i&j<<2,sizeof(j));

printf(“c=%dn”,c|x);

a=c^x<<2;

printf(“a=%dn”,a);

}

()

{

int

x,y=1,z=10;

if(y!=0) x=5;

printf(“x=%dt”,x);

x=1;

if(z<0)

if(y>0) x=3;

else x=5;

printf(“x=%dn”,x);

if(z=y<0) x=3;

else

if(y==0) x=5;

else x=7;

printf(“x=%dt”,x);

printf(“z=%dn”,z);

}

( )

{ char s[20]=“I like it.”,t[20]=“Are

you?”,c[20];

int i=0;

while(s[++i]!=„0‟)

t[i]=s[i];

t[i]=0;

printf(“string

s:%sn”,s);

printf(“string t:%sn”,t);

}

i=5;

main( )

{ int i=3;

{ int

i=10;

i++;

printf(“%dn”,i);

}

f1( );

i+=1;

printf(“%dn”,i);

}

for(i=2;i<=k;i++)

if(a%i==0)

(8)

if(i==k+1) flag=1;

else flag=0;

}

2003C语言试题2

一 选择题(7分,每小题0.5分)

1.C语言源程序的基本单位是( )。

A 过程 B 函数 C

子程序 D 标识符

2.下列程序的输出结果是( )。

main( )

{ int a=7,b=5;

printf(

}

A 5

B 1 C 0 D不确定值

3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是(

)。

A 7 B 8 C 9 D 2

4.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。

a=125.534; a=(int)125.521%4; a=5<<2;

A 125,31,1 B 125,1,20 C 125,31,20 D

125.534,2,20

5.设有如下程序段,下面描述中正确的是 ( )。

int

k=10; while(k=0) k=k-1;

A 循环执行一次 B循环是无限循环

C循环体语句一次也不执行 D循环体语句执行一

6.以下程序的输出结果为( )。

int i;

void prt( )

{ for(i=5;i<8;i++)

printf(

printf(

}

main( )

{

for(i=5;i<=8;i++) prt( );

}

A *** B

*** *** *** *** C *** *** D * *

*

7.在C语言程序中,以下说法正确的是( )。

A函数的定义可以嵌套,但函数的调用不可以嵌套

B函数的定义不可以嵌套,但函数的调用可以嵌套

C函数的定义和函数的调用都不可以嵌套

D函数的定义和函数的调用都可以嵌套

8.以下函数调用语句中含有( )个实参。

func((e1,e2),(e3,e4,e5));

A 2 B 3

C 5 D 语法错误

9.以下程序的输出结果为( )。

#define ADD(x) x*x

main(

)

{ int a=4,b=6,c=7,d=ADD(a+b)*c;

printf(

}

A d=70 B d=80 C

d=140 D d=700

10.已知职工记录描述如下,在Turbo

C中,系统为变量w分配( )字节的空间。

struct worker

{ int

no;

char name[20];

char sex;

union

{ int day; int month; int year;}birth;

}

w;

A 29 B 20 C 25 D 6

11.设有以下定义,值为5的枚举常量是( )。

enum

week{sun,mon=4,tue,wed,thu,fri,sat} w;

A tue

B sat C fri D thu

12.下面选项中正确的赋值语句是(设

char a[5],*p=a;)( )。

A p= B a= C *p= D

*a=

13.设有以下程序段,则值为6的表达式是( )。

struct st {

int n; struct st *next;};

static struct st

a[3]={5,&a[1],7,&a[2],9,0 },*p;

p=&a[0];

A p++->n B ++p->n C p->n++ D (*p).n++

14.C语言中的文件类型只有( )。

A 索引文件和文本文件两种 B

文本文件一种

C 二进制文件一种 D

ASCII码文件和二进制文件两种

判断对错,对的划“√”,错的划“×”(5分,每小题0.5分)

1.在Turbo

C中,整型数据在内存中占2个字节。( )

2.int

i=20;switch(i10){case 2:printf(的输出结果为A。( )

3

.break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循

环。( )

4.函数的递归调用不过是一个函数直接或间接地调用它自身。( )

5.函数strlen(的值是7。( )

6.通过return语句,函数可以带回一个或一个以上的返回值。( )

7.结构体类型只有一种。 ( )

8.char

*p=;的含义是定义字符型指针变量p,p的值是字符串。( )

9.若有定义:char

*p(char a[10]);则p是函数名。( )

10.用fopen(打开的文件可以进行修改。 ( )

写出下列程序的运行结果(10分,每小题2分)

average (float

array[10])

{ int i;

float aver,sum=array[0];

char c=„102‟,d=„r‟;

printf(“a=%dtb=%dtk=%dn”,a,b,k);

printf(“c=%c,d=%c%on”,c,d,a);

a=„A‟;

c=49;

printf(“a=%dtc=%cn”,a,c);

}

四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分)

1.有一个3*4矩阵,求其中的最大元素。

max_value(

(1) )

{ int i,j,max;

max=array[0][0];

for(i=0;i<3;i++)

for(j=0;j<4;j++)

if(array[i][j]>max)

max=array[i][j];

(2)

}

main( )

{

int a[3][4], i,j;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

(3)

;

printf(“max value is

%dn”,max_value(a));

}

2.输入x、y两个整数,按先大后小的顺序输出x、y。

#include

“stdio.h”

main( )

{ int x,y, *px,*py,

(4)

scanf(“%d%d”,&x,&y);

(5) (6)

if(x{

p=px; px=py; py=p; }

printf(“x=%d,y=%dn”,x,y);

printf(“MAX=%d,MIN=%dn”,*px,*py);

}

3.用选择排序法对任意10个整数按照由小到大排序。

main()

{ int a[11],i,j,k,t;

printf(

for(i=1;i<11;i++) scanf(

printf(

for(i=1;i<=9;i++)

{ (7)

for(j=i+1; (8) j++)

if(a[j]>a[k]) k=j;

if(k!=i)

{ t=a[k];

a[k]=a[i]; a[i]=t;}

}

printf(

for(i=1;i<11;i++) printf(

}

答案

选择题(7分,每小题0.5分)

1. B 2. C 3. B

4. B 5. C

6. A 7. B 8.

A 9. A 10. C

11. A 12. A

13. B 14. D

判断对错,对的划“√”,错的划“×”(5分,每小题0.5分)

1.× 2.×

3.√ 4.√ 5.×

6.× 7.×

8.× 9.√ 10.√

写出下列程序的运行结果(10分,每小题2分)

1.

2. 3.

4.

5.

四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分)

1.(1)int array[3][4](int array[][4])

(2)return(max) (3)scanf(“%d”,&a[i][j])

2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x)

3.(7) (8)

2003C语言试题3

选择题(24分,每小题2分)

1.已知函数fread的调用形式为fread(buffer,s

ize,count,fp),其中buffer代表的是( )。

A 存放读入数据项的存储区

B 存放读入数据的地址或指向此地址的指针

C 一个指向所读文件的文件指针 D

一个整形变量,代表要读入的数据项总数

2.以下程序的输出结果为( )。

main( )

{ int i=010,j=10;

printf(

A 11,9 B 9,10 C 8,10 D 9,9

3.设a为int型变量,执行下列赋值语句后,a的取值分别是(

)。

a=125.534;a=20.03;a=(int)125.521%4;a=5<<2;

A 125,6,31,1 B 125,6,1,20 C

125,6.666666,31,20 D 125.534,6.666666,2,20

4.设i和k都是int类型,则for循环语句( )。

for(i=0,k=-1;k=1;i++,k++) printf(

A

循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 D 是无限循

5.以下程序的输出结果为( )。

main( )

{ char

c;

int i;

for(i=65;i<68;i++)

{ c=i+32;

switch(c)

{ case 'a':case 'b':case 'c':printf(

}

}

A a,b,c,end B

a,a,a,end C a,a,a, D a,b,c,

6.函数调用语句:fseek(fp,-10L,2);的含义是( )。

A

将文件位置指针从文件末尾处向文件头的方向移动10个字节

B

将文件位置指针从当前位置向文件头的方向移动10个字节

C

将文件位置指针从当前位置向文件末尾方向移动10个字节

D

将文件位置指针移到距离文件头10个字节处

7.以下程序的输出结果为( )。

main( )

{ char s1[40]=

int i=0,j=0;

while(s1[i]!='0') i++;

while(s2[j]!='0') s1[i++]=s2[j++];

s1[i]=0;

printf(

}

A side B country C

sidetry D countryside

8.下列说法不正确的是( )。

A 主函数main中定义的变量在整个文件或程序中有效

B

不同函数中,可以使用相同名字的变量

C 形式参数是局部变量

D

在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效

9.在下列程序段中,枚举变量 c1的值是( )。

enum color {

red,yellow,blue=4,green,white}c1; c1=yellow;

c1=white;

A 1 B 3 C 5 D 6

10.设有说明 int (*ptr)();其中标识符ptr是( )。

A

是一个指向整形变量的指针 B 是一个指针,它指向一个函数值是int的函数

C

是一个函数名 D定义不合法

11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为( )。

A int

p; B int (*p)[n]; C int *p[n]; D int

(*p)( );

12.具有相同类型的指针类型变量p与数组a,不能进行的操作是( )。

A p=a; B *p=a[0]; C p=&a[0]; D

p=&a;

二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)

1.参加位运算的数据可以是任何类型的数据。( )

2.若有定义和语句:int

a;char c;float

f;scanf(若通过键盘输入:

10,A,12.5,则a=10,c=„A‟,f=12.5。(

)

3.C语言把文件看作是一个字符(字节)的序列。( )

4.若有宏定义:#define S(a,b)

t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。( )

5.在Turbo

C中,下面的定义和语句是合法的:file *fp;fp=fopen( )

6.若有定义:char s[ ]=;则Turbo C系统为数组s开辟6个字节的内存单元。(

)

7.若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}},

i,sum=0;for(i=0;i<3;i++)

sum+=a[i][2-i];

则sum=21。( )

8.若有定义和语句:struct student { int num; char

name[10]; float score;}

s[5]={{1,输出结果是1。(

)

9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。( )

10.在Turbo C中,此定义和语句是合法的:enum aa{

a=5,b,c}bb;bb=(enum aa)5;( )

写出下列程序的运行结果(36分,每小题6分)

( )

{ int

i=29,j=6,k=2,s;

s=i+ij%k-9;

printf(“s=%dn”,s);

}

( )

{ int

x=31,y=2,s=0;

do

{ s-=x*y;

x+=2;

y-=3;} while( x%3==0);

printf(“x=%dty=%dts=%dn”,x,y,s);

}

( )

{ int a[6]={10,20,30,40,50,60},i;

invert(a,0,5);

for(i=0;i<6;i++)

printf(“%d,”,a[i]);

printf(“n”);

}

invert(int s[ ],int i,int j)

{ int t;

if(i{ invert(s,i+1j-1);

t=s[i];s[i]=s[j];s[j]=t;

}

}

4.#includemain()

{ char str[

]=“The C program”,c;

int i;

for(i=2;(c=str[i])!=„0‟;i++)

{ switch(c)

{ case „g‟: ++i; break;

case „o‟:

continue;

default:

printf(“%c”,c); continue;

}

printf(“*”);

}

printf(“n”);

}

w

{ char

low;

char high;

};

union u

{ struct w byte;

short word;

}uw;

main( )

{ int result;

=0x1234;

printf(“word value:%04xn”,);

printf(“high byte:%02xn”,);

printf(“low

byte:%02xn”,);

=0x74;

printf(“word value:%04xn”,);

result=+0x2a34;

printf(“the

result:%04xn”,result);

}

6.main()

{ char *s2=“I love China!”,**s1=&s2;

char

*s3,c,*s4=“w”;

s3=&c;

*s3=„H‟;

s2=s2+2;

printf(“%st%ct%st%cn”,s2,*s3,s4,**s1);

}

四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)

1.

百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,

问大、中、

小马各多少匹?

main( )

{ int hb,hm,hl,n=0;

for(hb=0;hb<=100;hb+= (1) )

for(hm=0;hm<=100-hb;hm+= (2) )

{

hl=100-hb- (3)

if(hb3+hm2+2*

(3) ==100)

{ n++;

printf(

}

}

printf(

}

2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。

#define

N 10

char str[N];

main()

{ int

i,flag;

for(flag=1;flag==1;)

{ scanf(

flag=0;

printf(

}

sort(___(4)___);

for(i=0;iprintf(

printf(

}

sort(char str[N])

{

int i,j;

char t;

for(j=1;jfor(i=0;(iif(str[i]>str[i+1])

{ t=str[i];

____(5)____;

____(6)____;

}

}

3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各

元素值之和。

(本程序中二阶矩阵用一维数组来表示。)

例如,矩阵为:

3 0 0 3

2 5 7 3

1 0

4 2

则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。

add(int m,int n,int arr[])

{ int

i,j,sum=0;

for(i=0;ifor(j=0;jsum=sum+ (7)

for(j=0;jfor(i=1;

(8) i++)

sum=sum+arr[i*n+j];

return(sum);

}

4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

#define

N 10

main()

{ void maxmin(int

arr[],int *pt1,int *pt2,int n);

int

array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

p1=&a; p2=&b;

maxmin(array,p1,p2,N);

printf(

}

void maxmin(int arr[],int *pt1,int *pt2,int

n)

{ int i;

*pt1=*pt2=arr[0];

for(i=1;i{

if(arr[i]>*pt1) (9)

if(arr[i] }

}

答案

一 选择题(24分,每小题2分)

1.( B ) 2.(

C ) 3.( B ) 4.( D ) 5.( D )

6.( A )

7.( D ) 8.( A ) 9.( D )

10.( B ) 11.( C ) 12.( D )

判断对错,对的划“√”,错的划“×”(20分,每小题2分)

1.( × ) 2.(

√ ) 3.( √ ) 4.( × ) 5.( × )

6.( √ ) 7.( √ ) 8.( × ) 9.( √

) 10.( √ )

三 写出下列程序的运行结果(36分,每小题6分)

1.

s=20 2.x=35 y=-4 s=-29

3.60,50,40,30,20,10,

4.e C pr*am

value:1234 China! H w l

high byte:12

low byte:34

word value:1274

the

result:3ca8

四 阅读下列程序,在

处填入适当内容,使程序完整(20分,每个空2分)

1.(1) 3

(2) 2 (3)hm hl

2.(4) str

(5) str[i]=str[i+1] (6) str[i+1]=t

3.(7)

arr[i*n+j](或者arr[i*10+j])

(8)

i4.(9) *ptr1=arr[i] (10)

*ptr2=arr[i]

C语言试题1

一 填空题(15分)

1.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为( )。

2.设 int a=7,b=9,t;执行完表达式t=(a>b)?a:b后,t的值是(

)。

3.下面程序段的输出结果是( )。

int

a=1234; a=a&0377; printf(“%d %on”,a,a);

4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是( )。

char a[3];

5.设有以下宏定义,则执行赋值语句

a=PP*20;(a为int型变量)后,a的值是( )。

#define

PR 80

#define PP PR+403

6.在C程序中,可以通过三种运算方式为指针变量赋地址值,它们是:( )、( )和(

)。

7.在C文件中,数据存在的两种代码形式是( )和( )。

8.C语言中调用( )函数打开文件,调用( )函数关闭文件,调用(

)函数

可实现文件的随机读写。

9.若有int

a[3]={10,12,30};则a+1是( )的地址,*(a+2)=( )。

判断对错(5分,对的划“√”,错的划“×”

1.在Turbo

C中,整型数据在内存中占2个字节。( )

2.表达式14+2.75的值是3。( )

3.结构体类型只有一种。( )

4.函数若无返回值,则它一定无形参。( )

5.C语言只能处理文本文件和二进制文件。( )

三 选择题(20分)

1.设 int a=12; 表达式a+=a-=a*=a的值是( )。

A

12 B 144 C 0 D 132

2.以下程序的输出结果是( )。

main( )

{ int

a=011;

printf(“%dn”,++a);

}

A 12 B

11 C 10 D 9

3.以下程序的输出结果是( )。

#define ADD(x) (x)+(x)

main()

{ int a=4,b=6,c=7,d=ADD(a+b)*c;

printf(“d=%d”,d);

}

A d=70 B

d=140 C d=280 D d=80

4.下面的选项中正确的赋值语句是(char a[5],*p=a;)( )。

A p=“abcd”; B a=“abcd”; C *p=“abcd”;

D *a=“abcd”;

5.若k为整形,则while循环执行( )次。

k=2; while(k==0) printf(“%d”,k); k--;

printf(“n”);

A 10 B 9 C 0

D 1

6.数组名作为实参传递给形参时,数组名被处理为(

)。

A 该数组的长度 B 该数组的元素个数 C 该数组的首地址 D

该数组中各元素的值

7.两个指针变量不可以( )。

A. 相加 B

比较 C 相减 D 指向同一地址

8.若有以下程序段,则值为6的表达式是(

)。

struct st{ int n;struct st *next;};

static struct st

a[3]={5,&a[1],7,&a[2],9,„0‟},*p; p=&a[0];

A

p++->n B p->n++ C (*p).n++ D ++p->n

9.要打开一个已存在的非空文件"file"用于修改,选择正确的语句( )。

A

fp=fopen( B fp=fopen(

C fp=fopen( D

fp=fopen(

四 写出下列程序的运行结果。(28分)

1.main( )

{ int a[6]={10,6,23,-90,0,3},i;

invert(a,0,5);

for(i=0;i<6;i++)

printf(“%d,”,a[i]);

printf(“n”);

}

invert(int *s,int i,int j)

{ int t;

if(i{ invert(s,i+1j-1);

t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;

}

}

2.f1(int a)

{ int b=0; static int

c=3;

b+=1; c++;

return(a+b+c);

}

main()

{

int a=1,i;

char

s1[10]=“java”,s2[10]=“basic”,s[10];

for(i=0;i<3;i++) printf(

printf(“n”);

if(strcmp(s1,s2)) { strcpy(s,s1);

puts(s);}

printf(“%d,%sn”,strlen(s2),strcat(s2,s1));

}

3.#define MAX 100

main()

{

int f[MAX],i,j,k=2,m=5;

for(i=0;i<=m;i++)

f[i]=1; f[k-1]=2;

for(i=k;i<=m;i++)

for(j=i-k;j<=i-1;j++) f[i]+=f[j];

printf(

}

阅读下列程序,在 处填入适当内容,使程序完整。(32分)

1.求100~200间的全部素数。

(1)

main()

{ int m,k,i,n=0;

for(m=101;m<=200;m+=2)

{ if(n%10==0) printf(

k=sqrt(m);

for(i= (2) i<=k;i++)

if(m%i==0) (3)

if(i== (4)

)

{ printf(;n++;}

}

}

2.用选择法对数组中的10个字符按由大到小排序。

void sort( (1)

)

char a[ ]; int n;

{ int i,j,k;

char t;

for (i=0;i{

(2)

for(j=i+1;jif ( (3) ) k=j;

t=a[k];a[k]=a[i];a[i]=t;}

}

main( )

{ char s[10];

int i;

for(i=0;i<10;i++) scanf(“%c”,&s[i]);

(4)

printf(“the sorted array:n”);

for(i=0;i<10;i++)

printf(“%c”, (5) );

printf(“n”);

}

33.输入3×4数组,用指针方法实现将每行中的最小数与第0列元素对调。

main()

{ int a[3][4],i,j,*p=a[0];

for(i=0;i<3;i++)

for(j=0;j<4;j++)

scanf(“%d”,p++);

for(p=&a[0][0];pswap(p);

(2)

for(i=0;i<3;i++)

{

for(j=0;j<4;j++) printf(“%3d”,*p++);

printf(“n”);}

}

swap(int (3) )

{

int min,i,*p2=p1,*p3;

(4)

for(i=0;i<4;i++)

{ if(*p2 }

min=*p1;*p1=*p3;*p3=min;

}

2002试题2

一 填空题(20分,每空1.5分)

1.当执行完以下语句后,变量a的值为( ),b的值为( ),c的值为(

)。

a=6; b=++a; c=--a;

2.已知a=3、b=2,则表达式a*=b+8的值是( )。

3.下面程序段的输出结果是( )。

int a=125;

printf(“%dn”,a>>4);

4.a数组定义如下,a数组中可用最小下标值是(

),最大下标值是( )。

char a[3];

5.设有以下宏定义

,则执行赋值语句a=ADD(4+6)*7;(a为int型变量)后,a的值是( )。

#define ADD(x) (x)+(x)

6.若有以下说明、定义和语句,则对x.b成员的另外两种引用方式是:( )和(

)。

struct st

{ int a;

struct st b;

} *p,x;

p=&x;

7.在C中,文件指针变量的类型只能是( )。

8.在C中文件结束标志EOF只可用于( )文件。

9.a数组定义如下,若使数组a中存放字符串“friend” ,写出为数组a赋值的语句(

)。

char a[10];

判断对错(10分,每题1分。对的划“√”,错的划“×”)

1.在Turbo

C中,实型数据在内存中占4个字节。( )

2.被main函数调用的函数只能是库函数。(

)

3.对整型变量可进行自加或自减运算,而对常量或表达式不可以。( )

4.算术运算符和赋值运算符的结合方向均由左自右。( )

5.定义在main函数后的任何函数都需在main中进行函数声明。( )

6.一个函数中只允许有一条return语句。( )

7.任何数组在使用时必须先定义。( )

8.在int

*p;和语句printf(“%d”, *p);中的*p含义相同。( )

9.在定义枚举时,枚举常量可以是标识符或数字。( )

10.用fopen(“file1”,”r+”)方式打开的文件可进行修改。( )

三 选择题(20分,每题2分)

1.若有代数式 ,则错误的C语言表达式是( )。

A a*ecb B a*ebc C a*eb*c D abc*e

2.以下程序的输出结果是( )。

main( )

{ int

a=7,b=5;

printf(“%dn”,b=ba);

}

A 不确定值

B 5 C 1 D 0

3.以下程序的输出结果是( )。

main()

{ int k1=1,k2=2,k3=3,x=15;

if(!k1) x--;

else if(k2) if(k3) x=4;else

x=3;

printf(“x=%dn”,x);

}

A x=4 B x=15 C x=14 D x=3

4.

以下程序的输出结果是( )。

main()

{ char

s1[20]=“China”,s2[20]=“for”,s[10];

if(strcmp(s1,s2)) printf(“%sn”, strcat(s2,s1));

else printf(“%dn”,strlen(s1));

}

A

Chinafor B 5 C forChina D 3

5.C语言中函数调用的方式有( )。

A 函数调用作为语句1种

B 函数调用作为函数表达式1种

C 函数调用作为语句或函数表达式2种 D

函数调用作为语句、函数表达式或函数参数

3种

6.关于return语句,下列正确的说法是( )。

A

可以在同一函数中出现多次 B 必须在每个函数中出现

C

只能在除主函数之外的函数中出现一次 D 在主函数中不能出现

7.已知职工记录描述如下,设

变量w中的“生日”是“1993年10月25日”,下列对“生日”的

正确赋值方式是( )。

struct worker

{ int no; char name[20];

char sex;

struct birth{ int day; int month;

int year;}a;

};

struct worker w;

A

day=25; month=10; year=1993;

B =25; =10;

=1993;

C =25; =10; =1993;

D =25; =10;

=1993;

8.已知函数fread的调用形式为fread(buffer,size,coun

t,fp),其中buffer代表的是( )。

A

存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针

C

一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数

9.若有下面的变量定义,以下语句中合法的是( )。

int

i,a[10],*p;

A p=a+2; B p=a[5]; C

p=a[2]+2; D p=&(i+2);

10.若有以下的定义和语句,则值为12的表达式是( )。

struct wc{

int a;int *b;}*p;int x0[]={11,12},x1[]={31,32};

static struct wc x[2]={100,x0,300,x1}; p=x;

A *++p->b B ++p->a C p->b D

*(p++)->b

四 写出下列程序的运行结果(25分,每题5分)

1.main()

{ int number=0;

while(number++<=1) printf(

printf(

}

2.#define N 7

main()

{ int

i,j,a[N][N];

for(i=1;i{ a[i][i]=1; a[i][1]=1; }

for(i=3;ifor(j=2;j<=i-1;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(j=1;j<=4;j++) printf(

printf(

}

3.hcf(int u,int v)

{ int a,b,c,r;

if(u>v) { c=u; u=v; v=c; }

a=u;

b=v;

while((r=b%a)!=0) { b=a; a=r;}

return(a);

}

main()

{ int

u,v,h,l;

u=32; v=48;

h=hcf(u,v);

printf(

}

4.main()

{ int

a[]={1,2,3,4,5,6},*p;

p=a; *(p+3)+=2;

printf(

}

5.main()

{ int y;

fac(4,&y);

printf(“y=%dn”,y);

}

fac(int n,int *t)

{ int s;

if((n==1)||(n==0)) *t=1;

else {

fac(n-1,&s); t=n*s; }

}

五 阅读下列程序,在

处填入适当内容,使程序完整(25分,每个空2分)

1.试求出1000以内的“完全数

”。(提示:如果一个数恰好等于它的因子之和(因子包括1,

不包括数本身),则称该数为“完全数”

。如:6的因子是1、2、3,而6=1+2+3,则6是个“完

全数”。)

main()

{

int i,a,m;

for(i=1;i<1000;i++)

{

for(m=0,a=l;a<=i2;a++)

if(!(i%a))

(1)

if( (2) ) printf(

}

}

2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。

#define N 10

char str[N];

main()

{

int i,flag;

for(i=0;i<10;i++)

scanf(

sort(_(1)__);

for(i=0;iprintf(

printf(

}

sort(str)

char str[N];

{ int i,j;

char t;

for(j=1;jfor(i=0;iif(str[i]> (2) )

{ t=str[i];

______(3)______;

______(4)______;

}

}

3.3.将一个磁盘文件中的信息复制到另一个磁盘文件中。

#include

main()

{ (1) *in,*out;

char ch,infile[10],outfile[10];

printf(

scanf(

printf(

scanf(

if((in=fopen(infile,

{

printf(

exit(0);

}

if((out=fopen(outfile,

{ printf(

exit(0);

}

while(!feof(in))

fputc( (2) ,out);

(3)

(4)

}

4.4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

#define N 10

main()

{

void

maxmin(int arr[],int *pt1,int *pt2,int n);

int

array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

p1=&a; p2=&b;

maxmin(array,p1,p2,N);

printf(

}

void maxmin(int arr[],int *pt1,int *pt2,int

n)

{

int i;

*pt1=*pt2=arr[0];

for(i=1;i{

if(arr[i]>*pt1) (1)

if(arr[i] }

}

2002试题3

填空题(20分)

1.C语言表达式 5>2>7>8 的值是( )。

2.当执行完以下语句后,变量a的值为( ),d的值为( ),e的值为(

)。

a=6; b=++a; c=--a; d=a++; e=a--;

3.下面程序段的输出结果是( )。

char a=111;

a=a^00; printf(“%d %on”,a,a);

4.a数组定义如下,按照内存排列顺序,a数组中的所有元素是(

)。

char a[3];

5.设有以下宏定义,则执行赋值语句

a=PP+20;(a为int型变量)后,a的值是(

#define PR 8

#define PP PR*40

6.定义结构体类型时,应使用关键字(

),定义枚举类型时,应使用关键字(

7.C文件可以分为两种类型,它们是(

)文件和( )文件。

8.若有char a[3]=“as”;则*a=(

),*(a+2)=( )。

二 判断对错(5分,对的划“√”,错的划“×”)

1.。( )

2.表达式14+2.75的值是3。( )

3.结构体类型只有一种。( )

4.函数若无返回值,则它一定无形参。( )

5.C语言只能处理文本文件和二进制文件。( )

判断对错(10分,每题1分。对的划“√”,错的划“×”)

1.在Turbo

C中,实型数据在内存中占4个字节。( )

2.被main函数调用的函数只能是库函数。(

)

3.对整型变量可进行自加或自减运算,而对常量或表达式不可以。( )

4.算术运算符和赋值运算符的结合方向均由左自右。( )

5.定义在main函数后的任何函数都需在main中进行函数声明。( )

6.一个函数中只允许有一条return语句。( )

7.任何数组在使用时必须先定义。( )

8.在int

*p;和语句printf(“%d”, *p);中的*p含义相同。( )

9.在定义枚举时,枚举常量可以是标识符或数字。( )

10.用fopen(“file1”,”r+”)方式打开的文件可进行修改。( )

三 选择题(20分,每题2分)

1.a,b为整形变量,二者均不为0,以下关系表达式中恒成立的是( )。

(A) a*ba*b==1 (B) ab*ba==1

(C)

ab*b+a%b==a (D) ab*b==a

2.C语言源程序的基本单位是( )。

(A) 过程 (B) 函数

(C) 子程序 (D) 标识符

3.以下函数调用语句中含有( )个实参。

func((e1,e2),(e3,e4,e5));

(A) 2 (B) 3

(C) 5 (D) 语法错误

)。

)

4.以下的 for 循环( )。

for(x=0,y=0;(y!=123)&&(x<4);x++)

(A) 执行

3 次 (B) 执行 4 次

(C) 循环次数不定

(D) 是无限循环

5.以下程序的输出结果为( )。

#define N

2

#define M N+2

#define CUBE(x)

(x*x*x)

#include

main( )

{

int i=M;

i=CUBE(i);

printf(

}

(A) 17 (B) 64 (C)

125 (D) 53

6.以下程序的输出结果为( )。

main(

)

{ int i=010,j=10,*pi,*pj;

pi=&i; pj=&j;

printf(

}

(A)

10,10 (B) 8,10 (C) 010,10 (D) 8,8

7.在下列程序段中,枚举变量 c1,c2 的值依次是( ),( )。

enum color { red,yellow,blue=4,green,white}

c1,c2;

c1=yellow; c2=white;

printf(

(A) 1 (B) 3 (C) 5

(D) 6

8.要打开一个已存在的非空文件"file"用于修改,选择正确的语句( )。

(A) fp=fopen( (B) fp=fopen(

(C)

fp=fopen( (D) fp=fopen(

9.以下程序的输出结果是( )。

main()

{ char

s1[20]=“abc”,s2[20]=“123”;

if(strcmp(s1,s2)>0) printf(“%sn”,s1));

else

printf(“%sn”,s2);

}

(A) abc (B) 123

(C) abc123 (D) 123abc

10.已知职工记录描述如下,设变量w

中的“生日”是“1993年10月25日”,下列对“生日”

的正确赋值方式是( )。

struct worker

{ int no; char name[20];

char sex;

struct { int day; int month; int

year;}birth;

};

struct worker w;

(A) day=25; month=10; year=1993;

(B) =25; =10; =1993;

(C) =25; =10; =1993;

(D) =25; =10; =1993;

写出下列程序的运行结果(25分,每题5分)

()

{ int i,j;

i=16; j=(i++)+i; printf(

i=15;

printf(

}

2.#include

main()

{ int i;

for(i=1;i+1;i++)

{ if(i>4)

{ printf(

break;

}

printf(

}

}

3.#include

main()

{

int i,j,a[]={0,2,8,4,5};

printf(

for(i=1;i<=5;i++)

{ j=5-i;

printf(

}

}

4.#include

main()

{ char string1[]={

s(string1,string2,5);

printf(

}

s(p,q,m)

char *p.*q;

int m;

{ int n=0;

while(n{ n++;

p++;

}

while(*p!='0')

{

*q=*p;

p++;

q++;

}

*q='0';

}

5.main()

{

int y;

fac(5,&y);

printf(“y=%dn”,y);

}

fac(int n,int

*t)

{ int s;

if((n==1)||(n==0))

*t=2;

else { fac(n-1,&s); t=n*s; }

}

五 阅读下列程序,在

处填入适当内容,使程序完整(25分,每个空2分)

1.试求出1000以内的“完全数”。(提示

:如果一个数恰好等于它的因子之和(因子包括1,

不包括数本身),则称该数为“完全数”。如:6的

因子是1、2、3,而6=1+2+3,则6是个“完

全数”。)

main()

{

int i,a,m;

for(i=1;i<1000;i++)

{

for(m=0,a=l;a<=i2;a++)

if(!(i%a))

(1)

if( (2) ) printf(

}

}

2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。

#define N 10

char str[N];

main()

{

int i,flag;

for(i=0;i<10;i++)

scanf(

sort(_(1)__);

for(i=0;iprintf(

printf(

}

sort(str)

char str[N];

{ int

i,j;

char t;

for(j=1;jfor(i=0;iif(str[i]>

(2) )

{ t=str[i];

______(3)______;

______(4)______;

}

3.将一个磁盘文件中的信息复制到另一个磁盘文件中。

#include

main()

{ (1) *in,*out;

char ch,infile[10],outfile[10];

printf(

scanf(

printf(

scanf(

if((in=fopen(infile,

{

printf(

exit(0);

}

if((out=fopen(outfile,

{ printf(

exit(0);

}

while(!feof(in))

fputc( (2) ,out);

(3)

(4) }

4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

#define

N 10

main()

{

void maxmin(int

arr[],int *pt1,int *pt2,int n);

int

array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

p1=&a; p2=&b;

maxmin(array,p1,p2,N);

printf(

void maxmin(int arr[],int *pt1,int *pt2,int

n)

{

int i;

*pt1=*pt2=arr[0];

for(i=1;i{

if(arr[i]>*pt1) (1)

if(arr[i] }

}

2003C语言试题1

一 选择题(7分,每小题0.5分)

1.设a为整型变量,初值为12,执行完语句 a+=a-=a*a后,a的值是( )。

A 552 B 144 C 264 D -264

2.下列标识符中,不能作为合法的C用户定义标识符的是( )。

A a3_b3

B void C _123 D IF

3.下列整数值中,不正确的八进制或十六进制数值常量是( )。

A 0xcd

B -017 C -ox123 D 0xfdc

4.若给定条件表达式(M)?(a++):(a--),则其中表达式M和( )等价。

A M==0 B M=1 C M!=1 D M!=0

5.在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式为( )。

A

只能是逻辑表达式 B只能是关系表达式

C

只能是逻辑表达式或关系表达式 D可以是任意表达式

6.以下程序的输出结果为( )。

main( )

{ char c;

int i;

for(i=65;i<68;i++)

{ c=i+32;

switch(c)

{ case „a‟:printf(

case

„b‟:case „e‟:printf(

default: printf(

}

}

}

A a,ok,end B a,ok,endend C

a,ok,end,end D a,ok,ok

7.数组名作为实参数传递给函数时,数组名被处理为( )。

A 该数组的长度

B 该数组的元素个数

C 该数组的首地址 D 该数组中各元素的值

8.关于return语句,下列正确的说法是( )。

A 可以在同一函数中出现多次

B 在主函数中不能出现

C 必须在每个函数中出现 D

只能在除主函数之外的函数中出现一次

9.以下程序的输出结果为( )。

#define A 3

#define B(a) (A+1)*a

main()

{ int x;

x=3*A+B(7);

printf(

}

A x=93 B x=37

C x=60 D x=90

10.设有以下定义,则以下对变量w的赋值( )是错误的。

enum week{sun,mon=4,tue,wed,thu,fri,sat}w;

A w=sun; B w=(enum week)4; C w=san; D

w=(enum week)9;

11.以下定义结构体类型st1,其中正确的是( )。

A typedef struct student

{ int num; int

age; }STD;

STD st1;

B struct st1{int

num,age;}s;

C struct { int num; float

age;}st1;

D struct st1 {int num; int age; }

12.若有下面的变量定义,以下语句中合法的是( )。

int

i,a[10],*p;

A p=a+2; B p=a[5]; C

p=a[2]+2; D p=&(i+2);

13.若有以下定义和语句,则值为12的表达式是( )。

struct

wc{ int a;int *b;}*p;

int

x0[]={11,12},x1[]={31,32};

static struct

wc x[2]={100,x0,300,x1};

p=x;

A *++p->b B ++p->a C p->b D *(p++)->b

14.要打开一个已存在的非空文件“file”用于修改,选择正确的语句( )。

A

fp=fopen( B fp=fopen(

C fp=fopen( D

fp=fopen(

二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分)

1.在Turbo C中,实型数据在内存中占4个字节。( )

2.若有形参定义:int a[10];则a++是合法的表达式。( )

3.若有宏定义:#define PI 3.14i5926,则系统预编译时会报错。( )

4.函数的递归调用不过是一个函数直接地调用它自身。( )

5.定义在main函数后的任何函数都需在main中进行函数声明。( )

6.若有定义:int a;则scanf(“%d可以给变量a赋值。( )

7.任何数组在使用前必须先定义。( )

8.在int

*p;和语句printf(“%d”, *p);中的*p含义相同。( )

9.共用体变量的各个成员所占内存单元的地址相同。( )

10.在使用缓冲文件系统时,与文件输入和输出相关的数据都先送到缓冲区中。(

写出下列程序的运行结果(10分,每小题2分)

( )

{ char

c1=„A‟,c2=„144‟,c3=„x44‟,c=0xf5,x=13,a;

int

i=0122,j=0xa4;

printf(“c1=%c,c4=%ctc5=%cn”,c1,c2,c3);

)

printf(“%d,%dn”,i,j);

i=-34;

j=20;

printf(“%d,%d,%dn”,i%j,i&j<<2,sizeof(j));

printf(“c=%dn”,c|x);

a=c^x<<2;

printf(“a=%dn”,a);

}

()

{

int

x,y=1,z=10;

if(y!=0) x=5;

printf(“x=%dt”,x);

x=1;

if(z<0)

if(y>0) x=3;

else x=5;

printf(“x=%dn”,x);

if(z=y<0) x=3;

else

if(y==0) x=5;

else x=7;

printf(“x=%dt”,x);

printf(“z=%dn”,z);

}

( )

{ char s[20]=“I like it.”,t[20]=“Are

you?”,c[20];

int i=0;

while(s[++i]!=„0‟)

t[i]=s[i];

t[i]=0;

printf(“string

s:%sn”,s);

printf(“string t:%sn”,t);

}

i=5;

main( )

{ int i=3;

{ int

i=10;

i++;

printf(“%dn”,i);

}

f1( );

i+=1;

printf(“%dn”,i);

}

for(i=2;i<=k;i++)

if(a%i==0)

(8)

if(i==k+1) flag=1;

else flag=0;

}

2003C语言试题2

一 选择题(7分,每小题0.5分)

1.C语言源程序的基本单位是( )。

A 过程 B 函数 C

子程序 D 标识符

2.下列程序的输出结果是( )。

main( )

{ int a=7,b=5;

printf(

}

A 5

B 1 C 0 D不确定值

3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是(

)。

A 7 B 8 C 9 D 2

4.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。

a=125.534; a=(int)125.521%4; a=5<<2;

A 125,31,1 B 125,1,20 C 125,31,20 D

125.534,2,20

5.设有如下程序段,下面描述中正确的是 ( )。

int

k=10; while(k=0) k=k-1;

A 循环执行一次 B循环是无限循环

C循环体语句一次也不执行 D循环体语句执行一

6.以下程序的输出结果为( )。

int i;

void prt( )

{ for(i=5;i<8;i++)

printf(

printf(

}

main( )

{

for(i=5;i<=8;i++) prt( );

}

A *** B

*** *** *** *** C *** *** D * *

*

7.在C语言程序中,以下说法正确的是( )。

A函数的定义可以嵌套,但函数的调用不可以嵌套

B函数的定义不可以嵌套,但函数的调用可以嵌套

C函数的定义和函数的调用都不可以嵌套

D函数的定义和函数的调用都可以嵌套

8.以下函数调用语句中含有( )个实参。

func((e1,e2),(e3,e4,e5));

A 2 B 3

C 5 D 语法错误

9.以下程序的输出结果为( )。

#define ADD(x) x*x

main(

)

{ int a=4,b=6,c=7,d=ADD(a+b)*c;

printf(

}

A d=70 B d=80 C

d=140 D d=700

10.已知职工记录描述如下,在Turbo

C中,系统为变量w分配( )字节的空间。

struct worker

{ int

no;

char name[20];

char sex;

union

{ int day; int month; int year;}birth;

}

w;

A 29 B 20 C 25 D 6

11.设有以下定义,值为5的枚举常量是( )。

enum

week{sun,mon=4,tue,wed,thu,fri,sat} w;

A tue

B sat C fri D thu

12.下面选项中正确的赋值语句是(设

char a[5],*p=a;)( )。

A p= B a= C *p= D

*a=

13.设有以下程序段,则值为6的表达式是( )。

struct st {

int n; struct st *next;};

static struct st

a[3]={5,&a[1],7,&a[2],9,0 },*p;

p=&a[0];

A p++->n B ++p->n C p->n++ D (*p).n++

14.C语言中的文件类型只有( )。

A 索引文件和文本文件两种 B

文本文件一种

C 二进制文件一种 D

ASCII码文件和二进制文件两种

判断对错,对的划“√”,错的划“×”(5分,每小题0.5分)

1.在Turbo

C中,整型数据在内存中占2个字节。( )

2.int

i=20;switch(i10){case 2:printf(的输出结果为A。( )

3

.break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循

环。( )

4.函数的递归调用不过是一个函数直接或间接地调用它自身。( )

5.函数strlen(的值是7。( )

6.通过return语句,函数可以带回一个或一个以上的返回值。( )

7.结构体类型只有一种。 ( )

8.char

*p=;的含义是定义字符型指针变量p,p的值是字符串。( )

9.若有定义:char

*p(char a[10]);则p是函数名。( )

10.用fopen(打开的文件可以进行修改。 ( )

写出下列程序的运行结果(10分,每小题2分)

average (float

array[10])

{ int i;

float aver,sum=array[0];

char c=„102‟,d=„r‟;

printf(“a=%dtb=%dtk=%dn”,a,b,k);

printf(“c=%c,d=%c%on”,c,d,a);

a=„A‟;

c=49;

printf(“a=%dtc=%cn”,a,c);

}

四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分)

1.有一个3*4矩阵,求其中的最大元素。

max_value(

(1) )

{ int i,j,max;

max=array[0][0];

for(i=0;i<3;i++)

for(j=0;j<4;j++)

if(array[i][j]>max)

max=array[i][j];

(2)

}

main( )

{

int a[3][4], i,j;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

(3)

;

printf(“max value is

%dn”,max_value(a));

}

2.输入x、y两个整数,按先大后小的顺序输出x、y。

#include

“stdio.h”

main( )

{ int x,y, *px,*py,

(4)

scanf(“%d%d”,&x,&y);

(5) (6)

if(x{

p=px; px=py; py=p; }

printf(“x=%d,y=%dn”,x,y);

printf(“MAX=%d,MIN=%dn”,*px,*py);

}

3.用选择排序法对任意10个整数按照由小到大排序。

main()

{ int a[11],i,j,k,t;

printf(

for(i=1;i<11;i++) scanf(

printf(

for(i=1;i<=9;i++)

{ (7)

for(j=i+1; (8) j++)

if(a[j]>a[k]) k=j;

if(k!=i)

{ t=a[k];

a[k]=a[i]; a[i]=t;}

}

printf(

for(i=1;i<11;i++) printf(

}

答案

选择题(7分,每小题0.5分)

1. B 2. C 3. B

4. B 5. C

6. A 7. B 8.

A 9. A 10. C

11. A 12. A

13. B 14. D

判断对错,对的划“√”,错的划“×”(5分,每小题0.5分)

1.× 2.×

3.√ 4.√ 5.×

6.× 7.×

8.× 9.√ 10.√

写出下列程序的运行结果(10分,每小题2分)

1.

2. 3.

4.

5.

四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分)

1.(1)int array[3][4](int array[][4])

(2)return(max) (3)scanf(“%d”,&a[i][j])

2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x)

3.(7) (8)

2003C语言试题3

选择题(24分,每小题2分)

1.已知函数fread的调用形式为fread(buffer,s

ize,count,fp),其中buffer代表的是( )。

A 存放读入数据项的存储区

B 存放读入数据的地址或指向此地址的指针

C 一个指向所读文件的文件指针 D

一个整形变量,代表要读入的数据项总数

2.以下程序的输出结果为( )。

main( )

{ int i=010,j=10;

printf(

A 11,9 B 9,10 C 8,10 D 9,9

3.设a为int型变量,执行下列赋值语句后,a的取值分别是(

)。

a=125.534;a=20.03;a=(int)125.521%4;a=5<<2;

A 125,6,31,1 B 125,6,1,20 C

125,6.666666,31,20 D 125.534,6.666666,2,20

4.设i和k都是int类型,则for循环语句( )。

for(i=0,k=-1;k=1;i++,k++) printf(

A

循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 D 是无限循

5.以下程序的输出结果为( )。

main( )

{ char

c;

int i;

for(i=65;i<68;i++)

{ c=i+32;

switch(c)

{ case 'a':case 'b':case 'c':printf(

}

}

A a,b,c,end B

a,a,a,end C a,a,a, D a,b,c,

6.函数调用语句:fseek(fp,-10L,2);的含义是( )。

A

将文件位置指针从文件末尾处向文件头的方向移动10个字节

B

将文件位置指针从当前位置向文件头的方向移动10个字节

C

将文件位置指针从当前位置向文件末尾方向移动10个字节

D

将文件位置指针移到距离文件头10个字节处

7.以下程序的输出结果为( )。

main( )

{ char s1[40]=

int i=0,j=0;

while(s1[i]!='0') i++;

while(s2[j]!='0') s1[i++]=s2[j++];

s1[i]=0;

printf(

}

A side B country C

sidetry D countryside

8.下列说法不正确的是( )。

A 主函数main中定义的变量在整个文件或程序中有效

B

不同函数中,可以使用相同名字的变量

C 形式参数是局部变量

D

在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效

9.在下列程序段中,枚举变量 c1的值是( )。

enum color {

red,yellow,blue=4,green,white}c1; c1=yellow;

c1=white;

A 1 B 3 C 5 D 6

10.设有说明 int (*ptr)();其中标识符ptr是( )。

A

是一个指向整形变量的指针 B 是一个指针,它指向一个函数值是int的函数

C

是一个函数名 D定义不合法

11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为( )。

A int

p; B int (*p)[n]; C int *p[n]; D int

(*p)( );

12.具有相同类型的指针类型变量p与数组a,不能进行的操作是( )。

A p=a; B *p=a[0]; C p=&a[0]; D

p=&a;

二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)

1.参加位运算的数据可以是任何类型的数据。( )

2.若有定义和语句:int

a;char c;float

f;scanf(若通过键盘输入:

10,A,12.5,则a=10,c=„A‟,f=12.5。(

)

3.C语言把文件看作是一个字符(字节)的序列。( )

4.若有宏定义:#define S(a,b)

t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。( )

5.在Turbo

C中,下面的定义和语句是合法的:file *fp;fp=fopen( )

6.若有定义:char s[ ]=;则Turbo C系统为数组s开辟6个字节的内存单元。(

)

7.若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}},

i,sum=0;for(i=0;i<3;i++)

sum+=a[i][2-i];

则sum=21。( )

8.若有定义和语句:struct student { int num; char

name[10]; float score;}

s[5]={{1,输出结果是1。(

)

9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。( )

10.在Turbo C中,此定义和语句是合法的:enum aa{

a=5,b,c}bb;bb=(enum aa)5;( )

写出下列程序的运行结果(36分,每小题6分)

( )

{ int

i=29,j=6,k=2,s;

s=i+ij%k-9;

printf(“s=%dn”,s);

}

( )

{ int

x=31,y=2,s=0;

do

{ s-=x*y;

x+=2;

y-=3;} while( x%3==0);

printf(“x=%dty=%dts=%dn”,x,y,s);

}

( )

{ int a[6]={10,20,30,40,50,60},i;

invert(a,0,5);

for(i=0;i<6;i++)

printf(“%d,”,a[i]);

printf(“n”);

}

invert(int s[ ],int i,int j)

{ int t;

if(i{ invert(s,i+1j-1);

t=s[i];s[i]=s[j];s[j]=t;

}

}

4.#includemain()

{ char str[

]=“The C program”,c;

int i;

for(i=2;(c=str[i])!=„0‟;i++)

{ switch(c)

{ case „g‟: ++i; break;

case „o‟:

continue;

default:

printf(“%c”,c); continue;

}

printf(“*”);

}

printf(“n”);

}

w

{ char

low;

char high;

};

union u

{ struct w byte;

short word;

}uw;

main( )

{ int result;

=0x1234;

printf(“word value:%04xn”,);

printf(“high byte:%02xn”,);

printf(“low

byte:%02xn”,);

=0x74;

printf(“word value:%04xn”,);

result=+0x2a34;

printf(“the

result:%04xn”,result);

}

6.main()

{ char *s2=“I love China!”,**s1=&s2;

char

*s3,c,*s4=“w”;

s3=&c;

*s3=„H‟;

s2=s2+2;

printf(“%st%ct%st%cn”,s2,*s3,s4,**s1);

}

四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)

1.

百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,

问大、中、

小马各多少匹?

main( )

{ int hb,hm,hl,n=0;

for(hb=0;hb<=100;hb+= (1) )

for(hm=0;hm<=100-hb;hm+= (2) )

{

hl=100-hb- (3)

if(hb3+hm2+2*

(3) ==100)

{ n++;

printf(

}

}

printf(

}

2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。

#define

N 10

char str[N];

main()

{ int

i,flag;

for(flag=1;flag==1;)

{ scanf(

flag=0;

printf(

}

sort(___(4)___);

for(i=0;iprintf(

printf(

}

sort(char str[N])

{

int i,j;

char t;

for(j=1;jfor(i=0;(iif(str[i]>str[i+1])

{ t=str[i];

____(5)____;

____(6)____;

}

}

3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各

元素值之和。

(本程序中二阶矩阵用一维数组来表示。)

例如,矩阵为:

3 0 0 3

2 5 7 3

1 0

4 2

则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。

add(int m,int n,int arr[])

{ int

i,j,sum=0;

for(i=0;ifor(j=0;jsum=sum+ (7)

for(j=0;jfor(i=1;

(8) i++)

sum=sum+arr[i*n+j];

return(sum);

}

4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

#define

N 10

main()

{ void maxmin(int

arr[],int *pt1,int *pt2,int n);

int

array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

p1=&a; p2=&b;

maxmin(array,p1,p2,N);

printf(

}

void maxmin(int arr[],int *pt1,int *pt2,int

n)

{ int i;

*pt1=*pt2=arr[0];

for(i=1;i{

if(arr[i]>*pt1) (9)

if(arr[i] }

}

答案

一 选择题(24分,每小题2分)

1.( B ) 2.(

C ) 3.( B ) 4.( D ) 5.( D )

6.( A )

7.( D ) 8.( A ) 9.( D )

10.( B ) 11.( C ) 12.( D )

判断对错,对的划“√”,错的划“×”(20分,每小题2分)

1.( × ) 2.(

√ ) 3.( √ ) 4.( × ) 5.( × )

6.( √ ) 7.( √ ) 8.( × ) 9.( √

) 10.( √ )

三 写出下列程序的运行结果(36分,每小题6分)

1.

s=20 2.x=35 y=-4 s=-29

3.60,50,40,30,20,10,

4.e C pr*am

value:1234 China! H w l

high byte:12

low byte:34

word value:1274

the

result:3ca8

四 阅读下列程序,在

处填入适当内容,使程序完整(20分,每个空2分)

1.(1) 3

(2) 2 (3)hm hl

2.(4) str

(5) str[i]=str[i+1] (6) str[i+1]=t

3.(7)

arr[i*n+j](或者arr[i*10+j])

(8)

i4.(9) *ptr1=arr[i] (10)

*ptr2=arr[i]

安徽高考状元-劳动合同范本

成都长江职业学院-银行从业资格考试成绩查询

安徽高考吧-读书思廉心得体会

民族节日-青岛58中网站

师德承诺书-有成效

建党节活动-江西省财政厅会计网

广元人事网-广州大学录取分数线

公务员条例-个人先进材料范文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值