搜档网
当前位置:搜档网 › 二级C语言上机填空题技巧总结

二级C语言上机填空题技巧总结

二级C语言上机填空题技巧总结
二级C语言上机填空题技巧总结

上机填空题技巧总结

一、填空题之方法

1.上机填空题占30分,一般有3个空需要填写,每个空为10分;

2.填空题做题之前必须弄清题目含义,抓住关键字,例如:要求对数组进行从小到大排序,

则将会出现大于符号,如果是从大到小排序则出现小于符号;

3.填空题中出现频率最高的就是函数的调用、函数的首部、函数的返回值等和函数相关的问

题,因此必须牢牢掌握祝函数的基本特征;

4.填空题中有的“空”比较难,考生除了掌握必须的C语言知识之外,还需要很好的逻辑思

路,如果一个空将花很多时间来解决,那么建议使用“死记硬背”的方法来缩短复习时间;

5.上机题库中100题有部分题目是重复的或是相似的题目很多,同学们要使用比对的方法尽

量去理解;

6.多练习,多思考,多总结

二、填空题与结构体相关

1.结构体成员引用:上机题库P18第9题(和92题一致),P27第23题(和51题一样)

读清楚题目要求:

(1)要求将形参a所指结构体变量的数据赋值给函数中的结构体变量b

(2)从例如可以看出来:结构体中的学号和姓名变为了1002和“LiSi”,但是3门课成绩没有变化

23题: (1) 从例如中可以看出:变化的是结构体中的学号和姓名

#include #include structstudent{ longsno;

charname[10]; floatscore[3]; };

