开发手册 欢迎您!
软件开发者资料库

C语言数组使用的编程实例练习

C语言中数组是一个固定长度的存储相同数据类型的数据结构,数组中的元素被存储在一段连续的内存空间中。本文主要介绍C语言中数组使用的编程实例练习题,以及相关示例代码。

1、遍历数组及数据转换

输入一个十进制正整数,并将其转转换成十六进制数输出。不能使用%x输出,代码如下,

#include int main(){    int num = 0;    int a[100];    int i = 0;    int m = 0;    int yushu;    char hex[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };    printf( "请输入一个十进制整数:" );    scanf( "%d", &num );    while ( num > 0 )    {        yushu    = num % 16;        a[i++]    = yushu;        num    = num / 16;    }    printf( "转化为十六进制的数为:0x" );    for ( i = i - 1; i >= 0; i-- ) /* 倒序输出 */    {        m = a[i];        printf( "%c", hex[m] );    }    printf( "\n" );}

2、数组计算回文数

一个正数如果顺着和反过来都是一样的(比如12321,反过来也是12321),那么就称为回文数。回文数不能以0开头,回文数从1开始。使用数组计算回文数,代码如下,

#include int main(){    int m[16], n, i, t, count = 0; long unsigned a, k;    printf( "输出回文数\n" );     for ( n = 1; n < 512; n++ )   /*穷举n的取值范围*/    {        k = 0; t = 1; a = n * n; /*计算n的平方*/        for ( i = 0; a != 0; i++ ) /*从低到高分解数a的每一位存于数组m[1]~m[16]*/        {            m[i] = a % 10;            a /= 10;        }        for (; i > 0; i-- )        {            k += m[i - 1] * t; /*t记录某一位置对应的权值*/ t *= 10;        }        if ( k == n * n )            printf( "%2d%10d%10d\n", ++count, n, n * n );    }    return(0);}

3、求数列的第n项以及前n项之和

求数列:f(1)=f(2)=1;f(n)=3*fn−1+2*fn−2 (n>2)的第n项以及前n项之和,代码如下,

#include int main(){    int n;    int sum = 2;//前两项之和为2    printf("请输入n:\n");    scanf("%d", &n);    int array[100];    array[0] = 1;    array[1] = 1;    int i;    for (i = 2; i < n; i++)    {        array[i] = 3 * array[i - 1] + 2 * array[i - 2];        sum = sum + array[i];    }    printf("%d %d", array[n - 1], sum);    return 0;}

4、求数中的第k位数字

输入一个数n和位数k,它把数n从右边起的第k(k>0)位数字的值给出来,其中n为正整数,若n的位数不足k,则返回值0。代码如下,

#include #include int digit(int n, int k){    int x, a;    int arr[64];    int i = 0;    if (n < pow(10, k - 1))//判断k是否超位数    {        x = 0;    }    else    {        for (i = 0; i <= k - 1; i++)//判断到k位时即可结束        {            a = n % 10;            n = n / 10;            arr[i] = a;        }        x = arr[k - 1];    }    return x;}int main(){    int n, k;    printf("请输入n和k:\n");    scanf("%d %d", &n, &k);    printf("%d", digit(n, k));    return 0;}