j=i;
if(j!
=0)
if(j!
=0)
{
k=a[0];
a[0]=a[j];
{
k=a[0];
a[0]=a[j];
a[j]=k;}
a[j]=k;}
returnj;
printf("minnumberis:
%d\n",a[0]);
}
printf("thepositionis:
%d\n",j);
voidmain()
}
{
inti,j,a[10];
for(i=0;i<=9;i++)scanf("%d",&a[i]);
j=f(a);
printf("minnumberis:
%d\n",a[0]);
printf("thepositionis:
%d\n",j);
}
已知
5个数已经按由大到小排好序,请编程使得它们按由小到大排序。
(逆序)
#include
voidmain()
{
#include
voidf(inta[])
{
inta[5]={5,4,3,2,1},i,t;
for(i=0;i<5/2;i++)
{
inti,t;
for(i=0;i<5/2;i++)
{
t=a[i];
a[i]=a[4-i];
a[4-i]=t;
t=a[i];
a[i]=a[4-i];
a[4-i]=t;
}
}
}
for(i=0;i<5;i++)
printf("%d",a[i]);
}
voidmain()
{
inta[5]={5,4,3,2,1},i;
f(a);
for(i=0;i<5;i++)
printf("%d",a[i]);
}
已知5个整数,已经由大到小排好序,现输入一个数,将其插入到该数组适当位置,使其仍然有序。
(定义并初始化、输入、查找、移动、插入)
#include
voidmain()
{
#include
voidf(inta[],intk)
{
inta[6]={20,15,12,8,6};
inti,k=9;
if(k<=a[4])a[5]=k;
else
inti;
if(k<=a[4])a[5]=k;
else
{
{
for(i=4;i>=0;i--)
if(k>a[i])
for(i=4;i>=0;i--)
if(k>a[i])
{
{
a[i+1]=a[i];
a[i+1]=a[i];
}
elsebreak;
}
elsebreak;
a[i+1]=k;
a[i+1]=k;
}
}
for(i=0;i<6;i++)
printf("%d",a[i]);
}
voidmain()
{
}
inta[6]={20,15,12,8,6};
inti;
f(a,33);
for(i=0;i<6;i++)
printf("%d",a[i]);
}
任输入20个正整数,找出其中素数,并按由小到大排序,打印输出素数,每5个数换一行。
#include
#include
#include
#include
voidmain()
intsushu(inta)
{
inta[20],b[20],i,j,k,m;
{
intj;
for(i=0;i<20;i++)
intf=1;
scanf("%d",&a[i]);
for(j=2;j<=sqrt(a);j++)
k=0;
if(a%j==0)
{f=0;break;}
for(i=0;i<20;i++)
returnf;
{
for(j=2;j<=a[i]-1;j++)
}
if(a[i]%j==0)
if(j>a[i]-1)
{b[k]=a[i];k++;
}
for(i=0;ifor(j=0;jif(b[j]
break;
}
intsushuarray(inta[],intb[])
{intk=0;
inti;
for(i=0;i<20;i++)
if(sushu(a[i])==1)
{b[k]=a[i];
returnk;
k++;
}
{m=b[j];
b[j]=b[j+1];
b[j+1]=m;
}
for(i=0;i{
printf("%5d",b[i]);
}
voidpaixu(intb[],intk)
{inti,j,m;
for(i=0;ifor(j=0;jif(b[j]>b[j+1])
{m=b[j];
b[j]=b[j+1];
}
}
if((i+1)%5==0)printf("\n");
b[j+1]=m;}
}
voidmain()
{inta[20],b[20],i,k;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
k=sushuarray(a,b);
paixu(b,k);
for(i=0;i{printf("%5d",b[i]);
if((i+1)%5==0)printf("\n");
}
}
有一个
2×3的矩阵,求每行最小值及每列的最小值。
#include
voidmain()
{
#include
voidf(inta[2][3],intb[2],intc[3])
{
inta[2][3],b[2],c[3],i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
inti,j;
for(i=0;i<2;i++)
{b[i]=a[i][0];
scanf("%d",&a[i][j]);
for(j=1;j<3;j++)
if(a[i][j]
b[i]=a[i][j];
for(i=0;i<2;i++)
{b[i]=a[i][0];
for(j=1;j<3;j++)
}
for(j=0;j<3;j++)
{c[j]=a[0][j];
if(a[i][j]
b[i]=a[i][j];
for(i=1;i<2;i++)
}
if(a[i][j]c[j]=a[i][j];
for(j=0;j<3;j++)
}
{c[j]=a[0][j];
}
for(i=1;i<2;i++)
}
if(a[i][j]c[j]=a[i][j];
voidmain()
{
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf("%5d",a[i][j]);
printf("%5d\n",b[i]);
inta[2][3],b[2],c[3],i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<3;i++)
printf("%5d",c[i]);
f(a,b,c);
for(i=0;i<2;i++)
{
}
printf("\n");
for(j=0;j<3;j++)
printf("%5d",a[i][j]);
printf("%5d\n",b[i]);
}
for(i=0;i<3;i++)
printf("%5d",c[i]);
printf("\n");
}
编一程序,将两个字符串连接起来法一:
不用函数
法二:
用函数
#include
voidmain()
{
#include
voidf(chara[],charb[])
{
chara[80],b[30];
inti,j;
gets(a);
gets(b);
inti,j;
for(i=0;a[i]!
='\0';i++);
for(j=0;b[j]!
='\0';j++)
{
for(i=0;a[i]!
='\0';i++);
a[i++]=b[j];
for(j=0;b[j]!
='\0';j++)
{
}
a[i]='\0';
a[i++]=b[j];
}
a[i]='\0';
}
voidmain()
{
}
puts(a);
puts(b);
chara[80],b[30];
gets(a);
gets(b);
f(a,b);//
puts(a);
puts(b);
}
任输入十个国家的名字,按由小到大排序。
#include
#include
#include
#include
voidmain()
voidf(chara[10][20])
{
chara[10][20],b[20];
{
inti,j;
inti,j;
charb[20];
for(i=0;i<10;i++)
for(i=0;i<9;i++)
gets(a[i]);
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(strcmp(a[j],a[j+1])>0)
{strcpy(b,a[j]);
for(j=0;j<9-i;j++)
if(strcmp(a[j],a[j+1])>0)
{strcpy(b,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],b);
strcpy(a[j],a[j+1]);
}
}
strcpy(a[j+1],b);
}
printf("paixuis:
\n");
for(i=0;i<10;i++)
printf("%s\n",a[i]);
}
voidmain()
{chara[10][20];
inti;
for(i=0;i<10;i++)gets(a[i]);
f(a);
printf("paixuis:
\n");
for(i=0;i<10;i++)printf("%s\n",a[i]);
}
有一篇三行文字的文章,每行最多80个字符,编写函数,由实参传递字符串,分别统计文章中大写字母、小写字母、数字、空格及其它字符的个数。
分析:
自定义函数需返回多个统计结果,可采用一个专门的数组存放统计结果,并将其作为函数参数,在被调函数中计数。
#include
voidcount(chars[3][80],intc[5])
{inti,j;chart;/*用临时变量t提高效率*/
for(i=0;i<=2;i++)
for(j=0;(t=s[i][j])!
=0;j++)
if(t>='A'&&t<='Z')c[0]++;
elseif(t>='a'&&t<='z')c[1]++;
elseif(t>='0'&&t<='9')c[2]++;
elseif(t==32)c[3]++;
elsec[4]++;
return;
}
voidmain()
{charstr[3][80];
staticintc[5],i;
/*c
各元素为
0*/
voidcount(char[][80],int[]);
for(i=0;i<=2;i++)
/*输入三行字串
*/
gets(str[i]);
count(str,c);
/*实参:
两个数组指针
*/
for(i=0;i<=4;i++)
/*输出统计结果
*/
printf("%5d",c[i]);
}
编写以下5函数,实现对一个数组按由小到大排序,并统计排序过程中交换的次数(注意参数、返回值的设计)
–打印一个数组
–将一个数组复制到另一个数组中
–用起泡法实现排序和统计
–用选择法实现排序和统计
–main()
?
数组初始化为{5,27,10,8,15,7,9,24,3,6}
?
⋯
?
用起泡法
?
打印原始数组和排序后数组、统计次数
?
用选择法排序原始数组并统计
?
打印原始数组和排序后数组、统计次数
#include
voidmyprint(inta[],intn)
{
inti;
printf("\n");
for(i=0;ireturn;
}
voidmycopy(inta[],intb[],intn)
{
inti;
for(i=0;ireturn;
}
intqipao(inta[],intn)
{
inti,j,x=0,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;
x++;
}
returnx;
}
intxuanze(inta[],intn)
{
inti,j,x=0,k,t;
for(i=0;i{
k=i;
for(j=i+1;jif(a[j]k=j;
if(k!
=i)
{
t=a[i];
a[i]=a[k];
a[k]=t;
x++;
}
}
returnx;
}
voidmain()
{
inta[10]={5,27,10,8,15,7,9,24,3,6},b[10],p,q;
//inta[10]={1,2,3,4,5,6,7,10,9,8},b[10],p,q;测试数据,运行验证,看结果是多少
mycopy(a,b,10);
printf("\nthesourcearrayis:
");
myprint(a,10);
p=qipao(a,10);
printf("\nqipaothearrayis:
");
myprint(a,10);
printf("\nqipao=%d\n",p);
printf("\nthesourcearrayis:
");
myprint(b,10);
q=xuanze(b,10);
printf("\nxuanzearrayis:
");
myprint(b,10);
printf("\nxuanze=%d\n",q);
}
递归,求两个数的最大公约数
#include
intf(intx,inty)
{
intr,p;
if(xr=x%y;
if(r==0)
else
returny;
returnf(y,r);
}
voidmain()
{
intk;
k=f(36,24);
printf("is%d
",k);
}
三个数,不修改其值,按由小到大输出,用指针
voidmain()
{
inta=3,b=1,c=2;
//inta=3,b=2,c=1;
//inta=1,b=2,c=3;
int*p,*q,*k,*t;
p=&a;q=&b;k=&c;
if(*p>*q){t=p;p=q;q=t;}
if(*p>*k){t=p;p=k;k=t;}
if(*q>*k){t=k;k=q;q=t;}
printf("\n%d%d%d\n",a,b,c);
printf("\n%d%d%d\n",*p,*q,*k);
}
读程序写结果
(参数是指针)
voidf(int*p,int*q,int*k)
{
int*t;//局部变量是指针
if(*p>*q){t=p;p=q;q=t;}//交换的是指针
if(*p>*k){t=p;p=k;k=t;}
if(*q>*k){t=k;k=q;q=t;}
printf("\n%d%d%d\n",*p,*q,*k);//函数内打印
排好序
why?
}
voidmain()
{
inta=3,b=1,c=2;
//inta=3,b=2,c=1;
//inta=1,b=2,c=3;
int*p,*q,*k,*t;
p=&a;q=&b;k=&c;
f(p,q,k);
printf("\n%d%d%d\n",a,b,c);
printf("\n%d%d%d\n",*p,*q,*k);
//没有排序
why?
}
读程序写结果
#include
voidf(int*p,int*q,int*k)
{
intt;//局部变量是int
if(*p>*q){t=*p;*p=*q;*q=t;}
if(*p>*k){t=*p;*p=*k;*k=t;}
if(*q>*k){t=*k;*k=*q;*q=t;}
printf("\n%d%d%d\n",*p,*q,*k);
//交换的是指针变量指向的变量
//
}
voidmain()
{
inta=3,b=1,c=2;
//inta=3,b=2,c=1;
//inta=1,b=2,c=3;
int*p,*q,*k,*t;
p=&a;q=&b;k=&c;
f(p,q,k);
printf("\n%d%d%d\n",a,b,c);
//变
why?
printf("\n%d%d%d\n",*p,*q,*k);//
变
why?
}