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了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具