voidfun(structstudenta) {structstudentb;inti;

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

b=__1__;?题目要求将形参a 的值赋值给结构体变量b ,因此填:a b.sno=10002;?学号变为了10002 /**********found**********/

strcpy(__2__,"LiSi");?姓名要变为”LiSi ”,则要引用b 中的name 成员 printf("\nThedataaftermodified:\n");/*讲解是一句带过不用多讲*/

printf("\nNo:%ldName:%s\nScores:",b.sno,https://www.sodocs.net/doc/883441979.html,);/*讲解是一句带过不用多讲*/ /**********found**********/

for(i=0;i<3;i++)printf("%6.2f",b.__3__);?分析:这个是一个循环语句,执行3次循环,printf("%6.2f",b.__3__)要求输出是一个实型数据的成员,因此可以得知是score 成员,因为score 是一个数组,因此填:b.score[i],当i 变化就可以取出第一门、第二门、第三门课的成绩 printf("\n"); }

main()

{structstudents={10001,"ZhangSan",95,80,88}; inti;

printf("\n\nTheoriginaldata:\n");

printf("\nNo:%ldName:%s\nScores:",s.sno,https://www.sodocs.net/doc/883441979.html,); for(i=0;i<3;i++)printf("%6.2f",s.score[i]); printf("\n"); fun(s); }

#include

#include

structstudent{

longsno;

charname[10];

floatscore[3];

};

voidfun(structstudent*b)

{inti;

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

b__1__=10004;?题目中t的学号变化为了10004,因此填写:b->sno,不能填写

b.sno,因为b是一个指针

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

strcpy(b__2__,"LiJie");?t的姓名变为了”LiJie”,因此填写:b->name

}

main()

{structstudentt={10002,"ZhangQi",93,85,87};

inti;

printf("\n\nTheoriginaldata:\n");

printf("\nNo:%ldName:%s\nScores:",t.sno,https://www.sodocs.net/doc/883441979.html,);

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

printf("\n");

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

fun(__3__);?此处为函数调用,根据形参的类型来判定实参,形参structstudent*b 为结构体指针,联系main函数定义部分只有structstudentt和b的类型相同,因此可知需要填的是:&t

printf("\nThedataaftermodified:\n");

printf("\nNo:%ldName:%s\nScores:",t.sno,https://www.sodocs.net/doc/883441979.html,);

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

printf("\n");

}

2.函数调用and结构体:上机题库P22第16题(和78、82题一样)

重点注意:

(1)把a中地址作为函数返回值返回函数

(2)观察可知a中的学号、姓名边为了10002和“zhangSan”,每门课的成绩增加了1分

#include

#include

structstudent{

longsno;

charname[10];

floatscore[3];

};

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

__1__fun(structstudent*a)?根据函数调用t=fun(&s);可知函数返回类型和t的类型相同,structstudents={10001,"ZhangSan",95,80,88},*t;可知t的类型为structstudent*

{inti;

a->sno=10002;

strcpy(a->name,"LiSi");

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

for(i=0;i<3;i++)__2__+=1;?题目要求将每门课成绩增加1分,因此填为:

a->score[i],不能为a.score[i]或是a.score

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

return__3__;?题目要求返回a的地址,a本身就是一个指针,因此填入a即可}

main()

{structstudents={10001,"ZhangSan",95,80,88},*t;

inti;

printf("\n\nTheoriginaldata:\n");

printf("\nNo:%ldName:%s\nScores:",s.sno,https://www.sodocs.net/doc/883441979.html,);

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

printf("\n");

t=fun(&s);

printf("\nThedataaftermodified:\n");

printf("\nNo:%ldName:%s\nScores:",t->sno,t->name);

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

printf("\n");

}

3.结构体和排序:上机题库P14第2题

重点注意:

(1)排序的格式:红色部分为考试中的重点,必须记住

从小到大排序:

for(i=0;i

for(j=i+1;ja[j] )

{t=a[i];a[i]=a[j];a[j]=t;}从大到小排序:

for(i=0;i

for(j=i+1;j

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

voidfun(structstudenta[],intn)

{

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

__1__t;?此处要求填入t的类型,可以从t=a[i];中得知t和a数组的类型必须一

致,voidfun(structstudenta[],intn)中得知a为结构体类型,因此填写:

structstudent

inti,j;

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

for(i=0;i<__2__;i++)?根据排序的格式填空,因此记住是关键

for(j=i+1;j

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

if(strcmp(__3__)>0)?按照姓名字典顺序从小到大排序,因此:

strcmp(a[i].name,a[j].name),此处需要特别注意

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

}

main()

{structstudents[4]={{10001,"ZhangSan",95,80,88},

{10002,"LiSi",85,70,78},

{10003,"CaoKai",75,60,88},

{10004,"FangFang",90,82,87}};

inti,j;

printf("\n\nTheoriginaldata:\n\n");

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

{printf("\nNo:%ldName:%-8sScores:",s[j].sno,s[j].name);

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

printf("\n");

}

fun(s,4);

printf("\n\nThedataaftersorting:\n\n");

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

{printf("\nNo:%ldName:%-8sScores:",s[j].sno,s[j].name);

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

printf("\n");

}

}

三、填空题与链表相关

1.带头结点的链表:p=h->next,上机题库P21第15题

考点分析:

(1)带头结点链表的表现形式:

带头结点的链表,头结点head不存放任何的数据,从头结点的下一个结点开始存放数据,因此考试中如果出现p=__1__;则填入p=h->next

(2)链表数据排序

对数组元素从小到大排序:

for(i=0;i

for(j=i+1;ja[j]

)

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

对链表元素进行从小到大排序:

while(p)/*相当于数组排序中的for(i=0;i

{

q=p->next;/*相当于j=i+1*/

while(q)/*相当于for(;j

{

if(p->data>q->data)/*相当于if(a[i]>a[j])*/

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

/*如果a[i]>a[j]成立,则交换数据元素,让数据变成从小到大排序*/ q=q->next;/*相当于q++*/

}

p=p->next;/*相当于p++*/

}

15题:

#include

#include

#defineN6

typedefstructnode{

intdata;

structnode*next;

}NODE;

voidfun(NODE*h)

{NODE*p,*q;intt;

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

p=__1__;?链表为带头结点,因此填写:p=h->next

while(p){

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

q=__2__;?比较两个链表中元素的大小,因此q=p->next,这样q指向了p的下一位

while(q){

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

if(p->data__3__q->data)—>从小到大排序,因此使用大于符号,填写:>

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

q=q->next;

}

p=p->next;

}

}

main()

{NODE*head;

inta[N]={0,10,4,2,8,6};

head=creatlist(a);

printf("\nTheoriginallist:\n");

outlist(head);

fun(head);

printf("\nThelistaftersorting:\n");

outlist(head);

}

2.不带头结点的链表:p=h

(1)不带头结点链表的表示形式:

(2)讲解P38第42题(和15题类似)

voidfun(NODE*h)

{NODE*p,*q;intt;

p=h;?不带头结点的链表

while(p){

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

q=__1__;?q指向p的下一位,因此填入:q=p->next

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

while(__2__)?判断q有没有到末尾,因此填入p或是p!=NULL

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

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

q=q->next;

}

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

p=__3__;?while(p)为循环条件,要构成循环p就得自加或是自减,从循环

体中得知没有进行p++之类的操作,因此此处填入:p=p->next或是p++

}

}

main()

{NODE*head;

inta[N]={0,10,4,2,8,6};

head=creatlist(a);

printf("\nTheoriginallist:\n");

outlist(head);

fun(head);

}

3.链表的返回值:P43第50题(和43题类似)

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

__1__fun(NODE*h)?根据函数调用head=fun(head);和NODE*head;知道函数

的返回值为NODE*

{NODE*p,*q,*r;

p=h;

if(p==NULL)—>如果p数据位空,则表示p中没有任何的数据,因此就无需

再进行逆置,故returnNULL;

returnNULL;

q=p->next;

p->next=NULL;

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

while(__2__)?此空判断q有没有为空,讲解时候不容易理解,考生记住即

可,填入:while(q)或是while(q!=NULL)

{r=q->next;

q->next=p;

p=q;

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

q=__3__;?填入:q=r;次空理解起来较难,因此考生必须认真记忆,老师无

需多讲

}

returnp;

}

main()

{NODE*head;

inta[N]={2,4,6,8,10};

head=creatlist(a);

printf("\nTheoriginallist:\n");

outlist(head);

head=fun(head);

printf("\nThelistafterinverting:\n");

outlist(head);

}

四、填空题与文件相关

1.文件指针定义

(1)文件定义的形式:FILE*fp;(课本P115)

(2)举例:上机题库P30第28题第一空

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

__1__fp;

分析:在涉及文件类型的上机题目时fp指的就是文件指针,因此在前面填写类型时候

直接写入:FILE*fp;

(3)类似题目:P32第32题第1个空、P67第88题第2个空

2.文件打开

(1)文件打开的格式:fopen(“文件名”,“打开方式”);(课本P115)

(2)举例:P31第30题第1个空

voidfun(char*filename,STUn)

{FILE*fp;

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

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

分析:缺少了文件名,形参filename是实参传过来的文件名,因此这里直接填入:

fp=fopen(filename,"rb+");表示以“读和写”的方式打开一个二进制文件filename (3)类似的题目:P41第47题第1个空、P71第94题第1个空、P72第96题第3空

3.文件关闭

(1)文件关闭的格式:fclose(文件指针);(课本P117)

(2)举例:上机题库P30第28题第2空

fp=fopen("file1.txt","w");/*第一次以写的形式打开文件file1.txt*/ fprintf(fp,"%s%d%f\n",s,a,f);

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

__2__;

fp=fopen("file1.txt","r");/*第二次以读的形式打开文件file1.txt*/

分析:打开文件以后必须将它关闭,因此该空要填:fclose(fp);

(3)类似题目:P72第96题第2空

4.测试文件结束

(1)判断文件结束的feof函数形式:feof(fp)(课本P118)

(2)经常出现在while()的表达式里面,常见形式为:while(!feof(fp))测试指针fp有没有结束

(3)举例:上机题目P26第22题第1空

FILE*fp;

STUn;inti;

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

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

while(!__1__)

分析:填写feof(fp)测试fp指针又没有结束

(4)类似题目:P32第32题第2个空、P61第80题第1个空、P71第94题第2个空

5.设置文件位置函数

(1) fseek设置文件位置:fseek(文件指针,位移量,移动起始点)(课本P118)

(2)考试一般考查的是移动的起始点:SEEK_SET表示文件开始,SEEK_CUR表示文件当前位置,SEEK_END表示文件末尾

(3)举例:上机题库P31第30题第2个空

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

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

分析:题目要求:重写形参filename所指文件中最后一个学生的数据,因此文件指针fp要指向最后的位置,则填入:fseek(fp,-1L*sizeof(STU),SEEK_END);

(4)类似题目:P26第22题第3空、P61第80第3空、

6.读二进制文件

(1)fwrite(存入数据的指针,每一个数据占有的字节,输入数据的个数,文件指针);(课本P120)

(2)举例:P31第30题第3空

voidfun(char*filename,STUn)

{FILE*fp;

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

fp=fopen(filename,"rb+");/*打开文件filename*/

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

fseek(fp,-1L*sizeof(STU),SEEK_END);/*定位到最后一个学生的位置*/

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

fwrite(__3__,sizeof(STU),1,fp);/*将形参n新学生的数据覆盖最后一个学生的数

据,因为fp已经定位到了最后一个学生的位置*/

fclose(fp);

}

分析:题目要求用新数据覆盖最后一个学生的数据,因此填入:

fwrite(&n,sizeof(STU),1,fp);填入的是地址,不能是:

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

(3)类似题目:P41第47题第3空,P67第88题第3空、

7.写二进制文件函数

(1)fread(读出数据的指针,每一个数据占有的字节,输出数据的个数,文件指针);

(2)上机考试填空题没有出现需要填写的空,考生作一般的了解

8.fcanf函数数和fprintf函数

(1)fscanf(文件指针,格式控制字符串,输入列表项);

(2)fprintf(文件指针,格式控制字符串,输出列表项);

(3)fscanf函数和fprintf函数在上机编程题中详细介绍,这里不作重点讲解,了解即可

五、填空题与函数相关

1.函数调用:P13第1题

#include

doublef1(doublex) 定义了f1函数,有一个形参

{returnx*x;}

doublef2(doublex,doubley)定义了f2函数,有两个形参

{returnx*y;}

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

__1__fun(inti,doublex,doubley)?根据函数调用r=fun(1,x1,x2);可知函数返

回值和r类型一致,doublex1=5,x2=3,r;r为doule类型,则函数返回double

{if(i==1)

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

return__2__(x);?此处为函数调用,实参数为1,根据实参和形成个数一致可知,

调用的为f1函数

else

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

return__3__(x,y);?此处的实参数为2,则调用f2函数

}

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);

}

六、填空题与数组相关

1.类似题目:3、4、7、20、24、26、39、40、41、54、57、64、68、70、71、76、89、90、99

2.一维数组中存在这样一些类型:

(1)求一个数值数组中的所有值的平均值和把大于或者小于平均值的数辅导例外一个数组中。在计算机平均值时,首先定义一个变量来存放平均分,平均分一般用av变量来代

替,如果av已经定义但是没有赋初值,那么这个空填写的内容的为:av=0;

(2)求算平均值值时有两种方法,第一种是算出总的分数,最后再除以总的个数即可,如算1到6之间的数的平均值,首先算出1到6的和,其次用综合除以总的个数6,即可以

得到平均值;第二种方法是用每一个数除以6再把所有的和加起来。即

1/6+2/6+3/6+4/6+5/6+6/6;所以在执行的一维数组中算平均值时也是存在来中情况,如

果在for语句的后面有av=av/N;则第二个空一般的填写时av+=s[i];如果说没有

av=av/N;则填写的是:av+=s[i]/N;

(3)在后面的一个空的填写的时候要注意变量的使用情况,如果变量使用了j和i,那么这一个空的填写的内容为:j++;

(4)如果一维数组中求的是把大于或者是小于平均值的数移动到数组的首部的时候,这种题目的解答时这样的,第一个空一般填写的内容为:j++;第二个空填写的内容是-1;

(5)对数组进行排序时:如果是从大到小的排序的时候,用的是小于符号,如果是从小到大排序时使用的是大于符号。

3.二维数组中的题目类型以及解决的技巧:

(1)二维数组的题目,填空的时候一般是填在函数调用,函数在调用时候写的应该是而为数组的名字;在定义函数的时候使用的是函数的类型和由m各元素组成一行的指针变量,

假设二维数组的名字是ss,那么填写的内容是:(*ss)[M];如果调用的是普通变量则填

写的内容为:intn;

(2)二维数组遍历时,使用的是两个循环,使用的是循环的嵌套使用,第二个循环的使用的时候填写的内容为:j=0;(特殊的特殊处理)

(3)交换两个变量的值的使用的格式为:

t=a;a=b;b=t;记住交换变量的格式和顺序。

(4)如果二维数组是字符串的题目的时候,要记住字符串中函数的使用的格式;即:strlen、strcmp、strcpy、sizeof、strcat的使用格式。注意里面的格式中使用的都是和指针。

(5)特殊的特殊处理。第7题的填空的内容记住。

七、填空题与数学公式相关

1.解题方法:

(1)如果在函数中定义变量,但是没有定义成静态存储变量,即变量前面没有static,应给变量赋初值,如果以后用到的是加减运算,则赋初值为0或者是0.0;如果以后用到

的是乘除运算,则赋初值为1或者是1.0;

(2)循环条件的填空,分析表达式的规律,看表达式中的最后一项的值是否到了第m项或者是第n项,如果到了第m或者第n项,则在循环中的第二个表达式中用到的是i<=m或

者是i<=n;

(3)循环条件中如果用的是while语句,则循环变量的初值应该在while的外面定义和赋初值,在循环语句中必须给变量自加或者是自减。如果没有则一般填的是i++;

(4)看表达式中的每一项的运算规则,按照运算的规则把每一项中的n值替换为i,特殊情况例外。如果是表达式中用到的是间隔相加减的运算时,注意给中间变量赋初值为1

或者是1.0;在后面的运算中给变量乘以一个-1,以改变中间变量的符号。

2.解题分析:

(1)看清题目中要求的题意,题目要求做什么就只需考虑什么。

(2)找出题目中的表达式:

当n=1时,表达式变为,当n=2时,表达式为,n不断的变化,得到的表达式值也不相同,题目中要求将n=1,n=2…n=n的值进行一个累加,最

后得到一个结果赋值给变量s。

(3)通过以上的分析我们可以得到如下的信息:

1)需要一个变量来存储结果值。对应到程序中,我们使用s来表示,因为

计算的结果可能为小数,因此将s定义为实型。

2)需要一个变量从1开始递增到n,对应到程序中用i表示。

3)需要用到循环的知识。

4)函数最后会将s的值进行返回。

doublefun(intn)

{inti;doubles,t;

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

s=__1__;需要给s赋初始值,一般赋值为0或是1,这里面有规律,在填空题中

一定填入的是0。

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

for(i=1;i<=__2__;i++)需要填入的是i变量的初始值和结束值,结束值一般是

通过实参传递给形参的,因此很多时候填入形参名即可。

{t=2.0*i;将2*i的值赋值给变量t,因此遇到直接用t*t代替就行。

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

s=s+(2.0*i-1)*(2.0*i+1)/__3__;需要在(2.0*i-1)*(2.0*i+1)/__3__;中填入适当的值来补充完整表达式,比较得知,

(2.0*i-1)*(2.0*i+1)/__3__;缺少的是部分,上面分析过

可以用t*t来代替,因此,第三个填入t*t就行!

}

returns;

}

3.类似题目:6、13、25、29、36、46、52、60、66、69、73、83、95

八、填空题与字符串相关

1.删除字符串

(1)主要考查二维字符数组与字符串的操作

(2)举例1:P18第8题(和65题一样)

#defineN5

#defineM10

intfun(char(*ss)[M],intk)/*char(*ss)[M]行指针,下标与二维数组x的列下标相同,

k通过实参传递过来后为7*/

{inti,j=0,len;

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

for(i=0;i<__1__;i++)/*根据len=strlen(ss[i]);可知i代表的是行,因此填入

for(i=0;i

{len=strlen(ss[i]);

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

if(len<=__2__);/*题目要求将串长超过k的字符串删除,换个说法就是将串小于等于

k的字符串留下,因此该空填写if(len<=k)*/

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

strcpy(ss[j++],__3__);/*将ss[i]行的值赋值到s[j]中,该空出现频率很高,因此

要牢记。strcpy(ss[j++],ss[i])*/

}

returnj;

}

main()

{charx[N][M]={"Beijing","Shanghai","Tianjing","Nanjing","Wuhan"};

/*定义了一个5行10列的二维字符数组x*/

inti,f;

printf("\nTheoriginalstring\n\n");

for(i=0;i

f=fun(x,7);/*将二维数组x传给fun函数的第一个形参,将7传递给fun函数的第二

个形参*/

printf("Thestringwitchlengthislessthanorequalto7:\n");

for(i=0;i

}

(3)举例2:P19第10题(和93题一样)

#defineN5

#defineM10

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

voidfun(char(*ss)__1__,intk)/*根据函数调用可知,char(*ss)__1__和实参二维数

组x对应,因此必须与列下标对应,故填写char(*ss)[M]*/

{inti=0;

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

while(i<__2__){/*ss[i][k]可知,i处于行的位置,因此i要小于最大行长度,因此

填入:while(i

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

ss[i][k]=__3__;i++;}/*将所有串长超过K的字符串右边的字符删除,请看分析可知,如果在k位置加一个’\0’则所有字符串的长度为k,因此填写:

ss[i][k]=’\0’;*/

}

main()

{charx[N][M]={"Create","Modify","Sort","skip","Delete"};

inti;

printf("\nTheoriginalstring\n\n");

for(i=0;i

fun(x,4);

printf("\nThestringafterdeleted:\n\n");

for(i=0;i

}

(4)类似的题目:第11、12、19、45、62、77、100

2.统计字符个数

(1)考查数字字符的判断方法和字符结束的形式

(2)举例1:P53第67题

#include

voidfun(char*s,int*t)

{inti,n;

n=0;

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

for(i=0;___1___!=0;i++)/*for循环中的表达式2表示控制循环,即判断字符串什么

时候结束,因此填入:s[i]!=0,因为字符串以0结尾,因此只要s[i]为0就表示字符

串到了末尾*/

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

if(s[i]>='0'&&s[i]<=___2___)n++;/*题目要求统计数字字符出项个次数,因此if中

的表达式需要判断s[i]是否为一个数字字符,数字字符为:’0’至’9’,因此填入:

if(s[i]>='0'&&s[i]<='9')即可*/

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

___3___;/*将数字字符出现的次数放在形成t中,因此填入*t=n*/

}

main()

{chars[80]="abcdef35adgh3kjsdf7";

intt;

printf("\nTheoriginalstringis:%s\n",s);

fun(s,&t);

printf("\nTheresultis:%d\n",t);

}

(3)举例2:P45第53题

voidfun(char*s)

{inti,j=0,k=0;chart1[80],t2[80];

for(i=0;s[i]!='\0';i++)

if(s[i]>='0'&&s[i]<='9')判断是否为数字字符

{

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

t2[j]=s[i];___1___;/*将数字字符存放在t2数组中,分析

for(i=0;s[i]!='\0';i++)中进行了i++的操作,在字符串中有多个数字字符,因此j

也必须自增才能存储完所有的数字字符,因此该空填写:j++*/

}

elset1[k++]=s[i];/*将非数字字符存放在t1数组中*/

t2[j]=0;t1[k]=0;

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

for(i=0;i

先将k个非数字字符放在数组s中,即为:s[i]=t1[i]*/

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

for(i=0;i<___3___;i++)s[k+i]=t2[i];/*将j个数字字符放在非数字字符之后,因此

循环条件为:for(i=0;i

}

main()

{chars[80]="ba3a54j7sd567sdffs";

printf("\nTheoriginalstringis:%s\n",s);

fun(s);

printf("\nTheresultis:%s\n",s);

}

(4)类似题目:第12、14、18、35、48、72、81、84、91

3.特殊题目:21题、34,单独记忆

二级(C语言程序设计)上机题汇总

二级(C语言程序设计)上机题汇总 一、程序调试题 (一)程序填空 练习一: /*该程序功能:对x=1,2,。。。。。,10,f(x)=x*x*-5*x+sin(x)的最大值。*/ #include #include #define f(x) x*x-5*x+sin(x) void main() { int x; float max; ____ max=f(1);____ for(x=2;x<=10;x++) ___if( max void swap(__int *pa, int *pb____) { /*交换两个数的位置*/ int temp; temp = *pa; *pa = *pb; *pb = temp; } void main() { int a,b,c,temp; scanf("%d%d%d",&a,&b,&c); if(a>b) swap(&a,&b); if(b>c) swap(&b,&c); if(__a>b___) swap(&a,&b); printf("%d,%d,%d",a,b,c); } 练习三: /*该程序功能:将输入的十进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。*/ #include

void Dec2Bin(int m) { int bin[32],j; for(j=0;m!=0;j++) { bin[j]= __m%2___; m=m/2; } for(;j!=0;j--) printf("%d", ____bin[j-1]_ _____ ); } void main() { int n; scanf("%d",&n); Dec2Bin(n); } 练习四: /*该程序功能:输入数组x[7],调用函数f,去除数组中的负数,输出结果为:1 3 4 6*/ #include void f(int *a,int *m) { int i,j; for(i=0;i<*m;i++) if(a[i]<0) { for(j=i--;j<*m-1;j++) a[j]=a[j+1]; ___*m=*m-1;___ } } void main() { int i,n=7,x[7]={1,-2,3,4,-5,6,-7}; _ f(x,&n);_____ for(i=0;i void main() { int i,j,s; for(i=6;i<=1000;i++) { ___s=1;___

全国计算机等级考试二级C语言真题

2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)

c语言实验报告总结

篇一:《C语言上机实验心得》 C语言上机实验心得 在科技高度发展的今天,计算机在人们之中的作用越来越突出。而C语言作为一种计算机的语言,学习它将有助于我们更好的了解计算机,与计算机进行交流,因此,我们一定要学好C语言,这对我们以后的发展是十分重要的。 说到这,上机实验当然就是一个必不可少的环节了,C语言灵活、简洁的特点,只有通过编程实践才能真正了解,真正说懂。为了更好地学习语法规定、掌握程序设计方法、提高程序开发能力,我们必须实际上机、编写程序。 通过实验我也发现了自己不少的问题,这都是只看书上的程序而没有自己亲身上机编写程序而无法得知的,假如我们只因看熟书上的程序就以为自己已经掌握了C语言那就大错特错了。 我主要存在以下的这些缺点 1、学习耐心与细心不足,如scanf(“%d”,&n);中的“&”有时候会忘了。而在最后

输出时又错写成printf(“%d”,&n);从而错误得输出了地址而不是我原来想要的答案。 2、编程思想不够发散,看着题目有时想不出解答的方法,更不用说编写程序来解 题了。 3、 4、基本功不够,有些函数的表达不太精通,需要看书来核实,以致耗时较多。知识不够广,有些内容没有学好,不能要用到时及时反映出来,认识程度不够 深刻。 5、 6、有时候不够精简,有一点用处不大或者说没有也可以的文字存在。英语水平较差,对错误的地方虽然电脑有说,但由于是英文,理解上还是存在

一点问题。 为了能更好地学好C语言,在今后学习中我要更多的动脑,综合运用所学,多看相关东西,多上机练习,提高电脑水平,增强自学能力,把已会的东西掌握好。 实验中我深刻意识到完成程序的编写,决不意味着万事大吉。认为万无一失的程序,实际上机运行时可能会出现很多意想不到的问题。有时编译程序检测出一大堆错误,有时程序能够顺利运行,但是运行结果并不是你预期中想要的。因为开发环境所提供的编译系统无法发现程序逻辑错误,或者是你原来所设计时的理论错误,这就只能靠自己的上机经验来分析判断错误的所在了。所以程序的调试是一个技巧性很强的工作,它可能比编一个程序耗时更 多。由此可看出上机实践的重要性。 通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。编程的时候有因为顺利编出程序而开心过、有因为做得比人家慢而郁闷过、有因为不知从何入手而无奈过、有因为不知错出在哪而彷徨过但随着练习的增多,我对C语言比以前熟了很多,不再只是纸上谈兵,我都有能力独立做出一些程序,可能对于一些“高手来说这不算什么,或者他们早就会了,但我依然觉得很开心,因为我跟我自己比是进步了。

历年二级C语言笔试真题及答案

1 2009年9月全国计算机等级考试二级笔试 试卷 1)下列数据结构中,属于非线性结构的是 A )循环队列 B) 带链队列 C) 二叉树 D )带链栈 2)下列数据结果中,能够按照“先进后出”原则存取数据的是 A) 循环队列 B) 栈 C)队列 D)二叉树 3)对于循环队列,下列叙述中正确的是 A )队头指针是固定不变的 B )队头指针一定大于队尾指针 C )队头指针一定小于队尾指针 D )队头指针可以大于队尾指针,也可以小于队尾指针 4)算法的空间复杂度是指 A )算法在执行过程中所需要的计算机存储空间 B )算法所处理的数据量 C )算法程序中的语句或指令条数 D )算法在执行过程中所需要的临时工作单元数 5)软件设计中划分模块的一个准则是 A) 低内聚低耦合 B) 高内聚低耦合 C) 低内聚高耦合 D) 高内聚高耦合 6)下列选项中不属于结构化程序设计原则的是 A) 可封装 B) 自顶向下 C) 模块化 D) 逐步求精 7)软件详细设计产生的图如下: 该图是 A) N-S 图 B) PAD 图 C) 程序流程图 D) E-R 图 8)数据库管理系统是 A )操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统 D) 一种操作系统 9)在E-R 图中,用来表示实体联系的图形是 A) 椭圆图B) 矩形C) 菱形D) 三角形 10)有三个关系R ,S 和T 如下: 其中关系T 由关系R 和S 通过某种操作得到,该操作为 A) 选择 B) 投影 C) 交 D) 并 11)以下叙述中正确的是 A )程序设计的任务就是编写程序代码并上机 B )程序设计的任务就是确定所用数据结 构 C )程序设计的任务就是确定所用算法 D )以上三种说法都不完整 12)以下选项中,能用作用户标识符的是 A )void B )8_8 C )_0_ D )unsigned 13)阅读以下程序 #include main() { int case; float printF; printf(“请输入2个数:”); scanf(“%d %f”,&case,&pjrintF); printf(“%d %f \n”,case,printF); } 该程序编译时产生错误,其出错原因是 A )定义语句出错,case 是关键字,不能 用作用户自定义标识符B )定义语句出错,printF 不能用作用户自定义标识符 C )定义语句无错,scanf 不能作为输入函 数使用 D )定义语句无错,printf 不能输出case 的值 14)表达式:(int)((double)9/2)-(9)%2的值是 A )0 B )3 C )4 D )5 15)若有定义语句:int x=10;,则表达式 x-=x+x 的值为 A )-20 B )-10 C )0 D )10 16)有以下程序 #include main() { int a=1,b=0; printf(“%d,”,b=a+b); printf(“%d \n”,a=2*b); } 程序运行后的输出结果是 A )0,0 B )1,0 C )3,2 D )1,2 17)设有定义:int a=1,b=2,c=3;,以下语 句中执行效果与其它三个不同的是 A )if(a>b) c=a,a=b,b=c; B )if(a>b) {c=a,a=b,b=c;} C ) if(a>b) c=a;a=b;b=c; D ) if(a>b) {c=a;a=b;b =c;} 18)有以下程序 #include main() { int c=0,k; for (k=1;k<3;k++) switch (k) {default: c+=k case 2: c++;break; case 4: c+=2;break; } printf(“%d \n”,c); } 程序运行后的输出结果是 A )3 B )5 C )7 D )9 19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是 A )if((a>b)&&(b>c)) k=1;else k=0; B )if((a>b)||(b>c) k=1;else k=0; C )if(a<=b) k=0;else if(b<=c) k=1; D )if(a>b) k=1;else if(b>c) k=1; else k=0; 20)有以下程序 #include main() { char s[]={“012xy”};int i,n=0; for(i=0;s[i]!=0;i++) if(s[i]>=?a?&&s[i]<=?z?) n++; printf(“%d \n”,n); } 程序运行后的输出结果是 A )0 B )2 C )3 D )5 21)有以下程序 #include main() { int n=2,k=0; while(k++&&n++>2); printf(“%d %d \n”,k,n); } 程序运行后的输出结果是 A )0 2 B )1 3 C )5 7 D )1 2 22)有以下定义语句,编译时会出现编译错误的是 A )char a=?a? B )char a=?\n?; C )char a=?aa?; D )char a=?\x2d?; 23)有以下程序 #include main() { char c1,c2; c1=?A?+?8?-…4?; c2=?A?+?8?-…5?; printf(“%c,%d \n”,c1,c2); } 已知字母A 的ASCII 码为65,程序运行后的输出结果是

