二级c语言程序设计习题及解答函数字符样本.docx

上传人:b****7 文档编号:24966236 上传时间:2023-06-03 格式:DOCX 页数:17 大小:44.08KB
下载 相关 举报
二级c语言程序设计习题及解答函数字符样本.docx_第1页
第1页 / 共17页
二级c语言程序设计习题及解答函数字符样本.docx_第2页
第2页 / 共17页
二级c语言程序设计习题及解答函数字符样本.docx_第3页
第3页 / 共17页
二级c语言程序设计习题及解答函数字符样本.docx_第4页
第4页 / 共17页
二级c语言程序设计习题及解答函数字符样本.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

二级c语言程序设计习题及解答函数字符样本.docx

《二级c语言程序设计习题及解答函数字符样本.docx》由会员分享,可在线阅读,更多相关《二级c语言程序设计习题及解答函数字符样本.docx(17页珍藏版)》请在冰豆网上搜索。

二级c语言程序设计习题及解答函数字符样本.docx

二级c语言程序设计习题及解答函数字符样本

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] 如下函数用以求xy次方.请填空.

 

     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模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1