C语言

C语言

1.符号

%d int %ld long int (long long) %f float %lf double %c char %s String (char name[20]) %o 以八进制形式输出 %x 以十六进制形式输出 %p输出地址

2.结构体

struct Student{                          struct 结构体名{                     

int num;                                  成员表列

char name[20];                            }变量名表列;

char sex;

float score;

} student1,student2;
scanf("%d %s %c %f",&studnet1.num,student1.name,&student1.sex,&student1.score);
//name前面没有&,因为数组本身就代表地址
  • 不能用结构体变量名直接输出所有成员变量

    例如printf("%s\n",student1);必须对每个结构体成员分别操作

    但是printf("%o",&student1);是可以的,输出student1的起始地址

  • student1.name 用"."调用

  • 成员可以属于另一个结构体类型,这种情况下要调用时必须找到最低一级的成员,不能找到结构体就结束,例如student1.birthday是错误的,student1.birthday.month

  • 也可以在结构体类型中调用自己

  • "."优先级

3.一些函数

getchar()

putchar()

//#include<math.h> ceil()向上取整,sqrt()开方,fabs()绝对值,pow(x,y),x的y次幂

if (strcmp(b, 'y') == 0)

4.输入

scanf("%d %c %f ",&a,&b,&c);只要提前定义abc即可

在vs编译器中变量必须赋值,否则会自动为0

连续输入并判断 while(scanf("%d",&n)!=EOF){} EOF是end of file

5.输出

printf(" ") ; 双引号中的内容会原样输出

注意输出换行(一般出题输出多行,要换行)

6.一些约定

有double参与,相关运算的数都转成double;int与float的运算,两者都换成double

%要求左右都是int类型

c=a/b a/b结果由ab类型控制,但是c的结果由c自己控制 1.0/i

例如int a=1;float b=2;那么int c就是0,float c就是0.500000,其实a/b是0.500000

​ int a=59,b=10;那么a/b=5,不会进位

break是跳出内循环,continue是结束本次循环

7.数组

#include<stdio.h> 
int main() {
int i; 
char *a[7]={"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; scanf("%d",&i);
printf("%s",a[i-1]); 
return 0; 
}

8.进制转换

//十进制转六进制(牛客BC95)评论区解答
#include<stdio.h>
void print(int x)
{
    if(x>5)
    {
        print(x/6);
    }
    printf("%d",x%6);
}
int main()
{
    int n=0;
    scanf("%d",&n);
    print(n);
    return 0;
}
//方法二:输入120,120%6=0,那我们就在数组里的第一个元素放0,然后120/6,第二次就是20%6=2,我们再把2放到数组的第二个元素,再20/6=3,然后我们3%6=3,再将3放到数组的第三个元素,然后我们就开始打印,从数组的最后一个开始打印到第一个即可。
#include<stdio.h>
int main()
{
    int n = 0;
    int i = 0;
    int count = 0;
    int arr[10] = {0};
    scanf("%d",&n);
    if(n<6)
        printf("%d\n",n);
    else
        while(n)
        {
            count++;
            arr[i++] = n%6;
            n/=6;
        }
        for(int j = count;j>0;j--)
        {
            printf("%d",arr[j-1]);
        }
    return 0;
}

9.数列

//1,2,2,3,3,3,4,4,4,4。。。。。
#include<stdio.h>
int main() {
    int num = 0;
    int day = 0;
    int count = 1;
    int sum = 0;
    scanf("%d", &day);
    for (int i = 0; i < day; i++, num++) {
        if (num == count) {
            num = 0;
            count++;
        }
        sum += count;
    }
    printf("%d", sum);
    return 0;
}

10.释放

free();只能释放指针所指向的那片内存。

fflush(stdin); C语言:清空输入缓冲区的所有内容,在VS中没有效果

rewind(stdin); 在文件处理中,我们使用rewind()函数将文件位置指示符移动到指定文件流的开始。 函数rewind()原型为void rewind(FILE * filename);

11.变量

自动变量,只在定义它们的时候才创建,在定义它们的函数返回时系统回收变量所占存储空间 。对这些变量存储空间的分配和回收是由系统自动完成的。一般情况下,不作专门说明的局部变量 ,均是自动变量。自动变量也可用关键字auto作出说明

static静态变量,只创建一次,例如例如循环中static int b=1;然后下一次b就不会重新赋值为1了

posted @   和风123  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示