版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机二级考试大纲+C语言习题集十二级上机练习
公共基础知识
基本要求
1.掌握算法的基本概念。
2.掌握基本数据结构及其操作。
3.掌握基本排序和查找算法。
4.掌握逐步求精的结构化程序设计方法。
5.掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。
6.掌握数据的基本知识,了解关系数据库的设计。
考试内容
-、基本数据结构与算法
1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。
2.数据结构的定义;数据的逻辑结构与存储结构:数据结构的图形表示;线性结构与非线
性结构的概念。
3.线性表的定义:线性表的顺序存储结构及其插入与删除运算。
4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。
5.线性单链表、双向链表与循环链表的结构及其基本运算。
6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。(前序、
中序和后序遍历有考到,每年都有)
7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。
二、程序设计基础
1.程序设计方法与风格。
2.结构化程序设计。
3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。
三、软件工程基础
1.软件工程基本概念,软件生命周戎概念,软件工具与软件开发环境。
2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。
3.结构化设计方法,总体设计与详细设计。
4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、
集成测试和系统测试。
5.程序的调试,静态调试与动态调试。
四、数据库设计基础
1.数据库的基本概念:数据库,数据库管理系统,数据库系统。
2.数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型。
3.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。
4.数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略。
考试方式
1、公共基础的考试方式为笔试,与C语言(VisualBASIC、VisualFoxPro.Java、Access,
VisualC++)的笔试部分合为一张试卷。公共基础部分占全卷的30分。
2、公共基础知识有10道选择题和5道填空题。
C语言程序设计
基本要求
1.熟悉TURBOC集成环境。
2.熟练掌握结构化程序设计的方法,具有良好的程序设计风格。
3.掌握程序设计中简单的数据结构和算法。
4.TURBOC的集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。
考试内容
一、C语言的结构
1.程序的构成,MAIN函数和其他函数。
2.头文件,数据说明,函数的开始和结束标志。
3•源程序的书写格式
4.C语言的风格。
二、数据类型及其运算(基础)
1.C的数据类型(基本类型,构造类型,指针类型,空类型)及其定义方法。
2.C运算符的种类、运算优先级和结合性。
3.不同类型数据间的转换与运算。
4.C表达式类型(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号
表达式)和求值规则。
三、基本语句(基础)
1.表达式语句,空语句,复合语句。
2.数据的输入和输出,输入输出函数的调用。
3.复合语句。
4.GOTO语句和语句标号的使用。(这个了解即可)
四、选择结构程序设计
1.用if语句实现选择结构。(基础)
2.用switch语句实现多分支选择结构。(笔试有)
3.选择结构的嵌套。
五、循环结构程序设计(基础)
l.for循环结构。
2.while和dowhile循环结构。
3.continue语句和break语句。
4.循环的嵌套。(基础)
六、数组的定义和引用
1.一维数组和多维数组的定义、初始化和引用。
2.字符串与字符数组。
七、函数(基础)
1.库函数的正确调用。
2.函数的定义方法。
3.函数的类型和返回值。
4.形式参数与实在参数,参数值的传递。
5.函数的正确调用,嵌套调用,递归调用。
6.局部变量和全局变量。
7.变量的存储类别(自动、静态、寄存器、外部),变量的作用域和生存期。
8.内部函数与外部函数。
八、编译预处理(基础,笔试有考到宏替换)
1.宏定义:不带参数的宏定义;带参数的宏定义。
2.“文件包含”处理。
九、指针(这个很重要,上机题有这方面的)
1.指针与指针变量的概念,指针与地址运算符。
2.变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体
的指针变量。通过指针引用以上各类型数据。
3.用指针作函数参数。
4.返回指针值的指针函数。
5.指针数组,指向指针的指针,MAIN函数的命令行参数。
十、结构体(即“结构”)与共用体(即“联合”)
1.结构体和共用体类型数据的定义方法和引用方法。
2.用指针和结构体构成链表,单向链表的建立、输出、删除与插入。
十一、位运算
1.位运算符的含义及使用。
2.简单的位运算。
十二、文件操作(了解,上级题有,只要知道什么意思就行了)
只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不
要求。
1.文件类型指针(FILE类型指针)。
2.文件的打开与关闭(fopen,fclose)。
3.文件的读写(fputc,fgetc,fputs,fgets,fread,frwite,fprintf,fscanf函数),文件的定位(rewind,fseek
函数)。
PS:分为笔试和机试两部份,机试有三道题,一道改错,•道补充,一道综合,笔试中有
30分公共基础知识,为数据结构,数据库,网络和电脑常识方面的问题,有70分选择题,
30分填空题,难点为数组,指针,也为重点
全国计算机等级考试调整方案
关于二级
考试科目:新增二级Delphi语言程序设计,加上原有的二级C等六个科目,二级共七个
科目。二级科目分成两类,一类是语言程序设计(C、C++、Java>VisualBasic、Delphi),
另一类是数据库程序设计(VisualFoxPro、Access),
考核内容:二级定位为程序员,考核内容包括公共基础知识和程序设计。所有科目对基础
知识作统一要求,使用统一的公共基础知识考试大纲和教程。二级公共基础知识在各科笔试
中的分值比重为30%(30分)。程序设计部分的比重为70%(70分),主要考查考生对程序
设计语言使用和编程调试等基本能力。
考试形式:二级所有科目的考试仍包括笔试和上机考试两部分。二级C笔试时间由120
分钟改为90分钟,上机时间由60分钟改为90分钟。所有二级科目的笔试时间统一为90
分钟,上机时间统一为90分钟。
系统环境:二级各科目上机考试应用软件为:中文专业版Access2000、中文专业版Visual
Basic6.0、中文专业版VisualFoxPro6.0、VisualC++6.0,二级C上机应用软件由TurboC2.0
改为VisualC++6.0,二级Java由现在的JavaJDK1.4.2改为专用集成开发环境4'NetBeans中
国教育考试版2007”(有关网站将提供免费下载),二级Delphi使用Delphi7.0版本。
一、程序填空题
1.给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的去除,剩余的数
按原来从高到低的顺序
组成一个新的数,并通过形参指针n传回所指变量。
例如:输入一个数:27638496,新的数为:739。
#include<stdio.h>
voidfun(unsignedlong*n)
{unsignedlongx=0,i;intt;
i=l;
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=-l;
while(n>99999999lln<0)
{printf(nPleaseinput(0<n<100000000):");scanf(u%ldn,&n);)
fun(&n);
printf(H\nTheresultis:%ld\nH,n);
2.给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用
字符方式从此文本文
件中逐个读入并显示在终端屏幕上。
#include<stdio.h>
voidfun(char*s,inta,doublef)
/**********found**********/
FILE*fp;
charch;
fp=fopen(',filel.txtu,nwH);
fprintf(fp,"%s%d%f\nM,s,a,f);
fclose(fp);
fp=fopenCTilel.txt0,nru);
printl'CAnTheresult:\n\nu);
ch=fgetc(fp);
/**********found**********/
while(!feof(fp)){
/**********found**********/
putchar(ch);ch=fgetc(fp);}
pulchar('\n');
fclose(fp);
}
main()
{chara[10]=nHello!u;intb=12345;
doublec=98.76;
fun(a,b,c);
3.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数
据均以二进制方式输出
到文件中。函数fun的功能是重写形参filename所指文件中最后•个学生的数据,即用新的
学生数据覆盖该学生
原来的数据,其它学生的数据不变。
#include<stdio.h>
#defineN5
typedefstructstudent{
longsno;
charname[10];
floatscore[3J;
}STU;
voidfun(char*filename,STUn)
{FILE*fp;
fp=fopen(filename,"rb+");
/**********found**********/
fseek(fp,-lL*sizeof(STU),SEEK_END);
/**********found*********不/
fwrite(&n,sizeof(STU),1,fp);
fclose(fp);
main()
{STUt[N]={{10001,"MaChao",91,92,77},{10002JCaoKai”,75,60,88},
{10003,uLiSin,85,70,78},{10004;,FangFangn,90,82,87},
{10005,"ZhangSan",95,80,88}};
STUn={10006JZhaoSi”,55,70,68},ss[N];
intij;FILE*fp;
fp=fopenC^tudent.dat'1,Hwb");
fwrite(t,sizeof(STU),N,fp);
fclose(fp);
fp=fopen("student.datu,"rb");
fread(ss,sizeof(STU),N,fp);
fclose(fp);
printf(n\nTheoriginaldata:\n\nH);
for(j=O;j<N;j++)
{printf(n\nNo:%ldName:%-8sScores:",ss[j].srK),ss[j].name);
for(i=0;i<3;i++)prmtf(n%6.2fn,ss[j].score[i]);
printf("\nH);
)
fim("sludent.dar‘,n);
printf(H\nThedataaftermodifing:\n\nn);
fp=fopen("student.dat'\nrb");
fread(ss,sizeof(STU),N,fp);
fclose(fp);
for(j=0;j<N;j++)
{printf(H\nNo:%ldName:%-8sScores:H,ss|jJ.sno,ss|j].name);
for(i=0;i<3;i++)printf("%6.2fn,ss[j].score[i]);
printf("\n”);
)
)
4.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数
据均以二进制方式输出
到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小
到大排序后,再用二
进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
#include<stdio.h>
#defineN5
typedefstructstudent{
longsno;
charname[10J;
floatscore[3];
}STU;
voidfun(char*filename)
{FILE*fp;inti,j;
STUs[N],t;
/*字********found******¥*亭亭/
fp=fopen(filename,nrbu);
fread(s,sizeof(STU),N,fp);
fclose(fp);
for(i=0;i<N-l;i++)
for(j=i+1;j<N;j++)
/**********found**********/
if(s[i].sno>s[j].sno)
{t=s[i];s[i]=s[j];s[j]=t;}
fp=fbpen(filename,uwb");
/**********found*******亭*¥/
fwrite(s,sizeof(STU),N,fp);
fclose(fp);
)
main()
{STUt[N]={{10005;'ZhangSan",95,80,88},{10003,"LiSi';85,70,78),
{10002;'CaoKain,75,60,88},{10004;'FangFangn,90,82,87},
{10001,"MaChao",91,92,77}},ss[N];
inti,j;FILE*fp;
fp=fopen(,'student.datH,"wb");
fwrite(t,sizeof(STU),5,fp);
fclose(fp);
printf(M\n\nTheoriginaldata:\n\nn);
for(j=0;j<N;j++)
{printf(n\nNo:%ldName:%-8sScores:n,t|j].sno,t|j].name);
for(i=0;i<3;i++)printf(n%6.2f",t[j].score[i]);
printfCAn'1);
)
fun(nstudent.dat");
printf(M\n\nThedataaftersorting:\n\nn);
fp=fopen("student.datu,''rb'1);
fread(ss,sizeof(STU),5,fp);
fclose(fp);
for(j=0;j<N;j++)
{printf(n\nNo:%ldName:%-8sScores:n,ss|jJ.sno,ss[j].name);
for(i=0;i<3;i++)printf("%6.2fM,ss[j].score[i]);
printf(H\nM);
}
)
5.给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再
用字符串方式从此文
本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后
将其显示在屏幕上。
#include<stdio.h>
#include<stdlib.h>
voidfun(char*s,inta,doublef)
/*字字*******found******字字字字/
FILE*fp;
charstrflOO],strl[100],str2[100];
intal;doublefl;
fp=fopen(Mfilel.txtu,nw");
fprintf(fp,"%s%d%f\nn,s,a,f);
/**********found**********/
fclose(fp);
fp=fopenCfilel.txt",V);
/**********found******亭***/
fscanf(fp,"%s%s%s",str,strl,str2);
fclose(fp);
al=atoi(strl);
fl=atof(str2);
printf(n\nTheresult:\n\n%s%d%f\nu,str,al,fl);
)
main()
{chara[10]="Helk)!”;intb=12345;
doublec=98.76;
fun(a,b,c);
)
6.给定程序中,函数fun的功能是根据形参i的值返回某个函数的值,当调用正确时,程序
输出:
x1=5.000000,x2=3.000000xl*xl+xl*x2=40.000000
#include<stdio.h>
doublefl(doublex)
{returnx*x;}
doublef2(doublex,doubley)
{returnx*y;)
/**********found**********/
doublefun(inti,doublex,doubley)
{if(i==D
/**********found**********/
returnfl(x);
else
/**********found*********不/
returnf2(x,y);
main()
{doublexl=5,x2=3,r;
r=fun(l,xl,x2);
r+=fun(2,xl,x2);
printf(M\nxl=%f,x2=%f,x1*x1+x1*x2=%f\n\n",x1,x2,r);
)
7.程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun的功能
是输出这位学生的信
息。
#include<stdio.h>
typedefstruct
{intnum;
charname[9];
charsex;
struct{intyear,month,day;)birthday;
floatscore[3];
}STU;
/**********found**********/
voidshow(STUtt)
{inti;
printf(M\n%d%s%c%d-%d-%d'\tt.num,,tt.sex,
tt.birthday.year,tt.birthday.month,tt.birthday.day);
for(i=0;i<3;i++)
字字*******found******¥¥字字/
printfC^S.ir,tt.score[i]);
printf(n\nn);
)
main()
{STUstd={1/'Zhanghua\'M;1961,10,8,76.5,78.0,82.0};
printf(n\nAstudentdata:\nn);
/**********found*********琴/
show(std);
)
8.给定程序通过赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成
绩。函数fun的功能是
将该学生的各科成绩者乘以一个系数a。
#include<stdio.h>
typedefstruct
{intnum;
charname[9];
floatscore[3];
}STU;
voidshow(STUtt)
{inti;
printf("%d%s:",tt.num,);
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={l,nZhanghua",76.5,78.0,82.0);
floata;
printf(n\nTheoriginalnumberandnameandscores:\n");
show(std);
printf("\nlnputanumber:");scanf(u%f\&a);
/**********found**********/
modify(&std,a);
printf(M\nAresultofmodifying:\n");
show(std);
)
9.给定程序中,涵数fun的功能是将不带头结点的单向链表结点数据域中的数据从小到大排
序。即若原链表结点数
据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾为:2、4、6、8、
10o
#include<stdio.h>
#include<stdlib.h>
#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<N;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(MThelistisNULL!\nH);
else
{printf(n\nHead");
do
{printf("->%dn,p->data);p=p->next;}
while(p!=NULL);
printf("->End\n");
)
)
10.给定程序中,函数fun的功能是:叛定形参a所指的NXN(规定N为奇数)的矩阵是否
是“幻方”,若是,函数
返回值为1;不是,函数返回值为0。“幻方”的叛定条件是:矩阵每行、每列、主对角线及
反对角线上元素之和
都相等。例如:以下3又3的矩阵就是一个“幻方”:
492
357
816
#include<stdio.h>
#defineN3
intfun(int(*a)[N])
{inti,j,mI,m2,row,colum;
ml=m2=0;
for(i=0;i<N;i++)
{j=N-i-l;ml+=a[i][i];m2+=a[i][j];}
if(ml!=m2)return0;
for(i=0;i<N;i++){
/**********found**********/
row=colum=0;
for(j=0;j<N;j++)
{row+=a[i][j];colum+=a[j][i];}
/**********found**********/
if((row!=colum)II(row!=ml))return0;
)
/**********found**********/
retum1;
)
main()
{intx[N][N],i,j;
printf(HEnternumberforaiTay:\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)scanf(n%dH,&x[i][j]);
printf(nArray:\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)printf("%3d”,x[i][j]);
printf(M\nn);
)
if(fun(x))printf(HTheArrayisamagicsquareAn");
elseprintf(nTheArrayisn'tamagicsquareAn");
)
11.给定程序中,函数fun的功能是将带头结点的单向链表逆置。即若原链表中从头至尾结
点数据域依次为:2、
4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。
#include<stdio.h>
#include<stdlib.h>
#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<N;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!\nn);
else
{printf("\nHead");
do
{printf(,'->%d",p->data);p=p->next;}
while(p!=NULL);
printf(',->End\nH);
)
)
12.给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾
结点数据域依次为:2
、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2
#include<stdio.h>
#include<stdlib.h>
#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)
/**********found**********/
r=q->next;
q->next=p;
p=q;
/**********found**********/
q=r;
)
returnp;
)
NODE*creatlist(inta[])
{NODE*h,*p,*q;inti;
h=NULL;
for(i=0;i<N;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)printfC'ThelistisNULL!\nu);
else
{printfC^Head”);
do
{printf("->%d",p->data);p=p->next;}
while(p!=NULL);
printf("->End\nn);
13.给定程序中,函数fun的功能是将带头结点的单向链表结点数据域中的数据从小到大排
序。即若原链表结点数
据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、
6、8、10o
#include<stdio.h>
#include<stdlib.h>
#defineN6
typedefstructnode{
intdata;
structnode*next;
}NODE;
voidfun(NODE*h)
{NODE*p,*q;intt;
/**********found******亭***/
p=h->next;
while(p){
/**********found**********/
q=p->next;
while(q){
/**********found**********/
if(p->data>=q->data)
{t=p->data;p->data=q->data;q->data=t;}
q=q->next;
)
p=p->next;
)
)
NODE*creatlist(inta[J)
{NODE*h,*p,*q;inti;
h=(NODE*)malloc(sizeof(NODE));
h->next=NULL;
for(i=0;i<N;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!\nn);
else
{printf(n\nHead");
do
{printf(,'->%du,p->data);p=p->next;}
while(p!=NULL);
printf(M->End\n");
)
14.给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在
―2—处使f指向函数
fl,在—3—处使f指向函数f2。当调用正确时,程序输出:
Xl=5.000000,x2=3.000000,xl*xl+xl*x2=40.000000
#include<stdio.h>
doublefl(doublex)
{returnx*x;}
doublef2(doublex,doubley)
{returnx*y;}
doublefun(doublea,doubleb)
/**********found**********/
double
doublerl,r2;
字字*******found******¥¥字字/
f=f1;/*pointfountionfl*/
rl=f(a);
/**********found**********/
f=f2;/*pointfountionf2*/
r2=b);
returnrl+r2;
)
main()
{doublexl=5,x2=3,r;
r=fun(xl,x2);
printf(M\nxl=%f,x2=%f,xl*xl+xl*x2=%f\n",x1,x2,r);
15.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数
据均以二进制方式输出
到student.dat中。函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数
据,对该生的分数
进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的新数据
覆盖原数据,其它学
生数据不变,若找不到,则什么都不做。
#include<stdio.h>
#defineN5
typedefstructstudent{
longsno;
charname[10];
floatscore[3];
}STU;
voidfun(char.filename,longsno)
{FILE*fp;
STUn;inti;
fp=fopen(filename,nrb+u);
/**********found**********/
while(!feof(fp))
{fread(&n,sizeof(STU),1,fp);
/**********found******亭***/
if(n.sno==sno)break;
)
if(!feof(fp))
{for(i=0;i<3;i++)n.score[i]+=3;
/**********found*********示/
fseek(fp,-lL*sizeof(STU),SEEK_CUR);
fwrite(&n,sizeof(STU),1,fp);
)
fclose(fp);
)
16.给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将
其余字符串右边用字符
*补齐,使其与最长字符串等长。ss所指字符串数组中共有N个字符串,且串长<N。
#include<stdio.h>
#include<string.h>
#defineM5
#defineN20
voidfun(char(*ss)(NJ)
{inti,j,n,len=0;
for(i=0;i<M;i++)
{len=strlen(ss[i]);
if(i==0)n=len;
if(len>n)n=len;
)
for(i=0;i<M;i++){
/**********found*********不/
n=strlen(ss[i]);
fbr(j=O;j<len-n;j++)
/*字不*******found******¥¥¥¥/
ss[i][n+j]='*';
/**********found**********/
ss[i][n+j+l]=W;
)
main()
{charss[M][N]={',shanghai,'/,guangzhou'',"beijing",',tianjing",,,cchongqing,,);
inti;
printf(MTheoriginalstringsare:\n");
for(i=0;i<M;i++)printf(H%s\n",ss[i]);
printf("\nn);
fun(ss);
printf("Theresultis:\nn);
for(i=0;i<M;i++)printf(u%s\n",ss[i]);
I
17.程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩,函数
fun的功能是将存放学
生数据的结构体数组,按照姓名的字典序(从小到大)排序。
#include<stdio.h>
#include<string.h>
structstudent{
longsno;
charname[10];
floatscore[3];
voidfun(structstudenta[J,intn)
/**********found**********/
structstudentt;
inti,j;
/*字不*******found******¥¥¥¥/
for(i=0;i<n-l;i++)
for(j=i+l;j<n;j++)
/**********found**********/
if(strcmp(a[i].name,a[j].name)>0)
{t=a[i];a[i]=a|j];a|jj=t;}
main()
{structstudents[4]={{10001,"ZhangSan",95,80,88},{10002,"LiSiH,85,70,78},
{10003,nCaoKaiH,75,60,88},{10004JFangFang",90,82,87});
inti,j;
printf(M\n\nTheoriginaldata:\n\nH);
for(j=0;j<4;j++)
{printf(n\nNo:%ldName:%-8sScores:",s[j].sno,s[j].name);
for(i=0;i<3;i++)printf(H%6.2f",s[j].score[i]);
printf(n\nn);
)
fun(s,4);
printf("\n\nThedataaftersorting:\n\n");
for(j=0;j<4;j++)
{printf("\nNo:%ldName:%-8sScores:n,s[j].sno,s[j].name);
for(i=0;i<3;i++)printf("%6.2f",s[j].score[i]);
printf("\n");
)
)
18.给定程序中,函数fun的功能是:将形参s所指字符中中的所有字母字符顺序前移,其他
字符顺序后移,处理
后新字符串的首地址作为函数值返回。
例如,s所指字符串为:asdl23fgh543df,处理后新字符串为asdfghdf123543。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char*fun(char*s)
{inti,j,k,n;char*p,*t;
n=strlen(s)+l;
t=(char*)malloc(n*sizeof(char));
p=(char*)malloc(n*sizeof(char));
j=0;k=0;
for(i=0;i<n;i++)
{if(((s[i]>='a,)&&(s[i]<='z,))ll((s[i]>=A,)&&(s[i]<=T))){
t[j]=s[i];j++;)
else
{p[k]=s[i];k++;}
/**********found**********/
for(i=0;i<k;i++)t[j4-i]=p[i];
/**********found**********/
t[j+k]=0;
returnt;
main()
{chars[80];
printf(MPleaseinput:");scanf(u%sn,s);
printf("\nTheresultis:%s\n",fun(s));
19.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的
功能是将形参a所指结构
体变量s中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后
的数据。
例如:a所指变量中的学号、姓名、和三门课的成绩依次是:10001、"ZhangSan"、95、80、
88,修改后输出t
中的数据应为:10002、"LiSi"、96、81、89。
#include<stdio.h>
#include<string.h>
structstudent{
longsno;
charnameflO];
floatscore[3];
/**********found******亭***/
structstudent*fun(structstudent*a)
{inti;
a->sno=10002;
strcpy(a->name,nLiSiH);
/**********found*********示/
for(i=0;i<3;i++)a->score[i]+=1;
/**********found**********/
returna;
main()
{structstudents={10001,"ZhangSan",95,80,88},*t;
inti;
printf(n\n\nTheoriginaldata:\nn);
printf(n\nNo:%ldName:%s\nScores:u,s.sno,);
for(i=0;i<3;i++)printf(M%6.2fs.score[i]);
printf(M\nM);
t=fun(&s);
printf(n\nThedataaftermodified:\nn);
printf("\nNo:%ldName:%s\nScores:",t->sno,t->name);
for(i=0;i<3;i++)printf("%6.2ft->score[i]);
printf(n\nn);
)
20.给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数
均为正数),将所指数组
中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数据的后部,平均
值作为函数值返回,
在主函数中输出平均值和移动后的数据。
例如:有10个正数:4630324061745154826,平均值为:30.5000000
移动后的输出为:3061715264632404548
#include<stdlib.h>
#include<stdio.h>
#defineN10
doublefun(double*x)
{inti,j;doubleav,y[N];
av=0;
/**********found**********/
for(i=0;i<N;i++)av+=x[i]/N;
for(i=j=0;i<N;i++)
if(x[i]<av){
/**********found*******亭*彳/
y[j]=x[i];x[i]=-l;j++;}
i=0;
while(i<N)
{if(x[i]!=-l)yU++]=x[i];
/**********found**********/
i++;
)
for(i=0;i<N;i++)x[i]=y[i];
returnav;
)
main()
{inti;doublex[N];
for(i=0;i<N;i++){x[i]=rand()%50;printf("%4.0fn,x[i]);}
printf("\n");
printf(n\nTheaverageis:%f\nn,fun(x));
printf(M\nTheresult:\n",fun(x));
for(i=0;i<N;i++)printf(n%5.0f",x[i]);
printf(n\nn);
21.给定程序中,函数fun的功能是:计算形参中N个数的平均值(规定所有数均为正数),
将所指数组中大于平
均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函
数值返回,在主函数
中输出平均值和移动后的数据。
例如:有10个正数:4630324061745154826,平均值为:30.5000000
移动后的输出为:4632404548306171526
#include<stdlib.h>
#include<stdio.h>
#defineN10
doublefun(double*x)
{inti,j;doubles,av,y[NJ;
s=0;
for(i=0;i<N;i++)s=s+x[i];
/**********found**********/
av=s/N;
for(i=j=0;i<N;i++)
if(x[i]>av){
/*字字*******found******字字字字/
y[j++]=x[i];x[i]=-l;}
for(i=0;i<N;i++)
/**********found**********/
if(x[i]!=-1)y[j++]=x[i];
for(i=0;i<N;i++)x[i]=y[i];
returnav;
}
main()
{inti;doublex[N];
for(i=0;i<N;i++){x[i]=rand()%50;printf(H%4.0fn,x[i]);}
printf("\nn);
printf("\nTheaverageis:%f\n",fun(x));
printf("\nTheresult:\nu,fun(x));
for(i=0;i<N;i++)printf(n%5.OfH,x[i]);
printf("\nn);
)
22.给定程序中,函数fun的功能是:将自然数1-10以及它们的平方根写到名为myfile3.txt
的文本文件中,然后
再顺序读出显示在屏幕上。
#include<math.h>
#include<stdio.h>
intfun(char*fname)
{FILE*fp;inti,n;floatx;
if((fp=fopen(fname,,,w',))==NULL)return0;
for(i=1;i<=10;i++)
fprintf(fp,n%d%f\n",i,sqrt((double)i));
printfCAnSucceed!!\nu);
/**********found*********示/
fclose(fp);
printf(n\nThedatainfile:\n");
/**********found*********不/
if((fp=fopen(fname,"rn))==NULL)
return0;
fscanf(fp;'%d%f;&n,&x);
while(!feof(fp))
{printf(u%d%f\n",n,x);fscanf(fp,"%d%f',&n,&x);}
fclose(fp);
return1;
)
main()
{charfname[]=nmyfile3.txtn;
fun(fname);
)
23.给定程序中,函数fun的功能是:找出NXN矩阵中每列元素中的最大值,并按顺序依次
存放于形参b所指的一
维数组中。
#include<stdio.h>
#defineN4
voidfun(int(*a)[N],int*b)
{inti,j;
for(i=0;i<N;i++){
/*字********found******¥*亭亭/
b[i]=a[0][i];
for(j=l;j<N;j++)
/**********found*********示/
if(b[i]<a[j][i])b[i]=a[j][i];
)
main()
{intx[N][N]={{12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3}},y[N],i,j;
printf(',\nThematrix:\nM);
for(i=0;i<N;i++)
{forO=0;j<N;j++)printf("%4d,,,x[i]fj]);
printfCAn*');
/**********found*********琴/
fun(x,y);
printf(n\nTheresultis:");
for(i=0;i<N;i++)printf(u%3dn,y[i]);
printf(M\nH);
24.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的
功能是将形参a中的数据
进行修改,把修改后的数据作为函数值返回主函数进行输出。
例如:传给形参a的数据中,学号、姓名、和3门课的成绩依次是:10001、"ZhangSan”、
95、80、88,修改后
的数据应为:10002、"LiSi"、96、81、89。
#include<stdio.h>
#include<string.h>
structstudent{
longsno;
charname[10];
floatscore[3];
);
structstudentfun(structstudenta)
{inti;
a.sno=10002;
/**********found**********/
strcpy(,uLiSi");
/**********found**********/
for(i=0;i<3;i++)a.score[i]+=1;
returna;
I
main()
{structstudents={10001,"ZhangSan1,,95,80,88},t;
inti;
printf("\n\nTheoriginaldata:\nn);
printf(n\nNo:%ldName:%s\nScores:",s.sno,);
for(i=0;i<3;i++)printf("%6.2f",s.score[i]);
printf("\nH);
t=fun(s);
printf("\nThedataaftermodified:\nn);
printf(n\nNo:%ldName:%s\nScores:u,t.sno,);
for(i=0;i<3;i++)printf(n%6.2f”,t.score[i]);
printf(n\nM);
25.人员的记录山编号和出生年、月、II组成,N名人员的数据已在主函数中存入结构体数
组std中,且编号唯一
o函数fun的功能是:找出指定编号人员的数据,作为函数值返回,山主函数输出,若指定
编号不存在,返回数
据中的编号为空串。
#include<stdio.h>
#include<string.h>
#defineN8
typedefstruct
{charnum[10J;
intyear,month,day;
}STU;
STUfun(STU*std,char*num)
{inti;STUa={"”,9999,99,99};
for(i=0;i<N;i++)
/**********found**********/
if(strcmp(std[i].num,num)==O)
return(std[i]);
return
main()
{STUstd[Nl={{"111111",1984,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高职(学前教育)幼儿园教育活动设计综合测试题及答案
- 2027届湖南省常德市鼎城区八年级数学第一学期期末学业质量监测模拟试题含解析
- 2027届安徽合肥肥东第四中学数学七年级第一学期期末考试试题含解析
- 江苏省南通市通州区金北学校2027届数学七年级第一学期期末质量检测试题含解析
- 2026年机器人的控制技术
- 2026年睫毛增长奇效展示
- 2026年水利政策改革的路径分析
- 2026年美容仪器性能评测
- 2026年水利水电工程实施中的环境监测技术
- 2026年美甲设计灵感活力与时尚激动
- 刑事执行考试题及答案
- 电梯拆除施工方案
- 月满中秋平安同行-中秋文化暨假期安全教育主题班会
- 小金县人力资源和社会保障局2026年增量政策性岗位招募的(13人)考试备考题库及答案详解
- 2026国家会展中心(天津)有限责任公司人员招聘9人笔试备考试题及答案详解
- 2026下半年杭州市数据资源管理局所属杭州市大数据管理服务中心招聘9人笔试参考题库及答案详解
- 2025年内蒙古自治区网格员招聘考试题库及答案解析
- 2026 年白露节气气候变化健康科普课件
- 2026秋新版小学湘科版科学四年级上册教学设计(附目录)适用于新课标
- 2026年全国高考英语考试大纲
- 建立健全泉水调查监测评价制度实施方案
评论
0/150
提交评论