| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9452 人关注过本帖
标题:fun函数怎么写。都一下谢谢
只看楼主 加入收藏
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:9 
fun函数怎么写。都一下谢谢
/*请编写函数fun,该函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
例如,字符串中原有的内容为ABCDEFGHIJK, m的值为3,移动后,字符串中的内容应该是DEFGHIJKABC。
*/

#include <stdio.h>
#include <string.h>
#define    N    80
void fun1(char *w)  /* 本函数的功能是将字符串中字符循环左移一个位置 */
{
  int i; char t;
  t=w[0];
  for(i=0;i<strlen(w)-1;i++)
    w[i]=w[i+1];
  w[strlen(w)-1]=t;
}
void  fun(char  *w, int  m) /*可调用fun1函数左移字符 */
{


}
main()
{  char  a[N]= "ABCDEFGHIJK";
   int  m;
   printf("The original string:\n");puts(a);
   printf("\n\nEnter  m:  ");scanf("%d",&m);
   fun(a,m);
   printf("\nThe string after moving:\n");puts(a);
   printf("\n\n");
   NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
  FILE *rf, *wf ; char a[N] ; int m, i ;
  rf = fopen("C:\\WEXAM\\24018001\\in.dat","r") ;
  wf = fopen("C:\\WEXAM\\24018001\\out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%d %s", &m, a) ;
    fun(a, m) ;
    fprintf(wf, "%s\n", a) ;
  }
  fclose(rf) ; fclose(wf) ;
}
南开上机题。fun函数如何写。程序NONO()下面这一块又是什么意思。帮讲解一下。谢谢
搜索更多相关主题的帖子: 移动 include 字符串 
2011-08-20 01:52
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:6 
NONO应该是打开一个文本文档,读写文件
void fun(int *a,int m)
{char p[100];
int i,n=0;
for(i=m;a[i];i++)
p[n++]=a[i];
for(i=0;i<m;i++)
p[n++]=a[i];
p[n]=0;
strcpy(a,p);}
2011-08-20 08:05
fenxian2010
Rank: 2
等 级:论坛游民
帖 子:24
专家分:36
注 册:2011-5-5
收藏
得分:6 
程序NONO()主要是针对文件的,如果你仅仅为了考计算机等级之类的,可以不懂它的。。。
为了C当然知道的越多越好了
2011-08-20 08:49
loveshuang
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
收藏
得分:6 
      这个算法的思路可以是:先把前m个字符前后交换,把m+1后面的字符前后交换,再把整体前后交换,时间复杂度为o(n),交换后就是要求的东西
2011-08-20 10:07
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
回复 2楼 hjywyj
如果是要调用上面那个函数。怎么调
2011-08-20 10:57
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
收藏
得分:6 
void  fun(char  *w, int  m) /*可调用fun1函数左移字符 */
{
    int len=strlen(w),i;
    len=m%len;
    for(i=0;i<len;i++)
        fun1(w);
}

顺境逆境切莫止境,得意失意切莫在意。
2011-08-20 11:41
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
收藏
得分:0 
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
  FILE *rf, *wf ; char a[N] ; int m, i ;
  rf = fopen("C:\\WEXAM\\24018001\\in.dat","r") ;//以读的形式打开C:\WEXAM\24018001\in.dat这个文件
  wf = fopen("C:\\WEXAM\\24018001\\out.dat","w") ;//以写的形式打开C:\WEXAM\24018001\out.dat这个文件

  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%d %s", &m, a) ;//读取in.dat文件的第一行内容,该行内容第一个是要向左移运的数目,第二个是要移动的内容
    fun(a, m) ;//进行移动操作
    fprintf(wf, "%s\n", a) ;//把移动结果存进out.dat这个文件里,每个结果一行
  }
  fclose(rf) ; fclose(wf) ;//关闭上面的两个文件
}

顺境逆境切莫止境,得意失意切莫在意。
2011-08-20 11:45
QQ346957135
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:148
专家分:658
注 册:2011-8-9
收藏
得分:6 
在fun函数内用for循环循环fun1函数m次就行了。手机发表的,不好写代码,请见谅。后面那个文件函数,就是建立了一个文件,又输入了字符串,然后用fun实现调序。

A real warrior never quits.
2011-08-20 12:08
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
回复 5楼 刘定邦
void  fun(char  *w, int  m) /*可调用fun1函数左移字符 */
{int i;
m=m%strlen(w);
for(i=0;i<m;i++)
fun1(w);
}
2011-08-20 12:26
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
谢谢 各位大虾
2011-08-20 17:22
快速回复:fun函数怎么写。都一下谢谢
数据加载中...
 
   



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

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