GDPU C语言 天码行空9

填空题

1. 指针+排序 +数组GDPU C语言 天码行空9_第1张图片

输入

n=5
30 85 12 77 6

输出

6 12 30 77 85 

代码

#include

#define N 10

void sort(int *x,int n)// *x 是 数组 a 的地址
{
    int i,j,k,t;

    for(i=0;i<n-1;i++)//从前往后枚举 坑位
    {
        k=i;      
        for(j=i+1;j<n;j++)    
            if(x[k]>x[j])//每轮找最小值放在 前边的坑位 里边        
                k=j;

        t=x[i],x[i]=x[k],x[k]=t;// 交换
    }
}

int main()
{
    int a[N],n,*p;

    scanf("n=%d",&n);              

    for(p=a;p<a+n;p++)//数组名 是 首元素地址,数组元素在内存中的地址是连续的
        scanf("%d",p); 

    sort(a,n);

    for(p=a;p<a+n;p++)
        printf("%d ",*p);
        
    printf("\n");

    return 0;
}
#include

#define N 10

void sort(int *x,int n)// *x 是 数组 a 的地址
{
    int i,j,k,t;

    for(i=0;i<n-1;i++)//从前往后枚举 坑位
    {
        k=i;      
        for(j=i+1;j<n;j++)    
            if(x[k]>x[j])//每轮找最小值放在 前边的坑位 里边        
                k=j;

        t=x[i],x[i]=x[k],x[k]=t;// 交换
    }
}

int main()
{
    int a[N],n,*p;

    scanf("n=%d",&n);              

    for(p=a;p<a+n;p++)//数组名 是 首元素地址,数组元素在内存中的地址是连续的
        scanf("%d",p); 

    sort(a,n);

    for(p=a;p<a+n;p++)
        printf("%d ",*p);
        
    printf("\n");

    return 0;
}

2. 指针+字符型转整型

GDPU C语言 天码行空9_第2张图片

输入

http://99shufu.123love55

输入

  99  123  55

⭐ 注意数据类型
⭐ 源代码

#include 

int getdig(char *p, int *q)
{
	int i = 0;//记录数字的个数,并作为返回值返回
	for(; *p != '\0'; p++)
	if(*p >= '0' && *p <= '9')
	{
		*q = *p-'0';//字符型转整型
		p++;
		while(*p != '\0' && (*p >= '0' && *p <= '9'))
			*q = *q * 10 + (*p++ -'0');//字符数组指针后移
		i++;//数字数量 ++
		q++;//数字数组指针后移一位
	}
	return i;   
}

int main()
{
	char str[100], *p = str;
	int a[100], *q = a, count = 0;
	gets(p);
	count = getdig(p, q);;
	for(q = a; q < a + count; q++)
		printf("%4d", *q);
}

编程题

1. 字符删除问题

GDPU C语言 天码行空9_第3张图片


⭐ 注意输入输出格式问题

#include 

#define N 100000

int main()
{
	char a[N],*i,x;

	//gets(a);//gets 读字符串会吃掉回车
	scanf("%s\n", &a);//scanf不会把 enter (回车)吃掉,将会影响下一次读入

	scanf("%c", &x);
	printf("After delete:\n");
	for(i = a; *i != '\0'; i++)
	{
		if(x != *i)
			printf("%c", *i);
	}
	return 0;
}

代码片段

1. 递归函数计算x的n次方

GDPU C语言 天码行空9_第4张图片
⭐ 递归出口是 0 次方

#include "stdio.h"

/*
//复习一下快速幂
double power(double x, int n) //
{
	double res = 1.0;
	while(n){
		if(n & 1)
			res *= x;
		x *= x;
		n >>= 1;
	}
	return res;
}
*/

double power(double x, int n) //
{
	// 递归出口
	if(n == 0)
		return 1;

	return x*power(x, n - 1);//第n个x 乘于 x的(n-1)次方 == x的n次方
}

int main()
{
	double x, a;
	int n;
	scanf("%lf,%d", &x, &n);
	a = power(x, n);
	printf("a=%f\n", a);
	return 0;
}

2. 递归方法求Fibonacci数列第n项

GDPU C语言 天码行空9_第5张图片


⭐ 递归出口:斐波那契第一第二项为 1

#include "stdio.h"
int fib(int n)
{
	if(n == 1 || n == 2)
		return 1;
	return fib(n - 1) + fib(n - 2);
}

int main()
{
	int n;
	scanf("%d", &n);
	printf("NO%d=%d\n", n, fib(n));
	return 0;
}

3. 递归实现十进制转二进制

GDPU C语言 天码行空9_第6张图片


⭐ 先向下递归再输出

#include "stdio.h"
void dec2bin(int n)
{
	if(n == 0)//递归出口
		return;
	int x = n % 2;
	dec2bin(n / 2);
	printf("%d", x);
}

int main()
{
	int n;
	scanf("%d", &n);
	dec2bin(n);
	printf("\n");
	return 0;
}

4. 数组元素循环移位问题(左移)

GDPU C语言 天码行空9_第7张图片


⭐ 数组传参传的 是 地址

#include "stdio.h"
#define N 10
void cycle(int s[], int n, int count);//n表示数组长度,count表示移动的位置数
int main()
{
	int i, n, s[N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	scanf("%d", &n);//移动的位数
	printf("Before:\n");
	for(i = 0; i<N; i++)
		printf("%4d", s[i]);

	cycle(s, N, n);

	printf("\nAfter:\n");
	for(i = 0; i<N; i++)
		printf("%4d", s[i]);
	printf("\n");
	return 0;
}
void cycle(int s[], int n, int count)
{
	if(count == 0)
		return;
	int t = s[0],i;
	for(i = 0; i < n-1; i++)
	{
		s[i] = s[i + 1];
	}
	s[n-1] = t;
	cycle(s, n, count - 1);
}

5. 实数拆分问题

GDPU C语言 天码行空9_第8张图片
GDPU C语言 天码行空9_第9张图片


⭐ 引用传递

#include "stdio.h"
void splitfloat(double x, int *intpart, double *fracpart);
int main()
{
	double a, fracpart;
	int intpart;
	scanf("%lf", &a);
	splitfloat(a, &intpart, &fracpart);//传地址

	printf("INT:%d\nFRAC:%lf\n", intpart, fracpart);
	return 0;
}
void splitfloat(double x, int *intpart, double *fracpart)
{
	*intpart = (int)x;//浮点型 强转成 整型 向下取整(丢弃浮点数)
	*fracpart = x - (double)*intpart;
}

6. 递归方法计算关于x的多项式的和

GDPU C语言 天码行空9_第10张图片
GDPU C语言 天码行空9_第11张图片

⭐ 递归出口 + 找规律

#include "stdio.h"
double f(double x, int n)
{
	if(n == 1)//递归出口
		return x;
	int flag = 1;// flag 记录当前项的正负
	if(n % 2 == 0)
		flag = -1;
	return flag * pow(x, n) + f(x, n - 1);
}

int main()
{
	double x, a;
	int n;
	scanf("%lf,%d", &x, &n);
	a = f(x, n);
	printf("a=%f\n", a);
	return 0;
}

你可能感兴趣的:(大学水课,c语言)