实验答案函数.docx

上传人:b****6 文档编号:12405788 上传时间:2023-06-05 格式:DOCX 页数:21 大小:87.42KB
下载 相关 举报
实验答案函数.docx_第1页
第1页 / 共21页
实验答案函数.docx_第2页
第2页 / 共21页
实验答案函数.docx_第3页
第3页 / 共21页
实验答案函数.docx_第4页
第4页 / 共21页
实验答案函数.docx_第5页
第5页 / 共21页
实验答案函数.docx_第6页
第6页 / 共21页
实验答案函数.docx_第7页
第7页 / 共21页
实验答案函数.docx_第8页
第8页 / 共21页
实验答案函数.docx_第9页
第9页 / 共21页
实验答案函数.docx_第10页
第10页 / 共21页
实验答案函数.docx_第11页
第11页 / 共21页
实验答案函数.docx_第12页
第12页 / 共21页
实验答案函数.docx_第13页
第13页 / 共21页
实验答案函数.docx_第14页
第14页 / 共21页
实验答案函数.docx_第15页
第15页 / 共21页
实验答案函数.docx_第16页
第16页 / 共21页
实验答案函数.docx_第17页
第17页 / 共21页
实验答案函数.docx_第18页
第18页 / 共21页
实验答案函数.docx_第19页
第19页 / 共21页
实验答案函数.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实验答案函数.docx

《实验答案函数.docx》由会员分享,可在线阅读,更多相关《实验答案函数.docx(21页珍藏版)》请在冰点文库上搜索。

实验答案函数.docx

实验答案函数

1.编一个带有函数的程序。

在main()函数中输入一个字符串(长度<20),调用函数fun将该字符串中的所有字符按ASCII码升序排序,然后再输出排序后的字符串。

例如,输入edcba,则应输出abcde.。

#include

#include

intmain()