计算机二级c语言历年真题及答案

计算机二级c语言历年真题及答案【篇一:国家计算机二级c语言历年真题及答案】 class=txt>c语言程序设计 (考试时间90分钟,满分100分) 一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分) (1)下列数据结构中,属于非线性结构的是 a)循环队列 b) 带链队列 c) 二叉树 d)带链栈 (2)下列数据结果中,能够按照“先进后出”原则存取数据的是 a) 循环队列 b) 栈 c)队列 d)二叉树 (3)对于循环队列,下列叙述中正确的是 a)队头指针是固定不变的 b)队头指针一定大于队尾指针 c)队头指针一定小于队尾指针 d)队头指针可以大于队尾指针,也可以小于队尾指针 (4)算法的空间复杂度是指 a)算法在执行过程中所需要的计算机存储空间 b)算法所处理的数据量 c)算法程序中的语句或指令条数 d)算法在执行过程中所需要的临时工作单元数 (5)软件设计中划分模块的一个准则是 a) 低内聚低耦合 b) 高内聚低耦合 c) 低内聚高耦合 d) 高内聚高耦合 (6)下列选项中不属于结构化程序设计原则的是 a) 可封装 d) 自顶向下

c) 模块化 d) 逐步求精 (7)软件详细设计产生的图如下: 该图是 a) n-s图 b) pad图 c) 程序流程图 d) e-r图 (8)数据库管理系统是 a)操作系统的一部分 b) 在操作系统支持下的系统软件 c) 一种编译系统 d) 一种操作系统 (9)在e-r图中,用来表示实体联系的图形是 a) 椭圆图 b) 矩形 c) 菱形 d) 三角形 (10)有三个关系r,s和t如下: 其中关系t由关系r和s通过某种操作得到,该操作为 a) 选择 b) 投影 c) 交 d) 并 (11)以下叙述中正确的是 a)程序设计的任务就是编写程序代码并上机调试 b)程序设计的任务就是确定所用数据结构 c)程序设计的任务就是确定所用算法 d)以上三种说法都不完整 (12)以下选项中,能用作用户标识符的是 a)void b)8_8 c)_0_ d)unsigned (13)阅读以下程序

