程序员

注册

 

发新话题 回复该主题

东北师范大学2021年C程序设计练习题 [复制链接]

1#

一、选择题

1.以下选项中属于C语言的数据类型是(B)。

A.复合型B.双精度型C.逻辑型D.集合型

2.以下说法中正确的是(C)。

A.C语言程序总是从第一个函数开始执行

B.在C语言程序中,要调用的函数必须在main()函数中定义

C.C语言程序总是从main()函数开始执行

D.C语言程序中的main()函数必须放在程序的开始部分

3.选出下列标识符中不是合法的标识符的是(D)。

A.hot_doB.cat1C._priD.2ab

4.下列描述中不正确的是(C)。

A.字符型数组中可能存放字符串。

B.可以对字符型数组进行整体输入、输出。

C.可以对整型数组进行整体输入、输出。

D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。

5.若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式为(C)。

A.p+1B.a+1C.a++D.++p

6.定义如下变量和数组:inti,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句

for(i=0;i3;i++)printf(%d,x[2-i]);的输出结果是(C)

A.B.C.D.

7.表达式:10!=9的值是(D)。

A.trueB.非零值C.0D.1

8.若有说明:inti,j=7,*p=i;,则与i=j;等价的语句是(B)。

A.i=*p;B.*p=j;C.i=j;D.i=**p;

9.在C程序中有如下语句:char*func(intx,inty);它是(C)。

A.对函数func的定义。B.对函数func的调用。

C.对函数func的原型说明。D.不合法的。

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

charstr[15]=”hello!”;

printf(“%d\n”,strlen(str));

A.15B.14C.7D.6

11.若有如下定义,则(D)是对数组元素的正确的引用。

inta[10],*p;

p=a;

A.*a[10]B.a[11]C.*(p+10)D.*p

12.以下不能正确定义二维数组的语句是(D)

A.inta[2][2]={{1},{2}};B.inta[][2]={1,2,3,4};

C.inta[2][2]={{1},2,3};D.inta[2][]={{1,2},{3,4}};

13.设变量定义为inta[3]={1,4,7},*p=a[2],则*p的值是(C)。

A.a[2]B.4C.7D.1

14.能正确表示a和b同时为正或同时为负的逻辑表达式是(D)。

A.(a=0

b=0)(a0

b0)B.(a=0b=0)(a0b0)

C.(a+b0)(a+b=0)D.a*b0

15.C语言中,合法的字符型常数是___A______。

A.‘A’B.“A”C.65D.A

16.设有数组定义:chararray[]=”China”;则数组所占的空间是__C______。

A.4个字节B.5个字节C.6个字节D.7个字节

17.若变量c为char类型,能正确判断出c为小写字母的表达式是___D____。

A.’a’=c=’z’B.(c=’a’)

(c=’z’)

C.(‘a’=c)and(‘z’=c)D.(c=’a’)(c=’z’)

18.设有定义:longx=-L;则以下能够正确输出变量x值的语句是__B_____。

A.printf(“x=%d\n”,x)B.printf(“x=%ld\n”,x)

C.printf(“x=%8dl\n”,x)D.printf(“x=%LD\n”,x);

19.指出下面正确的输入语句______B____。

A.scanf(“a=b=%d”,a,b);B.scanf(“%d,%d”,a,b);

C.scanf(“%c”,c);D.scanf(“%f%d\n”,f);

20.C语言中以追加方式打开一个文件应选择_____D__________参数。

A.“r”B.“w”

C.“rb”D.“a”

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

A.B.C.D.-

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

A.a3_b3B.voidC._D.IF

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

A.0xcdB.-C.D.0xfdc

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

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

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

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

main()

{charc;

inti;

for(i=65;i68;i++)

{c=i+32;

switch(c)

{case‘a’:printf(%c,,c);break;

case‘b’/p>

case‘e’:printf(ok,);

default:printf(end);

}

}

}

A.a,ok,endB.a,ok,endendC.a,ok,end,endD.a,ok,ok

二、判断对错,

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

2.若有数组定义:inta[10];则a++是合法的表达式。(×)

3.若有宏定义:#definePI3.14i,则系统预编译时会报错。(×)

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

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

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

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

8.被main函数调用的函数只能是库函数。(X)

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

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

