大一c语言期末试题及参考答案 下载本文

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

if(a[i][j]>max) {

max=a[i][j]; row=i+1; column=j+1; } }

printf(\}

(书中例题5.5,p123) max=9,row=3,column=1 (3)

#include int n=1;

void func();

void main() {

static int x=5; int y; y=n;

printf(\ func();

printf(\}

void func() {

static int x=4; int y=10; x=x+2; n=n+2; y=y+n;

printf(\}

main:x=5,y=1,n=1 func:x=6,y=13,n=3 main:x=5,y=1,n=3

(4)

#include #include struct person {

char name[20]; int count; };

void main() {

struct person leader[3]={{\ char name[20],m,n; for(m=1;m<7;m++) {

scanf(\ for(n=0;n<3;n++)

if (!strcmp(name,leader[n].name)) {

leader[n].count++; break; } }

printf(\

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

printf(\}

当程序运行时,键入情况如下: Li Wang Lei Li Wang Zhang

写出程序的输出结果。(基本上是书中例题) Li:2 Zhang:1 Wang:2

(5)

#include #include

void main() {

char *name[]={\ int a,b,n=4; char *temp;

for(a=0;a

if(strcmp(name[a],name[b])>0) {

temp=name[a]; name[a]=name[b]; name[b]=temp ; }

} 在此之前是书中的例题7.19 for(a=0;a

printf(\ 输出时应该能够识别指针及偏移情况 }

capital ndex rge ll

六、 编写程序 (35分)

2

(1) 求一元二次方程ax +bx+c=0的根,实系数a,b,c从终端输入,只考虑两个不同实根和两个相同的实根 (9分) (书中例题3.4,p66`67) #include #include

void main() {

float a,b,c; float x1,x2; float x3,x4; float m;

printf(\ scanf(\

if(a==0) {

printf(\

return; }

m=b*b-4*a*c;

if(m>0) {

x1=(-b+sqrt(m))/(2*a); x2=(-b-sqrt(m))/(2*a);

printf(\ }

else if(m==0) {

x1=x2=(-b+sqrt(m))/(2*a); printf(\ } else {

x3=-b/(2*a);

x4=sqrt(m)/(2*a);

printf(\ printf(\ } }

(2)编写一个函数,求s=a+aa+aaa+--------+aaaaaaaaa-----a,其中a是一个数字,例如2+22+222+2222(此时n=4)。主函数a和n的输入,调用所函数和输出所求的 累加和;编写的函数完成计算。 (9分) 注意:不得使用全局变量,注意程序结构 (书中习题3:4。16) #include #include

long Cal(long a,long n); main() {

long sn=0; long a,n;

printf(\ scanf(\ sn = Cal(a,n);

printf(\}

long int Cal(long a,long n)