C语言周六一.docx

上传人:b****5 文档编号:11569567 上传时间:2023-03-19 格式:DOCX 页数:38 大小:43.36KB
下载 相关 举报
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语言周六一

/*编写函数fun(n),n为三位自然数,判断n是否为水仙花数*/

#include

#include

intfun(intn)

{inta,b,c;

a=n%10;b=n/10%10;c=n/100;

if(a*a*a+b*b*b+c*c*c==n)

return1;

else

return0;

}

voidmain()

{

intnum;clrscr();

scanf("%d",&num);

while(num<100||num>=1000)

{

printf("pleaseenterthenumagain!

(num>=100&&num<1000)\n");

scanf("%d",&num);}

if(fun(num)==1)

printf("%disasxhs.\n",num);

else

printf("%disnotasxhs.\n",num);

getch();

}

/*输出杨辉三角形

#include"stdio.h"

#include"conio.h"

#defineN10

main()

{

inti,j;

inta[N][N];

for(i=0;i

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

{

if(j==i||j==0)a[i][j]=1;

elsea[i][j]=a[i-1][j-1]+a[i-1][j];

}

for(i=0;i

{

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

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

printf("\n");

}

getch();

}

*/

/*输入一个年份和月份并输出年和这个月份的天数

#include"stdio.h"

#include"conio.h"

intiMaxDay(intiYear,intiMonth);

intiMaxDay(intiYear,intiMonth)

{

inta[12]={31,0,31,30,31,30,31,31,30,31,30,31};

a[1]=28+(iYear%4&&iYear%100!

=0||iYear%400==0);

returna[iMonth-1];

}

main()

{

intiYear,iMonth;

scanf("%d,%d",&iYear,&iMonth);

printf("%d\t%d",iYear,iMaxDay(iYear,iMonth));

getch();

}

*/

/*在一个一维数组中求众数*/

#include

#include

#include

main()

{

inta[100],i,j,t,cnt,t1,cnt1;

randomize();

for(i=0;i<100;i++)a[i]=rand();

for(i=0;i<100;i++)printf("%8d",a[i]);

printf("****************************************");

printf("****************************************");

/*选择法排序*/

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

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

if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}

/*冒泡法排序

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

for(j=100-1;j>=i;j--)

if(a[j]

*/

for(i=0;i<100;i++)printf("%8d",a[i]);

printf("****************************************");

printf("****************************************");

t=a[0];cnt=1;

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

{

t1=a[i];cnt1=1;

for(j=i+1;j<100-1;j++)

{if(a[j]=t1)cnt1++;}

if(cnt1>cnt)t=t1,cnt=cnt1;

}

if(cnt==1)

printf("not");

else

printf("%d\t%d",cnt,t);

getch();

}

/*编写一个函数fun(n),计算n!

*/

#include

#include

longfun(intn)

{

longs=1;

inti;

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

s=s*i;

return(s);/*可以用returns;*/

}

voidmain()