2016年C语言实验报告

通知 各位老师: 本学期非计算机专业《计算机程序设计基础(C语言)》课实验报告要求: 1.统一用《武汉科技大学实验报告》本写。本学期交三次实验报告。 ①循环结构程序设计。 ②数组。 ③函数。 要求学生在完成以下实验报告,参考《C语言程序设计课程实验与题解》中的要求认真完成。 实验1 循环结构程序设计 一、实验目的 1.熟悉用while语句,do-while语句和for语句实现循环的方法。 2.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。 3.熟悉break语句和continue语句用法的不同之处。 二、实验内容 【例】以下程序,输出下三角形状的乘法九九表。 #include void main() { int i,j; for (i=1;i<=9;i++) /* 打印表头*/ printf(" %4d",i); printf("%c",'\n'); for (i=0;i<=50;i++) printf("%c",'_'); printf("%c",'\n'); for (i=1;i<=9;i++) /* 循环体执行一次,打印一行*/ { for (j=1;j<=i;j++) printf(" %4d",i*j); /* 循环体执行一次,打印一个数据*/ printf("%c",'\n'); /* 每行尾换行*/ } printf("%c",'\n'); } 输入并执行该程序,观察输出结果,试着修改程序打印上三角形状的乘法九九表。 三、编程序并上机调试运行。 1.打印出所有“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字的立方和正好等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。 解题思路:根据题目要求只要分别求出一个三位数的个位、十位、百位上的数字,然后判断是否满足(某一三位数a=a的百位的立方+a的十位的立方+a的个位的立方)这个公式,满足这个三位数就是“水仙花数”。 2.李先生岁数的平方与他的夫人的岁数之和是1053,而他的夫人的岁数的平方与他

