C语言用函数解题(急)100财富值

一、对一组随机整数编写方法实现以下操作:
1.使用随机类产生20个10000以内的随机整数。
2.输出一组整数,每行输出5个整数,每个整数占8个字符宽度,整数实现右对齐。
3.求一组整数的最大值。
4.求一组整数的平均值。
5.输出低于平均值的一组整数,格式同1。
6.对一组整数进行升序排序,并输出。
7.查找指定整数的在一组整数中的位置(从0开始计算)。
8.在一组整数中指定位置(从0开始计算)插入指定整数,并输出插入后的这组整数。
9.在主方法中调用1-8的方法,检查方法的正确性。
二、编写调用方法实现字符串的逆序输出。
三、判断一个字符串是否是回文(abcba或abccba都是回文)
四、张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,输出以他们的年龄为前4项的等差数列的前20项。
五、爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问这条阶梯共有多少阶?
四五两题已解决,请问前三题怎么用函数写代码?

第三题。看你四五题都做了 就不发了
#include<stdio.h>
#include<string.h>
int main()
{
char digits[100], i, n;
scanf("%s",digits);
n = strlen(digits);
for(i=0;i<n/2;i++)
{
if(digits[i]!=digits[n-i-1])
{
printf("bu shi huiwenshu\n");
return 0;
}
}
printf("shi huiwenshu\n");
return 0;
第二题。
void rp(const char* p)
{
if(*p)
{
rp(p+1);
putchar(*p);
}
}
int main()
{
char pp[100];
gets(pp);
rp(pp);
}追问

哦,太感谢了!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-23

#include <stdio.h>

#include<time.h>

#include<stdlib.h>

int tab[21];

 

void print(int num)

{

 int i=0,j=0;

 

 for(i=0;i<num;i++)

 {

  printf("%8d",tab[i]);

  j++;

  if(j%5==0)

   putchar('\n');

 }

 putchar('\n');

 

}

void init(void)

{

 int i=0,j=0;

 srand((unsigned)time(NULL));

 for(i=0;i<20;i++)

  tab[i]=rand()%10000;

 printf("\n排序前元素值:\n");

 

 

}

void exchange(int*a,int*b)

{

 int temp=0;

 temp=*a;

 *a=*b;

 *b=temp;

}

void sort()

{

 int i=0,j=0;

 for(i=0;i<19;i++)

 {

  for(j=i+1;j<20;j++)

   if(tab[i]>tab[j])

   {

    exchange(&tab[i],&tab[j]);

   }

 }

}

 

void find(int beg,int end,int num)

{

 int mid=0;

 

 

 while(beg<=end)

 {

  mid=(beg+end)/2;

  if(tab[mid]==num)

  {

   printf("第%d个元素是要找的元素\n",mid);

   break;

  }

  else if(tab[mid]<num)

   {

    beg=mid+1;

   }

   else

   {

    end=mid-1;

   }

 }

 if(beg>end)

 {

  printf("查找失败!\n");

 }

 

}

void insert(int i)

{

 int j=0,k=0;

 for(j=0;j<20;j++)

 {

  if(i<tab[j])

   break; 

 }

 for(k=20;k>j;k--)

 {

  tab[k]=tab[k-1];

 }

 tab[j]=i;

}

int main()

{

 int i=0,j=0,max=0;

 double aver=0;

 max=tab[0];

 init();

 print(20);

 for(i=0;i<20;i++)

 {

  if(tab[i]>max)

   max=tab[i];

  aver+=tab[i];

 }

 aver/=20;

 printf("最大值:%d   平均值:%f  \n",max,aver);

 

 j=0;

 printf("小于平均值元素:\n");

 for(i=0;i<20;i++)

 {

  if(tab[i]<aver)

  {

   printf("%8d",tab[i]);

   j++;

   if(j%5==0)

    putchar('\n');

  }

 }

 putchar('\n');

 sort();

 printf("排序后元素值:\n");

 print(20);

 find(0,19,tab[10]);

 insert(2000);

 print(21);

 

 return 0;

}

 

第二题:

#include <stdio.h>

#include<string.h>

void nixu(char *p)

{

 int len;

 char c;

 char*q=NULL;

 len=strlen(p);

 q=p+len-1;

 while(p<q)

 {

  c=*p;

  *p=*q;

  *q=c;

  p++;

  q--;

 }

}

void main()

{

 char str[100];

 gets(str);

 puts(str);

 putchar('\n');

 nixu(str);

 puts(str);

 putchar('\n');

 

}

 

第三题:

#include <stdio.h>#include<string.h>

void main()

{

 int i=0,len=0;

 char str[100];

 gets(str);

 puts(str);

 len=strlen(str);

 putchar('\n');

 for(i=0;i<len;i++)

 {

  if(str[i]!=str[len-1-i])

   break;

 }

 if(i==len)

  printf("是回文字符串\n");

 else

   printf("不是回文字符串\n");

 

 putchar('\n');

}

 

 

追问

看了你的代码,我受益匪浅,不过在看到之前结束了问题,很抱歉,怎么才能把悬赏给你呢?

追答

这个我还真不知道。如过你已经给其他人了应该就不能重新给我了。不过你可以再提一个问题我帮你解答一下。

追问

第一题重新提了一下,可以搜到(一、对一组随机整数编写方法实现以下操作
2012-11-23 18:02提问者:钱坡|悬赏分:70|浏览次数:43次)

追答

搜不到啊。找到的还是这一题。你把链接给我吧。

追问

电脑/网络 >
编程语言 >
C/C++ >
按关键词查找:对一组随机整数编写方法实现

第2个回答  2012-11-23
追问

四五两题已解决,请问前三题怎么用函数写代码?

相似回答