c语言复习冲刺资料上机填空题分析文档格式.docx

上传人:b****1 文档编号:4551296 上传时间:2023-05-03 格式:DOCX 页数:51 大小:717.07KB
下载 相关 举报
c语言复习冲刺资料上机填空题分析文档格式.docx_第1页
第1页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第2页
第2页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第3页
第3页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第4页
第4页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第5页
第5页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第6页
第6页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第7页
第7页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第8页
第8页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第9页
第9页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第10页
第10页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第11页
第11页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第12页
第12页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第13页
第13页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第14页
第14页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第15页
第15页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第16页
第16页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第17页
第17页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第18页
第18页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第19页
第19页 / 共51页
c语言复习冲刺资料上机填空题分析文档格式.docx_第20页
第20页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言复习冲刺资料上机填空题分析文档格式.docx

《c语言复习冲刺资料上机填空题分析文档格式.docx》由会员分享,可在线阅读,更多相关《c语言复习冲刺资料上机填空题分析文档格式.docx(51页珍藏版)》请在冰点文库上搜索。

c语言复习冲刺资料上机填空题分析文档格式.docx

i++)//通过一次循环来实现将数组逆置。

n/2,循环的位置,只需要循环到数组的中间位置,就可以完成逆置了。

{

t=a[i];

a[i]=a[n-1-i];

//将前面的数组与后面的数组进行对换。

当i=0的时候,表示是第一个数组元素,所以要和最后一个数组元素互换,所以是a[n-1-i]

a[n-1-i]=t;

//将前面的数组元素放到后面去。

直接将上面的代码抄下来就可以了

}

****************************第三题目*******************************

分析:

intfun(STU*std,STU*k,intyear)

{inti,n=0;

N;

i++)

if(std[i].year==year)由于要比较的是相同的年数,所以要将每次循环的结构体中的year都要比较一次,当我们指定的参数year和我们结构体中某个元素的year相同的时候,就执行下面的“把这个结构体数据保存到数组k中”

k[n++]=std[i];

要注意,n++,之后那么下次新得到的数据就放到了后面,例如,第一个放到了k[0],由于进行了n++,那么下次符合条件的新的结构体就放到了k[1]中了。

这里注意:

进行的是结构体的整体复制,所以是填写std[i]这个结构体的名称。

return(n);

}根据题目的要求,是要求返回符合条件的结构的数目,很多人会写成n-1,这个地方应该是填写n。

带入法则:

假定有一个符合题目的要求,那么我们知道就执行一次k[n++]=std[i].由于k的初始值是0,所以这个地方是进行n++之后变成了1,返回的就是n,现在为1。

不是能n-1得到的0。

****************************第四题目*******************************

#defineM5

#defineN20

intfun(char(*ss)[N],int*n)