c语言实验报告

C语言实验报告 说明 1,所有程序均用VC6.0编译运行,文件名命名为姓名+日期,因为实验存在补做,所以并不是按照日期先后排列的。 2,为了使截图清晰,手动将运行窗口由“黑底白字”改为了“白底黑字”。 实验2 数据类型、运算符和表达式 一、实验目的: (1)掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法。 (2)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。 (3)掌握C语言的输入和输出函数的使用 (4)进一步熟悉C程序的编辑、编译、连接和运行的过程。 三、程序调试与问题解决: (1)输人并运行下面的程序 #include void main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); } ○1运行此程序。 ○2在上面printf语句的下面再增加一个printf语句。

printf("%d %d\n",c1,c2); 再运行,并分析结果。 输出结果如图,编译成功,无错误。 ○3将第3行改为 int c1,c2; 再运行,并分析结果。 ○4再将第4、5行改为 c1=a; c2=b; 再运行,并分析结果。 a,b没有定义,编译报错。 ○5再将第4、5行改为 c1=‘’a‘’; c2=‘’b‘’; 再运行,并分析结果。 ○6再将第4、5行改为 c1=300; c2=400; 再运行,并分析结果。 以字符型输出时,输出的将是300,400对应的字符。 (2)输人并运行教材第3章习题3. 6给出的程序 #include main () { char c1='a',c2='b',c3='c',c4='\101',c5='\116';