{

intnum;

clrscr();/*清除文本模式窗口(在"conio.h"中*/

scanf("%d",&num);

if(num>0)

printf("%d!

=%ld\n",num,fun(num));

else

printf("inputdataerror!

\n");

getch();

}

/*使用递归函数实现计算n!

*/

#include

#include

longfun(intn)

{

longf;

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

f=1;

else

f=n*fun(n-1);

returnf;

}

voidmain()

{

intnum;clrscr();

scanf("%d",&num);

if(num>0)

printf("%d!

=%ld\n",num,/**/fun(num)/**/);

else

printf("inputdataerror!

\n");

getch();

}

某数列为K(n)的定义为:

1n=1

k(n)=k(n-1)×2n为偶数

k(n-1)×3n为奇数

用递归的方法求该数列的第6项k(6)。

#include

#include

intk(intn)

{

intc;

if(n==1)

c=1;

elseif(n%2==0)

c=k(n-1)*2;

else

c=k(n-1)*3;

returnc;}

voidmain()

{

intm;clrscr();

scanf("%d",&m);

if(m>=1)

printf("k(%d)=%d\n",m,/**/k(m)/**/);

else

printf("inputdataerror!

\n");}

计算s=(1!

)+(1!

+2!

)+…+(1!

+…+n!

)。

n由用户输入,小于10。

(设计:

函数h1(n)计算n的阶乘;函数h2(m)计算1!

+2!

+…+m!

的累加运算。

在主函数中调用h2()函数,h2()函数中调用h1()函数来实现累加。

#include

#include

longh1(intn)

{

longt=1;

inti;

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

t=t*i;

returnt;

}

longh2(intm)

{

longs=0;

inti;

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

s=s+h1(i);

returns;

}

voidmain()

{

intk,num;

longsum=0;

scanf("%d",&num);

for(k=1;k<=num;k++)

/**/sum=sum+h2(k)/**/;

printf("(1!

)+(1!

+2!

)+...+(1!

+2!

+...+%d!

)=%ld\n",num,/**/sum/**/);

}

设计一个函数fc,其功能为统计数组中偶数的个数。

编写main函数,用数组名num做为函数传递的参数调用fc函数,实现对数组num的统计,并输出统计结果。

#include"stdio.h"

intfc(inta[],intn)

{

inti,c=0;

for(i=0;i

if(a[i]%2==0)

c=c+1;

return(c);

}

main()

{

inti,num[10];

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

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

printf("oushu:

%d\n",fc(num,10));

printf("jishu:

%d\n",10-fc(num,10));

}

在一个一维数组a中存放10个正整数,求其中所有的素数。

(用数组元素作为函数的实际参数)质数又称素数。

指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。

换句话说,只有两个正因数(1和自己)的自然数即为素数。

比1大但不是素数的数称为合数。

1和0既非素数也非合数。

素数在数论中有着很重要的地位。

intsushu(intx)

{

inti,k=1;

if(x==1)

k=0;

for(i=2;i<=x/2;i++)

if(x%i==0)

k=0;

return(k);

}

main()

{

inta[10],i;

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

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

printf("sushuofarrayaare:

\n");

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

if(sushu(a[i]))

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

printf("\n");

}

设计一个函数,计算两个自然数的最大公约数

#include“stdio.h”

intgcd(intm,intn)

{

intr;r=m%n;

while(r!

=0)

{

m=n;n=r;r=m%n;

}

returnn;

}

main()

{

intm,n;

scanf("%d,%d",&m,&n);

printf("%d\n",gcd(m,n));

}

设计一个函数floatave(inta[10]),计算数组a所有元素的平均值。

(用数组名作为函数的实际参数)

floatave(inta[10])

{

inti,sum=a[0];floataver;

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

sum=sum+a[i];

aver=1.0*sum/10;

return(aver);

}

voidmain()

{

inti,score[10];floataver;

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

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

printf("\n");

aver=ave(score);

printf("averagescoreis%5.2f\n",aver);

}

用选择法对数组中10个整数按升序排序。

(要求将排序功能设计成函数,数组名作为参数)。

voidsort(intarray[],intn)

{

inti,j,k,t;

for(i=0;i

{k=i;

for(j=i+1;j

if(array[j]

k=j;

t=array[k];array[k]=array[i];array[i]=t;

}

}

voidmain()

{

inta[10],i;

printf("inputthearray:

\n");

for(i=0;i<10;i++)scanf("%d",&a[i]);

sort(a,10);

printf("outputthearrayafterordered:

\n");

for(i=0;i<10;i++)printf("%5d",a[i]);

printf("\n");

}

设有一个3×4的矩阵,求出其中的最大元素。

(要求:

将计算最大值的功能设计成函数,数组名作为参数)

max_value(intarray[12])

{

inti,max;

max=array[0];

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

if(array[i]>max)

max=array[i];

return(max);

}

main()

{

inta[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};

printf("max=%d\n",max_value(a));

}

设计一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。

#include

main()

{

intinverse(charstr[]);/*函数原型声明*/

charstr[100];

printf("Inputstring:

\n");

gets(str);

inverse(str);

printf("Outputstringafterinverse:

\n");

puts(str);

}

intinverse(charst[])/*函数定义*/

{

chart;inti,j;

for(i=0,j=strlen(st);i

{t=st[i];

st[i]=st[j-1];

st[j-1]=t;

}

}

设计一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。

如输入1990,应输出“1990”。

#include

main()

{

charstr[80];

voidinsert(charstr[]);

printf("\nInputfourdigits:

\n");

gets(str);

insert(str);

printf("\nOutputdigitsafterinsertspace:

\n");

puts(str);

}

voidinsert(charstr[])

{

inti;

for(i=strlen(str);i>0;i--)

{

str[2*i]=str[i];str[2*i-1]='';

}

}

使用局部静态变量,求1到5的阶乘

intfac(intn)

{

staticintf=1;

f=f*n;

returnf;

}

main()

{

inti;

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

printf("%d!

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

}

.编写一个程序,在主函数中输入10个等长的字符串。

用另一个函数sort()

对它们排序,函数sort()原型为:

voidsort(char(*s)[6]);,要求形参是指向

由6个元素组成的一维数组的行指针,然后在主函数输出这10个已排好的

字符串。

#include

#include

main()

{voidsort(char(*s)[6]);

inti;charstr[10][6];char(*p)[6];

printf("Input10strings:

\n");

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

scanf("%s",str[i]);

p=str;

sort(p);

printf("Now,thesequenceis:

\n");

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

printf("%s\n",str[i]);

}

 

voidsort(char(*s)[6])/*冒泡法对10个字符串排序的函数*/

{inti,j;char*t,temp[6];

t=temp;

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

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

if(strcmp(s[j],s[j+1])>0)

{strcpy(t,s[j]);

strcpy(s[j],s[j+1]);

strcpy(s[j+1],t);}

}

运行结果:

Input10strings:

China↙

Japan↙

Korea↙

Egypt↙

Nepal↙

Burma↙

Ghana↙

Sudan↙

Italy↙

Libya↙

Now,thesequenceis:

Burma

China

Egypt

Ghana

Italy

Japan

Korea

Libya

Nepal

Sudan

编写一个程序,在主函数中输入10个不等长的字符串。

用另一个函数

sort()对它们排序,函数sort()原型为:

voidsort(char*p[6]);,要求用指针

数组处理,然后在主函数输出这10个已排好的字符串

#include

#include

main()

{voidsort(char*p[]);

inti;char*s[10],str[10][20];

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

s[i]=str[i];/*将第i个字符串的首地址赋予指针数组p的第i个元素*/

printf("Input10strings:

\n");

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

scanf("%s",s[i]);

sort(s);

printf("Now,thesequenceis:

\n");

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

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

}

 

voidsort(char*p[])/*冒泡法对10个字符串排序的函数*/

{inti,j;char*temp;

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

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

if(strcmp(*(p+j),*(p+j+1))>0)

{temp=*(p+j);

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

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

}

运行情况如下:

Input10strings:

China↙

Japan↙

Yemen↙

Pakistan↙

Mexico↙

Korea↙

Brazil↙

Iceland↙

Canada↙

Mongolia↙

Now,thesequenceis:

Brazil

Canada

China

Iceland

Japan

Korea

Mexico

Mongolia

Pakistan

Yemen

编写一个程序,用指向指针的指针的方法对5个字符串排序并输出。

自定义函数sort()的原型为:

voidsort(char**p);。

#include

#defineLINEMAX20/*定义字符串的最大长度*/

main()

{voidsort(char**p);

inti;char**p,*pstr[5],str[5][LINEMAX];

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

pstr[i]=str[i];/*将第i个字符串首地址赋予指针数组pstr的第i个元素*/

printf("Input5strings:

\n");

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

scanf("%s",pstr[i]);

p=pstr;

sort(p);

printf("stringssorted:

\n");

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

printf("%s\n",pstr[i]);

}

 

voidsort(char**p)/*选择法对5个字符串排序的函数*/

{inti,j;char*temp;

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

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

if(strcmp(*(p+i),*(p+j))>0)/*比较后交换字符串地址*/

{temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;}

}

运行情况如下:

Input5strings:

China↙

America↙

India↙

Philippines↙

Canada↙

stringssorted:

America

Canada

China

India

Philippines

编写一个程序,用指向指针的指针的方法对n个整数排序并输出。

求写一个自定义函数sort(),其原型为:

voidsort(int**p,intn);n和整数在

主函数中输入。

排序后结果最后在主函数中输出。

#include

main()

{voidsort(int**p,intn);

inti,n,data[10],**p,*pstr[10];

printf("Inputn:

");

scanf("%d",&n);

for(i=0;i

pstr[i]=&data[i];/*将第i个整数的地址赋予指针数组pstr的第i个元素*/

printf("Input%dintegernumbers:

\n",n);

for(i=0;i

scanf("%d",pstr[i]);

p=pstr;

sort(p,n);

printf("Now,thesequenceis:

\n");

for(i=0;i

printf("%d",*pstr[i]);

printf("\n");

}

 

voidsort(int**p,intn)/*选择法对n个整数排序的函数*/

{inti,j,*temp;

for(i=0;i

for(j=i+1;j

if(**(p+i)>**(p+j))/*比较后交换整数的地址*/

{temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;}

}

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

当前位置:首页 > 经管营销 > 经济市场

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

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