11.C语言源程序通过了编译、连接之后,生成一个后缀为.EXE的文件。(√)

12.在C程序中,函数既可以嵌套定义,也可以嵌套调用。(X)

13.在C程序中,APH和aph代表不同的变量。(√)

14.表达式5是一个八进制整数。(X)

15.表达式_ya是不合法的C语言标识符。(X)

16.C程序总是从main()函数的第一条语句开始执行的。 (√)

17.a-=7等价于a=a-7。(√)

18.利用fclose函数关闭已打开的文件。(√)

19.数组名可以作为参数进行传递。(√)

20.执行printf(%x,45);,输出45。(X)

21.从循环体中退出只能使用goto语句。(X)

22.假设有inta[10],*p;则P=a[0]与p=a等价。(√)

23.C语言中数据类型只有整型、实型和字符型。(X)

24.C语言的数组下标从1开始。(X)

25.在C语言中定义一个文件指针的方法为:FILE*fp;。(√)

三、阅读程序,写出运行结果

1.intx=6,y=7;

printf(“%d,”,x++);printf(“%d\n”,++y);

程序的输出结果是6,8。

2.floatf=3.7;

printf(“%5.4f,%3.3f”,f,f);

则程序的输出结果是3.,3,。

3.a=3;

a+=(a1)?a:1;printf(“%d”,a);

结果是4。

4.main()

{inta[5]={2,4,6,8,10},*p;

p=a;

printf(%d,,*(p++));

printf(%d\n,*(p+2));}

程序的输出结果是2,8。

5.main()

{inti=29,j=6,k=2,s;

s=i+i/j%k-9;

printf(“s=%d\n”,s);

}

程序的输出结果是S=20。

6.6.以下程序的输出结果为(8,10

)。

main()

{inti=,j=10,*pi,*pj;

pi=i;pj=j;

printf(%d,%d\n,*pi,*pj);

}

7.7.以下程序的输出结果是( abc

main()

{chars1[20]=“abc”,s2[20]=“”;

if(strcmp(s1,s2)0)printf(“%s\n”,s1));

elseprintf(“%s\n”,s2);

}

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

#includestdio.h

main()

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

printf(\n);

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

{j=5-i;

printf(%2d,a[j]);

}

}

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

#defineN7

main()

{inti,j,a[N][N];

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

{a=1;a[1]=1;}

for(i=3;iN;i++)

for(j=2;j=i-1;j++)

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

for(j=1;j=4;j++)printf(%2d,a[4][j]);

printf(\n);

}

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

voidmain()

{inty=1,x,*p,a[]={2,4,6,8,10};

p=a[0];

for(x=0;x3;x++)

y+=*(p+x);

printf(%d\n,y);

}

四、程序填空题

1.求矩阵的主、次对角线之和。

main()

{staticinta[3][3]={9,7,5,1,2,4,6,8,0};

inti,j,s1=0,s2=0;

for(i=0;i3;i++)

for(j=0;j3;j++)

{if((1)i==j)

s1=s1+a[j];

if((2)i==2-j)

s2=s2+a[j];

}

printf(“%d\n%d\n”,s1,s2);

}

2.从键盘上输入10个数放入一维数组,然后求其平均值。

main()

{inti;

floata[10],sum,avg;

for(i=0;i10;i++)

(3)scanf(“%f”,a);;

(4)sum=0;;

for(i=0;i10;i++)

(5)sum=sum+a;;

(6)avg=sum/10;;

printf(“average=%f\n”,avg);

}

3.以下程序是建立一个名为myfile的文件,并把从键盘输入的字符存入该文件,当键盘上输入结束时关闭该文件。

#includestdio.h

main()

{

(7)FILE*fp;

charc;

fp=(8)fopen(“myfile”,”w”);;

do

{

c=getchar();

(9)fputc(c,fp);;

}while(c!=EOF);

(10)fclose(fp);;

}

五、填空题

