}
t=a[maxi];
a[maxi]=a[mini];
a[mini]=t;
for(i=0;i<10;i++)
printf("%d\n",a[i]);
}
*14.已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。
#include
voidmain()
{
inta[11]={1,3,5,7,9,11,13,15,17,19};
intkey,i;
scanf("%d",&key);
for(i=9;i>=0&&a[i]>key;i--)
a[i+1]=a[i];
a[i+1]=key;
for(i=0;i<11;i++)
printf("%5d",a[i]);
printf("\n");
}
15.有15个互不相等的数按照由小到大的顺序存放在一个数组中,输入一个数要求用折半查找法找出该数是第几个元素的值,如果该数不在数组中则打印“无此数!
”
#include
voidmain()
{
inta[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
intleft=0,right=14,t,mid;
scanf("%d",&t);
while(right>=left)
{
mid=(right+left)/2;
if(a[mid]==t)
break;
else
if(a[mid]>t)
right=mid-1;
else
left=mid+1;
}
if(a[mid]==t)
printf("%d\n",mid);
else
printf("无此数");
}
16输入十个整数存入数组中,输出其中奇数及奇数之和。
#include
voidmain()
{
inta[10],s=0,i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
if(a[i]%2==1)
{
printf("%3d\n",a[i]);
s+=a[i];
}
}
printf("%d\n",s);
}
17.用冒泡法对十个整数进行升序排序
#include
voidmain()
{
inta[10],i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
}
18.输入一行字符,统计其中大写字母,小写字母和数字的个数
#include
voidmain()
{
intn1=0,n2=0,n3=0,i=0;
chars[100];
scanf("%s",s);
while(s[i])
{
if(s[i]>='a'&&s[i]<'z')n1++;
if(s[i]>='A'&&s[i]<='Z')n2++;
if(s[i]>='0'&&s[i]<='9')n3++;
i++;
}
printf("%d%d%d",n1,n2,n3);
}
*19.由键盘输入一串字符,求这串字符中字符‘0’~‘9’各自出现的个数
#include
voidmain()
{
inti=0,p[10]={0};
chars[100];
gets(s);
for(i=0;s[i];i++)
if(s[i]>='0'&&s[i]<='9')
p[s[i]-48]++;
for(i=0;i<10;i++)
printf("%d%d\n",i,p[i]);
}
20.编一程序,将两个字符串连接起来,结果取代第一个字符串
#include
voidmain()
{
chars1[80],s2[40];
inti=0,j=0;
scanf("%s%s",s1,s2);
while(s1[i])
i++;
while(s2[j])
s1[i++]=s2[j++];
s1[i]='\0';
printf("%s\n",s1);
}
21.输出杨辉三角形前十行。
#include
#defineN11
voidmain()
{
inti,j,a[N][N];
for(i=1;i{
a[i][i]=1;a[i][1]=1;
}
for(i=3;ifor(j=2;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i{
for(j=1;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}
.
22求4*4矩阵中的四周元素之和
#include
voidmain()
{
intsum=0,i,j;
inta[4][4]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
if(i==0||j==0||i==3||j==3)
sum=sum+a[i][j];
printf("%d\n",sum);
}
*23有一个4*4的矩阵,找出其中最大的元素和最小的元素,并将它们互换。
#include
voidmain()
{
inti,j,max,min,m1,m2,n1,n2;
inta[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
max=min=a[0][0];
m1=m2=n1=n2=0;
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
{
if(a[i][j]>max)
{
max=a[i][j];m1=i;m2=j;
}
if(a[i][j]{
min=a[i][j];n1=i;n2=j;
}
}
a[m1][m2]=min;
a[n1][n2]=max;
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
24.23.给出年,月,日,计算该日是该年的第几天
#include
intsum_day(intyear,intmonth,intday);
voidmain()
{
inty,m,d;
scanf("%d%d%d",&y,&m,&d);
printf("%d\n",sum_day(y,m,d));
}
intsum_day(intyear,intmonth,intday)
{
inta[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
inti,days=0;
for(i=0;idays+=a[i];
days+=day;
if(month>=3)
{
if((year%4==0&&year%100!
=0)||(year%400==0))
days+=1;
}
returndays;
}
25.有一个一维数组score,内放10个学生成绩,函数实现求平均成绩
#include
floataverage(floata[10]);
voidmain()
{
floats[10],ave;
inti;
for(i=0;i<10;i++)
scanf("%f",&s[i]);
ave=average(s);
printf("%5.2f\n",ave);
}
floataverage(floata[10])
{
inti;
floatave,s=0;
for(i=0;i<10;i++)
s=s+a[i];
ave=s/10;
returnave;
}
26..编写函数实现选择法对10个整数进行升序排列,在主函数中验证函数有效性
#include
voidsort(inta[],intn)
{
inti,j,t;
for(i=0;ifor(j=0;jif(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
voidmain()
{
inti,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
*27.编写函数判断是否为素数,在主函数中利用该函数输出400到500之间的所有素数
#include
#include
intf(intm)
{
inti,q,t=0;
q=(int)sqrt(m);
for(i=2;i<=q;i++)
if(m%i==0)
break;
if(i>=q+1)
t=1;
returnt;
}
voidmain()
{
inti,t=0;
for(i=400;i<=500;i++)
{
t=f(i);
if(t==1)
printf("%5d",i);
}
}
28.用递归方法求斐波那契数列的第n项
#include
intfib(intn)
{
if(n==1||n==2)
return1;
returnfib(n-1)+fib(n-2);
}
voidmain()
{
intk;
scanf("%d",&k);
printf("fib(%d)=%d\n",k,fib(k));
}
*29用递归方法求f(n)=
n的值由主函数输入(=1*1+2*2+…..+n*n)
#include
intf(intn)
{
if(n==1)
return1;
else
returnn*n+f(n-1);
}
voidmain()
{
intn,s;
scanf("%d",&n);
s=f(n);
printf("%d\n",s);
}
30.编写一个递归函数ged,该函数返回x和y的最大公约数
#include
intged(int,int);
voidmain()
{
intx,y;
scanf("%d%d",&x,&y);
printf("%d\n",ged(x,y));
}
intged(inta,intb)
{
if(b==0)
returna;
returnged(b,a%b);
}
31.用递归函数编程求解问题,若一头小母牛,从出生前第四个年头开始每年生一头母牛,按此规律,第几年时有多少头母牛
#include
intcownum(intn);
voidmain()
{
intsum,n;
scanf("%d",&n);
sum=cownum(n);
printf("%d\n",sum);
}
intcownum(intn)
{
if(n<4)
return1;
else
returncownum(n-1)+cownum(n-3);
}
32.用函数和指针实现将一个数组中元素逆序存放并输出
#include
#defineN10
voidinvert(int*a,intn);
voidmain()
{
inta[10],i;
for(i=0;iscanf("%d",&a[i]);
invert(a,N);
printf("Theinvertedarray:
\n");
for(i=0;iprintf("%4d",a[i]);
}
voidinvert(int*a,intn)
{
int*p,*q,t;
p=a;
q=a+n-1;
for(;p{t=*p;*p=*q;*q=t;}
}
*33.请编写函数voidfun(intx,int*pp,int*n),它的功能是:
求出x的偶数因子,并按从小到大的顺序放在pp所指的数组中,这些因子的个数通过形参n返回(假设pp指向足够大的空间)如,若x中的值为24,则有6个数符合要求,他们是2,4,6,8,12,24
#include
voidfun(intx,intpp[],int*n)
{
inti,j=0;
for(i=2;i<=x;i=i+2)
if(x%i==0)
pp[j++]=i;
*n=j;
}
voidmain()
{
intx,aa[1000],n,i;
scanf("%d",&x);
fun(x,aa,&n);
for(i=0;iprintf("%5d",aa[i]);
printf("\n");
}
34..八进制转换为十进制
#include
voidmain()
{
char*p,s[6];
intn=0;
p=s;
gets(p);
while(*(p)!
='\0')
{
n=n*8+*p-'0';
p++;
}
printf("%d",n);
}
35.写一个函数,实现两个字符串的比较,自己写一个stremp函数,stremp(s1,s2)
如果s1=s2,返回值为0;如果s1!