admin 管理员组

文章数量: 887021

程序设计...

目录

1.根据以下公式求π的值(输入0.0005,输出3.140578)

2.规定输入的字符串中只包含字母和*号(使字符串最前面连续的*号不得多于n个,若多余n个,则删除多余的*号,若少于等于n个,则什么也不做)

3. 把高于等于平均分的学生数据放在h所指的数组中,高于等于平均分的学生人数通过形参传回,平均分通过函数值返回。

4.按分数的高低排列学生的记录,高分在前

5.将两个两位数的正整数a、b合并形成一个整数放在c中。(a=45,b=12,c=2415)

6. 函数返回指定学号的学生数据,指定的学号在主函数中输入,若没找到指定学号,给学号置空串,给成绩置-1

7.求平均分,由函数值返回

8.求出数组最大元素在数组中的下标并存放在k所指的存储单元中

9.将一个表示正整数的数字字符串转换成一个整数(输入“1234”,输出1234)

10.找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在下标通过形参传回

11.计算并输出给定数组中每相邻两个元素平均值的平方根之和

12.计算并输出下列多项式色值

13.计算并输出n以内能被5或9整除的所有自然数的倒数之和

14.计算并输出给定10个数的方差

15.计算并输出3到n之间所有素数的平方根之和

16.实现矩阵(3行3列)的转置

17.求出小于或等于lim的所有素数并存放在aa数组中

18.求出二维数组周边元素之和

19.从传入的字符串中找出最长的一个字符串

20.求出数组周边元素的平均值

21.实现两个字符串的连接

22.将低于平均分的分数放在below所指的数组中

23.将大于形参m且紧靠m的k个素数存入xx所指的数组中。(输入17.5,输出19,23,29,31,37)

24.找出成绩最低的学生记录

25.将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,剩余的字符形成新的字符串

26.将s所指字符串中下标为奇数同时ASCII值为奇数的字符删除,剩余的字符形成新的字符串

27.求n以内同时被3和7整除的所有自然数之和的平方根

28. 使实型数保留2位小数,并对第三位进行四舍五入

29.求出能整除形参x且不是偶数的所有整数,按从小到大排放

30.求出一个2*M整型二维数组中最大元素的值

31. 将字符串中所有下标为奇数位置上的字母转换成大写(若该位置不是字母,则不转换)

32.将字符串尾部的*号全部删除,前面和中间的*号不删除

33.除了字符串前的*号之外,将串中其它*号全部删除

34.只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。

35.将字符串中的前导*号全部移到字符串的尾部

36.找出学生的最高分

37.使数组右上三角元素中的值乘以m

38.删除字符串中所有的空格

39.将M行N列的二维数组中的数据按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中

40. 将M行N列的二维数组中的数据按列的顺序依次放到一维数组中

41.将放在字符串数组中的M个字符串,按顺序合并组成一个新的字符串

42.若数组中有n个整数,要求把下标从0到p的数组元素平移到数组的最后

43.把第1到第m个字符平移到字符串的最后,把m+1到最后的字符移到字符串的前部

44.将M行N列的二维数组中的字符数据按列的顺序依次放到一个字符串中。

45.删除一维数组中所有相同的数,使之只剩一个。

46.统计个年龄段的人数

47.统计一行字符串中单词的个数

48.计算并输出给定整数n的所有因子之和

49.判断字符串是否为回文

50.统计字符串中数字字符的个数

51.查找x在s所指数组中下标的位置作为函数值返回

52. 将形参s所指的字符串放入形参a所指的字符数组中,使a中存放同样的字符串

53.将一个数字字符串转换成与其面值相同的长整型整数

54.去掉一个最高分和一个最低分,然后求平均值

55.分别统计二维数组中A和C的个数

56.判断形参n中的正整数是几位数

57.在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中

58.判断t所指字符串中的字母是否由连续递增字母序列组成

59.求n以内的所有四叶玫瑰数并逐个放到result所指的数组中

60.将一个四位数的每一位分离出来,并依次存放在结构体变量中

61.分别统计两个字母出现的次数

62.统计指数数组中偶数的个数

63.计算指数数组中n个幂数之和

64.求一个双精度数的整数部分和小数部分

65.统计奇数、偶数的个数,并计算数平均值

