日常笔记。


//    .结构体.成员名          (*ps).age 等价于 ps->age
//   ->结构体指针->成员名     
struct Stu
{
    char name[20];
    int age;
    double score;
};

void set_stu(struct Stu* ps)
{
    strcpy(ps->name, "zhangsan");
    ps->age = 20;
    ps->score = 100.0;
}
void print_stu(struct Stu* ps)
{
    printf("%s %d %lf\n", ps->name, ps->age, ps->score);

}


int main()
{
    struct Stu s = { 0 };
    set_stu(&s);
    print_stu(&s);

    return 0;
}

//整形提升
int main()
{
    char a = 5;
    char b = 126;
    char c = a + b;
    printf("%d", c);
    return 0;
}


编码实现:求一个整数存储在内存中的二进制中1的个数

int main()
{
    int num = 10;
    int count = 0;
    while (num)
    {
        if (num % 2 == 1)
            count++;
        num = num / 2;
    }
    printf("二进制中1的个数=%d\n", count);
    return 0;
}


int main()
{
    int num = 10;
    int i = 0;
    int count = 0;
    while (num)
    {
            count++;
            num = num & (num - 1);
    }
    printf("二进制中1的个数=%d\n", count);
    return 0;
}


void test1(int arr[])
{
    printf("%d\n", sizeof(arr));//(2)
}
void test2(char ch[])
{
    printf("%d\n", sizeof(ch));//(4)
}
int main() {
    int arr[10] = { 0 };
    char ch[10] = { 0 };
    printf("%d\n", sizeof(arr));//(1)
    printf("%d\n", sizeof(ch));//(3)
    test1(arr);
    test2(ch);
    return 0;
}
 
 
 
// 第一行先输入有几个数字
// 第二行输入几个随机数
// 第三行输入需要删除的数字
//输出为一行,删除指定数字之后的序列

int main()
{
    int n = 0;
    scanf("%d", &n);//规定输入数字的个数
    int arr[50];
    int i = 0;
    //输入随机数字
    for (i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    int del = 0;
    scanf("%d", &del);//输入需要删除的数字
    int j = 0;//作为下标锁定的位置是存放不删除的数字
    for (i = 0; i < n; i++)
    {
        if (arr[i] != del)
        {
            arr[j++] = arr[i];
        }
    }
    for (i = 0; i < j; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

//输入n个成绩,换行输出n个成绩中最高分和最低分的差
 //第一行输入成绩个数
//第二行输入成绩,空格隔开
//输出n个成绩中最高分和最低分的差

int main()
{
    int n = 0;
    scanf("%d", &n);
    int arr[50];
    int i = 0;
    for (i = 0; i < n; i++)
    {
        scanf("%d ", &arr[i]);
    }
    int max = arr[0];
    for (i = 1; i < n; i++)
    {
        if (arr[i] > max)
            arr[i] = max;
    }
    int min = arr[0];
    for (i = 1; i < n; i++)
    {
        if (min > arr[i])
            min = arr[i];
    }
    printf("%d\n", max - min); 
    return 0;
}

int main()
{
    int n=0;
    scanf("%d", &n);
    int arr[10];
    int i = 0;
    int max = 0;
    int min = 100;
    for (i = 0; i < n; i++)
    {
        scanf("%d ", &arr[i]);
        if (arr[i]>max)
            max = arr[i];
        if (arr[i]<min)
            min = arr[i];
    }
    printf("%d", max-min);
    return 0;
}

//输入一个字母,判断是否是大写,  大写换成小写,小写换成大写
//多组输入,每行输入一个字母
 
int main()
{
    char ch = 0;
    //scanf读取成功的时候,返回的是读取的数据个数
    //scanf函数在读取失败的时候返回EOF
    while (scanf("%c",&ch)==1)
    {
        if (ch >= 'a' && ch <= 'z')
            printf("%c\n",ch-32);
        if (ch >= 'A' && ch <= 'Z')
            printf("%c\n", ch + 32);
    }
    return 0;
}
//getchar()处理多余的\n

#include<ctype.h>
int main()
{
    char ch = 0;
    //scanf读取成功的时候,返回的是读取的数据个数
    //scanf函数在读取失败的时候返回EOF
    while (scanf("%c", &ch) == 1)
    {
        if (islower(ch))//判断是否为小写的函数
            printf("%c\n", toupper(ch));//小写转大写的函数
        if (isupper(ch))//判断是否为大写的函数
            printf("%c\n", tolower(ch));//大写转小写的函数
    }
    return 0; 
}


//判断是否是字母,多组输入,每行输入一个

int main()
{
    char ch = 0;
    //%c的前面加空格,是为了跳过下一个字符之前的所有空白字符包括\n
    while (scanf("%c",&ch)==1)
    {
        if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
            //isalpha()是判断一个字符是否是字母的库函数
            printf("%c is zimu\n", ch);
        else
            printf("%c no zimu\n", ch);
        getchar();//处理多余的\n
    }
    return 0;
}


变种水仙花数-lily number;把任意的数字,从中间拆分成两个数字,比如1461可以拆分成(1和461),(14和61
),(1466和1),如果所有拆分后的乘积之和都等于自身,则是一个lily number。
例如 :
655=6*55+65*5
1461=1*461+14*61+146*1
求出5位数中的所有lily number。

#include<math.h>
int main()
{
    int i = 0;
    for (i = 10000; i <= 99999; i++)
    {
        int sum = 0;
        int j = 0;
        for (j = 1; j <= 4; j++)
        {
            int k = (int)pow(10, j);
            sum += (i % k) * (i / k);
        }
        if (sum == i)
            printf("%d\n", i);
    }
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值