计算机二级 C语言习题集.docx

上传人:b****8 文档编号:10039480 上传时间:2023-02-08 格式:DOCX 页数:180 大小:60.51KB
下载 相关 举报
计算机二级 C语言习题集.docx_第1页
第1页 / 共180页
计算机二级 C语言习题集.docx_第2页
第2页 / 共180页
计算机二级 C语言习题集.docx_第3页
第3页 / 共180页
计算机二级 C语言习题集.docx_第4页
第4页 / 共180页
计算机二级 C语言习题集.docx_第5页
第5页 / 共180页
点击查看更多>>
下载资源
资源描述

计算机二级 C语言习题集.docx

《计算机二级 C语言习题集.docx》由会员分享,可在线阅读,更多相关《计算机二级 C语言习题集.docx(180页珍藏版)》请在冰豆网上搜索。

计算机二级 C语言习题集.docx

计算机二级C语言习题集

2011计算机二级C语言习题集.txt“我羡慕内些老人羡慕他们手牵手一直走到最后。

━交话费的时候,才发现自己的话那么值钱。

一、程序填空题

1.给定程序中,函数fun的功能是:

将形参n所指变量中,各位上为偶数的去除,剩余的数按原来从高到低的顺序

组成一个新的数,并通过形参指针n传回所指变量。

例如:

输入一个数:

27638496,新的数为:

739。

#include

voidfun(unsignedlong*n)

{unsignedlongx=0,i;intt;

i=1;

while(*n)

/**********found**********/

{t=*n%10;

/**********found**********/

if(t%2!

=0)

{x=x+t*i;i=i*10;}

*n=*n/10;

}

/**********found**********/

*n=x;

}

main()

