一题整数算法问题和三题字符串问题!

整数算法

1、输入5个数(含负数、小数)将它们按由小到大的顺序排列起来。

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[])
{
    int i, j;
    float a[30];
    float tmp = 0.0;

    for(i = 1; i < argc; i++)
    {
        printf("%s ", argv[i]);

        a[i] = atof(argv[i]);
    }
    printf("\n");

    //冒泡
    for(i = 0; i < argc - 2; i++)//减去本身这个参数
    {
        for(j = 1; j < argc - 1 - i; j++)
        {
            if(a[j] > a[j + 1])
            {
                tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
    printf("Output:  ");

    for(i = 1; i < argc; i++)
    {
        printf("%.3f  ", a[i]);
    }
    printf("\n");
    return 0;
}

输入:./a.out  -1  2.1  -3  5  7 输出: -3 -1 2.1 5 7

字符串问题

2、请编写一个C函数,该函数将一个字符串逆序。

//请编写一个C函数,该函数将一个字符串逆序
#include<stdio.h>
#include<string.h>

void soft(char *ch)
{
	char tmp;
	char *end = ch + strlen(ch) - 1;
	while(end > ch)
	{
		tmp = *ch;
		*ch = *end;
		*end = tmp;
		--end;
		++ch;
	}
}

int main()
{
	char ch[30] = {0};
	char *p = ch;
	
	printf("输入字符串:");
	scanf("%s", p);
	
	soft(ch);
	
	printf("%s  ", p);
	printf("\n");
	
	return 0;
}

3、编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出

#include<stdio.h>

void change(int num, int n)
{
	int r;
	
	r = num % n;  //任意数可以用除以进制的方法算出进制表达式
	if(num > 0)
	{
		change (num / n, n);
	}
	printf("%d", r);
}

int main()
{
	int num,n;
	
	printf("Please enter a number: ");
	scanf("%d", &num);
	
	printf("输入要转换的进制: ", &n);
	scanf("%d", &n);
	
	change(num, n);
	
	printf("\n");
	
	return 0;
}

4、输入一个字符串,计算字符串中子串出现的次字数。

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

int main()
{
	char a[100];
	printf("输入字符串:");
	scanf("%s", a);
	char *c = a;
	
	char b[10];
	printf("输入字串:");
	scanf("%s", b);
	char *d = b;
	
	int n;
	int num = 0;
	n = strlen(d);
	
	while(strlen(c) > 0)
	{
		if(strncmp(c,d,n) == 0)
		{
			num++; //次数计数
			c = c + n;
		}
		else
		{
			c++;
		}
	}
	printf("%d\n",num);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/wow66lfy/article/details/81264831