实验二教案Word文档格式.docx
《实验二教案Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验二教案Word文档格式.docx(22页珍藏版)》请在冰点文库上搜索。
![实验二教案Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/bf2c40eb-68f8-4adc-9214-c83848dd7fc8/bf2c40eb-68f8-4adc-9214-c83848dd7fc81.gif)
i=1;
while(*n)
{t=*n%【1】;
if(t%2!
=【2】
{x=x+t*i;
i=i*10;
}
n=*n/10;
*n=【3】;
}
main()
{unsignedlongn=-1;
while(n>
99999999||n<
0)
{printf("
Pleaseinput(0<
n<
100000000):
"
);
scanf("
%ld"
&
n);
fun(&
printf("
\nTheresultis:
%ld\n"
n);
2、程序改错题
下列给定程序中,函数fun的功能是:
找出100到n(不大于1000)之间三个位上的数字都相等的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。
请改正函数fun中的错误,使它能得出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构。
#defineN100
intfun(int*s,intn)
{intI,j,k,a,b,c;
j=0;
for(I=100;
I<
n;
I++)
{
/*************found**************/
k=n;
a=k%10;
k/=10;
b=k/10;
c=k/10;
if(a==b&
&
a==c)
s[j++]=I;
}
returnj;
}
voidmain()
{inta[N],n,num=0,i;
do
\nEntern(<
=1000):
"
%d"
}while(n>
1000);
num=fun(a,n);
\n\nTheresult:
\n"
for(i=0;
i<
num;
i++)
printf("
%5d"
a[i]);
\n\n"
3、程序设计题
请编写函数fun,函数的功能是:
将大于形参m且紧靠m的k个素数存入xx所指的数组中。
例如,若输入17,5,则应输出:
19,23,29,31,37。
函数fun中给出的语句仅供参考。
注意:
部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
voidfun(intm,intk,intxx[])
{}
{intm,n,zz[1000];
printf("
\nPleaseentertwointegers:
);
scanf("
%d%d"
&
m,&
n);
fun(m,n,zz);
for(m=0;
m<
n;
m++)
%d"
zz[m]);
第二套
将形参n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。
例如,从主函数输入一个整数:
27638496,函数返回值为:
26846。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
unsignedlongfun(unsignedlongn)
{unsignedlongx=0,s,i;
s=n;
/**********found**********/
i=【1】;
while(【2】)
{t=s%10;
if(t%2==0)
i=【3】;
}
s=s/10;
returnx;
{printf("
fun(n));
给定程序MODI1.C中函数fun的功能是:
计算n的5次方的值(规定n的值大于2、小于8),通过形参指针传回主函数;
并计算该值的个位、十位、百位上数字之和作为函数值返回。
例如,7的5次方是16807,其低3位数的和值是15。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
math.h>
intfun(intn,int*value)
{intd,s,i;
/**************found**************/
d=0;
s=0;
for(i=1;
=5;
i++)d=d*n;
*value=d;
=3;
{s=s+d%10;
d=d\10;
returns;
{intn,sum,v;
do
\nEntern(2<
8):
scanf("
while(n<
=2||n>
=8);
sum=fun(n,&
v);
\n\nTheresult:
\nvalue=%dsum=%d\n\n"
v,sum);
函数fun的功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12时,调用该函数后,c=1524。
部分源程序存在文件PROG1.C中。
数据文件IN.DAT中的数据不得修改。
voidfun(inta,intb,long*c)
{}
{inta,b;
longc;
Inputa,b:
%d,%d"
a,&
b);
fun(a,b,&
c);
Theresultis:
c);
三、课后练习
将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。
例如,输入一个整数:
64862。
{unsignedlongx=0;
while(n)
{t=n%10;
if(t%2==【1】)
x=【2】+t;
n=【3】;
2、程序填空题
找出100~999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出;
符合条件的整数个数作为函数值返回。
例如,当x值为5时,100~999之间各位上数字之和为5的整数有:
104、113、122、131、140、203、212、221、230、302、311、320、401、410、500。
共有15个。
当x值为27时,各位数字之和为27的整数是:
999。
只有1个。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
fun(intx)
{intn,s1,s2,s3,t;
n=0;
t=100;
while(t<
=【1】)
{s1=t%10;
s2=(【2】)%10;
s3=t/100;
if(s1+s2+s3==【3】)
{printf("
t);
n++;
t++;
returnn;
{intx=-1;
while(x<
Pleaseinput(x>
0):
x);
%d\n"
fun(x));
3、程序填空题
统计所有小于等于n(n>
2)的素数的个数,素数的个数作为函数值返回。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
intfun(intn)
{inti,j,count=0;
\nTheprimenumberbetween3to%d\n"
n);
for(i=3;
=n;
/**********found**********/
{for(【1】;
j<
i;
j++)
if(【2】%j==0)
break;
if(【3】>
=i)
{count++;
printf(count%15?
:
\n%5d"
i);
returncount;
{intn=20,r;
r=fun(n);
\nThenumberofprimeis:
r);
4、程序填空题
统计长整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1,c2,c3返回主函数。
例如:
当n=123114350时,结果应该为:
c1=3c2=1c3=2。
intc1,c2,c3;
voidfun(longn)
{c1=c2=c3=0;
while(n)
{switch(【1】)
{case1:
c1++;
【2】;
case2:
c2++;
【3】;
case3:
c3++;
n/=10;
{longn=123114350L;
fun(n);
\nTheresult:
n=%ldc1=%dc2=%dc3=%d\n"
n,c1,c2,c3);
5、程序改错题
给定程序MODI1.C中函数fun的功能是:
从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为:
7654321时,t中的数为:
642。
请改正程序中的错误,使它能得出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
/************found************/
voidfun(longs,longt)
{longsl=10;
s/=10;
*t=s%10;
/************found************/
while(s<
0)
{s=s/100;
*t=s%10*sl+*t;
sl=sl*10;
{longs,t;
\nPleaseenters:
s);
fun(s,&
t);
t);
6、程序改错题
给定程序MODI1.C中函数fun的功能是:
判断一个整数是否是素数,若是返回1,否则返回0。
在main()函数中,若fun返回1输出YES,若fun返回0输出NO!
。
不要改动main函数。
intfun(intm)
{intk=2;
while(k<
=m&
(m%k))
k++
if(m=k)
return1;
elsereturn0;
main()
{intn;
\nPleaseentern:
);
scanf("
n);
if(fun(n))printf("
YES\n"
elseprintf("
NO!
7、程序改错题
下列给定程序中函数fun的功能是:
计算n!
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include<
conio.h>
doublefun(intn)
{doubleresult=1.0;
/*************found**************/
ifn==0
return1.0;
1&
170)
result=n--;
returnresult;
voidmain()
{
intn;
InputN:
\n\n%d!
=%lf\n"
n,fun(n));
8、程序改错题
给定程序MODI1.C的功能是:
读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。
例如,若输入整数:
2310,则应输出:
2、3、5、7、11。
请改正程序中的语法错误,使程序能得出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
IsPrime(intn);
{inti,m;
m=1;
for(i=2;
i<
n;
i++)
if!
(n%i)
{m=0;
break;
return(m);
{intj,k;
Pleaseenteranintegernumberbetween2and10000:
k);
\n\nTheprimefactor(s)of%dis(are):
k);
for(j=2;
j<
=k;
j++)
if((!
(k%j))&
(IsPrime(j)))
printf("
\n%4d"
j);
9、程序改错题
求整数x的y次方的低3位值。
例如,整数5的6次方为15625,此值的低3位值为625。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:
longfun(intx,inty,long*p)
{inti;
longt=1;
y;
t=t*x;
*p=t;
t=t/1000;
returnt;
{longt,r;
intx,y;
\nInputxandy:
%ld%ld"
x,&
y);
t=fun(x,y,&
r);
\n\nx=%d,y=%d,r=%ld,last=%ld\n\n"
x,y,r,t);
10、程序改错题
统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数;
并把该整数中各位上最大的数字值作为函数值返回。
例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
intfun(unsignedn,int*zero)
{intcount=0,max=0,t;
/**************found**************/
if(t=0)count++;
if(max<
t)max=t;
n=n/10;
}while(n);
/**************fo