a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}p" />

C语言上机练习

13. 输入10个整型整数,用起泡法对这10个数排序,并该由小到大顺序在屏幕上输出。
#include
void main()
{
int a[10];
int i,j,t;
printf("input 10 numbers :\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if (a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers :\n");
for(i=0;i<10;i++)
printf(" %d ",a[i]);
printf("\n");
}
14. 将一个二维数组a的行和列的元素互换(即行列互换),存到另一个二维数组b中。
#include
void main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for (i=0;i<=1;i++)
{
for (j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for (i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
}
15. 在一个3*4的二维数组a中,要求编程求出其中值最大的那个元素的值,并输出其所在的行号和列号。
#include
void main()
{int i,j,row=0,colum=0,max;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for (i=0;i<=2;i++)
for (j=0;j<=3;j++)
if (a[i][j]>max)
{max=a[i][j];
row=i;
colum=j;
}
printf("max=%d,row=%d,colum=%d\n",max,row,colum);
}
16. 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
#include
void main()
{
char string[81];
int i,num=0,word=0;
char c;
gets(string);
for (i=0;(c=string[i])!='\0';i++)
if(c==' ') word=0;
else if(word==0)
{word=1;
num++;
}
printf("There are %d words in this line.\n",num);
}
17. 有3个字符串,要求找出其中最大者。
#include
#include
void main ( )
{
char string[20];
char str[3][20];
int i;
for (i=0;i<3;i++)
gets (str[i]);
if (strcmp(str[0],str[1])>0)
strcpy(string,str[0]);
else
strcpy(string,str[1]);
if (strcmp(str[2],string)>0)
strcpy(string,str[2]);
printf("\nthe largest string is:\n%s\n",string);
}
18. 输入两个整数,要求用一个函数求出其中的大者,并在主函数中输出此值。
#include
void main()
{ int max(int x,int y);
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("max is %d\n",c);
}
int max(int x,int y)
{
int z;
z=x>y?x:y;
return(z);
}
19. 输入两个整数,要求用一个函数求出其最大公约数和最小公倍数,并在主函数中调用该子函数。
#include
void main()
{int hcf(int,int);
int u,v,h,l;
scanf("%d,%d",&u,&v);
h=hcf(u,v);
printf("H.C.F=%d\n",h);
l=u*v/h;
printf("L.C.D=%d\n",l);
}

int hcf(int u,int v)
{int t,r;
if (v>u)
{t=u;u=v;v

=t;}
while ((r=u%v)!=0)
{u=v;
v=r;}
return(v);
}
20. 输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。
#include
void main()
{ int max_4(int a,int b,int c,int d);
int a,b,c,d,max;
printf("Please enter 4 interger numbers:");
scanf("%d %d %d %d",&a,&b,&c,&d);
max=max_4(a,b,c,d);
printf("max=%d \n",max);
}

int max_4(int a,int b,int c,int d)
{int max_2(int a,int b);
int m;
m=max_2(a,b);
m=max_2(m,c);
m=max_2(m,d);
return(m);
}
int max_2(int a,int b)
{return(a>b?a:b);
}
21. 用递归方法求5!。
#include
void main()
{long fac(int n);
int n;
long y;
printf("input an integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%ld\n",n,y);
}

long fac(int n)
{
long f;
if(n<0)
printf("n<0,data error!");
else if(n==0,n==1)
f=1;
else f=fac(n-1)*n;
return(f);
}
22. 编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。

#include "stdio.h"
void main()
{float average(float array[ ],int n);
float score_1[5]={98.5,97,91.5,60,55};
float score_2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};
printf("The average of class A is %6.2f\n",average(score_1,5));
printf("The average of class B is %6.2f\n",average(score_2,10));
}

float average(float array[ ],int n)
{int i;
float aver,sum=array[0];
for(i=1;isum=sum+array[i];
aver=sum/n;
return(aver);
}

23 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。
#include
#define N 5
void main()
{ int a[N],i,temp;
printf("enter array a:\n");
for (i=0;iscanf("%d",&a[i]);
printf("array a:\n");
for (i=0;iprintf("%4d",a[i]);
for (i=0;i{ temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf("\nNow,array a:\n");
for (i=0;iprintf("%4d",a[i]);
printf("\n");
}
24 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整数。
#include
void main()
{ void convert(int n);
int number;
printf("input an integer: ");
scanf("%d",&number);
printf("output: ");
if (number<0)
{putchar('-');putchar(' ');
number=-number;
}
convert(number);
printf("\n");
}
void convert(int n)
{ int i;
if ((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
putchar(32);
}

相关主题
相关文档
最新文档