C程序设计详解.docx

上传人:b****5 文档编号:11903690 上传时间:2023-04-08 格式:DOCX 页数:38 大小:28.51KB
下载 相关 举报
C程序设计详解.docx_第1页
第1页 / 共38页
C程序设计详解.docx_第2页
第2页 / 共38页
C程序设计详解.docx_第3页
第3页 / 共38页
C程序设计详解.docx_第4页
第4页 / 共38页
C程序设计详解.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

C程序设计详解.docx

《C程序设计详解.docx》由会员分享,可在线阅读,更多相关《C程序设计详解.docx(38页珍藏版)》请在冰豆网上搜索。

C程序设计详解.docx

C程序设计详解

安阳工学院12级C程序设计答案

第一题:

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

#include

intmain()

{

intmin(inta,intb);

intmax(inta,intb);

inta,b;

printf("请输入两个数:

");

scanf("%d%d",&a,&b);

printf("%d,%d的最大公约数为:

%d\n",a,b,max(a,b));

printf("%d,%d的最小公倍数为:

%d\n",a,b,min(a,b));

return0;

}

intmin(inta,intb)

{

inti;

for(i=a;i<=a*b;i++)

if(i%a==0&&i%b==0)

break;

returni;

}

intmax(inta,intb)

{

inti,c=0;

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

if(a%i==0&&b%i==0)

c=i;

returnc;

}

 

第二题:

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

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

#include

intmain()

{

intzd(inta,intb,intc,intd);

inta,b,c,d;

printf("请输入四个整数:

");

scanf("%d%d%d%d",&a,&b,&c,&d);

printf("%d,%d,%d,%d中的最大值为:

%d\n",a,b,c,d,zd(a,b,c,d));

return0;

}

intzd(inta,intb,intc,intd)

{

inttt(inta,intb);

return(tt(tt(tt(a,b),c),d));

}

inttt(inta,intb)

{

intc;

if(a>b)

c=a;

else

c=b;

returnc;

}

 

第三题:

用递归调用的方法求5!

#include

intmain()

{

intjc(inta);

intb=5;

printf("%d!

=%d\n",b,jc(b));

return0;

}

intjc(inta)

{

intb;

if(a==1)

b=1;

else

b=a*jc(a-1);

returnb;

}

第四题:

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

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

#include

intmain()

{

intfun(inta);

intn;

printf("请输入n:

");

scanf("%d",&n);

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

return0;

}

intfun(inta)

{

intb;

if(a==1)

b=10;

else

b=fun(a-1)+2;

returnb;

}

 

第五题:

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

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

#include

#include

intmain()

{

voiddg(chara[],longn,intb);

chara[20],b;

longn;

intm,i;

printf("请输入n:

");

scanf("%ld",&n);

dg(a,n,0);

m=strlen(a);

for(i=0;i

{

b=a[m-i-1];

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

a[i]=b;

}

printf("%s\n",a);

return0;

}

voiddg(chara[],longn,intb)

{

longc,d;

if(n<10)

{

a[b]='0'+n;

a[b+1]='\0';

}

else

{

a[b]=n%10+'0';

dg(a,n/10,b+1);

}

}

 

第六题:

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

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

#include

intmain()

{

voidnn(inta[],intn);

inta[20],i,n;

printf("请输入n:

");

scanf("%d",&n);

printf("请输入%d个数的数组:

\n",n);

for(i=0;i

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

nn(a,n);

printf("倒序存放为:

\n");

for(i=0;i

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

printf("\n");

return0;

}

voidnn(inta[],intn)

{

inti,m;

for(i=0;i

{

m=a[n-i-1];

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

a[i]=m;

}

}

第七题:

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

#include

intmain()

{

floattt(inta[],intb);

inta[5],b[10],i;

printf("请输入五个数字的数组:

\n");

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

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

printf("请输入十个数字的数组:

\n");

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

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

printf("五个数字的数组的平均数为:

%5.2f\n十个数的数组的平均数为:

%5.2f\n",tt(a,5),tt(b,10));

return0;

}

floattt(inta[],intb)

{

floats=0;

inti;

for(i=0;i

s=s+a[i];

returns/b;

}

第八题:

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

#include

intmain()

{

voidtt(chara[],charb[]);

chara[50],b[50];

printf("请输入两个字符数组:

\n");

gets(a);

gets(b);

printf("把两个数组连起来为:

\n");

tt(a,b);

puts(a);

return0;

}

voidtt(chara[],charb[])

{

inti,j;

for(i=0;a[i]!

='\0';i++);

for(j=0;b[j]!

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

a[i]=b[j];

a[i]='\0';

}

第九题:

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

#include

intmain()

{

inttt(chara[],charb[]);

chara[50],b[50];

intn;

printf("请输入两个字符串a,b:

\n");

gets(a);

gets(b);

n=tt(a,b);

if(n==0)

printf("相等\n");

elseif(n>0)

printf("a>b\n");

else

printf("a

return0;

}

inttt(chara[],charb[])

{

inti=0;

while(a[i]==b[i])

{

if(a[i]=='\0'&&b[i]=='\0')

break;

else

i++;

}

returna[i]-b[i];

}

第十题:

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

#include

intmain()

{

voidtt(inta[],intb);

inta[11]={10,20,30,40,50,60,70,80,90,100},i,n;

printf("原升序整型数组为:

\n");

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

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

printf("\n请输入一个整数n:

");

scanf("%d",&n);

tt(a,n);

printf("n插入后数组为:

\n");

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

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

printf("\n");

return0;

}

voidtt(inta[],intb)

{

inti,c;

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

{

if(b>=a[9])

a[10]=b;

else

{

if(b

{

c=a[i];

a[i]=b;

b=c;

}

}

}

}

第十一题:

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

#include

intmain()

{

inttt(inta);

intn;

printf("请输入一个整数n:

");

scanf("%d",&n);

if(tt(n)==1)

printf("yes\n");

else

printf("no\n");

return0;

}

inttt(inta)

{

inti,n=1;

for(i=2;i

if(a%i==0)

{n=0;break;}

returnn;

}

第十二题:

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

#include

intmain()

{

voidtt(chara[],charb[]);

chara[100],b[40];

printf("请输入一个字符串:

\n");

gets(a);

tt(a,b);

printf("字符串%s中元音字母有:

\n%s\n",a,b);

return0;

}

voidtt(chara[],charb[])

{

inti,j;

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

='\0';i++)

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

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

b[j]='\0';

}

第十三题:

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

 

#include

#include

intmain()

{

inttt(float*a,float*b);

float*a,*b;

inti,n;

a=(float*)malloc(5*sizeof(float));

b=(float*)malloc(5*sizeof(float));

printf("请输入五个人的成绩:

\n");

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

scanf("%f",a+i);

n=tt(a,b);

if(n==0)

printf("无低于60分的\n");

else

for(i=0;i

printf("%5.2f",*(b+i));

printf("\n");

return0;

}

inttt(float*a,float*b)

{

inti,j=0;

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

if(*(a+i)<60)

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

returnj;

}

第十四题:

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

#include

intmain()

{

inttt(floata[],floatb[],intc[]);

intn,c[10],i;

floata[10],b[10];

printf("请输入十个学生的成绩:

\n");

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

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

n=tt(a,b,c);

printf("不及格的数组的序号为:

\n");

for(i=0;i

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

printf("\n不及格的分数为:

\n");

for(i=0;i

printf("%5.2f",b[i]);

printf("\n");

return0;

}

inttt(floata[],floatb[],intc[])

{

inti,j;

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

if(a[i]<60)

{

b[j]=a[i];

c[j]=i;

j++;

}

returnj;

}

第十五题:

编程实现:

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

#include

intmain()

{

inttt(chara[],charb[]);

chara[100],b[30];

printf("请输入两个字符串:

\n");

gets(a);

gets(b);

printf("b在a中出现的次数为:

%d\n",tt(a,b));

return0;

}

inttt(chara[],charb[])

{

inti,c=0,d=0,j=0;

for(i=0;a[i]!

='\n';i++)

{

if(d==1&&b[j]=='\0')

{

c++;

j=0;

}

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

{

d=1;

j++;

}

else

{

d=0;

j=0;

}

}

if(d==1&&b[j]=='\0')

c++;

returnc;

}

第十六题:

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

如:

输入“Iamastudent!

”,输出“Iamastudent!

”,要求用指针实现。

#include

intmain()

{

char*a,b[50];

inti,j;

printf("请输入一个字符串:

\n");

gets(b);

a=b;

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

='\0';i++)

if(*(a+i)=='')

for(j=i;*(a+j)!

='\0';j++)

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

printf("去掉空格后为:

\n");

puts(a);

return0;

}

第十七题:

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

#include

intmain()

{

voidtt(int*a,intb);

int*a,b[10],i;

a=b;

printf("请输入十个整数:

\n");

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

scanf("%d",a++);

a=b;

tt(a,10);

printf("\n十个数从大到小顺序为:

\n");

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

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

printf("\n");

return0;

}

voidtt(int*a,intb)

{

inti,j,n;

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

for(j=0;j

if(a[j]

{

n=a[j+1];

a[j+1]=a[j];

a[j]=n;

}

}

第十八题:

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

#include

intmain()

{

voidtt(int*a,intb);

int*a,b[10],i;

a=b;

printf("请输入十个整数:

\n");

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

scanf("%d",a++);

a=b;

tt(a,10);

printf("\n十个数从小到大顺序为:

\n");

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

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

printf("\n");

return0;

}

voidtt(int*a,intb)

{

inti,j,n;

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

for(j=i+1;j

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

{

n=a[j];

a[j]=a[i];

a[i]=n;

}

}

第十九题:

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

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

 

#include

intmain()

{

voidtt(chara[],charb[]);

chara[50],b[50];

printf("请输出一个字符串a:

\n");

gets(a);

tt(b,a);

printf("吧a赋值给b得b为:

\n");

puts(b);

return0;

}

voidtt(chara[],charb[])

{

inti;

for(i=0;b[i]!

='\0';i++)

a[i]=b[i];

a[i]='\0';

}

第二十题:

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

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

(要求用指针实现)

#include

intmain()

{

inttt(chara[]);

chara[100];

printf("请输入一个字符串:

\n");

gets(a);

printf("字符串a的长度为:

%d\n",tt(a));

return0;

}

inttt(chara[])

{

inti;

for(i=0;a[i]!

='\0';i++);

returni;

}

第二十一题:

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

“A123x45617960?

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

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

(要求用指针实现)

#include

intmain()

{

inttt(char*a,int*b);

inti,n,*b,d[20];

char*a,c[100];

b=d;a=c;

printf("请输入一个字符串:

\n");

gets(a);

n=tt(a,b);

printf("一共有%d个整数它们分别为:

\n",n);

for(i=0;i

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

printf("\n");

return0;

}

inttt(char*a,int*b)

{

inti,n=0,m=0,p=1;

b[0]=0;

for(i=0;a[i]!

='\0';i++)

{

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

{

b[m]=b[m]*p+(a[i]-'0');

p=10;

n=1;

}

elseif(n==1)

{

m++;

n=0;

p=1;

b[m]=0;

}

}

if(n==1)

m++;

returnm;

}

 

第二十二题:

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

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

(要求用指针实现)

 

#include

intmain()

{

char(*a)[60],b[4][60];

intj,i,c=0,d=0,e=0,f=0,g=0;

printf("请输入入四行文章每行60个字符:

\n");

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

gets(b[i]);

a=b;

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

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

{

if(a[i][j]>='A'&&a[i][j]<='Z')

c++;

elseif(a[i][j]>='a'&&a[i][j]<='z')

d++;

elseif(a[i][j]>='0'&&a[i][j]<='9')

e++;

elseif(a[i][j]=='')

f++;

else

g++;

}

printf("大写字母有%d个\n小写字母有%d个\n数字有%d个\n空格有%d个\n其他字符有%d个\n",c,d,e,f,g);

return0;

}

 

第二十三题:

编程实现从

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

当前位置:首页 > 人文社科 > 视频讲堂

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

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