C语言:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。

//fun函数:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。

 1 #include <stdio.h>
 2 void fun( char *p )
 3 {   char   max,*q;   int   i=0;
 4     max=p[i];
 5     while( p[i]!=0 )
 6     {   if( max<p[i] )
 7     {  max=p[i];
 8 /**********found**********/
 9     q = p + i;//先找到最大值,记录最大值的位置。
10     }
11         i++;
12     }
13 /**********found**********/
14     while(q>p )
15     {  *q=*(q-1);//进行顺序后移。
16        q--;
17     }
18     p[0]=max;
19 }
20 void main()
21 {  char   str[80];
22    printf("Enter a string:  "); gets(str);
23    printf("\nThe original string:      ");  puts(str);
24    fun(str);
25    printf("\nThe string after moving:  ");  puts(str); printf("\n\n");
26 }

//fun函数:根据一下公式求圆周率值,并作为函数返回值。Π/2=1+1/3+1/3*2/5+1/3*2/5*3/7+...

 1 #include <math.h>
 2 #include <stdio.h>
 3 double fun(double  eps)
 4 {  double  s,t;     int  n=1;
 5    s=0.0;
 6 /************found************/
 7    t=1+1/3;
 8    while( t>eps)
 9    {  s+=t;
10       t=t * n/(2*n+1);
11       n++;
12    }
13 /************found************/
14    return (s*2);
15 }
16 void main()
17 {  double  x;
18    printf("\nPlease enter a precision: "); scanf("%lf",&x);
19    printf("\neps=%lf, Pi=%lf\n\n",x,fun(x));
20 }

//规定输入的字符串中只包含字母和*号,fun函数:使字符串的前导*号不得多于n个,若多余n个,则删除多余的*号,若少于或等于n个,则不做处理,字符串尾部和中间的*号不删除。

 1 #include <stdio.h>
 2 void  fun( char *a, int  n )
 3 {
 4     char *b;
 5     b = a;
 6     int i = 0;
 7     while (!(‘A‘ <= *b&&*b <= ‘Z‘))
 8     {
 9         //printf("%c\n", *b);
10         b++;
11         i++;
12     }
13     if (i > n)
14     {
15         a = a + n;
16         while (*b != ‘\0‘)
17         {
18             *a = *b;
19             a++;
20             b++;
21         }
22         *a = ‘\0‘;
23     }
24 }
25
26 void main()
27 {  char  s[81];  int  n;void NONO ();
28    printf("Enter a string:\n");gets(s);
29    printf("Enter n :  ");scanf("%d",&n);
30    fun( s,n );
31    printf("The string after deleted:\n");puts(s);
32    NONO();
33 }
34 void NONO ()
35 {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
36   FILE *in, *out ;
37   int i, n ; char s[81] ;
38   in = fopen("in.dat","r") ;
39   out = fopen("out.dat","w") ;
40   for(i = 0 ; i < 10 ; i++) {
41     fscanf(in, "%s", s) ;
42     fscanf(in, "%d", &n) ;
43     fun(s,n) ;
44     fprintf(out, "%s\n", s) ;
45   }
46   fclose(in) ;
47   fclose(out) ;
48 }

//使用数组完成:

    /*char b[81];
    int z = 0;
    while (*a != ‘\0‘)
    {
        b[z] = *a ;
        z++; a++;
    }
    b[z] = ‘\0‘;
    int i = 0;
    while (!(‘A‘ <= b[i]&&b[i] <= ‘Z‘))
    {
        i++;
    }
    if (i > n)
    {
        while (b[i] != ‘\0‘)
        {
            a = a + n;
            *a = b[i];
            a++;
            i++;
        }
        *a = ‘\0‘;
    }    */

原文地址:https://www.cnblogs.com/ming-4/p/10551482.html

时间: 2024-10-17 09:36:49

C语言:从p所指字符串中找出ASCII码最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。的相关文章

【c语言】第一个只出现一次的字符题目:在字符串中找出第一个只出现一次的字符

// 第一个只出现一次的字符题目:在字符串中找出第一个只出现一次的字符. // 如输入"abaccdeff",则输出'b'. #include <stdio.h> #include <string.h> char find_one(char *str) { int a[256]; int len = strlen(str); int i = 0; memset(a, 0, sizeof(a)); for (i = 0; i<len; i++) { a[st

【C语言】在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出’b’

//在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b' #include <stdio.h> #include <memory.h> char OneTime(char * str) { int data[256]; char *p = str; if (*p == '\0') return '\0'; memset(data, 0, sizeof(data)); while (*p ) { data[*p++]++; //把每种字

在字符串中找出连续最长的数字串 在字符串中找出连续最长的数字串,并把这个串的长度返回

写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存.例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9, #include<iostream> using namespace std; int ContinueMax(char *

在字符串中找出第一个只出现一次的字符

题目: 在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b'. 题目分析: 对于在字符串中找出第一个出现一次的字符,联系ASCII码表,能够得到有256中不同的字符,可以利用字符的编码,将每个字符的编码作为数组的下表,建立一个有256个元素的数组arr[256],将数组中的每一个元素对应统计字符的个数,从字符串的第一个字符进行遍历,遇到一个字符给对应的数组元素加1,当数组中的其中一个元素变到2,则输出这个元素所对应的数组下表,即就是这个字符的ASCII码.

[LeetCode] 在一堆字符串中找出包含相同字符的 group的较快方法,题 Anagrams

题目: Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be in lower-case. class Solution { public: vector<string> anagrams(vector<string> &strs) { } }; 题意本身并不是很清晰,开始我的代码总是报Output Limit Exceeded,

在字符串中找出第一个只出现一次的字符。 如输入“abaccdeff”,则输出&#39;b&#39;。

在字符串中找出第一个只出现一次的字符. 如输入"abaccdeff",则输出'b'. 这个题加一些要求维度只能为n 代码如下: #include <stdio.h> #include <assert.h> char FLetter(char arry[],int len) {              int letterNumber[256] = {0};              int i = 0;              char *ch  = arr

[华为机试练习题]43.在字符串中找出连续最长的数字串

题目 描述: 请一个在字符串中找出连续最长的数字串,并把这个串的长度返回:如果存在长度相同的连续数字串,返回最后一个连续数字串: 注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串"1234"的长度就小于数字串"1359055",如果没有数字,则返回空字符串("")而不是NULL! 样例输入 abcd12345ed125ss123058789 abcd12345ss54761 样例输出 输出123058789,函数返回值9 输出547

华为机试—字符串中找出单词排序

题目: 在给定字符串中找出单词( "单词"由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格.问号.数字等等:另外单个字母不算单词):找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),然后输出到一个新的字符串中:如果某个单词重复出现多次,则只输出一次:如果整个输入的字符串中没有找到单词,请输出空串.输出的单词之间使用一个"空格"隔开,最后一个单词后不加空格. 要求实现函数: void my_word(charinput

华为机试—给定字符串中找出单词

题目: 在给定字符串中找出单词("单词"由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格.问号.数字等等:另外单个字母不算单词):找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),然后输出到一个新的字符串中:如果某个单词重复出现多次,则只输出一次:如果整个输入的字符串中没有找到单词,请输出空串.输出的单词之间使用一个"空格"隔开,最后一个单词后不加空格. 要求实现函数: void my_word(charinput[