66.统计指数数组中能被e整除的元素个数,并计算不能被e整除的元素之和

67.验证参数n是否可以分解成2个素数相乘,并通过指针变更x,y返回分解后2个素数值

68.找出用1,2,3,4四个数字能组成多少个互不相同的且无重复数字的三位数,从小到大排列

69.找出最大值和最小值,并与第一个元素交换

70.将数组主对角线的元素分别乘以2,次对角线的元素分别乘以3,依次放入所指的数组

71.统计指数数组中能被e整除的元素个数

72.求1000以内所有恰好能分解成10组两个素数之和的偶数


1.根据以下公式求π的值(输入0.0005,输出3.140578)

double  fun ( double  eps)
{int n=0;double down=1,up=1;double one ,pi=0;one  = (double)up/(double)down;while(one>=eps) {   /*通过循环语句判断公式中某项是否在精度范围之内*/pi+=one;n++;up=up*n;down=down*(2*n+1);one=(double)up/(double)down;}return pi*2;
}

2.规定输入的字符串中只包含字母和*号(使字符串最前面连续的*号不得多于n个,若多余n个,则删除多余的*号,若少于等于n个,则什么也不做)

void  fun( char *a, int  n )
{/* 以下代码仅供参考 */int i=0,j,k=0;while(a[k]=='*') k++; /* k为统计*字符个数 */if(k>n){i=n;j=k;/* 以下完成将下标为k至串尾的字符前移k-n个位置 */strcpy(&a[0],&a[k-n]);}
}

3. 把高于等于平均分的学生数据放在h所指的数组中,高于等于平均分的学生人数通过形参传回,平均分通过函数值返回。

double  fun( STREC  *a, STREC *b, int *n )
{ int i,j;double aver=0;*n=0;for (i=0;i<N;i++)aver=aver+a[i].s;             aver=aver/N;                   for (i=0;i<N;i++)if (a[i].s>=aver){b[*n].s=a[i].s;             for (j=0;j<10;j++)b[*n].num[j]=a[i].num[j];*n=*n+1;                     }return (aver);                 
}

4.按分数的高低排列学生的记录,高分在前

void  fun( STREC  a[] )
{STREC tmp;int i,j;for(i = 0; i < N; i++)for(j = i+1; j < N; j++){   /* 请按题目要求完成以下代码 */if (a[i].s<a[j].s){tmp=a[i];a[i]=a[j];a[j]=tmp;}}
}

5.将两个两位数的正整数a、b合并形成一个整数放在c中。(a=45,b=12,c=2415)

void fun(int a, int b, long *c)
{int a_up,a_low,b_up,b_low;a_up=a/10;    a_low=a%10;  b_up=b/10;   b_low=b%10;  *c=b_low*1000+a_up*100+b_up*10+a_low; 
}

6. 函数返回指定学号的学生数据,指定的学号在主函数中输入,若没找到指定学号,给学号置空串,给成绩置-1

STREC  fun( STREC  *a, char *b )
{ int i,f=0;STREC p;          p=a[0];for (i=0;i<N;i++)if (strcmp(a[i].num,b)==0) {p=a[i];f=1;}  if (f==0)          {p.num[0]='\0';   p.s=-1;}return p;
}

7.求平均分,由函数值返回

double  fun( STREC *h  )
{ STREC *p;double aver=0;p=h->next;while (p!=0){aver=aver+p->s;p=p->next; }aver=aver/N;return aver; 
}

8.求出数组最大元素在数组中的下标并存放在k所指的存储单元中

void fun(int *s, int t, int *k)
{int max_integer=0; int i=0;max_integer = s[0]; *k=0;for(i=0; i<t; i=i+1){ if(max_integer<s[i]){max_integer=s[i];*k=i;}}return *k;
}

9.将一个表示正整数的数字字符串转换成一个整数(输入“1234”,输出1234)

long  fun ( char *p)
{/* 以下代码仅供参考 */int i,len;  /* len为串长 */long x=0;len=strlen(p);/* 以下完成数字字符串转换为一个数字。注意:字符'0'不是数字0 */for(i=0;i<len;i++)x=x*10+p[i]-'0';return x;
}

10.找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在下标通过形参传回

