输入
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;
}
输入
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);
}
⭐ 注意输入输出格式问题
#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;
}
#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;
}
⭐ 递归出口:斐波那契第一第二项为 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;
}
⭐ 先向下递归再输出
#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;
}
⭐ 数组传参传的 是 地址
#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);
}
⭐ 引用传递
#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;
}
⭐ 递归出口 + 找规律
#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;
}