首页 > 代码库 > C语言学习_test3

C语言学习_test3

1.判断一个数是都是回文数

#include <stdio.h>


int main(void)
{
int a[100] = {0};
int n;
printf("input n:");
scanf("%d", &n);
int i, k, j;
k = 0;
j = 0;


while(n != 0)
{
a[k++] = n % 10;
n = n / 10;
j++;
}
for(i = 0; i < j; i++)
if(a[i] == a[j-i-1])
printf("ok ");
else
printf("no");
return 0;
}

如果全部输出ok,则是回文数,如果有一个no,则不是回文数。

这段代码将数转换成数组,利用数组的优势来确定是否是回文数,效率虽然不高,但是这种思想还是挺不错。


用指针实现排序:

#include <stdio.h>


int main(void)
{
int i, data[8], *p1, *p2, temp;
p1 = data;
printf("input data:");
for(i = 0; i < 8 ; i++)
{
scanf("%d", p1);
p1++;
}
for(p1 = data; p1 < data+8-1; p1++)
for(p2 = p1+1; p2 < data+8; p2++)
if(*p1 < *p2)
{
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
for(i = 0, p1 = data; i < 8; i++, p1++)
printf("%6d", *p1);


return 0;
}

指针一直是c语言最头疼的一部分,也是最好的一部分,指针基本上是c语言所独有的,这是一段比较简单的程序,只要理解以下几点就OK:

1.int   a, *p;

 *p = a;

 p = &a;

int *p是一个int * 数据类型,*p是一个指向int型的指针,p是一个地址,但是它的基础是*p必须只想一个地址。

2.数组其实也能算是指针,data = http://www.mamicode.com/data[0],它代表数组的首地址。

所以p = data;

3.假设a是一个常数,则*(p+a) = data[a] .