作 业(使用指针、数组、函数完成)
1. 编写一个通用函数,该函数可以实现判断:一个含有五位数字的整数是否是回文数。回文数的含义是从左向右与从右向左看,数是相同的。如:23732是回文数,而23564则不是。编写主程序调用该函数实现求所有5位数字中满足条件的数的个数。
#include <stdio.h>
int Judge(int num)
{
int w,q,b,s,g;
w=num/10000;
q=num%10000/1000;
s=(num%100)/10;
g=num%10;
if((w==g)&&(q==s))
return 1;
else
return 0;
}
void main()
{
int count=0;
int i;
for(i=10000;i<=99999;i++)
if(Judge(i))
count++;
printf("%d\n",count);
}
2.编写一个通用函数,该函数可以实现对数值型数组的倒序。倒序的含义是把数组的元素值前后颠倒。例数组:20,19,18,15,13,10倒序的结果为:10,13,15,18,19,20。编写主程序,数组初始化方式不限,并输出,然后调用该函数实现倒序后再输出倒序的结果。
#include <stdio.h>
#define N 6
void Transfer(double *b,int n)
{
double temp;
double *i=b;
double *j=b+n-1;
while(j>i)
{
temp=*i;
*i=*j;
*j=temp;
i++;
j--;
}
}
void main()
指针与二维数组{
double array[N]={20,19,18,15,13,10};
int i;
for(i=0;i<N;i++)
printf("%.0f\t",array[i]);
Transfer(array,N);
printf("\n");
for(i=0;i<N;i++)
printf("%.0f\t",array[i]);
printf("\n");
}
3.编写一个通用函数,该函数可以实现求数值型二维数组的上三角各元素的平方根的和(即先对上三角各元素求平方根,然后再对平方根求和)。编写主程序调用该函数,计算数组A的上三角元素的平方根的和。
上三角的含义:左上部分(包含对角线元素),如下二维数组的0元素区域即为上三角。
0 0 0 0 0
0 0 0 0 7
0 0 0 3 8
0 0 5 9 3
0 2 4 6 7
数组A的数据如下:
15 45 56 73 11
34 74 85 54 70
56 98 56 89 67
98 54 83 12 59
77 87 74 48 33
#include <stdio.h>
#include <math.h>
double Cal(double *p,int n)
{
int i,j;
double sum=0;
for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
sum+=sqrt(*(p+i*n+j));
return sum;
}
void main()
{
double a[5][5]={15, 45, 56 , 73 , 11,34 , 74 , 85 ,54 , 70,56, 98 , 56 , 89 , 67, 98, 54 , 83, 12 , 59,77 , 87, 74, 48, 33};
double rootsum=Cal(a[0],5); //或者double rootsum=Cal(&a[0][0],5);
printf("%f\n",rootsum);
}
/*系统把二维数组看成数组元素为一维数组的一维数组,即对于二维数组a[2][3],系统会看成由两个一维数组a[0]和a[1]组成,而a[0]和a[1]中分别包含三个元素(a[0]和a[1]为一维数组名)。所以不能把二维数组名(类似于二级指针,不完全相同)赋给一个普通的指针变量,但能把a[0]赋给一个普通的指针变量(a[0]不是一个具体的元素,而是元素a[0][0]的地址)*/
4.编写一个通用函数,该函数可以实现统计一维数组中小于数组元素平均值的元素个数。编写主程序调用该函数,统计数组A(数据为:3521,5647,6849,5962,4567,2361,1247,5241,1246)中小于平均值的元素个数。
#include <stdio.h>
int num(double *p,int num)
{
int count=0;
double sum=0,avg=0;
for(int i=0;i<num;i++)
sum+=*(p+i);
avg=sum/num;
for(i=0;i<num;i++)
if(*(p+i)<avg)
count++;
return count;
}
void main()
{
double a[9]={3521,5647,6849,5962,4567,2361,1247,5241,1246};
int count =num(a,9);
printf("%d\n",count);
}
5.编写一个通用函数,该函数可以实现把一个十进制的正整数转换成七进制。例如把88转换成154。编写主程序调用该函数,把整数123455转换成七进制并输出。
注:把一个十进制的整数转换成七进制的方法是:把十进制数当作被除数,用7除,直到商为0为至,然后把余数倒序即可。例88除7的余数依次是4、5、1,则其七进制为:154。
#include <stdio.h>
void Transfer(int num)
{
int a[100];
int count=0;
while(num!=0)
{
a[count++]=num%7;
num=num/7;
}
for(int i=count-1;i>=0;i--)
printf("%d",a[i]);
}
void main()
{
int num;
printf("Please input an integer:\n");
scanf("%d",&num);
Transfer(num);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论