{inti,k=0,len=N;

for(i=0;

M;

i++)题目要求:

求字符串数组中长度最短的字符数串所在的行下标,所以这里循环的时候,一定是循环字符串的个数,也就是字符数组中表示存放字符个数的数组的行的个数(上课时强调的重点)。

这个地方明显就是M,表示的是五行,作五次的循环判断,每次将字符串最短的给保存下来。

{len=strlen(ss[i]);

if(i==0)*n=len;

//第一个字符串判断时要,初始化len,

if(len<

*n)注意:

*n是已经保存了前面判断出来的最短的字符串中字符的个数,len的数值是现在判断的这个字符串的字符个数。

如果现在len的数值比前面所有字符串中最短的字符串(*n存放)还要短,那么就要把len的数值代替*n中去,因为*n是表示最短的字符串的个数。

{*n=len;

k=i;

题目要求返回的是最短字符串的行下标,也就是这里要保存的是循环的中的i,它表示正在判断第几个字符串的长度。

这里保存的就是最短字符串的行下标。

return(i;

);

所以这里根据题目意思是返回i,它表示最短字符串的行下标。

****************************第五题目*******************************

typedefstruct

{intnum;

charname[9];

charsex;

struct{intyear,month,day;

}birthday;

floatscore[3];

}STU;

//一个结构体的定义

voidshow(STUtt)注意:

这里是被调用函数的行参的考察,我们学习的主要是传地址和传数值名称两种,这个地方是传名称,看到下面打印的时候使用的是tt.num,很明显行参的名称是tt,并且是传递的是参数的名称,如果传递的是地址,下面的引用应该是tt->

num.或(*tt).num.

{inti;

printf("

\n%d%s%c%d-%d-%d"

tt.num,tt.name,tt.sex,

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

3;

%5.1f"

tt.score[i]);

根据观察我们可以发现该结构体成员中有个浮点型的score[3]的成员,这个地方是通过循环依次把这三个成绩数出来,所以填写的是tt.score[i],(上课时强调如何使用过)。

\n"

main()

{STUstd={1,"

Zhanghua"

'

M'

1961,10,8,76.5,78.0,82.0};

\nAstudentdata:

show(std);

这里填写的是调用函数,这个地方是实参,我们呢可以看到上面定义了一个结构体变量,std,所以这个地方就是填写std。

(toosimply)

****************************第六题目*******************************

voidfun(SLIST*p)

{SLIST*t,*s;

t=p->

next;

s=p;

两个指针,t和s,我们要注意,s是在t前面的一个指针,—>

st

while(t->

next!

=NULL)当t没有到末尾的时候(我要大家背了这句话)。

{s=t;

t=t->

这里也是我上课要大家背的,表示将指针往后挪一个位置。

填写的是next。

%d"

t->

data);

将这个数据输出,我们知道数据域是data,所以这个地方要填写的是t->

data.

s->

next=NULL;

free(t);

}—>

由于这个地方要求把最后一个节点给释放掉,所以这个地方是把t给释放掉。

画个图,题目就很简单了。

****************************第七题目*******************************

voidfun(char*s)

{inti,j,n;

s[i]!

='

\0'

;

if(s[i]>

0'

&

&

s[i]<

9'

)判断一个字符是否为数字要用到逻辑与&

,这个是我上课时候强调的重点。

这里我们要记住用这个方法判断字符是否为数字,请大家记住。

{n=0;

while(s[i+1+n]!

=‘\0’)n++;

这个地方要注意:

这里是要填写到后面的字符不是为0的化,我们就将n进行自加,也就是说,到s[i]后面的某个位置当他不是为空,我们要把他往后挪。

这里的n是得到要挪位的个数。

for(j=i+n+1;

j>

j--)

s[j+1]=s[j];

把前一位的s[j]往后挪一位,因为增加了一位字符*,所以要往后面挪一个位置。

使得空出的位置我们写上字符*。

s[j+1]='

*'

i=i+1;

跳过*这个字符的位置。

****************************第八题目*******************************

#include<

stdio.h>

#defineN4

voidfun(int(*)t[N],intn)从主函数可知道,传递的实参是一个二维的数组名,所以我们应该在接收的时候用树上规定的三种格式即可,这个地方一定要注意N是在前面已经预定义为了4,所以要用到我们这里的方法。

其它写法见树上说的。

要记住二维数组名是一个行指针,不是列指针!

{inti,s;

i<

i++)这里要知道,N是表示的一共有几行,所以这个地方实际上就是要循环N行来进行处理。

每一行都要处理对角的元素。

{s=t[i][i];

保存对角的元素

t[i][i]=t[i][n-i-1];

t[i][n-1-i]=s;

这个地方的填空,很简单,上课的时候我要求大家一定把两个数字进行互换给背下来,在这地方根据这个方法就可以知道填写的一定是s。

(技巧解题目)

}}

****************************第九题目*******************************

#defineN9

intfun(inta[],intn)函数的行参是一个数组,可以看成一个指针

{inti,j;

j=0;

n;

if(a[i]%2==0){判断一个数字是否为偶数,上课我们强调了是考试的重点,这里要求判断数组每个数,所以根据循环我们知道填写的应该为a[i]%2。

请大家记住:

判断一个数字是偶数,是a[i]%2==0。

对2整除等于0的数字一定是偶数。

aj]=a[i];

j++;

要求当这个数组是偶数的时候,我们就要保存好,所以在这个地方,我们要填上的是a[j].注意到这个地方,我们的j是从0开始的,每次填写一个后,我们的j++一次,这样是便于存放下一个偶数。

returnj;

这里返回的是偶数的个数,所以我们填写的是j,这个地方不是j+1或者是j-1,我们可以通过代入法进行验算。

由于上面每次存放一个偶数都要进行一次j++,所以,即使后面没有偶数了,我们也进行了j++,所以就直接就是填写j。

(上机常考题目)如果是只有一个偶数,那么我们就知道也要执行一次j+,j从0变成了1,正好是返回一个。

****************************第十题目*****************************

intfun(inta[],intn)

if(a[i]%2==1)这个题目非常的简单,和前面一个题目很类似。

首先判断一个数字是否为奇数,那么很快我们就知道判断一个数字是否为奇数是,a[i]%2==1就是奇数了。

a[j]=a[i];

如果是奇数就要把他给存放起来,这个地方j是初始化为0,每次存放一个奇数,我们就要将j进行一次自加,便于存放下一个奇数。

j就是我们要返回的奇数的个数,由于,每次存放一个奇数后,我们都会进行j++,所以在返回的时候就不用返回j+1了。

 

****************************第十一题目****************************

voidfun(char*s,int*t)

{inti,n;

n=0;

s[i]!

=NULL;

i++)循环的时候,第二个是判断的条件,这个地方要判断字符是否已经到字符串的末尾了,所以我们可以看到这个地方我们函数的第一个行参是char*s,这个地方指针可以当作数组使用,所以这个地方可以填写的是s[i]活着是*(s+i)

s[i]<

='

)n++;

判断一个字符是否为数字,是要求大家一定牢牢记住的,这个地方不再多讲。

return*t=n;

这个return后面填写的语句是比较有特色的,是一个赋值语句,题目要求把字符窜中数字的个数放到指针参数t中,所以应该填写这个答案,由于调用函数第二个传递的是地址,所以我们接收的时候采用的是指针t。

****************************第十二题目****************************

string.h>

#defineN8

{charnum[10];

intyear,month,day;

STUfun(STU*std,char*num)返回的类型应该是结构体类型,这个地方是常考的题型,类似于返回int类型等,只是把结构体类型看成一个类型!

STUa={"

9999,99,99};

if(strcmp(std[i].num,num)==0)要判断每个结构体元素的的num是否与我们指定的num相同。

要注意我们传递过来的是结构体的数字,所以每个元素都要判断。

return(std[i]);

由于该函数要返回的是一个结构体变量,所以要把这个符合要求的结构体元素返回,所以这个地方要返回的是结构体名称。

returna;

****************************第十三题目****************************

(文件的考察)

voidWriteText(FILE*fw)这个地方是填写的是文件指针,这个填空题目很单一话,只要求大家认真的记住这个文件指针。

{charstr[81];

\nEnterstringwith-1toend:

gets(str);

while(strcmp(str,"

-1"

)!

=0){

fputs(str,fw);

fputs("

fw);

把输入的内容写道了文件当中。

这个也是要求大家记住的。

看网上课堂详细讲了这几个文件的函数处理的方法。

voidReadText(FILE*fr)

\nReadfileandoutputtoscreen:

fgets(str,81,fr);

while(!

feof(fr)){

%s"

str);

这个是文件的读出处理,这个也是要求大家自己背的,在网上课堂中,文件中动的内容已经讲的很清楚了。

****************************第十四题目****************************

voidfun(int(*t)[N],intm)

{inti,j;

i++)这空很简单,我们上课的时候强调过一定要记住for循环的三个部分,这个地方,就是要记住将i进行自加,那么由于是每行都处理,所以这个地方是自加1。

{for(j=N-1-m;

=0;

j--)这个循环是表示右移多少个位置。

t[i][j+m]=t[i][j];

可以通过代入法进行解题目,实际的意义是把前面的元素放到后面来进行保存,前面的元素后面会将其覆盖为0,后面的元素则是被前面的元素覆盖了。

for(j=0;

m;

j++)移动了m项,要将这些全部变成零。

t[i][j]=0;

****************************第十五题目****************************

math.h>

doublefun(doublex,intn)

{doublef,t;

inti;

f=1;

初始化是我们考试的时候的重点,我们这个题目可以看到第一个地方是初始化为1的。

由于要相加的第一项是1,所以填写的是1。

如果要加的第一项目是2则要填写2。

注意看清楚题目。

t=-1;

for(i=1;

t*=(-1)*x/i;

每次要循环加上一个数值,这个地方要注意,题目是要求一正一负,所以在这个地方是填写-1,那么累积相加的时候,一项为正,一项为负。

f+=t;

每次循环的时候,要把当前项目给加进来,这个地方的t表示的是当前项。

用f来保存每次累加的和。

returnf;

****************************第十六题目****************************

voidfun(inta[],intn)

{inti,t,p;

p=(n%2==0)?

n/2:

n/2+1;

这个是条件语句。

首先大家一定要弄懂这个语

是真前假后。

为真是取表达式2的数值,假取表达式3的数值。

这个地方按题目要求是,当为偶数的时候是为n/2,当为奇数的时候要变成n/2+1,这种题目,大家往往应该用代入法进行测试即可得到答案。

a[i]=a[p+i];

要进行互换的两个元素,a[i]表示是从第一个元素开始处理a[p+i]表示从中间的元素开始处理。

将这两个数值进行交换。

a[i]=t;

上课的时候,强调了大家一定要记住互换的两个数的方法。

这个地方请大家记住。

****************************第十七题目****************************

voidfun(PERSON*std)由于传递时候是结构体的数组名称,所以这个地方要接收的时候,就一定要用结构体指针,从后面的代码可以观察到结构体的指针是用std[i]来进行处理的,虽然出现的形式是数组,但是可以看成是指针。

这里填写的时候就要用到*std指针。

{

PERSONtemp;

进行交换的数值,使用的结构体变量,所以这个地方要用结构体变量名。

if(std[0].num>

std[1].num)

{temp=std[0];

std[0]=std[1];

std[1]=temp;

std[2].num)

std[0]=std[2

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

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2