if(j!=0){k=a[0];a[0]=a[j];
{k=a[0];a[0]=a[j];a[j]=k;}
a[j]=k;}return j;
printf("min number is:%d\n",a[0]);}
printf("the position is:%d\n", j);void main( )
}{
int i,j,a[10];
for(i=0;i<=9;i++) scanf("%d",&a[i]);
j=f(a);
printf("min number is:%d\n",a[0]);
printf("the position is:%d\n", j);
}
已知 5 个数已经按由大到小排好序,请编程使得它们按由小到大排序。(逆序)
#include void main( )
{#include void f(int a[])
{
int a[5]={5,4,3,2,1},i,t; for (i=0;i<5/2;i++)
{int i,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]);
}
void main()
{
int a[5]={5,4,3,2,1},i;
f(a);
for (i=0;i<5;i++)
printf("%d",a[i]);
}
已知 5 个整数,已经由大到小排好序,现输入一个数,将其插入到该数组适当位置,使其仍然有序。(定义并初始化、输入、查找、移动、插入)
#include void main( )
{#include void f(int a[],int k) {
int a[6]={20,15,12,8,6}; int i,k=9;
if(k<=a[4]) a[5]=k; else int i;
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]; }
else break;
}
else break; a[i+1]=k;
a[i+1]=k;}
}
for (i=0;i<6;i++)
printf("%d ",a[i]);}
void main( ) {
}int a[6]={20,15,12,8,6};
int i;
f(a,33);
for (i=0;i<6;i++)
printf("%d ",a[i]);
}
任输入 20 个正整数,找出其中素数,并按由小到大排序,打印输出素数,每5个数换一行。#include #include
#include #include
void main( )int sushu(int a)
{int a[20],b[20],i,j,k,m;{int j;
for(i=0;i<20;i++)int f=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++)return f;
{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]
}
int sushuarray(int a[],int b[])
{int k=0;
int i;
for(i=0;i<20;i++)
if(sushu(a[i])==1)
{b[k]=a[i];
return k;
k++;}
{m=b[j];
b[j]=b[j+1];
b[j+1]=m;
}
for(i=0;i{
printf("%5d",b[i]);}
void paixu(int b[],int k)
{int i,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; }
}
void main( )
{int a[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 void main( )
{#include
void f(int a[2][3],int b[2],int c[3]) {
int a[2][3],b[2],c[3],i, j; for(i=0;i<2;i++)
for(j=0;j<3;j++)int i,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]
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]
}if(a[i][j]{c[j]=a[0][j];}
for(i=1;i<2;i++)
}if(a[i][j]{
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf("%5d",a[i][j]);
printf("%5d\n",b[i]);int a[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 void main()
{#include void f(char a[],char b[]) {
char a[80],b[30]; int i,j;
gets(a);
gets(b);int i,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';}
void main() {
}puts(a);
puts(b);
char a[80],b[30];
gets(a);
gets(b);
f(a,b); //
puts(a);
puts(b);
}
任输入十个国家的名字,按由小到大排序。
#include #include #include #include void main( )void f(char a[10][20]) {char a[10][20],b[20];{int i,j;
int i,j;char b[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("paixu is:\n");
for (i=0;i<10;i++)
printf("%s\n",a[i]);
}
void main( )
{char a[10][20];
int i;
for (i=0;i<10;i++)gets(a[i]);
f(a);
printf("paixu is:\n");
for (i=0;i<10;i++)printf("%s\n",a[i]);
}
有一篇三行文字的文章,每行最多 80 个字符,编写函数,由实参传递字符串,分别统计文章
中大写字母、小写字母、数字、空格及其它字符的个数。
分析:
自定义函数需返回多个统计结果,可采用一个专门的数组存放统计结果,并将其作为函数参数,在被调函数中计数。
#include
void count(char s[3][80], int c[5])
{ int i, j;char t;/* 用临时变量t 提高效率 */
for(i=0; i<=2; i++)
for(j=0; (t=s[i][j])!=0; j++)
if(t>='A'&&t<='Z') c[0]++;
else if(t>='a'&&t<='z') c[1]++;
else if(t>='0'&&t<='9') c[2]++;
else if(t==32) c[3]++;
else c[4]++;
return;
}
void main( )
{ char str[3][80];
static int c[5], i;/*c各元素为0*/
void count(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
void myprint(int a[],int n)
{
int i;
printf("\n ");
for(i=0;ireturn;
}
void mycopy(int a[],int b[],int n)
{
int i;
for(i=0;ireturn;
}
int qipao(int a[],int n)
{
int i,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++;
}
return x;
}
int xuanze(int a[],int n)
{
int i,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++;
}
}
return x;
}
void main()
{
int a[10]={5,27,10,8,15,7,9,24,3,6},b[10],p,q;
//int a[10]={1,2,3,4,5,6,7,10,9,8},b[10],p,q;测试数据,运行验证,看结果是多少
mycopy(a,b,10);
printf("\nthe source array is:");
myprint(a,10);
p=qipao(a,10);
printf("\nqipao the array is:");
myprint(a,10);
printf("\nqipao= %d\n ",p);
printf("\nthe source array is:");
myprint(b,10);
q=xuanze(b,10);
printf("\nxuanze array is: ");
myprint(b,10);
printf("\nxuanze= %d \n",q);
}
递归 ,求两个数的最大公约数#include
int f(int x,int y)
{
int r,p ;
if(xr=x%y;
if(r==0) else return y; return f(y,r);
}
void main()
{
int k;
k=f(36,24);
printf("is %d",k); }
三个数,不修改其值,按由小到大输出,用指针void main()
{
int a=3,b=1,c=2;
//int a=3,b=2,c=1;
//int a=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);
}
读程序写结果(参数是指针)
void f(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 ?}
void main()
{
int a=3,b=1,c=2;
//int a=3,b=2,c=1;
//int a=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
void f(int *p,int *q,int *k)
{
int t; //局部变量是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);// 交换的是指针变量指向的变量//
}
void main()
{
int a=3,b=1,c=2;
//int a=3,b=2,c=1;
//int a=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? }