*/
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;iif(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;jif(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;ipstr[i]=&data[i];/*将第i个整数的地址赋予指针数组pstr的第i个元素*/
printf("Input%dintegernumbers:
\n",n);
for(i=0;iscanf("%d",pstr[i]);
p=pstr;
sort(p,n);
printf("Now,thesequenceis:
\n");
for(i=0;iprintf("%d",*pstr[i]);
printf("\n");
}
voidsort(int**p,intn)/*选择法对n个整数排序的函数*/
{inti,j,*temp;
for(i=0;ifor(j=i+1;jif(**(p+i)>**(p+j))/*比较后交换整数的地址*/
{temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;}
}