《高级语言程序设计》答案.docx

上传人:b****1 文档编号:2168423 上传时间:2023-05-02 格式:DOCX 页数:44 大小:28.63KB
下载 相关 举报
《高级语言程序设计》答案.docx_第1页
第1页 / 共44页
《高级语言程序设计》答案.docx_第2页
第2页 / 共44页
《高级语言程序设计》答案.docx_第3页
第3页 / 共44页
《高级语言程序设计》答案.docx_第4页
第4页 / 共44页
《高级语言程序设计》答案.docx_第5页
第5页 / 共44页
《高级语言程序设计》答案.docx_第6页
第6页 / 共44页
《高级语言程序设计》答案.docx_第7页
第7页 / 共44页
《高级语言程序设计》答案.docx_第8页
第8页 / 共44页
《高级语言程序设计》答案.docx_第9页
第9页 / 共44页
《高级语言程序设计》答案.docx_第10页
第10页 / 共44页
《高级语言程序设计》答案.docx_第11页
第11页 / 共44页
《高级语言程序设计》答案.docx_第12页
第12页 / 共44页
《高级语言程序设计》答案.docx_第13页
第13页 / 共44页
《高级语言程序设计》答案.docx_第14页
第14页 / 共44页
《高级语言程序设计》答案.docx_第15页
第15页 / 共44页
《高级语言程序设计》答案.docx_第16页
第16页 / 共44页
《高级语言程序设计》答案.docx_第17页
第17页 / 共44页
《高级语言程序设计》答案.docx_第18页
第18页 / 共44页
《高级语言程序设计》答案.docx_第19页
第19页 / 共44页
《高级语言程序设计》答案.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《高级语言程序设计》答案.docx

《《高级语言程序设计》答案.docx》由会员分享,可在线阅读,更多相关《《高级语言程序设计》答案.docx(44页珍藏版)》请在冰点文库上搜索。

《高级语言程序设计》答案.docx

《高级语言程序设计》答案

1.输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。

#include

intmain()

