| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 425 人关注过本帖
标题:c经典题,希望给大家练练手
只看楼主 加入收藏
programinger
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-9-10
收藏
 问题点数:0 回复次数:0 
c经典题,希望给大家练练手
1    给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
  
#include    <stdio.h>
typedef  struct
{  int  num;
   char  name[10];
}PERSON;
/**********found**********/
void fun(PERSON  ___1___)
{
/**********found**********/
   ___2___  temp;
   if(std[0].num>std[1].num)
  {  temp=std[0];  std[0]=std[1];  std[1]=temp;  }
   if(std[0].num>std[2].num)
  {  temp=std[0];  std[0]=std[2];  std[2]=temp; }
   if(std[1].num>std[2].num)
  {  temp=std[1];  std[1]=std[2];  std[2]=temp;  }
}
main()
{  PERSON  std[ ]={ 5,"Zhanghu",2,"WangLi",6,"LinMin" };
   int  i;
/**********found**********/
   fun(___3___);
   printf("\nThe result is :\n");
   for(i=0; i<3; i++)
      printf("%d,%s\n",std[i].num,std[i].name);
}

2、    给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。
    例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。
  
#include    <stdio.h>
void fun(char  *s, char  *p)
{  int  i, j, n, x, t;
   n=0;
   for(i=0; s[i]!='\0'; i++)  n++;
   for(i=1; i<n-2; i=i+2) {
/**********found**********/
      ___1___;
/**********found**********/
      for(j=___2___+2 ; j<n; j=j+2)
        if(s[t]>s[j]) t=j;
      if(t!=i)
      {  x=s[i]; s[i]=s[t]; s[t]=x; }
   }
   for(i=1,j=0; i<n; i=i+2, j++)  p[j]=s[i];
/**********found**********/
   p[j]=___3___;
}
main()
{  char  s[80]="baawrskjghzlicda", p[50];
   printf("\nThe original string is :  %s\n",s);
   fun(s,p);
   printf("\nThe result is :  %s\n",p);
}

3、    给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵:
        1    2    3
        4    5    6
        7    8    9
计算结果为
        1    0    0
        6    5    0
        10   14   9
  
#include    <stdio.h>
#define    N    4
/**********found**********/
void fun(int  (*t)___1___ )
{  int  i, j;
   for(i=1; i<N; i++)
   {  for(j=0; j<i; j++)
      {
/**********found**********/
         ___2___ =t[i][j]+t[j][i];
/**********found**********/
         ___3___ =0;
      }
   }
}
main()
{  int  t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
   printf("\nThe original array:\n");
   for(i=0; i<N; i++)
   {  for(j=0; j<N; j++)  printf("%2d  ",t[i][j]);
      printf("\n");
   }
   fun(t);
   printf("\nThe result is:\n");
   for(i=0; i<N; i++)
   {  for(j=0; j<N; j++)  printf("%2d  ",t[i][j]);
      printf("\n");
   }
}

搜索更多相关主题的帖子: 经典 
2010-09-10 08:55
快速回复:c经典题,希望给大家练练手
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016547 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved