二级c语言程序设计习题及解答ch57函数字符.docx
- 文档编号:10063679
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:17
- 大小:44.05KB
二级c语言程序设计习题及解答ch57函数字符.docx
《二级c语言程序设计习题及解答ch57函数字符.docx》由会员分享,可在线阅读,更多相关《二级c语言程序设计习题及解答ch57函数字符.docx(17页珍藏版)》请在冰豆网上搜索。
二级c语言程序设计习题及解答ch57函数字符
Ch5-6循环结构&字符数组
写出26个大写字母和他们的ASCII代码要求每行输出两组数据。
#include
main()
{
charch;inti;
for(i=0;i<26;i++)
{
ch=i+65;
if(i%2==0)
printf("\n");
printf("c=%c,ASCII=%d\t",ch,ch);
}
}
在上面的程序中有对于字符的输入与输出,在C语言中也有另外的输入输出字符的语句。
输入:
变量名=getchar()
输出:
putchar(变量名)
Ch7函数
#include
doubleadd(double,double);
main()
{
doublem,n,z;
printf("请输入两个实数:
\n");
scanf("%lf%lf",&m,&n);
z=add(m,n);
printf("%lf\n",z);
}
doubleadd(doublea,doubleb)
{
doubles;
s=a+b;
returns;
}
#include
voidtry(int,int,int);
main()
{
intx=2,y=3,z=0;
printf("
(1)x=%dy=%dz=%d\n",x,y,z);
try(x,y,z);
printf("(4)x=%dy=%dz=%d\n",x,y,z);
}
voidtry(intx,inty,intz)
{
printf("
(2)x=%dy=%dz=%d\n",x,y,z);
z=x+y;
x=x*x;
y=y*y;
printf("(3)x=%dy=%dz=%d\n",x,y,z);
}
屏幕上的结果是:
(1) x=2y=3z=0
(2) x=2y=3z=0
(3) x=4y=9z=5
(4) x=2y=3z=0
再来一个程序
#include
voidswap(int,int);
main()
{
intx=10,y=20;
printf("
(1)x=%dy=%d\n",x,y);
swap(x,y);
printf("(4)x=%dy=%d\n",x,y);
}
voidswap(inta,intb)
{
intt;
printf("
(2)a=%db=%d\n",a,b);
t=a;a=b;b=t;
printf("(3)a=%db=%d\n",a,b);
}
程序运行结果
7.6程序应用举例
编写一个函数isprime(int a),用来判断自变量a是否为素数。
若是素数,函数返回整数1,否则返回0.
#include
intisprime(int);
main()
{
intx;
printf("enteraintegernumber:
");
scanf("%d",&x);
if(isprime(x))
printf("%disprime\n",x);
else
printf("%disnotprime\n",x);
}
intisprime(inta)
{
inti;
for(i=2;i<=a/2;i++)
if(a%i==0)
return0;
return1;
}
编写函数myupper(ch),把ch中的小写字母转换成大写字母作为函数值返回,其他字符不变。
主函数中不断输入字符,用字符@结束输入,同时不断输出结果。
#include
#include
charmyupper(charch)
{
if(ch>='a'&&ch<='z')
ch=ch-32;
returnch;
}
main()
{
charc;
while((c=getchar())!
='@')
{
c=myupper(c);
putchar(c);
}
printf("\n");
}
编写函数统计输入字符的个数,用@字符结束输入,在主函数中调用此函数,输出统计结果。
#include
longcountch();
main()
{
longn;
n=countch();
printf("n=%ld\n",n);
}
longcountch()
{
longcn;
for(cn=0;getchar()!
='@';cn++)
;
returncn;
}
7-10----7-13节、课后习题
[7.1] 以下说法中正确的是 C
A)C语言程序总是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在main函数中定义
C)C语言程序总是从main函数开始执行
D)C语言程序中的main函数必须放在程序的开始部分
[7.2] 以下函数的类型是(C)
A)与参数x的类型相同
B)void类型
C)int类型
D)无法确定
fff(float x)
{ printf("%d\n",x*x);}
【解析】要是函数没有返回值,默认是int型
[7.3] 以下函数调用语句中,含有的实参个数是B
A)1 B)2 C)4 D)5
func( (exp1,exp2),(exp3,exp4,exp5));
【解析】看最外层括号中的“,”个数,将其加1
[7.4] 以下程序的输出结果是(C)
A)11 B)20 C)21 D)31
#include
func(inta,intb)
{
intc;
c=a+b;
returnc;
}
main()
{intx=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
printf("x=%d,y=%d,z=%d,\n",x,y,z);//测试加上的,本题只要求r的值
}
【解析】func()为求两数之和,本题关键func((x--,y++,x+y),z--)首先,x—,y++得x=5,y=8;逗号表达式看最后一个式子的值x+y=13,即func(13,z--),z先使用后++,所以为13+8=21
(注)最终x=5,y=8,z=7
[7.5] 以下程序的输出结果是A
A)-1 B)0 C)1 D)2
#include
intf(int,int);
main()
{
inti=2,p;
p=f(i,i+1);
printf("c=%d\n",p);
}
intf(inta,intb)
{intc;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);
}
【解析】p=f(i,i+1)相当于p=f(2,3),则a=2,b=3,不满足if(a>b)和elseif(a==b),所以执行elsec=-1;
[7.6] 以下程序的输出结果是D
A)0 B)1 C)6 D)无定值
#include
fun(inta,intb,intc)
{
c=a*b;
}
main()
{
intc;
fun(2,3,c);
printf("c=%d\n",c);
}
【解析】因为fun(inta,intb,intc)未说明返回值类型,默认为int型,而在main()中执行fun(2,3,c)之后没有将c返回,所以无法得到c的值。
注意:
c的初值是什么,则结果还是什么:
若intc=2;则结果为2
[7.7] 以下程序的输出结果是A
A)5.500000 B)3.000000 C)4.000000 D)8.25
#include
doublef(intn)
{
inti;doubles;
s=1.0;
for(i=1;i<=n;i++)s+=1.0/i;
returns;
}
main()
{inti,m=3;floata=0.0;
for(i=0;i printf("%lf\n",a); } 【解析】首先main()中i=0,a+=f(0),执行f(0)时,for()不满足,s=1.0,返回后a=a+s,a=1.0;然后i=1,a+=f (1),执行一次for(i=1;i<=n;i++)s+=1.0/i;则s=s+1.0=2.0,返回给a,a=0.0+2.0=2.0;最后i=2,a+=f (2);执行两次for(i=1;i<=n;i++)s+=1.0/i;s=2.0+1.0+0.5=3.5,返回给a,a+=f (2);a=2.0+3.5=5.5,因为%lf保留六位小数,得结果 二、填空题 [7.8] 以下程序的输出结果是____12____. #include unsignedfun6(unsignednum) { unsignedk=1; do { k*=num%10;num/=10; } while(num); returnk; } main() { unsignedn=26; printf("%d\n",fun6(n)); } 【解析】首先,执行fun6(26),k*=num%10;后k=1*6=6,num/=10;后num=2,while(num);num不等于0,继续循环,k=2%10*6=2*6=12,num/=10后mun=0,跳出循环,返回K=12 [7.9] 以下程序的输出结果是___9.0_____. double sub(double x,double y,double z) { y-=1.0; z=z+x; return z; } main() { double a=2.5,b=9.0; printf("%f\n",sub(b-a,a,a)); } 【解析】执行sub(6.5,2.5,2.5),执行 z=z+x=9.000000 [7.10] 以下程序的输出结果是___4_____. #include fun2(inta,intb); fun1(inta,intb) {intc; a+=a;b+=b; c=fun2(a,b); returnc*c; } fun2(inta,intb) {intc; c=(a*b)%3; returnc; } main() {intx=11,y=19; printf("%d\n",fun1(x,y)); } 【解析】调用fun1(11,19),a=a+a=22,b=b+b=38,调用fun2(22,38);则c=(a*b)%3=2,returnc*c=4 [7.11] 下面pi函数的功能是,根据以下公式返回满足精度要求的的值.请填空. pi/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9+... double pi(double eps)//以精度为参数 { double s=0.0,t=1.0; int n; for(__n=1__;t>eps;n++) { s+=t; t=n*t/(2*n+1);//找式子的规律 } return (2.0*__S___); } 【解析】其实本题是求得满足精度的pi的值,完整程序如下: #include doublepi(doubleeps)//以精度为参数 {doubles=0.0,t=1.0; intn; for(n=1;t>eps;n++) {s+=t; t=n*t/(2*n+1);//找式子的规律 } return(2.0*s); } main() { printf("%lf\n",pi(0.00005)); } [7.12] 以下函数用以求x的y次方.请填空. double fun(double x,int y) { int i; double z=1; for(i=1; i___<=y__; i++) z=___z*x__; return z; } [7.13] 以下程序的功能是计算S=1! +2! +3! +…+k! .请填空. long f(int n) { int i; long s; s=__1___; for(i=1; i<=n; i++) s=__s*i___; return s; } main() { long s; int k,n; scanf("%d",&n); s=__0___; for(k=0;k<=n;k++)s=s+___f(k)__; printf("%ld\n",s); } 【解析】f(k)是求阶乘的函数,for(k=0;k<=n;k++)s=s+___f(k)__;将从0! +1! +……n! 三、程序调试和编程题 [7.14] 以下fun函数用以判断n是否是素数,fun函数中有逻辑错,请调试改正. fun(int n) { int k,yes; for(k=2;k<=n/2;k++) if(n%k==0) returnyes=0; yes=1; return yes; } 修改如下: #include fun(intn) {intk; for(k=2;k<=n/2;k++){ if(n%k==0) return0; } return1; } main() { inttag,num; printf("请输入一个整数: \n"); scanf("%d",&num); tag=fun(num); if(tag==0) printf("num不是素数! ! ! \n"); else printf("num是素数! ! ! \n"); } (注: 文档可能无法思考全面,请浏览后下载,供参考。 )
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言程序设计 习题 解答 ch57 函数 字符