{unsignedlongn=-1;

while(n>99999999||n<0)

{printf("Pleaseinput(0

");scanf("%ld",&n);}

fun(&n);

printf("\nTheresultis:

%ld\n",n);

}

2.给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文

件中逐个读入并显示在终端屏幕上。

#include

voidfun(char*s,inta,doublef)

{

/**********found**********/

FILE*fp;

charch;

fp=fopen("file1.txt","w");

fprintf(fp,"%s%d%f\n",s,a,f);

fclose(fp);

fp=fopen("file1.txt","r");

printf("\nTheresult:

\n\n");

ch=fgetc(fp);

/**********found**********/

while(!

feof(fp)){

/**********found**********/

putchar(ch);ch=fgetc(fp);}

putchar('\n');

fclose(fp);

}

main()

{chara[10]="Hello!

";intb=12345;

doublec=98.76;

fun(a,b,c);

}

3.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。

所有学生数据均以二进制方式输出

到文件中。

函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生

原来的数据,其它学生的数据不变。

#include

#defineN5

typedefstructstudent{

longsno;

charname[10];

floatscore[3];

}STU;

voidfun(char*filename,STUn)

{FILE*fp;

/**********found**********/

fp=fopen(filename,"rb+");

/**********found**********/

fseek(fp,-1L*sizeof(STU),SEEK_END);

/**********found**********/

fwrite(&n,sizeof(STU),1,fp);

fclose(fp);

}

main()

{STUt[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88},

{10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87},

{10005,"ZhangSan",95,80,88}};

STUn={10006,"ZhaoSi",55,70,68},ss[N];

inti,j;FILE*fp;

fp=fopen("student.dat","wb");

fwrite(t,sizeof(STU),N,fp);

fclose(fp);

fp=fopen("student.dat","rb");

fread(ss,sizeof(STU),N,fp);

fclose(fp);

printf("\nTheoriginaldata:

\n\n");

for(j=0;j

{printf("\nNo:

%ldName:

%-8sScores:

",ss[j].sno,ss[j].name);

for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);

printf("\n");

}

fun("student.dat",n);

printf("\nThedataaftermodifing:

\n\n");

fp=fopen("student.dat","rb");

fread(ss,sizeof(STU),N,fp);

fclose(fp);

for(j=0;j

{printf("\nNo:

%ldName:

%-8sScores:

",ss[j].sno,ss[j].name);

for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);

printf("\n");

}

}

4.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。

所有学生数据均以二进制方式输出

到文件中。

函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二

进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。

#include

#defineN5

typedefstructstudent{

longsno;

charname[10];

floatscore[3];

}STU;

voidfun(char*filename)

{FILE*fp;inti,j;

STUs[N],t;

/**********found**********/

fp=fopen(filename,"rb");

fread(s,sizeof(STU),N,fp);

fclose(fp);

for(i=0;i

for(j=i+1;j

/**********found**********/

if(s[i].sno>s[j].sno)

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

fp=fopen(filename,"wb");

/**********found**********/

fwrite(s,sizeof(STU),N,fp);

fclose(fp);

}

main()

{STUt[N]={{10005,"ZhangSan",95,80,88},{10003,"LiSi",85,70,78},

{10002,"CaoKai",75,60,88},{10004,"FangFang",90,82,87},

{10001,"MaChao",91,92,77}},ss[N];

inti,j;FILE*fp;

fp=fopen("student.dat","wb");

fwrite(t,sizeof(STU),5,fp);

fclose(fp);

printf("\n\nTheoriginaldata:

\n\n");

for(j=0;j

{printf("\nNo:

%ldName:

%-8sScores:

",t[j].sno,t[j].name);

for(i=0;i<3;i++)printf("%6.2f",t[j].score[i]);

printf("\n");

}

fun("student.dat");

printf("\n\nThedataaftersorting:

\n\n");

fp=fopen("student.dat","rb");

fread(ss,sizeof(STU),5,fp);

fclose(fp);

for(j=0;j

{printf("\nNo:

%ldName:

%-8sScores:

",ss[j].sno,ss[j].name);

for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);

printf("\n");

}

}

5.给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文

本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。

#include

#include

voidfun(char*s,inta,doublef)

{

/**********found**********/

FILE*fp;

charstr[100],str1[100],str2[100];

inta1;doublef1;

fp=fopen("file1.txt","w");

fprintf(fp,"%s%d%f\n",s,a,f);

/**********found**********/

fclose(fp);

fp=fopen("file1.txt","r");

/**********found**********/

fscanf(fp,"%s%s%s",str,str1,str2);

fclose(fp);

a1=atoi(str1);

f1=atof(str2);

printf("\nTheresult:

\n\n%s%d%f\n",str,a1,f1);

}

main()

{chara[10]="Hello!

";intb=12345;

doublec=98.76;

fun(a,b,c);

}

6.给定程序中,函数fun的功能是根据形参i的值返回某个函数的值,当调用正确时,程序输出:

x1=5.000000,x2=3.000000x1*x1+x1*x2=40.000000

#include

doublef1(doublex)

{returnx*x;}

doublef2(doublex,doubley)

{returnx*y;}

/**********found**********/

doublefun(inti,doublex,doubley)

{if(i==1)

/**********found**********/

returnf1(x);

else

/**********found**********/

returnf2(x,y);

}

main()

{doublex1=5,x2=3,r;

r=fun(1,x1,x2);

r+=fun(2,x1,x2);

printf("\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n\n",x1,x2,r);

}

7.程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。

函数fun的功能是输出这位学生的信

息。

#include

typedefstruct

{intnum;

charname[9];

charsex;

struct{intyear,month,day;}birthday;

floatscore[3];

}STU;

/**********found**********/

voidshow(STUtt)

{inti;

printf("\n%d%s%c%d-%d-%d",tt.num,tt.name,tt.sex,

tt.birthday.year,tt.birthday.month,tt.birthday.day);

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

/**********found**********/

printf("%5.1f",tt.score[i]);

printf("\n");

}

main()

{STUstd={1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0};

printf("\nAstudentdata:

\n");

/**********found**********/

show(std);

}

8.给定程序通过赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。

函数fun的功能是

将该学生的各科成绩者乘以一个系数a。

#include

typedefstruct

{intnum;

charname[9];

floatscore[3];

}STU;

voidshow(STUtt)

{inti;

printf("%d%s:

",tt.num,tt.name);

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

printf("%5.1f",tt.score[i]);

printf("\n");

}

/**********found**********/

voidmodify(STU*ss,floata)

{inti;

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

/**********found**********/

ss->score[i]*=a;

}

main()

{STUstd={1,"Zhanghua",76.5,78.0,82.0};

floata;

printf("\nTheoriginalnumberandnameandscores:

\n");

show(std);

printf("\nInputanumber:

");scanf("%f",&a);

/**********found**********/

modify(&std,a);

printf("\nAresultofmodifying:

\n");

show(std);

}

9.给定程序中,涵数fun的功能是将不带头结点的单向链表结点数据域中的数据从小到大排序。

即若原链表结点数

据域从头至尾的数据为:

10、4、2、8、6,排序后链表结点数据域从头至尾为:

2、4、6、8、10。

#include

#include

#defineN6

typedefstructnode{

intdata;

structnode*next;

}NODE;

voidfun(NODE*h)

{NODE*p,*q;intt;

p=h;

while(p){

/**********found**********/

q=p->next;

/**********found**********/

while(q)

{if(p->data>q->data)

{t=p->data;p->data=q->data;q->data=t;}

q=q->next;

}

/**********found**********/

p=p->next;

}

}

NODE*creatlist(inta[])

{NODE*h,*p,*q;inti;

h=NULL;

for(i=0;i

{q=(NODE*)malloc(sizeof(NODE));

q->data=a[i];

q->next=NULL;

if(h==NULL)h=p=q;

else{p->next=q;p=q;}

}

returnh;

}

voidoutlist(NODE*h)

{NODE*p;

p=h;

if(p==NULL)printf("ThelistisNULL!

\n");

else

{printf("\nHead");

do

{printf("->%d",p->data);p=p->next;}

while(p!

=NULL);

printf("->End\n");

}

}

10.给定程序中,函数fun的功能是:

叛定形参a所指的N×N(规定N为奇数)的矩阵是否是“幻方”,若是,函数

返回值为1;不是,函数返回值为0。

“幻方”的叛定条件是:

矩阵每行、每列、主对角线及反对角线上元素之和

都相等。

例如:

以下3×3的矩阵就是一个“幻方”:

492

357

816

#include

#defineN3

intfun(int(*a)[N])

{inti,j,m1,m2,row,colum;

m1=m2=0;

for(i=0;i

{j=N-i-1;m1+=a[i][i];m2+=a[i][j];}

if(m1!

=m2)return0;

for(i=0;i

/**********found**********/

row=colum=0;

for(j=0;j

{row+=a[i][j];colum+=a[j][i];}

/**********found**********/

if((row!

=colum)||(row!

=m1))return0;

}

/**********found**********/

return1;

}

main()

{intx[N][N],i,j;

printf("Enternumberforarray:

\n");

for(i=0;i

for(j=0;j

printf("Array:

\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

if(fun(x))printf("TheArrayisamagicsquare.\n");

elseprintf("TheArrayisn'tamagicsquare.\n");

}

11.给定程序中,函数fun的功能是将带头结点的单向链表逆置。

即若原链表中从头至尾结点数据域依次为:

2、

4、6、8、10,逆置后,从头至尾结点数据域依次为:

10、8、6、4、2。

#include

#include

#defineN5

typedefstructnode{

intdata;

structnode*next;

}NODE;

voidfun(NODE*h)

{NODE*p,*q,*r;

/**********found**********/

p=h->next;

/**********found**********/

if(p==0)return;

q=p->next;

p->next=NULL;

while(q)

{r=q->next;q->next=p;

/**********found**********/

p=q;q=r;

}

h->next=p;

}

NODE*creatlist(inta[])

{NODE*h,*p,*q;inti;

h=(NODE*)malloc(sizeof(NODE));

h->next=NULL;

for(i=0;i

{q=(NODE*)malloc(sizeof(NODE));

q->data=a[i];

q->next=NULL;

if(h->next==NULL)h->next=p=q;

else{p->next=q;p=q;}

}

returnh;

}

voidoutlist(NODE*h)

{NODE*p;

p=h->next;

if(p==NULL)printf("ThelistisNULL!

\n");

else

{printf("\nHead");

do

{printf("->%d",p->data);p=p->next;}

while(p!

=NULL);

printf("->End\n");

}

}

12.给定程序中,函数fun的功能是将不带头结点的单向链表逆置。

即若原链表中从头至尾结点数据域依次为:

2

、4、6、8、10,逆置后,从头至尾结点数据域依次为:

10、8、6、4、2

#include

#include

#defineN5

typedefstructnode{

intdata;

structnode*next;

}NODE;

/**********found**********/

NODE*fun(NODE*h)

{NODE*p,*q,*r;

p=h;

if(p==NULL)

returnNULL;

q=p->next;

p->next=NULL;

while(q)

{

/*

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1