{

inti,j,t;

intmax(int,int);

intmin(int,int);

scanf("%d%d",&i,&j);

if(i

{t=i;i=j;j=t;}

printf("%d%d\n",max(i,j),min(i*j,max(i,j)));

return0;

}

intmax(inti,intj)

{

intt;

while(j)

{

t=i%j;

i=j;

j=t;

}

returni;

}

intmin(intp,intq)

{

returnp/q;

}

2.输入4个整数,找出其中最大的数。

用函数的嵌套调用来处理。

#include

intmain()

{

intmax4(int,int,int,int);//对max4的函数声明

inta,b,c,d;

scanf("%d%d%d%d",&a,&b,&c,&d);//输入4个数

printf("max=%d\n",max4(a,b,c,d));//调用4个数中的最大者

return0;

}

intmax4(inta,intb,intc,intd)//定义max4函数

{

intmax2(int,int);//对max2的函数声明

returnmax2(max2(max2(a,b),c),d);//调用max2把作为函数值带回main函数

}

intmax2(inta,intb)

{

return(a>b?

a:

b);//返回条件表达式的值,即a和b中的大者

}

3.用递归调用的方法求5!

#include

intmain()

{

intfac(int);

intn;

scanf("%d",&n);

printf("%d!

=%d\n",n,fac(n));

return0;

}

intfac(intn)

{

if(n==0||n==1)

return1;

else

returnfac(n-1)*n;

}

4.按以下递归公式求函数的值。

例如,当给n输入5时,函数值为18,(要求用递归实现)。

#include

intmain()

{

intfun(int);

intn;

scanf("%d",&n);

printf("%d\n",fun(n));

return0;

}

intfun(intn)

{

if(n==1)

return10;

else

returnfun(n-1)+2;

}

5.用递归法将一个整数n转换成字符串。

例如,输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整数。

#include

voidmain()

{voidfun(int);

intn;

scanf("%d",&n);

if(n<0)

{

n=-n;

putchar('-');

}

fun(n);

puts("");

}

voidfun(intm)

{

if(m/10)

fun(m/10);

putchar(m%10+48);

}

6.写一个函数,完成将一个数组中的值按逆序重新存放。

例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。

#include

#defineN5

intmain()

{

voidfun(inta[]);

inta[N],i;

for(i=0;i

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

fun(a);

return0;

}

voidfun(inta[N])

{

intt,i;

for(i=0;i

{

t=a[i];

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

a[N-1-i]=t;

}

for(i=0;i

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

puts("");

}

7.编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。

#include

intmain()

{

floataverage(intc[],intn);

inti,score_1[5],score_2[10];

floatp,q;

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

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

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

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

p=average(score_1,5);

q=average(score_2,10);

printf("%f\n%f\n",p,q);

return0;

}

floataverage(intc[],intn)

{floatm=0.00;

inti;

for(i=0;i

m=m+c[i];

return(m/n);

}8.编写一个函数,实现将两个字符串连接起来,并在main函数中调用此函数,不要调用系统提供的strcat函数。

#include

intmain()

{

voidc(charst1[],charst2[]);

chars1[100],s2[100];

gets(s1);gets(s2);

c(s1,s2);puts(s1);

return0;

}

voidc(charst1[],charst2[])

{

inti=0,k=0;

while(st1[++i]);

while(st1[i++]=st2[k++]);

}

9.编写一个函数,比较两个字符串的大小,并在main函数中调用此函数,不要调用strcmp函数。

#include

intmain()

{

chara[100],b[100];

voidfun(chara[],charb[]);

gets(a);

gets(b);

fun(a,b);

return0;

}

voidfun(chara[],charb[])

{

for(inti=0;;i++)

{

if(a[i]>b[i])

{puts(a);break;}

elseif(a[i]

{puts(b);break;}

else

continue;

}

}

10.编写一个函数,实现在一个升序排列的整型数组中插入一个整数的功能,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。

#include

inta[11]={1,3,5,7,14,23,45,87,155,231};

intmain()

{

intc,i;

voidfun(inta[],intc);

printf("inputaninteger:

");

scanf("%d",&c);

fun(a,c);

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

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

printf("\n");

return0;

}

voidfun(inta[],intt)

{

inti,j;

if(t>a[9])

a[10]=t;

else

{

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

if(t

break;

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

a[j]=a[j-1];

a[i]=t;

}

}

11.写一个判断素数的函数,在主函数输入一个整数,是素数时输出yes,否则输出no,结果要求在主函数中输出。

#include

intmain()

{

inta;

intis_prime(int);

scanf("%d",&a);

if(is_prime(a)==0)

printf("yes\n");

else

printf("no\n");

return0;

}

intis_prime(inta)

{

intj,flag=1;

for(j=2;j<=a/2;j++)

{

if(a%j==0)

break;

}

if(j>=a/2)

flag=0;

returnflag;

}

12.编写一个函数,将一个字符串中的原音字母赋值到另一个字符串中,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。

#include

chara[50],b[50]={0};

intmain()

{

voidfun(chara[],charb[]);

gets(a);

fun(a,b);

puts(b);

return0;

}

voidfun(chara[],charb[])

{

inti,j;

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

='\0';i++)

if(a[i]=='a'||a[i]=='A'||a[i]=='e'||a[i]=='E'||a[i]=='i'||a[i]=='I'||a[i]=='o'||a[i]=='O'||a[i]=='u'||a[i]=='U')

b[j++]=a[i];

}

13.建立动态数组,输入5个学生的成绩,编写函数检查其中有无低于60分的学生成绩,要求输入和输出功能在主函数中完成。

#include

#include

intmain()

{

voidcheck(int*);

int*p,i;

p1=(int*)malloc(5*sizeof(int));

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

scanf("%d",p+i);

check(p1);

return0;

}

voidcheck(int*p)

{

inti;

printf("Theyarefail:

");

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

if(*(p+i)<60)

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

puts("");

}

14.有一个一维数组score,内放10个学生成绩,用一个函数求平均成绩,并将10个成绩中不及格(小于60)的成绩和该成绩在数组中的序号输出。

#include

intmain()

{

voidave(inta[10]);

inta[10],i;

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

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

ave(a);

return0;

}

voidave(inta[10])

{

inti,m=0;

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

{

m=m+a[i];

if(a[i]<60)

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

}

printf("%d\n",m/10);

}

15.编程实现:

从键盘输入两个字符串,统计第二个字符串在第一个字符串中出现的次数,在主函数中调用统计函数并输出结果。

#include

#include

intmain()

{

intretu(chara[],charb[]);

charc[200],d[100];

gets(c);

gets(d);

printf("出现的次数为:

%d\n",retu(c,d));

return0;

}

intretu(chara[],charb[])

{

inti,j,t,m,s=0;

for(i=0;a[i]!

='\0';i++)

{

m=0;

if(a[i]==b[0])

{

for(t=i,j=0;b[j]!

='\0';t++,j++)

if(b[j]==a[t])

m++;

if(m==strlen(b))

s++;

}

}

returns;

}

16编写一程序,实现从键盘接收一个字符串,然后删除其中的空格后并输出。

如:

输入“Iamastudent!

”,输出“Iamastudent!

”,要求用指针实现。

#include

#include

intmain()

{

chara[50],*p;

intl,i;

printf("inputstringa:

");

gets(a);

p=a;

l=strlen(a);

for(l;l>0;l--)

{

if(*(p+l)=='')

for(i=l;*(p+i)!

='\0';i++)

*(p+i)=*(p+i+1);

}

puts(p);

return0;

}

17.用冒泡法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)。

#include

intmain()

{

inta[10],i,j,t,*p=a;

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

scanf("%d",p+i);

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

for(j=0;j<9-i;j++)

if(*(p+j)>*(p+j+1))

{

t=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=t;

}

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

printf("%d",*(p+i));

puts("");

return0;

}

18.用选择法实现对10个整数按从小到大的顺序排序输出(要求用指针实现)。

#include

intmain()

{

inta[10],i,j,t,*p=a;

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

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

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

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

if(*(p+i)>*(p+j))

{

t=*(p+i);

*(p+i)=*(p+j);

*(p+j)=t;

}

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

printf("%d",*(p+i));

puts("");

return0;

}

19.编写一个函数实现字符串复制功能,不能使用strcpy函数,并在 main函数中调用,输入字符串和输出赋值完后字符串的结果都在主函数中实现。

(要求用指针作为函数参数)

#include

intmain()

{

chara[100],b[20],*p,*q;

voidcopy_string(char*,char*);

gets(b);

p=a;q=b;

copy_string(p,q);

puts(p);

return0;

}

voidcopy_string(char*p,char*q)

{

while(*p++=*q++);

}

20.写一函数,求一个字符串的长度。

在main函数中输入字符串,并输出其长度。

(要求用指针实现)

#include

intmain()

{

chara[100],*p=a;

intfun(char*);

gets(a);

printf("%d\n",fun(a));

return0;

}

intfun(char*p)

{

intk=0;

while(*p++)

k++;

returnk;

}

21.输入一个字符串,内有数字和非数字字符,例如:

“A123x45617960?

302tab5876”,将其中连续的数字作为一个整数,依次存在到一数组a中。

例如,123放在a[0],456放在a[1]……统计共有多少个整数,并输出这些数。

(要求用指针实现)

#include

chara[100];

intmain()

{

voidfun(char*);

char*p=a;

gets(p);

fun(p);

return0;

}

voidfun(char*p)

{

intnum[100],s,k,j=0,i=0;

s=0;

while(*(p+i))

{

k=0;

while(*(p+i)>='0'&&*(p+i)<='9')

{

s*=10;

s+=*(p+i)-48;

i++;k=1;

}

if(k)

{

num[j++]=s;

s=0;

}

else

i++;

}

printf("%d\n",j);

for(i=0;i

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

puts("");

}

#include

#include

intmain()

{

chara[50],*p;

intb[50],c[50]={0},k,j,i;

gets(a);

p=a;

k=0;

for(i=0;*(p+i)!

='\0';i++)

if(*(p+i)>='0'&&*(p+i)<='9')

{

j=0;

while(*(p+i)>='0'&&*(p+i)<='9')

{

i++;

j++;//j表示每个数字个数(长度)

}

b[k++]=j;//k记录有几个数字

}

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

k=0;

intn=0;

for(i=0;*(p+i)!

='\0';i++)

if(*(p+i)>='0'&&*(p+i)<='9')

{

while(*(p+i)>='0'&&*(p+i)<='9')

{

c[n]=c[n]+(int)(*(p+i)-48)*pow(10,(b[k]--)-1);

i++;

}

k++;

printf("%d",c[n++]);

}

puts("");

return0;

}

22.有一篇文章,共有4行文章,每行有60个字符。

要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数。

(要求用指针实现)

#include

intmain()

{

voidcount(char(*p)[60]);

charstr[4][60];

printf("input4string:

\n");

for(inti=0;i<4;i++)

gets(str[i]);

count(str);

return0;

}

voidcount(char(*p)[60])

{intl=0,L=0,digit=0,space=0,oth=0;

inti,j;

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

for(j=0;*(*(p+i)+j)!

='\0';j++)

if((*(*(p+i)+j)>='a')&&(*(*(p+i)+j)='z'))

l++;

elseif((*(*(p+i)+j))>='A'&&(*(*(p+i)+j)<='Z'))

L++;

elseif(*(*(p+i)+j)>='0'&&*(*(p+i)+j)<='9')

digit++;

elseif(*(*(p+i)+j)==32)

space++;

else

oth++;

printf("\ncapitalletter:

%d\nlowerletter:

%d\ndigit:

%d\nspace:

%d\nothers:

%d\n",

L,l,digit,space,oth);

}

23.编程实现从键盘输入任意十个字符串,找出并显示最长的那个字符串。

(要求用指针知识实现)

#include

#include

intmain()

{

charmax[50],b[50];

char*p=max,*p1=b;

gets(p);

for(inti=0;i<9;i++)

{

gets(p1);

if(strlen(p)

strcpy(p,p1);

}

puts("");

puts(max);

return0;

}

24.利用函数实现如下功能:

从键盘输入任意一个正整数,求出它的偶数因子,并按从小到大的顺序放在pp所指的数组中,这些因子的个数通过形参n返回。

(自定义函数voidfun(intx,int*pp,int*n))。

#include

intmain()

{

voidfun(intx,int*pp,int*n);

intx,a[100],*pp=a,n;

scanf("%d",&x);

fun(x,pp,&n);

return0;

}

voidfun(intx,int*pp,int*n)

{

inti,j=0,t;

for(i=2;i

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

*(pp+j++)=i;

*n=j;

printf("%d\n",*n);

}

25.编写一个函数,实现求出一个2维数组中的鞍点,并在main函数中调用此函数,2维数组中数据输入和鞍点数据输出都在主函数中实现。

(鞍点是指某个数在该行上最大,同时在该列上最小)

#include

i

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

当前位置:首页 > 工程科技 > 能源化工

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

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