(1)1.C语言的预处理语句以((1)#)开头。

2.表达式7+%5的结果是((2)0)。

3.下列程序段是从键盘输入的字符中统计数字字符的个数,用‘#’结束循环。

intn=0,ch;

ch=getchar();

(2)while((3)ch!=’#’)

(3){if((4)ch=’0’ch=’9’)n++;

c=getchar();}

(4)4.C语言中putchar(c)函数的功能是((5)输出字符c)。

(5)5.int*p;的含义是((6)定义了一个提向整型变量的指针)。

(6)6.定义fp为文件型指针变量的定义方法为((7)FILE*fp)。

7.数组inta[3][4];共定义了((8)12)个数组元素。

(7)8.实型变量的类型说明符有:((9)float)、((10)double)。

六、编程题

1.三个整数a、b、c,由键盘输入,输出其中最大的数。

#includestdio.h

main()

{

inta,b,c,max;

scanf(%d%d%d,a,b,c);

if(a=b)max=a;

elsemax=b;

if(cmax)max=c;

printf(max=%d\n,max);

2.从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印“notexist”。

#includestdio.h

main()

{

inta[10],i;

for(i=0;i10;i++)

scanf(%d,a);

for(i=0;i10;i++)

if(a%7==0){printf(%d,a);break;}

if(i==10)printf(notexist!);

}

3.有一维数组floata[10],其中存放10个学生成绩,写一个函数,求出平均分。

floatavg(floata[10])

{

inti;

floatsum=0.0;

for(i=0;i10;i++)

sum+=a;

returnsum/10;

}

4.编程计算下列表达式:s=n!(n从键盘上输入)

main()

{inti,n;

longt=1;

scanf(%d,n);

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

t=t*i;

printf(%d!=%ld\n,n,t);

}

5.编写函数sum,求3*3实型矩阵的主对角线元素之和。)

floatsum(floata[3][3])

{

inti,j;

floats=0;

for(i=0;i3;i++)

s+=a;

returns;

}

main()

{

floata[3][3]={1,2,3,4,5,6,7,8,9};

printf(sum=%f\n,sum(a));

}

6.编程实现从键盘上输入10个整数存入一维数组,求这10数中的最大值与最小值并输出。

main()

{

inta[10],i,MAX,MIN;

for(i=0;i10;i++)

scanf(%d,a);

MAX=MIN=a[0];

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

if(aMAX)MAX=a;

elseif(aMIN)MIN=a;

printf(Max=%d,Min=%d\n,MAX,MIN);

}

7.编写一函数voidsort(inta[],intn),用起泡法实现对数组a中的n个元素从小到大进行排序。

voidsort(inta[],intn)

{inti,j,temp;

for(i=0;in-1;i++)

for(j=0;jn-1-i;j++)

if(a[j]a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}

}

8.编写一计算器程序,完成加、减、乘、除四则运算。首先提示用户输入运算符,然后提示输入两个运算数,最后将计算结果输出。例如:用户输入+,然后输入,程序在屏幕上输出10+20=30。

voidmain()

{

charop;

floatop1,op2,result;

printf(plsinputoperator+,-,*,/:\n);

scanf(%c,op);

printf(plsinputtwooperands:\n);

scanf(%f%f,op1,op2);

switch(op)

{

case+:result=op1+op2;break;

case-:result=op1-op2;break;

case*:result=op1*op2;break;

case/:result=op1/op2;break;

}

printf(%.2f%c%.2f=%.2f\n,op1,op,op2,result);

}

9.从键盘上输入学生的成绩,输出该成绩所对应的等级。成绩等级的划分方法为:=90分,等级为‘A’;80至89分,等级为‘B’;70至79分,等级为C;60至69分,等级为‘D’;60分以下,等级为‘E’。

用if语句实现

#includestdio.h

main()

{floatscore;

chargrade;

scanf(%f,score);

if(score=90)grade=A;

elseif(score=80)grade=B;

elseif(score=70)grade=C;

elseif(score=60)grade=D;

elsegrade=E;

printf(score=%f,grade=%c\n,score,grade);

}

用switch实现:

#includestdio.h

main()

{floatscore;

chargrade;

scanf(%f,score);

switch((int)(score/10))/*将分数除以10,使结果落在0-10之间*/

{

case10/p>

case9rade=A;break;

case8rade=B;break;

case7rade=C;break;

case6rade=D;break;

defaultrade=E;

}

printf(score=%f,grade=%c\n,score,grade);

}

C程序设计练习题二

一、选择题

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

A.过程B.函数C.子程序D.标识符

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

main()

{inta=7,b=5;

printf(%d\n,b=b/a);

}

A.5B.1C.0D.不确定值

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

a=.;a=(int).%4;

A.,31B.,1C.,31D..,2

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

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

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

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

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

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

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

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

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

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

#defineADD(x)x*x

main()

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

printf(d=%d,d);

}

A.d=70B.d=80C.d=D.d=

7.已知职工记录描述如下,在TurboC中,系统为变量w分配(C)字节的空间。

structworker

{intno;

charname[20];

charsex;

union

{intday;intmonth;intyear;}birth;

}w;

A.29B.20C.25D.6

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

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

A.tueB.satC.friD.thu

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

A.p=abcd;B.a=abcd;C.*p=abcd;D.*a=abcd;

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

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

C.二进制文件一种D.文本文件和二进制文件两种

11.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是(B)。

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

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

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

main()

{inti=,j=10;

printf(%d,%d\n,i,j);

}

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

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

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

A.循环结束的条件不合法B.循环体一次也不执行

C.循环体只执行一次D.是无限循环

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

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

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

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

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

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

main()

{chars1[40]=country,s2[20]=side;

inti=0,j=0;

while(s1!=\0)i++;

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

s1=0;

printf(%s\n,s1);

}

A.sideB.countryC.sidetryD.countryside

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

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

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

C.形式参数是局部变量

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

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

enumcolor{red,yellow,blue,green,white}c1;c1=white;

A.1B.4C.5D.6

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

A.是一个指向整型变量的指针B.它是一个指向函数值是int的函数指针

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

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

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

20.以下的for循环(B)。

for(x=0,y=0;(y!=)(x4);x++);

A.执行3次B.执行4次C.循环次数不定D.是无限循环

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

A.该数组的长度B.该数组的元素个数

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

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

A.可以在同一函数中出现多次B.在主函数中不能出现

C.必须在每个函数中出现D.只能在除主函数之外的函数中出现一次

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

#defineA3

#defineB(a)(A+1)*a

main()

{intx;

x=3*A+B(7);

printf(x=%d\n,x);

}

A.x=93B.x=37C.x=60D.x=90

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

inti,a[10],*p;

A.p=a+2;B.p=a[5];C.p=a[2]+2;D.p=(i+2);

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

A.fp=fopen(file,r);B.fp=fopen(file,w);

C.fp=fopen(file,r+);D.fp=fopen(file,w+);

二、判断对错,对的划“√”,错的划“×”

1.C语言的常量在程序运行过程中可以重新赋值。(X)

2.inti=20;

switch(i/10)

{case2:printf(A);case1:printf(B);}

的输出结果为A。(X)

3.break语句用在循环体中,可结束本层循环;continue用在循环体中,可结束本次循环。(√)

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

5.函数strlen(ASDFG\n)的值是7。(×)

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

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

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

9.若有定义:char*p(chara[10]);则p是函数名。(√)

10.用fopen(file,r+);打开的文件file可以进行修改。(√)

11.在TurboC中,整型数据在内存中占2个字节。(√)

12.表达式1/4+2.75的值是3。(×)

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

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

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

16.算术运算符和赋值运算符的结合方向均从左到右。(×)

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

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

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

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

21.getchar()函数的功能是从键盘上输入一个字符串。(×)

22.Continue语句的作用是继续程序中的下一个循环。(×)

23.构成数组的各个元素可以有不同的数据类型。(×)

24.函数一般由函数的说明部分和函数体部分组成。(√)

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

三、阅读程序,写出运行结果

1.floataverage(floatarray[10])

{inti;

floataver,sum=array[0];

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

sum=sum+array;

aver=sum/10;

return(aver);

}

main()

{floatscore[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver;

inti;

aver=average(score);

printf(“averagescoreis%5.2f\n”,aver);

}

averagescoreis76.60

2.main()

{chara[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a;

for(;pa+5;p++)

printf(“%2c”,*p);

printf(“\n”);

}

ABCDE

3.main()

{inta,b,s=0;

for(a=1,b=1;a=;a++)

{if(b=20)break;

if(b%3==1)

{ b+=3;continue;}

b-=5;

}

printf(“a=%d\tb=%d\n”,a,b);

}

a=8b=22

4.#includestdio.h

voidfun(int*x,inty,int*z)

{

*z=*x+y;

}

main()

{

inta=1,b=3,c=5;

fun(a,b,c);

printf(%d,%d,%d\n,a,b,c);

}

1,3,4

5.hcf(intu,intv)

{inta,b,c,r;

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

a=u;b=v;

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

return(a);

}

main()

{intu,v,h,l;

u=32;v=48;

h=hcf(u,v);

printf(H.C.F=%d\t,h);

}

H.C.F=16

6.main()

{intnumber=0;

while(number++=1)printf(*%d,,number);

printf(**%d\n,number);

}

*1,*2,**3

7.main()

{inti,num[5];

for(i=0;i5;i++)

num=i*10-2;

printf(%d,num[3]);

}

28

8.main()

{floatc,f;

c=30.0;

f=(6*c)/5+32;

printf(f=%f,f);

}

68.

9.main()

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

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

printf(%d,%d\n,*p,*(p+3));

}

1,6

10.main()

{inty;

fac(4,y);

printf(“y=%d\n”,y);

}

fac(intn,int*t)

{ints;

if((n==1)

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

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

}

y=24

四、阅读程序,在横线上填空

1.百马百担问题:有匹马,驮担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹?

main()

{inthb,hm,hl,n=0;//hb,hm,hl分别代表大马,中马和小马

for(hb=0;hb=;hb+=3)

1.for(hm=0;hm=-hb;hm+=(1)2)

2.{hl=-hb-(2)hm;

if(hb/3+hm/2+2*(3)hl==)

{n++;

printf(hb=%d,hm=%d,hl=%d\n,hb/3,hm/2,2*hl);

}

}

printf(n=%d\n,n);

}

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

#defineN10

charstr[N];

main()

{inti,flag;

scanf(%s,str);

sort((4)str___);

for(i=0;iN;i++)

printf(%c,str);

printf(\n);

}

sort(charstr[N])

{inti,j;

chart;

for(j=1;jN;j++)

for(i=0;(iN-j)(str!=\0);i++)

if(strstr[i+1])

{t=str;

_(5)str=str[i+1]____;

_(6)_str[i+1]=t___;

}

}

3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)

例如,矩阵为:

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

add(intm,intn,intarr[])

{inti,j,sum=0;

for(i=0;im;i=i+m-1)

for(j=0;jn;j++)

sum=sum+(7)arr[i*n+j];

for(j=0;jn;j=j+n-1)

for(i=1;(8)im-1;i++)

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

return(sum);

}

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

#defineN10

main()

{voidmaxmin(intarr[],int*pt1,int*pt2,intn);

intarray[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(max=%d,min=%d,a,b);

}

voidmaxmin(intarr[],int*pt1,int*pt2,intn)

{inti;

*pt1=*pt2=arr[0];

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

{if(arr*pt1)(9)*pt1=arr;

if(arr*pt2)(10)*pt2=arr;

}

}

5.试求出0以内的“完全数”。(提示:如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。如:6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。)

main()

{

inti,a,m;

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

{

for(m=0,a=l;a=i/2;a++)

if(i%a==0)11m=m+a;

if(12m==i)printf(%4d,i);

}

}

6.求~间的全部素数。

#include13math.h

main()

{intm,k,i,n=0;

for(m=;m=;m+=2)

{k=sqrt(m);

for(i=;i=k;i++)if(m%i==0)15break;

if(i==16k+1)

{printf(%d,m);n++;}

}

}

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

#includestdio.h

main()

{17FILE*in,*out;

charch,infile[10],outfile[10];

printf(Entertheinfilename:\n);

scanf(%s,infile);

printf(Entertheoutfilename:\n);

scanf(%s,outfile);

if((in=fopen(infile,r))==NULL)

{printf(Cannotopeninputfile.\n);

exit(0);

}

if((out=fopen(outfile,w))==NULL)

{printf(Cannotopenoutputfile.\n);

exit(0);

}

while(!feof(in))

fputc(18fgetc(in),out);

19fclose(in);

20fclose(out);

}

五、程序填空题

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

max_value((1)intarray[3][4])

{inti,j,max;

max=array[0][0];

for(i=0;i3;i++)

for(j=0;j4;j++)

if(array[j]max)

max=array[j];

(2)returnmax;

}

main()

{inta[3][4],i,j;

for(i=0;i3;i++)

for(j=0;j4;j++)

(3)scanf(“%d”,a[j]);;

printf(“maxvalueis%d\n”,max_value(a));

}

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

#include“stdio.h”

main()

{intx,y,*px,*py,(4)*p;

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

(5)px=x;;

(6)py=y;;

if(xy)

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

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

}

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

main()

{inta[11],i,j,k,t;

printf(Pleaseinput10numbers:\n);

for(i=1;i11;i++)scanf(%d,a);

printf(\n);

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

{(7)k=i;

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

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

if((9)k!=i)

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

}

printf(Thesortednumbers:\n);

for(i=1;i11;i++)printf(%d,(10)a);

}

六、简要回答下列问题

1.结构化程序设计中常用的三种程序结构是什么?各自用哪些语句来实现?

三种程序结构:顺序,选择,循环,选择结构用if和switch语句,循环结构包括:whiledo~while和for

2.C语言对字符串操作的函数有哪些(举出2个以上)?

包括求字符串长度strlen,比较两个字符串大小strcmp,连接两个字符串strcat等。

3.C语言的构造类型有哪几种?各自适合描述什么样的问题?

C语言的构造类型有三种,数组、结构体和共用体。数组用来描述相同类型的数据集合;结构体用于描述不同类型的数据组成的复合结构,且不同的数据成员占不同的存贮空间;共用体也用于描述不同类型的数据组成的复合结构,但所有成员的起始地址相同,即占同一段内存空间。

4.函数调用有几种方式?函数的实参和形参是怎么进行结合的?

函数调用有两种方式,一种是表达式方式,另一种是语句方式。实参与形参采用值传递。

5.do—while循环和while循环的区别是什么?

do—while循环是先执行循环体,后判断条件,所以至少要执行一次循环体。而while循环先判断条件,后执行循环体,因此有可能一次也不执行循环体。

七.编程题

1.编写程序,对三个整数x,y,z进行排序,按从小到大的顺序进行输出。

main()

{intx,y,z,temp;

scanf(%d%d%d,x,y,z);

if(xy){temp=x;x=y;y=temp;}

if(xz){temp=x;x=z;z=temp;}

if(yz){temp=y;y=z;z=temp;}

printf(%d,%d,%d\n,x,y,z);

}

2.编写一个函数prime(n),判断一个整数n是不是素数。在主函数中输入一个整数,输出是否是素数的信息。

#includestdio.h

#includemath.h

intprime(intn)

{

inti,k;

k=sqrt(n);

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

if(n%i==0)break;

if(ik)return1;

elsereturn0;

}

main()

{inta;

scanf(%d,a);

if(prime(a))printf(%disaprimenumber!\n,a);

elseprintf(%disnotaprimenumber!\n,a);

}

3.求数列的1/1+1/3+1/5+……前20项的累加和

main()

{inti;floatsum=0;

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

sum=sum+1.0/i;

printf(sum=%f\n,sum);

}

4.一个班级有10名学生,每个学生的信息包括学号,姓名和成绩。编写一函数sort,实现按学生成绩降序排列,排序方法任选。在函数之前,定义出函数中要使用的数据类型

structstudent

{

intno;

charname[10];

floatscore;

};

voidsort(structstudenta[],intn)

{

inti,j;

structstudenttemp;

for(i=0;in-1;i++)/*用起泡法对数组进行排序*/

for(j=0;jn-1-i;j++)

if(a[j].scorea[j+1].score)

{

temp=a[j];

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

a[j+1]=temp;

}

}

5.编写程序打印下面的图形。利用scanf()函数由用户输入星号的行数。

*

**

***

****

*****

*

**

***

****

*****

main()

{intn,i,j;

scanf(%d,n);

for(i=0;in;i++)

{

for(j=0;j=i;j++)

printf(*);

printf(\n);

}

}

6.已知定义int型数组a,数组a中的元素均为三位数。编写函数jsVal(),其功能是:统计出3位数均为偶数的数组元素的个数c。

例如:inta[6]={,,,,,},则统计结果c=3.

intjsVal(inta[],intn)

{

inti,c=0,bw,sw,gw;

for(i=0;in;i++)

{

bw=a/;//计算百位bw

sw=a%/10;//计算十位sw

gw=a%10;//计算个位gw

if(bw%2==0sw%2==0gw%2==0)c=c+1;

}

returnc;

}

分享 转发
TOP
发新话题 回复该主题