2017年全国计算机等级考试二级C语言上机题库

2017年全国计算机等级考试二级 C语言上机题库 第一套 1.程序填空 程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。函数fun 的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 第一处struct student t; 第二处for(i=0;i0) 2程序修改 给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向上顺序移动。 /**found**/ q=p+i; /**found**/ while(q>p) 3程序设计 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 int fun(STREC *a,STREC *b,int l,int h) {int i,j=0; for(i=0;i=1&&a[i].s<=h) b[j++]=a[i]; return j; } 第二套 1.程序填空 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。 第一处free(q); 第二处q=p->next; 第三处q=q->next; 2. 程序修改 给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。 /**found**/ p=j; /**found**/ p=i; 3. 程序设计 请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。void fun(int m,int *a,int *n) { int i; *n=0; for(i=7;i<=m;i++) if((i%7==0)||(i%11==0)) a[(*n)++]=i; } 第三套 1. 程序填空 函数fun的功能是:逆置数组元素是的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数组中数据的个数。 第一处for(i=0;i

游戏C语言实验报告

嘉应学院计算机学院 实验报告 课程名称: C程序设计 开课学期: 2015—2016学年第1学期 班级:计算机1505 指导老师:陈广明 设计题目:游戏2048 学生姓名(学号):第3组:钟瞻宇

目录 一、实验目的和要求 .................................................................................................................................................... 二、实验环境、内容和方法 ........................................................................................................................................ 三、程序设计 ................................................................................................................................................................ 四、源代码 .................................................................................................................................................................... 五、调试与运行结果.................................................................................................................................................... 六、总结........................................................................................................................................................................

C语言程序设计实验上机报告

课程实验报告课程名称:C语言程序设计 专业班级:信息安全1302 学号: 姓名: 指导教师: 报告日期:2014年6月16日 计算机科学与技术学院

目录 1 实验概述 (1) 2 第一次实验 (2) 2.1 实验目的 (2) 2.2 实验内容 (2) 2.3 实验小结 (19) 3 第二次实验 (20) 3.1 实验目的 (20) 3.2 实验内容 (20) 3.3 实验小结 (35) 4 第三次实验 (36) 4.1 实验目的 (36) 4.2 实验内容 (36) 4.3 实验小结 (49) 5 第四次实验 (50) 5.1 实验目的 (50) 5.2 实验内容 (50) 5.3 实验小结 (62) 6 第五次实验 (63) 6.1 实验目的 (63) 6.2 实验内容 (63) 6.3 实验小结 (69) 7 第六次实验 (70) 7.1 实验目的 (70) 7.2 实验内容 (70) 7.3 实验小结 (83) 8 第七次实验 (84) 8.1 实验目的 (836) 8.2 实验内容 (84) 8.3 实验小结 (105) 9 实验总结 (106) 参考文献 (107)

1实验概述 本实验采用C语言常用的上机开发环境Visual C++6.0集成开发环境。其关键是掌握程序的编辑、修改、编译、链接和执行的方法,以及如何调试程序,跟踪程序,通过断点控制程序,观察变量、表达式在程序运行过程中的取值,如何综合运用这些方法定位程序中的的错误和排除错误。 在实验中除了传统的编程设计题外,增加了源程序改错题,源程序完善、修改、替换题,程序的调试跟踪题等,培养学生跟踪程序、设置断点、调试程序的能力,排除程序中语法、逻辑方面错误与故障的能力,并养成细致、周密、严谨的编程作风。 实验中的源程序改错题,先给出一些含有经典、常见错误的源程序,让学生通过编译或运行发现错误,并加以改正,从而纠正初学者易犯的常见错误,实验中的源程序修改替换题,也是先给出源程序,然后要求学生按要求编写修改替换原来程序中的部分代码。实验中的跟踪调试结果填空题,给出源程序,要求学生填写程序运行过程中的某些中间结果。强迫学生用断点设置、单步跟踪等调试程序,观察并填写相应的中间结果。实验中的编程设计题,只给出题目,要求学生完成从源程序的编程、编辑、修改,编译产生目标代码,链接产生可执行文件,运行程序得到正确结果的全部环节。 学习C语言与学习和使用任何一门其他程序设计语言一样。首先要理解程序设计语言的语法和语义,然后通过上机熟悉该语言集成开发环境,掌握编辑、修改、编译、链接、跟踪、调试程序等方面的技巧。最后,还要熟悉语言编译系统提供的库函数或类库,以便快速实现程序的设计与开发。上机实验就是学习与掌握上面三个环节的重要途径。 上机实验之前一定要预先编好有关程序,把上机的重点放到程序的编辑、修改、编译、链接、跟踪、调试程序等方面,放到观察程序运行过程中的中间结果和运行完毕后的运行结果方面来。最终使自己的大脑变成一台“计算机”,能够在脑袋中运行自己的程序,判断各种情况下程序的走向等等,从而提高上机的效率和程序设计的准确性。 总之,上机实验是进一步深刻了解C语言的语法、语义,掌握用C语言进行初步程序设计所需要的方法和技能的一个重要环节。

计算机二级c语言题库及答案

2016年计算机二级c语言题库及答案 一、选择题(每小题1分,共40小题,共40分) 1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为( )。 或35 2.下列关于栈的叙述中,正确的是( )。 A.栈底元素一定是最后入栈的元素 B.栈操作遵循先进后出的原则 C.栈顶元素一定是最先入栈的元素 D.以上三种说法都不对 3.下列链表中,其逻辑结构属于非线性结构的是( )0、 A.双向链表 B.带链的栈 C.二叉链表 D.循环链表 4.在关系数据库中,用来表示实体间联系的是( )。 A.网状结构 B.树状结构 C.属性 D.二维表 5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是( )。 :m联系 :n联系 :1联系 :l联系

6.右两个关系R和S如下: 则由关系R得到关系S的操作是( )。 A.自然连接 B.并 C.选择 D.投影 7.数据字典(DD)所定义的对象都包含于( )。 A.软件结构图 B.方框图 C.数据流图(DFD图) D.程序流程图 8.软件需求规格说明书的作用不包括( )。 A.软件设计的依据 B.软件可行性研究的依据 C.软件验收的依据 D.用户与开发人员对软件要做什么的共同理解 9.下面属于黑盒测试方法的是( )。 A.边界值分析 B.路径覆盖 C.语句覆盖 D.逻辑覆盖 10.下面不属于软件设计阶段任务的是( )。 A.制订软件确认测试计划 B.数据库设计 C.软件总体设计 D.算法设计 11.以下叙述中正确的是( )。 A.在C语言程序中,main函数必须放在其他函数的最前面 B.每个后缀为C的C语言源程序都可以单独进行编译 C.在C语言程序中,只有main函数才可单独进行编译

C语言程序设计实验报告优秀范文

C语言程序设计实验报告优秀范文 实验名称计算出1000以内10个最大素数之和 实验目的 1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 实验内容 计算并输出1000以内最大的10个素数以及它们的和。 要求: 在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。 算法描述流程图 main函数: 判断素数: 源程序 #include #include int sushu(int n)/* 判断素数的函数*/ { int t,i; t=sqrt(n); for(i=2;i if(n%i==0)/* 如果不是素数,返回0 */ return 0; return n;/* 如果是素数,返回该数*/ } void main { int i,j=0,n,m=0,a[1000],x; /*clrscr;*/ printf("please input a number form 1 to 1000:"); scanf("%d",&x); if(x==2)/* x=2时的处理*/ printf("%dn",x); else if(x printf("error!n");

二级C语言上机编程题答题技巧

二级C语言上机编程题技巧 一、技巧的原理 首先使用这个技巧必须了解上机编程题的评分原理。以上机题的第5套编程题为例。二级C语言的上机试题是让我们自己编写某个小程序的子程序来实现题目中的功能。那么考官是怎么样来检查我们编的程序是否正确呢?根据编程题下面这段程序我们就可以看出: 在考生文件夹下存在一个名为in.dat的文件。首先以只读的方式打开in.dat文件,以只写方式打开out.dat文件,若out.dat不存在则自动新建该文件。然后使用fscanf 语句将其中的数据输入到变量a中,再将a当作实参调用我们需要编写的程序。将结果用fprintf语句输入到out.dat文件中。其中.dat为这个文件的扩展名(扩展名有可能被隐藏)。

所以考官不会直接检查我们的程序,只要检查out.dat里的数据是否正确就可以判断我们编的子程序是否正确。因此程序编写题,我们可以只通过修改out.dat里面的答案而不去编写程序就可以拿到满分。 二、使用技巧的条件 当然不是所有的编程题我们都能使用这个技巧的(不过90%的编程题都可以用这个方法)。使用这个技巧必须具备两个条件: 1、编程题是通过我上面讲的方法来检验,说白了就是我们的考生文件夹下面 含有in.dat文件。 2、编程题需要实现的功能我们编程者可以自己想出来程序完成的答案。例如 本题:

它让我们实现实型数据保留两位小数,并对第三位进行四舍五入。那么这个功能我们若知道任一个实数都可以自己计算出结果,那么我们才能将正确答案写在out.dat文件里面。若某程序让你编写子程序实现求取圆周率并精确到小数点后10位这个功能,那么我们就无法背出那么长的数字,因此也没有办法知道结果。那么这种技巧就不能使用。 三、步骤 确定了这个技巧可以使用后,我们就可以开始操作了。一般分为以下几步: 1、建立out.dat文件 上面可以看到我们的考生文件夹中是没有out.dat这个文件的。所以我们需要自己新建。最好的方法就是打开编程题直接编译、链接、执行。这样将程序执行一遍后我们的考生文件夹里就自动生成了我们需要的out.dat文件。(注意:这里生成了out.dat 文件后就不要再运行我们的程序了,因为每运行一次程序就会将程序生成的答案写入out.dat文件中,这样即算我们改成了正确答案,你如果再次运行程序,就会将我们修改的正确结果覆盖掉。) 2、修改答案

C语言实验报告

郑州轻工业学院 实践报告 实现内容: OJ1123最佳校友(数组)、OJ1158又是升序(指针)、OJ1180成绩统计(结构)、OJ1203做幻方(文件) 学号:541507020140 学生姓名:王红旭 专业班级:电子信息科学与技术15-01 所在院系:计算机与通信工程学院 指导教师:王秉政 成绩: 实践名称:上机实验课 来源课程:[0404230]C程序设计进阶 实践时间:2016.03-05 实践地点:科学校区实验楼301 报告撰写时间:2016.05.10 1123最佳校友(数组)

1实践目的 为了方便数组的管理和使用,提高程序设计的效率。 2 实践要求 熟练使用数组解决问题。 3 使用的技术、知识点、工具等 C语言程序设计书本教材,数组等。 4 需求分析和功能描述 要求;北京校友会每年举办两次,所有校友都有校友编号,每次到会的校友都在签到簿上写下自己的编号和姓名,在校友会成立5周年的聚会上将颁发“最佳校友奖”,该奖项颁发给到会次数最多的校友。现在请你编写程序,找出这个奖项的得主。若有多个校友并列第一,则均可获奖。 5 系统总体设计 #include int main() { int a[100]={0}; int i,n,max,k; while(scanf("%d",&n),n>=0) a[n]++; max=a[0]; for(i=1;i<100;i++) { if(a[i]>max) max=a[i]; } k=0; for(i=0;i<100;i++) { if(a[i]==max) { if(k==0) printf("%d",i); else printf(" %d",i); k++; } }

计算机二级C语言上机题库复习小抄(最新校正,精美排版)

计算机二级C语言上机题库复习小抄 (最新校正,精美排版) 第一套 1.程序填空 程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。函数fun 的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 第一处struct student t; 第二处for(i=0;i0) 2程序修改 给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向上顺序移动。 /**found**/ q=p+i; /**found**/ while(q>p) 3程序设计 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 int fun(STREC *a,STREC *b,int l,int h) {int i,j=0; for(i=0;i=1&&a[i].s<=h) b[j++]=a[i]; return j; } 第二套 1.程序填空 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。 第一处free(q); 第二处q=p->next; 第三处q=q->next; 2. 程序修改 给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。 /**found**/ p=j; /**found**/ p=i; 3. 程序设计 请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 void fun(int m,int *a,int *n) { int i; *n=0; for(i=7;i<=m;i++) if((i%7==0)||(i%11==0)) a[(*n)++]=i; } 第三套 1. 程序填空 函数fun的功能是:逆置数组元素是的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数组中数据的个数。 第一处for(i=0;idata==ch)return n; 第三处k=fun(head,ch); 2. 程序修改 给定程序MODI1.C中函数fun的功能是:删除p所指字符串的所有空白字符(包括制表符、回车符及换行符)。输入字符串时用‘#’结束输入。 /**found**/ for(i=0,t=0;p[i];i++) /**found**/ c[t]=?\0?; 3. 程序设计 请编写一个函数fun,将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 void fun(char *ss) { int i; for(i=1;i=?a?&&ss[i]<=?z?) ss[i]-=32; } } 第五套 1. 程序填空 给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。例如:当形参n的值为10 的时,函数返回:9.6125588。 第一处s=0; 第二处for(i=1;i<=n;i++) 第三处s=s+(2.0*i-1)*(2.0*i+1)/(t*t); 2. 程序修改 给定程序MODI1.C中函数fun的功能是:统计substr所指字符串在str所指字符串中出现伯次数。 /**found**/ for(i=0;str[i];i++) /**found**/ if(substr[k+1]==?\0?) 3. 程序设计 请编写一个函数fun,它的功能是:根据以下公式求JI的值(要求满足精度0.0005,即某项小于0.0005时停止送代):程序运行后,如果输入精度为0.0005,则程序输出为 3.14…。 double fun(double eps) { double s=1,t=1./3; int n=1; while(t>=eps) {s+=t;n++;t=t*n/(2.0*n+1) ;} return(s*2.0); } 第六套 1. 程序填空 给定程序中,函数fun的功能是:将形参s所指定字符串中所有的字母字符顺序前移,其他字母顺序后移,处理后字符串的首地址作为函数值返回。 第一处t[j]=s[i];j++; 第二处for(i=0;iscore[i]+=1; 第三处return a; 2. 程序修改 给定程序MODI1.C中函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放在一个字符串数组中。 /**found**/ char *fun(char (*sq)[M]) /**found**/ return sp; 1

相关主题