32.练习

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
#include <string.h>

int i;   //-1
int main()
{
    i--;
    //sizeof这个操作符,算出的结果的类型是unsigned int
    //有符号整形和有符号整形比大小的时候,会有符号整形改成无符号整形,再进行比较
    if (i > sizeof(i))
    {
        printf(">\n");
    }
    else
    {
        printf("<\n");
    }
    return 0;
}


求由a组成的前n项之和 - 不考虑溢出,其中a是一个数字
int main()
{
    int n = 0;
    int a = 0;
    scanf("%d %d", &a,&n);
    int i = 0;
    int sum = 0;
    int ret = 0;
    for (i = 0;i < n;i++)
    {
        //算出一项
        ret = ret * 10 + a;
        sum = sum + ret;
    }
    printf("sum = %d\n", sum); //24690
    return 0;
}

写一个函数打印arr数组的内容,不使用数组下标,使用指针
arr是一个整形的一维数组
int main()
{
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    int* p = arr;
    int sz = sizeof(arr) / sizeof(arr[0]);
    int i = 0;
    for (i = 0;i < sz;i++)
    {
        printf("%d ", *(p + i));
    }
    return 0 ;
}

求出0 - 100000之间的所有"水仙花数"并输出
"水仙花数"是指一个n位数,其各位数字的n次方之和正好等于该数本身
如:153= 1 ^ 3 + 5 ^ 3 + 3 ^ 3
int main()
{
    int i = 0;
    for (i = 0;i <= 100000;i++)
    {
        //判断i是否为自幂数
        //1.计算i的位数 - n
        int n = 1;
        int tmp = i;
        while (tmp / 10)
        {
            n++;
            tmp = tmp / 10;
        }
        //2.计算i的每一位的n次方之和
        tmp = i;
        int sum = 0;
        while (tmp)
        {
            //pow是用来求次方数,需要引用头文件math.h
            sum += pow(tmp % 10, n);   //(tmp%10)^n
            tmp = tmp / 10;
        }
        //3.判断
        if (sum == i)
        {
            printf("%d ", i);
        }
    }
    return 0;
}

输出结果?
int main()
{
    unsigned long pulArray[] = { 6,7,8,9,10 };
    unsigned long* pulPtr;
    pulPtr = pulArray;
    *(pulPtr + 3) += 3;
    printf("%d , %d\n", *pulPtr, *(pulPtr + 3));         // 6  12
    return 0;
}

输出结果?
struct stu
{
    int num;
    char name[10];
    int age;
};
void fun(struct stu* p)
{
    printf("%s\n", (*p).name);
    return;
}
int main()
{
    struct stu students[3] = {   {9810,"zhang",20},
                                             {9802,"wang",19},
                                             {9803,"zhao",18}
                                          };
    fun(students + 1); //wang
    return 0;
}

下面关于指针运算说法正确的是: ( C ) 
A:整形指针+1,向后偏移一个字节.                           //4个字节
B:指针-指针得到的是指针和指针之间的字节个数   //指针之间的元素
C:整形指针解引用操作访问4个字节                
D:指针不能比大小                                                  //error

输出a的数据,不能填入的内容是: ( B )
struct S
{
    int a;
    int b;
};
int main()
{
    struct S a, * p = &a;
    a.a = 99;
    printf("%d\n", ___________);
    return 0;
}
A: a.a
B: *p.a          //.的优先级比*高
C: p->a
D: (*p).a

写一个函数,可以逆序字符串的内容
void reverse(char* str)
{
    assert(str != NULL);
    int len = strlen(str);
    char* left = str;
    char* right = str + len - 1;

    while (left < right)
    {
        char tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
}
int main()
{
    char arr[] = "abcdef";        //fedcba
    reverse(arr);
    printf("%s\n",arr);

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值