system启动程序,如果这个程序 系统可以找到,不用加路径
如果环境变量找不到,需要加路径
windows路径以 \\ 或 /
system("mspaint");//启动画图板 系统找得到不用加路径
system("F:\\基础文件\\好东西\\Debug\\好东西.exe");//系统找不到加路径
vs如果出现4996警告编号 只需要在最前面加上
#define _CRT_SECURE_NO_WARNINGS //将这个宏定义放在最前面
#pragma warning(disable:4996)//或者是这个
- 数据类型
C语言里面有很多数据类型选择合适的数据类型用来定义变量可以很好的节省内存,如果不知道数据类型所占的字节数可以用以下两种方法来确定
① 运算符sizef(类型名/变量名/数组名)
#include<stdio.h>
int main() {
//sizeof(类型名)
int a;
float b;
char c;
printf("int类型所占字节数为%d个\n", sizeof(int));//结果为4
printf("float类型所占字节数为%d个\n", sizeof(float));//结果为4
printf("char类型所占字节数为%d个\n", sizeof(char));//结果为1
//sizeof(变量名)
printf("a变量所占字节数为%d个\n", sizeof(a));//结果为4
printf("b变量所占字节数为%d个\n", sizeof(b));//结果为4
printf("c变量所占字节数为%d个\n", sizeof(c));//结果为1
//sizeof(数组)
int f[5] = { 1,2,3,4,5 };
float h[2] = { 1.2,2.3 };
printf("f数组所占字节数为%d个\n", sizeof(f));//结果为20
printf("f[2]所占字节数为%d个\n", sizeof(f[2]));//结果为4
printf("h数组所占字节数为%d个\n", sizeof(h));//结果为8
printf("h[1]所占字节数为%d个\n", sizeof(h[1]));//结果为4
return 0;
}
②函数size_t strlen( const char *string )计算字符串的长度不包括'\0'且遇到'\0'就结束
#include<stdio.h>
#include<string.h>
int main() {
char a[10]="abcdef";
char b[10] = {'c','d','\0','e','f'};
printf("a字符串长度为%d\n", strlen(a));//结果为6
printf("b字符串长度为%d\n", strlen(b));结果为2
return 0;
}
变量基本数据类型及其所占字节数如下:
类型之间也可以强制转换,转换格式为:(类型名)变量名。
int a=2;
(double)a;//将a转换成double型;
2.进制
十进制:逢十进一
二进制:逢二进一 0b10101 0B101011
八进制:逢八进一 0o1741 0O16341 或者省略O写成 0756
十六进制:逢十六进一 0x1A1F1 0X181E1
二进制/八进制/十六进制转换成为十进制
(10101.01)₂=1×2^4+0×2^3+1×2^2+0×2^1+1×2^0+0×2^(-1)+1×2^(-2)=21.25
二进制转换为八进制/十六进制,如101010.01:
101 010 . 010 =52.2
5 2 . 2
十进制转换为二进制/八进制/十六进制,如150:
150/2=75(余数为0)
75/2=37(余数为1)
37/2=18(余数为1)
18/2=9(余数为0)
9/2=4(余数为1)
4/2=2(余数为0)
2/2=1(余数为0)
1/2=0(余数为1)
整合为10010110即是转换的二进制
原码:是最简单的机器数表示法。用最高位表示符号位,‘1’表示负号,‘0’表示正号。其他位存放该数的二进制的绝对值。
反码:正数的反码还是等于原码,负数的反码就是他的原码除符号位外,按位取反。
补码:正数的补码等于他的原码,负数的补码等于反码+1。
赋值时(输入):赋的是十进制,给的是原码,如果赋的是八进制/十六进制给的是补码。
打印时(输出):十进制打印要的是原码,如果是十六进制或者八进制要的是补码。
已知补码求原码:负数通过补码求反码反码加一得原码。
char ch=0x82;//补码:1000 0010
printf("%d\n",ch);//原码:1111 1110 =-126
//结果为-126
3.输入和输出
⑴输入
① scanf("输入控制符", 输入参数);
#include<stdio.h>
int main() {
int a, b, c;
scanf("%d %d", &a, &b);//输入10 20
printf("a+b=%d\n", a + b);//输出a+b=30
scanf("%d %d", &a, &b);//输入10 20
printf("a+b=%d\n", a + b);//输出a+b=30
scanf("%d,%d,%d", &a, &b,&c);//输入56,45,78
printf("a+b+c=%d\n", a + b+c);//输出a+b+c=179
scanf("%d is bigger than %d", &a, &b);//输入25 is bigger than 11
printf("a-b=%d\n", a - b);//输出a-b=14
return 0;
}
②int getchar(void)
#include<stdio.h>
int main(){
char c;
c=getchar;
printf("c: %c\n",c)
return 0;
}
③int getchar(void)
#include<conio.h>
#include<stdio.h>
int main() {
char c = getche();//不需要按回车就可读取
printf("c :%c", c);
return 0;
}
④int getch(void)
#include<conio.h>
#include<stdio.h>
int main() {
char c = getch();//该函数不会回显
printf("c :%c", c);//终端看不见输入值
return 0;
}
C语言中常用的从控制台读取数据的函数有五个它们分别是scanf()、getchar()、getche()、getch()和gets()。其中scanf()、getchar()、gets()是标准函数,适用于所有平台;getche()和getch()不是标准函数,只能用于Windows。scanf()是通用的输入函数,它可以读取多种类型的数据。getchar()、getche()和getch()是专用的字符输入函数,它们在缓冲区和回显方面与scanf()有着不同的特性,是
scanf()不能替代的。gets()是专用的字符串输入函数,与scanf()相比,gets()的主要优势是可以读取含有空格的字符串。scanf()可以一次性读取多份类型相同或者不同的数据,getchar()getche()、getch()和gets()每次只能读取一份特定类型的数据,不能一次性读取多份数据。
⑵输出
printf输出的格式: % [标记][输出最小宽度].[精度][修饰符]格式字符(也称转换说明)
整型数据的输出格式控制说明%md,指定了数据的输出宽度为m(包括符号位)。若数据的实际位数(含符号位)小于m,则左端补空格;若大于m,则按实际位数输出。
实型数据的输出格式控制说明%m.nf,指定了输出浮点型数据时保留n位小数(四舍五入),且输出宽度是m(包括符号位和小数点)。若数据的实际位数小于m,则左端补空格;若大于m,则按实际位数输出。