//1.一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。
//找出这两个数字,编程实现。
//找出这两个数字,编程实现。
#include<stdio.h>
#include<stdlib.h>//找单独出现的数,一般方法
void find(int arr[], int len)
{
int i, j, k;
for (i = 0; i < len; ++i)
{
k = 0;
for (j = 0; j < len; ++j)
{
if (arr[i] == arr[j])
{
k++;
}
}
if (k == 1)
{
printf("%d\n", arr[i]);
}
}
}
#include<stdlib.h>//找单独出现的数,一般方法
void find(int arr[], int len)
{
int i, j, k;
for (i = 0; i < len; ++i)
{
k = 0;
for (j = 0; j < len; ++j)
{
if (arr[i] == arr[j])
{
k++;
}
}
if (k == 1)
{
printf("%d\n", arr[i]);
}
}
}
int main()
{
int arr[] = { 1, 2, 3, 4, 1, 2, 3, 5 };
int len = 0;
len = sizeof(arr) / sizeof(arr[0]);
find(arr, len);
}
{
int arr[] = { 1, 2, 3, 4, 1, 2, 3, 5 };
int len = 0;
len = sizeof(arr) / sizeof(arr[0]);
find(arr, len);
}
//2.喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。
#include<stdio.h>
#include<windows.h>
int Buysoda(int M)
{
static int flag = 0;
if (2 * M + flag < 2) //判断能否购买汽水
{
return 0;
}
if (M % 2 == 0) //M瓶汽水的瓶盖是偶数,本次兑换刚好换完
{
return M + Buysoda(M / 2);
}
else if (M % 2 == 1 && flag == 0)//M瓶汽水的瓶盖是奇数,且没有多余的瓶盖,留下一个瓶盖,剩下的全部兑换
{
flag = 1; //表示本次兑换剩下一个瓶盖,提供下次兑换
return M + Buysoda(M / 2);
}
else if (M % 2 == 1 && flag == 1)//M瓶汽水的瓶盖是奇数,且有多余的瓶盖,加上这个瓶盖一起兑换
{
flag = 0; //之前的瓶盖已被用掉
return M + Buysoda(M / 2 + 1);
}
return 0;
}
#include<stdio.h>
#include<windows.h>
int Buysoda(int M)
{
static int flag = 0;
if (2 * M + flag < 2) //判断能否购买汽水
{
return 0;
}
if (M % 2 == 0) //M瓶汽水的瓶盖是偶数,本次兑换刚好换完
{
return M + Buysoda(M / 2);
}
else if (M % 2 == 1 && flag == 0)//M瓶汽水的瓶盖是奇数,且没有多余的瓶盖,留下一个瓶盖,剩下的全部兑换
{
flag = 1; //表示本次兑换剩下一个瓶盖,提供下次兑换
return M + Buysoda(M / 2);
}
else if (M % 2 == 1 && flag == 1)//M瓶汽水的瓶盖是奇数,且有多余的瓶盖,加上这个瓶盖一起兑换
{
flag = 0; //之前的瓶盖已被用掉
return M + Buysoda(M / 2 + 1);
}
return 0;
}
int main()
{
int money = 20;
int num = 0;
num = Buysoda(money);
printf("可以买 %d 瓶汽水\n", num);
}
{
int money = 20;
int num = 0;
num = Buysoda(money);
printf("可以买 %d 瓶汽水\n", num);
}
一级指针存放变量的地址,指向的值是变量的内容。如int* p={1,2,3}, p=数组的首地址,*p=数组的第一个值; 二级指针存放一级指针的地址,指向一级指针。如int*p ={1,2,3}, int**pp=&p,pp=指针p的首地址,*pp=数组的首地址,**pp=数组第一个值1。
一维数组:单行单列的数组。
二维数组:多行多列数组。
数组和指针的关系:数组并不是指针,.数组和指针可以互换。
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针
数组指针:a pointer to an array,即指向数组的指针
函数指针:顾名思义,函数指针说的就是一个指针,但这个指针指向的函数,不是普通的基本数据类型或者类对象。
函数指针数组:首先是个数组,数组的元素是函数指针。
函数指针数组指针:首先它是一个指针,这个指针指向数组,这个数组里面存的都是指向函数的指针。
本文提供了两个具体的编程实例:一是从数组中找出仅出现一次的两个数字,并给出C语言实现方案;二是通过递归算法解决利用空瓶兑换汽水的问题。此外,还介绍了指针、数组的概念及它们之间的关系。
5658

被折叠的 条评论
为什么被折叠?