void fun(int  a[],  int  n , int  *max, int  *d )
{int i,base,subscript;base=a[0]; subscript=0; for(i=1;i<n;i++) {if(a[i]>base) { subscript=i;base=a[i];}}*max=base; *d=subscript; 
}

11.计算并输出给定数组中每相邻两个元素平均值的平方根之和

double fun(double  x[9])
{int i ;
double avg=0.0,sum=0.0; 
for (i=0;i<8;i++)
{avg=(x[i]+x[i+1])/2; 
sum+=sqrt(avg);
}
return sum; 
}

12.计算并输出下列多项式色值

//
double fun(int  n)
{ int i;
double sum=0.0; 
if (n>1&&n<=100)
{for(i=1;i<=n;i++)
sum+=1.0/(2*i-1)-1.0/(2*i); 
}//计算并输出当x<0.97时下列多项式的值,|S(n)-S(n-1)|<0.000001为止
double fun(double  x)
{int n=1;		double sn=1;		double xn=1,xn1=0;	while(fabs(xn-xn1)>=0.000001){xn=xn*x*(0.5-n+1)/n;n+=1;sn+=xn;}return(sn);
}//计算并输出S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+....
double fun(int  n)
{int i; 
double  fac=1.0; 
double sum=1.0;
if (n>1&&n<=100)
for(i=2;i<=n;i++)
{fac+=sqrt(i); sum+=fac; 
}
return sum; 
}//根据以下公式求P的值(输入m=12,n=8;输出495.000000)
float  fun(int m, int n)
{int i;float s=1,f=1,h=1;float x;for (i=m;i>=1;i--) s=s*i;  /*求出m的阶乘*/for (i=n;i>=1;i--) f=f*i;  /*求出n的阶乘*/for (i=m-n;i>=1;i--) h=h*i;/*求出m-n的阶乘*/x=s/(f*h);return (x);}//计算求出下列级数和(输入n=10,输出0.909091)
double  fun(  int  n )
{ int i;double s=0;for (i=1;i<=n;i++)s=s+1.0/(i*(i+1)); return(s);
}//求下列级数和(输入n=10,输出1.349859)
double fun(double x , int  n)
{ int i;double f=1.0,h=x;double s=1;s=s+h/f;        for (i=2;i<=n;i++){ f=f*i;      h=h*x;       s=s+h/f;}return (s);
}//输入15,输出2.718282
double  fun(int  n)
{double m=1.0,p=1.0;int i;for(i=1;i<=n;i++){  p=p*i;m=m+1.0/p;}return (m);
}//59套
double fun(int  n)
{   int i;double sum=0.0,tmp=1.0; if(n<=1||n>100){ printf("Input n(n>1&&n<=100):  ");  scanf("%d",&n);}for(i=1;i<=n;i++){	tmp*=i; sum+=1.0/tmp; }return sum; 
}

13.计算并输出n以内能被5或9整除的所有自然数的倒数之和

double fun(int  n)
{int i;
double sum=0.0; 
if(n>0&&n<=100)
{for (i=1;i<=n;i++)if(i%5==0||i%9==0) sum+=1.0/i;
}
return sum; 
}

14.计算并输出给定10个数的方差

double fun(double  x[10])
{ int i; 
double avg=0.0;
double sum=0.0;
double abs=0.0;
double fc;
for (i=0;i<10;i++)  
sum+=x[i];  
avg=sum/10;  
for (i=0;i<10;i++)
abs+=(x[i]-avg)*(x[i]-avg); 
fc=sqrt(abs/10) ; 
return fc;  
}

15.计算并输出3到n之间所有素数的平方根之和

double fun(int  n)
{int i,j=0; double s=0; for (i=3;i<=n;i++){ for (j=2;j<i;j++)if (i%j==0) break;   if (j==i)  s=s+sqrt(i);  }return s; 
}

16.实现矩阵(3行3列)的转置

void fun(int array[3][3])
{
int i,j;int b[3][3];for (i=0;i<3;i++)for (j=0;j<3;j++)b[j][i]=array[i][j];for (i=0;i<3;i++)for (j=0;j<3;j++)array[i][j]=b[i][j];}

17.求出小于或等于lim的所有素数并存放在aa数组中

int fun(int lim, int aa[MAX])
{int i,j=0,k=0;for (i=2;i<=lim;i++)  { for (j=2;j<i;j++)   if (i%j==0) break;if (j==i)  aa[k++]=i;}return k;}

18.求出二维数组周边元素之和

int  fun ( int a[M][N] )
{
int i, j, sum = 0;for (i = 0; i < M; i++)for (j = 0; j < N; j++)if ((i == 0)||(i == M - 1)||(j == 0)||(j == N - 1) )sum +=  a[i][j];return sum;
}

19.从传入的字符串中找出最长的一个字符串

char *fun(char a[][81],int num)
{/* 以下代码仅供参考 */int i,k=0,len, maxlen;  /* k为a数组中最长串所在元素的下标,初始为0,maxlen为其串长 */maxlen=strlen(a[k]);for(i=1;i<num;i++){/* 以下完成查找最长串 */if (strlen(a[k])<strlen(a[i]))  k=i;}return a[k];
}

20.求出数组周边元素的平均值

double fun ( int w[][N] )
{ int i,j,n=0;double sum=0;for(i = 0 ; i < 5 ; i++)for(j = 0 ; j < 5 ; j++)if(i==0||j==0||i==N-1||j==N-1) {sum+=w[i][j];n++;}return  sum/n;
}

21.实现两个字符串的连接

void fun(char p1[], char p2[])
{char *point1,*point2;point1=p1;point2=p2;while(*point1!='\0') point1++;while(*point2!='\0'){*point1=*point2;point1++;point2++;}*point1='\0';
}

22.将低于平均分的分数放在below所指的数组中

int fun(int score[], int m, int below[])
{int total=0;int average=0;int *p_below=below;int i=0;int j=0;for(i=0;i<m;i++){total=total+score[i];}average=total/m;for(i=0;i<m;i++){if(score[i]<average){*p_below=score[i];p_below++;j++;}}*p_below='\0';return(j);
}

23.将大于形参m且紧靠m的k个素数存入xx所指的数组中。(输入17.5,输出19,23,29,31,37)

void fun(int m, int k, int xx[])
{int i, j ,total=0;int *p_xx=xx;for(i=m+1;;i++){for(j=2;j<i;j++) if(i%j==0)  break ;if(i<=j){*p_xx=i;p_xx++;total++;if(total==k){*p_xx='/0';break;}}}
}

24.找出成绩最低的学生记录

void fun(  STU  a[], STU  *s  )
{int   i;STU  *m;m=a;for(i=1;i<N;i++)if  (a[i].s<m[0].s)m=&a[i];s[0].s=m[0].s;strcpy(s[0].num,m[0].num);}

25.将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,剩余的字符形成新的字符串

void fun(char  *s, char  t[])
{int i,slenth,n=0;slenth=strlen(s);  for(i=0;i<slenth;i++) {if(i%2==0 && s[i]%2!=0 ) ;elset[n++]=s[i];}t[n]='\0';
}

26.将s所指字符串中下标为奇数同时ASCII值为奇数的字符删除,剩余的字符形成新的字符串

void fun(char *s, char t[])
{int i,slenth,n=0;slenth=strlen(s); for(i=1;i<slenth;i+=2)if(s[i]%2!=0)t[n++]=s[i];t[n]='\0';
}

27.求n以内同时被3和7整除的所有自然数之和的平方根

double  fun( int  n)
{ int i;double s=0.0;for (i=1;i<n;i++)if (i%3==0 && i%7==0) s=s+i;return sqrt(s);
}

28. 使实型数保留2位小数,并对第三位进行四舍五入

float fun ( float  h )
{
return (int)(h*100+0.5)/100.0;}

29.求出能整除形参x且不是偶数的所有整数,按从小到大排放

void  fun ( int x, int  pp[], int *n )
{  int i,k,j = 0 ;for(i=1;i<=x;i+=2)               {if((x%i)==0) pp[j++] =i;      *n=j ;}                       for(i=0;i<j-1;i++)for(k=i+1;k<j;k++)if(pp[i]>pp[k]){x=pp[i]; pp[i]=pp[j]; pp[j]=x;} 
}

30.求出一个2*M整型二维数组中最大元素的值

int fun (int a[][M])
{int i,j,max;max=a[0][0];for(i=0;i<2;i++)for(j=0;j<M;j++)if(max<a[i][j]) max=a[i][j];return max;
}

31. 将字符串中所有下标为奇数位置上的字母转换成大写(若该位置不是字母,则不转换)

void fun( char *ss )
{int i,n=0;char *p;p=ss;while(*p++!='\0')  n++;for(i=1;i<n;i+=2)if(ss[i]>='a' && ss[i]<='z')   ss[i]=ss[i]-'a'+'A';
}

32.将字符串尾部的*号全部删除,前面和中间的*号不删除

void  fun( char *a )
{
int i;
for(i=strlen(a)-1;i>=0;i--)
if(a[i]!='*') break;
a[i+1]=0;
}

33.除了字符串前的*号之外,将串中其它*号全部删除

void  fun( char *a )
{/* 以下代码仅供参考 */int i=0,k;while(a[i]=='*') i++;k=i;while(a[i]!='\0')  /* 以下程序段实现非*字符前移 */{if(a[i]!='*') a[k++]=a[i];i++;}a[k]='\0';
}

34.只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。

void  fun( char *a, int n,int h,int e )
{ char b[81],*c,*d;int i=0,j=0;c=a;d=a;c=c+h;d=d+n-e-1;while (c<=d){b[i]=*c;i++;c++;}    b[i]='\0'; i=0;while (b[i]){a[j]=b[i];j++;i++;} a[j]='\0';
}

35.将字符串中的前导*号全部移到字符串的尾部

void  fun( char *a )
{/* 以下代码仅供参考 */char *p,*q;int n=0;p=a;while(*p=='*')  /* 统计串头'*'个数n */{n++; p++;}q=a;/* 向前复制字符串,请填写相应的语句完成其功能 */while(*p){*q=*p;q++;p++;}for(;n>0;n--)  /* 在串尾补n个'*' */*q++='*';*q='\0';  
}

36.找出学生的最高分

double  fun( STREC *h  )
{STREC *c;double max;c=h->next;max=c->s; while (c->next!=0){c=c->next;if (max<c->s) max=c->s; }return max;
}

37.使数组右上三角元素中的值乘以m

void fun ( int a[][N], int m )
{
int i,j; for(i=0; i<N; i++) for(j=N-1; j>=i; j--) a[i][j]*=m; 
}

38.删除字符串中所有的空格

void fun(char *str)
{
int i,j;for(i=0;*(str+i);i++)if(*(str+i)==32)  { for(j=i+1;*(str+j);j++)*(str+j-1)=*(str+j);*(str+j-1)=0; i=0;}
}

39.将M行N列的二维数组中的数据按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中

void  fun(int  (*s)[10], int  *b, int  *n, int mm, int nn)
{int x,y;for(x=0;x<nn;x++)  for(y=0;y<mm;y++){b[y*nn+x]=*(s[y]+x); (*n)++;}
}

40. 将M行N列的二维数组中的数据按列的顺序依次放到一维数组中

void  fun(int s[][10], int  b[], int  *n, int mm, int nn)
{/* 以下代码仅供参考 */int i,j,np=0;   /* np用作b数组下标 */
for(j=0;j<nn;j++)for(i=0;i<mm;i++)b[np++]=s[i][j];*n=np;
}

41.将放在字符串数组中的M个字符串,按顺序合并组成一个新的字符串

void  fun(char  a[M][N], char  *b)
{int i,j,d=0;             for(i=0;i<100;i++)b[i]=0; for(i=0,d=0;i<3;i++)    for(j=0;*(a[i]+j);j++){*(b+d)=*(a[i]+j);    d++;}
}

42.若数组中有n个整数,要求把下标从0到p的数组元素平移到数组的最后

void  fun(int  *w, int  p, int  n)
{int x,j,ch;for(x=0;x<=p;x++){ch=w[0];for(j=1;j<n;j++)  {w[j-1]=w[j];}w[n-1]=ch;  }
}

43.把第1到第m个字符平移到字符串的最后,把m+1到最后的字符移到字符串的前部

void  fun(char  *w, int  m)  /* 可调用fun1函数左移字符 */
{int i=0,x,j;char ch;for(j=0;w[j];j++)i++;for(x=0;x<m;x++){ch=w[0];for(j=1;j<i;j++) {w[j-1]=w[j];}w[i-1]=ch; }
}

44.将M行N列的二维数组中的字符数据按列的顺序依次放到一个字符串中。

void  fun(char  s[][N], char *b)
{int i,j,n=0;for(i=0; i < N;i++)  /* 请填写相应语句完成其功能 */{for (j=0;j<M;j++)b[n++]=s[j][i];}b[n]='\0';
}

45.删除一维数组中所有相同的数,使之只剩一个。

int  fun(int  a[], int  n)
{int i,j,x;  for(i=0;i<n-1;i++)   for(j=i+1;j<n;j++)if(a[j]==a[i]){for(x=j+1;x<n;x++)a[x-1]=a[x];n--;j--;} return(n); 
}

46.统计个年龄段的人数

void  fun( int  *a,  int  *b)
{int i;for(i=0;i<M;i++)  b[i]=0;for(i=0;i<N;i++)  b[*(a+i)/10>10?10:*(a+i)/10]++;
}

47.统计一行字符串中单词的个数

int  fun( char  *s)
{int i=1,j=0;while(*s){if((i==1) && (*s!=32)) {j++;i=0;} if(*s==32)i=1; s++; }return j; 
}

48.计算并输出给定整数n的所有因子之和

int fun(int  n)
{int i,s=0;if(n<1000){for (i=2;i<n;i++)if (n%i==0) s=s+i;}return (s);
}

49.判断字符串是否为回文

int fun(char *str)
{int count=strlen(str),i; for(i=0;i<=count/2;i++)if(str[i]!=str[count-i-1]){return 0;	break;}return 1;
}

50.统计字符串中数字字符的个数

int fun(char  *s)
{int n=0;while(*s!='\0'){if(*s>='0'&&*s<='9'){n++;}s++;}return n;
}

51.查找x在s所指数组中下标的位置作为函数值返回

int  fun( int *s, int x)
{int i;for(i=0;i<N;i++){if(s[i]==x)return i;}
return -1;
}

52. 将形参s所指的字符串放入形参a所指的字符数组中,使a中存放同样的字符串

void fun(int  a[],  int  n , int  *max, int  *d )
{int i,base,subscript;base=a[0]; subscript=0; for(i=1;i<n;i++) {if(a[i]>base) { subscript=i;base=a[i];}}*max=base; *d=subscript; 
}

53.将一个数字字符串转换成与其面值相同的长整型整数

long  fun( char  *s )
{   int i,n;long a,r;a=0;r=0;n=strlen(s);for(i=0;i<n;i++){a=*(s+i)-48;r=r*10+a;}return r;
}

54.去掉一个最高分和一个最低分,然后求平均值

double fun(double  a[ ] , int  n)
{double min,max,s,avg;int i;min=a[0];max=a[0];s=0.0;avg=0.0;for(i=0;i<n;i++){if(min>a[i])min=a[i];if(max<a[i])max=a[i];s+=a[i];}avg=(s-min-max)/(n-2);return avg;
}

55.分别统计二维数组中A和C的个数

void  fun( char (*t)[M], int *a ,int *c)
{int i,j;*a=0;*c=0;for(i=0;i<M;i++){for(j=0;j<M;j++){if(t[i][j]==67){*c=*c+1;}else if(t[i][j]==65){*a=*a+1;}elsecontinue;}}
}

56.判断形参n中的正整数是几位数

int  fun(int  n)
{int k=0;while(n!=0){n=n/10;k++;}return k;
}

57.在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中

void  fun(int  *a, int  *b, int  *c, int  *d)
{int max,min;max=*a;min=*d;if(*b>max){max=*b;}if(*c>max){max=*c;}if(*d>max){max=*d;}if(*a<min){min=*a;}if(*b<min){min=*b;}if(*c<min){min=*c;}*a=max;*d=min;
}

58.判断t所指字符串中的字母是否由连续递增字母序列组成

int  fun( char  *t )
{int k=0,i=0;while(t[i+1]){if(t[i+1]==t[i]+1){k++;i++;}else{k=0;break;}}return k;
}

59.求n以内的所有四叶玫瑰数并逐个放到result所指的数组中

int fun(int n, int result[])
{ int i,j,k=0,s;for(i=1000;i<n;i++){s=0;j=i;while(j>0){s+=(j%10)*(j%10)*(j%10)*(j%10);j=j/10;}if (s==i) result[k++]=i;}return k;
}

60.将一个四位数的每一位分离出来,并依次存放在结构体变量中

struct BITS  fun(int  n)
{struct BITS  res;
/* 在这里将函数代码补充完整 */res.m0=n%10;res.m1=n/10%10;res.m2=n/100%10;res.m3=n/1000%10;
return res;
}

61.分别统计两个字母出现的次数

void fun(char*sp ,int *ct)
{int i;ct[0]=0;ct[1]=0;ct[2]=0;for(i=0;sp[i];i++){if (sp[i]=='e' && sp[i+1]=='a') ct[0]++;if (sp[i]=='o' && sp[i+1]=='u') ct[1]++;if (sp[i]=='i' && sp[i+1]=='u') ct[2]++;}
}

62.统计指数数组中偶数的个数

int fun(int x[],double *ave)
{int i,n=0;*ave=0;for(i=0;i<N;i++)if(x[i]%2==0) {n++;*ave+=x[i];}*ave/=n;return n;
}

63.计算指数数组中n个幂数之和

double fun(struct mpow *x,int n)
{int i,j;double s=0,m=1;for(i=0;i<n;i++){  m=1;for(j=0;j<x[i].t;j++)m=m*x[i].a;s+=m;}
return s;
}

64.求一个双精度数的整数部分和小数部分

void  fun(  double  aa, int  *x, double  *y )
{ *x=(int)(aa);*y=aa-*x;}

65.统计奇数、偶数的个数,并计算数平均值

double fun( int xx[], int *yy )
{int i,n=0,m=0;double s1=0,s2=0;for(i=0;i<N;i++)if(xx[i]%2==0) {s1+=xx[i];n++;}else {s2+=xx[i];m++;}if (n>m) {*yy=n;return s1/n;}else {*yy=m;return s2/m;}
}

66.统计指数数组中能被e整除的元素个数,并计算不能被e整除的元素之和

int fun(int x[], int e, int *sum)
{int i,n=0;*sum=0;for(i=0;i<N;i++)if(x[i]%e==0) n++;else *sum+=x[i];return n;}

67.验证参数n是否可以分解成2个素数相乘,并通过指针变更x,y返回分解后2个素数值

int fun(int n,int *x,int *y)
{int k,flag=0;int k2;k=2;do {k2=n/k;if (k*k2==n)if (prime(k) && prime(k2) && k<k2) {flag=1; *x=k; *y=k2; break;}k+=1;}while (k<k2);return flag;
}

68.找出用1,2,3,4四个数字能组成多少个互不相同的且无重复数字的三位数,从小到大排列

int fun(int xxx[])
{
int i,j,l,k=0;for(i=1;i<5;i++)for(j=1;j<5;j++)if (j!=i) for(l=1;l<5;l++)if (l!=j && l!=i)xxx[k++]=i*100+j*10+l;return k;}

69.找出最大值和最小值,并与第一个元素交换

void fun (int *dp,int n,int upordown)
{
int i,dorx;dorx=0;if(upordown==0){for(i=1;i<n;i++)if (dp[dorx]>dp[i]) dorx=i;}else{ for(i=1;i<n;i++)if (dp[dorx]<dp[i]) dorx=i;}i=dp[0];dp[0]=dp[dorx];dp[dorx]=i;
}

70.将数组主对角线的元素分别乘以2,次对角线的元素分别乘以3,依次放入所指的数组

void fun( int a[N][N],int *p)
{int i;for(i=0;i<N;i++){p[i]=a[i][i]*2;p[N+i]=a[i][N-1-i]*3;}
}

71.统计指数数组中能被e整除的元素个数

int fun(int x[],int n,int e,int *num)
{int i,s=0;*num=0;for(i=0;i<n;i++)if(x[i]%e==0){s+=x[i];(*num)++;}return s;
}

72.求1000以内所有恰好能分解成10组两个素数之和的偶数

int fun(int m, int a[])
{ int k, s, count, i=0;for(k=6; k<=m; k+=2){   count = 0;/* 请在此处填写代码 */for(s=2;s<=k/2;s++)if(prime(s) && prime(k-s)) count++;if (count == 10) {printf("%d\n", k);a[i++] = k;}}return i;
}

本文标签: 程序设计