一、输出下面内容,用函数调用实现。
######
hello world!
######
#include <stdio.h>
int main() //主函数
{
void print_star(); //声明函数
void print_message(); //声明函数
print_star();
print_message();
print_star();
return 0;
}
void print_star() //定义函数,该函数实现输出六个#
{ printf(“######n”); }
void print_message()
{ printf(“ hello world!n”); } //定义函数,该函数实现“hello world!”
二、输入两个整数,要求输出其中值较大者。要求用函数来找到大数。
#include <stdio.h>
int main() //在max函数上面,再编写主函数
{ int max(int x,int y);
int a,b,c;
printf(“two integer numbers: ");
scanf(“%d,%d”,&a,&b);
c=max(a,b); //这里的a,b为实参,实参可以是常量、变量或表达式
printf(“max is %d\n”,c);
}
int max(int x,int y) //编写max函数
{ int z;
z=x>y?x:y;
return(z);
}
三、输入两个实数,用一个函数求出它们之和。
#include <stdio.h>
int main()
{
float add(float x, float y); //对add函数声明,注意要有分号
float a,b,c;
printf("Please enter a and b:");
scanf("%f,%f",&a,&b);
c=add(a,b); //调用add函数
printf("sum is %f\n",c);
return 0;
}
float add(float x,float y) //求两个实数之和,函数值也是实型
{ //定义add函数
float z;
z=x+y;
return(z);
四、输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。
#include <stdio.h>
int main() //主函数
{
int max4(int a,int b,int c,int d); //对max4 函数声明
int a,b,c,d,max;
printf(“4 interger numbers:");
scanf("%d%d%d%d",&a,&b,&c,&d); //输入4个整数
max=max4(a,b,c,d); //调用max4函数
printf("max=%d \n",max);
return 0;
}
int max4(int a,int b,int c,int d) //max函数
{
int max2(int a,int b); //对max2 函数声明
int m;
m=max2(a,b); //得出a,b中较大者,
m=max2(m,c); //得出a,b,c中较大者
m=max2(m,d); //得出a,b,c,d中最大者
return(m);
}
int max2(int a,int b) //在定义max2函数
{
if(a>=b) //找a,b中较大者
return a; //返回a,b中大的那个值
else
return b;
}
且
整个函数可简写为:
#include <stdio.h>
int main() //主函数
{
int max4(int a,int b,int c,int d); //对max4 函数声明
int a,b,c,d,max;
printf(“4 interger numbers:");
scanf("%d%d%d%d",&a,&b,&c,&d); //输入4个整数
max=max4(a,b,c,d); //调用max4函数
printf("max=%d \n",max);
return 0;
}
int max4(int a,int b,int c,int d) //max函数
{
int max2(int a,int b); //对max2 函数声明
int m;
ruturn max2(max2(max2(a,b),c),d); //多次调用max2函数得出四个值中的最大值
}
int max2(int a,int b) //在定义max2函数
{
if(a>=b) //找a,b中较大者
return(a>b?a:b); //返回a,b中的最大值
}
五、用递归方法求n!。
#include <stdio.h>
int main()
{
int fac(int n);
int n;
int y;
printf("input an integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%d\n",n,y); return 0;
}
int fac(int n)
{
int 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);
}
六、利用数组,输入10个数,要求输出其中值最大的元素和该数是第几个数。
#include <stdio.h>
int main() {
int max(int x,int y);
int a[10],m,n,i;
printf(“10 integer numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=1,m=a[0],n=0;i<10;i++) //循环判断出最大的数,并得出该数是第几个数
{
if (max(m,a[i])>m)
{ m=max(m,a[i]); //判断出大的数,并的到相应的序号
n=i;
}
}
printf(“largest number is %d\n",m);
printf(“%dth number.\n“,n+1);
}
int max(int x,int y) //定义函数判断两个数的大小
{
return(x>y?x:y);
}
七、有一个一维数组score,内放10个学生成绩,求平均成绩。
#include <stdio.h>
int main()
{
float average(float array[10]);
float score[10],aver; // float score[10]定义实参数组
int i;
printf("input 10 scores:\n");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
printf("\n");
aver=average(score);
printf("%5.2f\n",aver);
return 0;
}
float average(float array[10]) //float array[10]定义形参数组
{
int i;
float aver,sum=array[0]; //此处array[0]相当于score[0]
for(i=1;i<10;i++)
sum=sum+array[i]; //此处array[i]相当于score[i]
aver=sum/10;
return(aver);
}
八、用选择法对数组中10个整数按由小到大排序。
#include <stdio.h>
int main() {
void sort(int array[],int n);
int a[10],i;
printf("enter array:\n");
for(i=0;i<10;i++) scanf("%d",&a[i]);
sort(a,10);
printf("The sorted array:\n");
for(i=0;i<10;i++) printf("%d ",a[i]);
printf("\n");
return 0;
}
void sort(int array[],int n) {
int i,j,k,t;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++) //在sort[i]~sort[9]中,最小数与sort[i]对换
if(array[j]<array[k])
k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
}
九、有一个3×4的矩阵,求所有元素中的最大值。
#include <stdio.h>
int main() {
int max_value(int array[ ][4]);
//此处第一个中括号里可以省略,第二个不能省略,要与形参数组第二维大小相同
int a[3][4]={{1,3,5,7},{2,4,6,8}, {15,17,34,12}};
printf(“Max value is %d\n”, max_value(a));
return 0;
}
int max_value(int array[][4]) { //此处要与实参数组第二维大小相同
int i,j,max;
max = array[0][0];
for (i=0;i<3;i++)
for(j=0;j<4;j++)
if (array[i][j]>max)
max = array[i][j];
return (max);
}
十、有两个班级,分别有5名和10名学生,调用一个average函数,分别求这两个班的学生的平均成绩。
#include <stdio.h>
int main()
{
float average(float array[ ],int n); //对average函数进行声明
float score1[5]={98.5,97,91.5,60,55};
float score2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5}; printf(“%6.2f\n”,average(score1,5));
printf(“%6.2f\n”,average(score2,10));
return 0;
}
float average(float array[ ],int n)
{
int i;
float aver,sum=array[0];
for(i=1;i<n;i++)
sum=sum+array[i];
aver=sum/n;
return(aver);
}
注:
当调用形式为average(score1,5)时, average函数中的n相当于5,array[0]相当于score1[0],array[i]相当于score1[i]。
当调用形式为average(score2,10)时, average函数中的n相当于10,array[0]相当于score2[0],array[i]相当于score2[i]。