{

voidfun(charx[],inty);

inti;

charc[20];

printf("Pleaseinputchars:

\n");

gets(c);

i=strlen(c);

fun(c,i);

return0;

}

voidfun(charx[],inty)

{

inti,j;

charc;

for(i=0;i

for(j=i+1;j

if(x[i]>x[j])

{c=x[i];x[i]=x[j];x[j]=c;}

puts(x);

}

 

2.下面程序的功能是依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串;(如:

abcd123efg456变为123456)。

修改该程序,要求将红色部分用一个函数来实现。

#include"stdio.h"

main()

{chars[15];inti,j;

scanf("%s",s);

for(i=0,j=0;s[i]!

='\0';i++)

if(s[i]>='0'&&s[i]<='9')

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

s[j]='\0';

printf("\nTheresult:

");

printf("%s",s);

}

#include

intmain()

{

voidfun(charx[]);

chars[15];

printf("Inputcharstofills[15]:

\n");

scanf("%s",s);

fun(s);

return0;

}

voidfun(charx[])

{

inti,j;

for(i=0,j=0;x[i]!

='\0';i++)

if(x[i]>='0'&&x[i]<='9')

{x[j]=x[i];j++;}

x[j]='\0';

puts(x);

}

 

3.编写带有函数的程序(函数名为:

intfun(ints[],int*k)),功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

例如:

输入如下整数876675896101301401980431451777

则输出结果为:

6,980。

#include

voidfun(ints[],int*k)

{

inti,max=s[0];

for(i=1;i<10;i++)

if(max

{max=s[i];*k=i;}

}

intmain()

{

inta[10]={876,675,896,101,301,401,980,431,451,777};

intk;

fun(a,&k);

printf("%d,%d\n",k,a[6]);

return0;

}

 

main()函数中,已有一个已排好序的整型数组,今输入一个整数,调用函数fun(),其功能是按原来排序的规律将它插入数组中。

例如:

原来数组的元素依次为4、6、8、41、56、77、102。

若将42插入数组中,则插入后数组元素依次为4、6、8、41、42、56、77、89、102。

#include

voidfun(ints[],intm)

{

inti,j;

for(i=0;;i++)

if(s[i]m)break;

for(j=6;j>i;j--)

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

s[i+1]=m;

}

intmain()

{

ints[8]={4,6,8,41,56,77,102};

inti,m;

puts("Pleaseinputm:

");

scanf("%d",&m);

fun(s,m);

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

printf("%d",s[i]);

putchar('\n');

return0;

}

 

程序的功能是将字符数组s2中的全部字符拷贝到字符数组s1中。

拷贝时,’\0’也拷贝过去,但’\0’后面的字符不拷贝。

修改该程序,要求将红色部分用一个函数来实现。

main()

{

chars1[80],s2[80];

inti;

scanf("%s",s2);

for(i=0;s2[i]!

=’\0’;i++)

s1[i]=s2[i];

s1[i]=’\0’;

printf("s1:

%s\n",s1);

}

#include

voidxp(chars1[],chars2[])

{

inti;

for(i=0;s2[i]!

='\0';i++)

s1[i]=s2[i];

s1[i]='\0';

}

intmain()

{

chars1[80],s2[80];

puts("Inputcharsofs2[]:

");

gets(s2);

xp(s1,s2);

printf("s1:

%s\n",s1);

return0;

}

 

6.编写带有函数的程序(函数名为:

fun()),功能是将ss所指字符串中下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换,注意下标是从0开始的)。

例如:

输入abbcc45ghNj,则应输出aBbCc45GhNj。

#include

voidfun(charx[])

{

inti;

for(i=1;x[i]!

='\0';i=i+2)

if(x[i]>'a'&&x[i]<'z')

x[i]=x[i]-32;

}

intmain()

{

charss[80];

puts("Inputcharstofillss[]:

");

gets(ss);

fun(ss);

puts(ss);

return0;

}

main()函数中,先从键盘上输入一个3行3列整型数组的各个元素的值,然后调用函数fun(),其功能是计算并返回主对角线元素之和。

#include

intfun(inta[][3])

{

inti,j,s=0;

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

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

if(i==j)s=s+a[i][j];

returns;

}

intmain()

{

inti,j,k,a[3][3];

puts("Input9numberstofilla[3][3]:

");

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

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

scanf("%d",&a[i][j]);

k=fun(a);

printf("主对角线之和=%d",k);

return0;

}

10个整数按降序进行排序。

修改该程序,要求将红色部分用一个函数来实现。

main()

{inta[11],i,j,t;

printf("Input10numbers:

\n");

for(i=1;i<11;i++)

scanf("%d",&a[i]);

printf("\n");

for(j=1;j<=9;j++)

for(i=1;i<=10-j;i++)

if(a[i]

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

printf("Thesortednumbers:

\n");

for(i=1;i<11;i++)

printf("%d",a[i]);

}

#include

voidfun(inta[])

{

inti,j,t;

for(j=1;j<=9;j++)

for(i=1;i<=10-j;i++)

if(a[i]

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

}

intmain()

{

inta[11],i;

printf("Input10numbers:

\n");

for(i=1;i<11;i++)

scanf("%d",&a[i]);

printf("\n");

fun(a);

printf("Thesortednumbers:

\n");

for(i=1;i<11;i++)

printf("%d",a[i]);

putchar('\n');

return0;

}

 

9.编写带有函数的程序(函数名为:

intfun()),功能是从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。

结果应该是:

15455154

#include

intfun(intb[])

{

inti,j=0;

for(i=1;i<=55;i++)

if(i%3==0)

if(i/10==5||i%10==5)

{b[j]=i;j++;}

returnj;

}

intmain()

{

inta[100],k,m;

m=fun(a);

printf("Theresultis:

\n");

for(k=0;k

printf("%4d",a[k]);

printf("\n");

return0;

}

 

10.下面程序的功能是将两个字符串连接起来,不要用strcat函数。

修改该程序,要求将红色部分用一个函数来实现。

main()

{

chars1[80],s2[80];

inti=0,j;

scanf("%s",s1);

scanf(“%s”,s2);

while(s1[i]!

=’\0’)i++;

for(j=0;s2[j]!

=’\0’;)

s1[i++]=s2[j++];

s1[i]=’\0’;

printf("s1:

%s\n",s1);

}

#include

voidxp(chars1[],chars2[])

{

inti=0,j;

while(s1[i]!

='\0')

i++;

for(j=0;s2[j]!

='\0';)

s1[i++]=s2[j++];

s1[i]='\0';

}

intmain()

{

chars1[80],s2[80];

puts("Inputcharstofills1[]:

");

gets(s1);

puts("Inputcharstofills2[]:

");

gets(s2);

xp(s1,s2);

puts(s1);

return0;

}

 

11.编写带有函数的程序(函数名为fun),功能是求出ss所指字符串中指定字符的个数,并返回此值。

例如:

输入123412132,再输入字符1则应输出3。

#include

intfun(chara[],charch)

{

inti,x=0;

for(i=0;a[i]!

='\0';i++)

if(a[i]==ch)x++;

returnx;

}

intmain()

{

chara[20],ch;

printf("Pleaseenterastring:

\n");

gets(a);

printf("Pleaseenterachar:

\n");

ch=getchar();

printf("Thechar\"%c\"hasappeared%dtimes!

\n",ch,fun(a,ch));

return0;

}

12.调用函数fun(),其功能是从字符串中删除指定的字符。

同一字母的大小写按不同字符处理。

例如:

输入字符串为:

turbocandBorlandc++

输入字符n,则输出为turbocadBorladc++。

#include

voidfun(charc[],charx)

{

inti,j=0;

for(i=0;c[i]!

='\0';i++)

if(c[i]!

=x)

{c[j]=c[i];j++;}

c[j]='\0';

}

intmain()

{

charx,c[80];

puts("Inputcharstofillc[]:

");

gets(c);

puts("Inputthecharx:

");

scanf("%c",&x);

fun(c,x);

puts(c);

return0;

}

main函数中,先从键盘上输入一个3行3列数组的各个元素的值,调用函数fun(),其功能是按主对角线进行转置,

然后再在main函数中输出转置后的数组。

例如:

原数组为:

转置后为:

123147

456258

789369

#include

voidfun(inta[][3])

{

inti,j,t;

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

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

if(i

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

}

intmain()

{

inti,j,a[3][3];

puts("Input9wordstofilla[3][3]:

");

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

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

scanf("%d",&a[i][j]);

fun(a);

puts("a[3][3]turnsto:

");

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

{

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

printf("%d",a[i][j]);

putchar('\n');

}

return0;

}

 

14.利用函数方法编程序:

函数fun功能是,找出100至1000之间三位数字相等的所有整数(如:

111、222、333、……),把这些整数放在s所指数组中,个数作为函数值返回。

#include

intfun(inta[])

{

inti,j=0;

for(i=100;i<=1000;i++)

if(i%10==i%100/10&&i%10==i/100)

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

returnj;

}

intmain()

{

inta[50],num=0,i;

num=fun(a);

printf("Theresult:

\n");

for(i=0;i

printf("%-5d",a[i]);

return0;

}

 

15.下面程序的功能是输入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此行文本。

单词是指由空格隔开的字符串。

例如:

若输入iamastudent,则删除IAmAStudent

修改该程序,要求将红色部分用一个函数来实现。

main()

{charstr[30];

inti,j,k=0,x,len;

clrscr();

gets(str);

len=strlen(str);

for(i=0;str[i]!

=’\0’;i++)

if(k)

{if(str[i]==’’)k=0;}

elseif(str[i]!

=’’)

{k=1;str[i]=str[i]>=’a’&&str[i]<=’z’?

str[i]-32:

str[i];}

printf("\n");

puts(str);

}

 

#include

voidxp(charc[])

{

inti,k;

if(c[0]>='a'&&c[0]<='z')

c[0]=c[0]-32;

for(i=0;c[i]!

='\0';i++)

if(k)

{if(c[i]=='')k=0;}

elseif(c[i]!

='')

{k=1;c[i]=c[i]>='a'&&c[i]<='z'?

c[i]-32:

c[i];}

printf("\n");

}

intmain()

{

charc[80];

puts("Inputcharstofillc[]:

");

gets(c);

xp(c);

puts(c);

return0;

}

16.编写带有函数的程序(函数名为:

intfun(int*s,intt,int*k)),功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

#include

intfun(int*s,intt,int*k)

{

inti,max;

for(i=0;i

if(max

{max=s[i];*k=i;}

return*k;

}

intmain()

{

ints[10]={1,7,2,3,5,9,6,8,4,0};

intk;

fun(s,10,&k);

printf("k=%d\n",k);

return0;

}

17.编写带有函数的程序,函数fun功能是求出能整除x且不是偶数的各个整数,顺序存放在数组pp中,这些除数的个数通过形参返回。

例如:

若x值为30,则有4个数符合要求,是1,3,5,15。

#include

voidfun(intx,intpp[],int*n)

{

inti,j=0;

for(i=1;i<=x;i++)

if(x%i==0&&i%2!

=0)

{pp[j]=i;j++;}

*n=j;

}

intmain()

{

intx,aa[100],n,i;

printf("Pleaseenteranumber:

\n");

scanf("%d",&x);

fun(x,aa,&n);

for(i=0;i

printf("%-3d",aa[i]);

printf("\n");

return0;

}

 

示例2.试纸的选择与使用

(1)定量测定(如pH的测定)

答题模板:

取一小片pH试纸放在表面皿(或玻璃片)上,用玻璃棒蘸取少量待测液,点在pH试纸上,待试纸变色后再与标准比色卡对照,得出测量数据。

(2)定性测定(如红色石蕊试纸、蓝色石蕊试纸、淀粉KI试纸、pH试纸等)

①检验溶液

答题模板:

将××试纸放在表面皿(或玻璃片)上,用洁净的玻璃棒蘸取少量待测液点在试纸的中部,试纸由××色变为××色。

即证明××溶液具有××性质。

②检验气体

答题模板:

取一小片××试纸用蒸馏水润湿,粘在玻璃棒的一端,靠近盛待测气体的容器口(如试管的管口)附近,试纸由××色变为××色,即证明该气体是××。

示例3.沉淀是否完全

(1)定性检验

答题模板:

法Ⅰ:

继续滴加沉淀剂法:

静置,取上层清液少量于试管中,加入××溶液(原沉淀剂),观察有无沉淀产生,若产生沉淀,证明××(沉淀剂)未过量。

法Ⅱ:

加入原试剂法:

静置,取上层清液少量于试管中,加入××溶液(原试剂),观察有无沉淀产生,若产生沉淀,证明××(沉淀剂)已经过量。

(2)定量测定(不能取出上层清液)

答题模板:

静置,向上层清液中继续滴加少量××试剂(原沉淀剂),观察有无沉淀产生,若没有沉淀产生,证明××(沉淀剂)已经过量。

示例4.如何洗涤沉淀

答题模板:

向漏斗中注入蒸馏水,直至没过沉淀,等水自然滤出后,再重复操作2~3次。

示例5.沉淀是否洗涤干净

答题模板:

取少许最后一次洗涤滤液于试管中,滴入少量××溶液(试剂),若(未)出现××现象,表明沉淀已(未)洗涤干净。

解答这类试题的三个关键得分点:

(1)规范取样:

要明确取用“少许”洗涤滤液,且滤液一定是最后一次洗涤液。

(2)选择试剂:

选择合理的试剂,要注意沉淀上可能的杂质是什么,选择相应的检验试剂。

(3)描述现象:

需有明显的实验现象或结论、判断。

示例6.离子检验的实验操作

答题模板:

取样→滴加试剂→描述现象→得出结论

规范描述:

取××溶液(待测液)少量于试管中,滴加几滴××溶液(离子检验的特征试剂),观察到××现象,说明溶液中有××离子。

示例7.滴定终点的准确判断

答题模板:

当滴入最后一滴××标准溶液后,溶液由××色变为××色,且半分钟之内不变色,或者××色褪去,且半分钟之内不恢复原色。

以结晶为素材的分离提纯问题

单一组分

问题1.如何从氯化钠溶液中得到氯化钠?

(加热蒸发,当出现大量晶体时停止加热,用余热蒸干)

问题2.如何从硝酸钾溶液中得到硝酸钾?

问题3.如何从硫酸铜溶液中得到硫酸铜晶体?

(溶解度随温度升高变化较大的物质、结晶水合物以及受热易分解的物质通常采用冷却结晶法,具体操作是“蒸发浓缩、冷却结晶、过滤、干燥”。

混合组分

问题1.如何除去氯化钠溶液中的少量硝酸钾?

(蒸发浓缩,趁热过滤)

问题2.如何除去硝酸钾溶液中的少量氯化钠?

(蒸发浓缩,冷却结晶或冷却热饱和溶液,过滤)

实验设计与评价

基本方法:

将一道综合实验题拆解成几个独立又相互联系的小实验题目来解答。

示例一气体参与的综合实验设计思路

气体制备—除杂—收集—尾气处理

【变型】①利用气体与某种物质反应的实验

气体制备—分离除杂—主体反应—尾气处理或产品保护

②定量分析实验

气体制备—分离除杂—主体反应—排水量气或称量质量

—尾气处理或产品保护

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

当前位置:首页 > 自然科学 > 物理

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

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