C语言基础整理2(运算符、数据类型、控制语句、循环语句、数组)
来源:互联网 发布:基尔霍夫定律实验数据 编辑:程序博客网 时间:2024/05/23 02:13
运算符、数据类型、控制语句、循环语句、数组
#include<stdio.h>
int main()
{
chara=18;
printf("%d",sizeof(a));
}
结果:1
int ->4
float ->4
double->8
#include<stdio.h>
int main()
{
unsigned int a=-4;
printf("%u",a);
}
结果:4294967292(232-4)二进制补码
定义变量确定了1.变量在内存中的首地址2.数的表示范围
#include<stdio.h>
int main()
{
unsigned int a=-4;
int b=6;
printf("%u",a+b);
}
结果:2
#include<stdio.h>
int main()
{
int a=-2;
unsigned int b=1;
if((a+b)>=0) 无符号运算(232-2+1)
printf("1");
else
printf("0");
}
结果:1
无符号和有符号数的运算:转换成表达数据精度更高的数据类型 int->unsigned int
#include<stdio.h>
int main()
{
int a=-2;
unsigned int b=1;
printf("%d",a+b);有符号运算
printf("%u",a+b);无符号运算
}
结果:-1 4294967295
#include<stdio.h>
#include<string.h>
int main()
{
char a[1000];
int i;
for(i=0;i<1000;i++)
{
a[i]=-1-i;
}
printf("%d\n",strlen(a));
return 0;
}
结果:255
char表示范围:0~255
a[i]数值(0~255)
#include<stdio.h>
#include<string.h>
int main()
{
char a[1000];
int i;
for(i=0;i<1000;i++)
{
a[i]=-10-i;
}
printf("%d\n",strlen(a));
return 0;
}
结果:246
\n
\’
\”
%s 字符串占位符
字符串常量->字符序列
字符串结束标志‘\0’
| & 位运算符
|| && 逻辑运算符
3/5=0取整
3%5=3取余
#include<stdio.h>
int main()
{
float a=3.5;
int b=5;
printf("%f",a/b); ->%.2f
return 0;
}
结果:0.700000 -> 0.70
#include<stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);取变量的地址
printf("%d",a+b);找到地址中的值
return 0;
}
输入:9 9
结果:18
%d按十进制有符号
%0x按十六进制
<stdbool.h>
布尔变量bool a=0或1;
1.控制语句
If-else语句:
if(a==0) <=>if(0==a)正确
if(0=a)错误
if-else匹配问题
注意判断语句格式
#include<stdio.h>
int main()
{
int a=0;
if(a==1) -> if(a=1)
printf("=0\n");
else
printf("idiot");
return 0;
}
结果:idiot -> =0
(2)switch语句
循环语句
for
int i,j,k;
for( i=0;i<10;i++) i+2错误
{
}
#include<stdio.h>
int main()
{
int a[100];
a[0]=1;a[1]=2;
int i=2;
printf(“%d\n”,a[0]);
for(i;a[i-1]<100;i++)
{
a[i]=a[i-1]+a[i-2];
printf("%d\n",a[i-1]);
}
return 0;
}
结果:
1
2
3
5
8
13
21
34
55
89
While
#include<stdio.h>
int main()
{
int a[100];
a[0]=1;a[1]=2;
int i=2;
printf(“%d\n”,a[0]);
while(a[i-1]<100)
{
a[i]=a[i-1]+a[i-2];
printf("%d\n",a[i-1]);
i++;
}
return 0;
}
结果:
1
2
3
5
8
13
21
34
55
89
do -while
#include<stdio.h>
int main()
{
int a[100];
a[0]=1;a[1]=2;
int i=2;
printf(“%d\n”,a[0]);
do
{
a[i]=a[i-1]+a[i-2];
printf("%d\n",a[i-1]);
i++;
}
while(a[i-1]<100);
return 0;
}
结果:
1
2
3
5
8
13
21
34
55
89
break:跳出当前(本层)循环
continue:跳出当前这一步的循环,继续执行本层循环
判断是否是素数(是素数:返回1,否则返回0)
#include<stdio.h>
int main()
{
int i,m;
scanf("%d",&m);
for(i=2;i<m;i++)
{
if(m%i==0)
break;
}
if(i==m||m==2)
printf("%d\n",1);
else
printf("%d",0);
}
数组
1. 一维数组
定义:如 int a[10]不能用变量说明数组大小,即数组大小不能动态定义
数组名是地址 a=&a[0]
二维数组
定义:如 int a[i][j] i:行j:列
二维数组的初始化:
分行赋值如int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
对部分元素赋值如:int a[3][4]={{1},{5},{9}};
对全部元素赋值行数可省,列数不可省
char c=’a’;
c=c-32; 字符可进行运算(ASCll码)
“%c” 输入或输出一个字符
“%s” 输入或输出一个字符串
#include<stdio.h>
#include<string.h>
int main()
{
char a[10]={'s','t','r','i','n','g'};
printf("%s",a);
}
结果:string
如果数组长度大于字符串实际长度,也只输出到遇到’\0’结束。
输出字符不包括结束符’\0’。
如果一个字符数组中包含一个以上’\0’,则遇到第一个’\0’时输出就结束。
puts函数
char str[]={“China\nBeijing”};
puts(str);
输出结果:
China
Beijing
2.gets(字符数组)
3.strcat连接字符数组
函数调用时传输的是数组名(地址)
如:
#include<string.h>
#include<stdio.h>
int main()
{
char a[100]={"banzhang"};
char b[]={"zuishuai"};
strcat(a,b);
printf("%s",a);
}
结果:banzhangzuishuai
include<stdio.h>
int main()
{
int i,j,k;
for(i=0;i<3;i++) * “ “ i
{ 1 3 0
for(j=0;j<3-i;j++) 3 2 1
printf(" "); 5 1 2
for(k=0;k<2*i+1;k++)
printf("*");
printf("\n");
}
}
结果:
*
***
*****
strcpy函数 复制字符串
#include<stdio.h>
#include<string.h>
int main()
{
char str1[10]={"abcdefg"};
char str2[10]={"CHINA"}; CHINA\0\0\0\0\0
printf("%s",strcpy(str1,"CHINA"));
}
结果:CHINA
字符数组1必须定义得足够大
字符数组1必须写成数组名形式(如str1),字符串2可以是字符数组名,也可以是一个字符串常量。如:strcpy(str1,”CHINA”);
复制时连同’\0’一起复制(只复制1个’\0’)
可以把字符串2中前面几个字符复制到字符数组1中。如strncpy(str1,str2,2);
#include<stdio.h>
#include<string.h>
int main()
{
char str1[10]={"baii2"};
char str2[10]={"CHINA"};
printf("%s",strncpy(str1,str2,2));
}
结果:CHii2
不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。
如:str1=”china” ;不合法
str1=str2;不合法
用赋值语句只能将一个字符赋给一个字符型变量或字符数组元素。
strcmp按位比较字符ASCII值
不能直接比较
if(strcmp(str1,str2)>0)
printf(“yes”)
#include<stdio.h>
#include<string.h>
int main()
{
char str1[100]={"khina"}; -> china
char str2[10]={"corean"}; -> korean
if(strcmp(str1,str2)<0)
printf("%s\n",strncpy(str1,str2,5));
else if(strcmp(str1,str2)>0)
printf("%s\n",strcpy(str1,str2));
else
printf("hello");
}
结果:corean -> korea
sizeof:字节数(包括’\0’)
strlen:测试字符串长度(不包括’\0’)
#include<stdio.h>
#include<string.h>
int main()
{
char a[]={"china"};
printf("%d\n",sizeof(a));
printf("%d\n",strlen(a));
}
结果:
6
5
strlwr:大写字母换成小写字母
strupr:小写 大写
8个函数共同点:只能传地址(数组名)
函数
形参:定义函数时函数名后面括号中的变量名 int max(x,y)
实参:调用 c=max(a,b)
参数传递
(1)值传递方式:函数调用时,为形参分配单元,将实参的值复制到形参中
单向传递:实参->形参
存储单元不同
地址传递方式:函数调用时,传递地址给形参
双向传递
形参和实参共用存储单元
#include<stdio.h>
int main()
{
int a=3,b=5;
int c;
c=max(&a,&b);
printf("%d",c);
}
int max(int *x,int *y)
{
int z;
z=*x>*y?*x:*y;
return z;
}
结果:5
#include<stdio.h>
int main()
{
int a=3,b=5;
max(&a,&b);地址
printf("%d%d",a,b);
}
int max(int *x,int *y)地址
{
*x=*x+2; x:地址 *x:取值
*y=*y+2;
return 0;
}
结果:57
变量的存储类型:
register寄存器变量(CPU中)
static静态局部变量
区别
const
static
volatile
#include<stdio.h>
int main()
{
int a[5][5]={0};
change(a,25);
}
int change(int a[5][5],int n)
{
int i,j,m=0;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
a[i][j]=++m;
printf("%d",a[i][j]);
}
printf("\n");
}
}
结果:
12345
678910
1112131415
1617181920
2122232425
- C语言基础整理2(运算符、数据类型、控制语句、循环语句、数组)
- Java基础学习笔记(一)环境变量配置,数据类型,运算符,控制语句,循环语句
- Java语言基础(二)——数据类型、运算符和流程控制语句
- 语言基础、运算符、控制语句
- C语言循环控制语句
- 32个关键字9个控制语句34个运算符(C语言基础)
- C++---基础篇(运算符/表达式/控制语句)
- 黑马程序员****C语言基础****控制语句:循环
- c语言核心整理之数据类型,运算符,表达式和语句
- C语言入门(九)循环语句和循环控制
- Obj-c基本语法、数据类型、运算符和控制语句
- Java 基础文档注释,运算符,循环语句,数组(一)
- c控制语句:循环(2)
- c语言基础语法二——循环控制条件语句(完节)
- C语言学习_006_C控制语句:循环
- C语言 关键字_控制语句_运算符
- C控制语句:循环
- C控制语句:循环
- 适合程序员充电的10本书
- 2017年11月反思
- mt6735 在Play Music中开放源码许可证界面长按选择字符,手机横屏,会弹出Play Music停止运行
- 天皇法则 Mikado Method
- 在pycharm中设置django环境
- C语言基础整理2(运算符、数据类型、控制语句、循环语句、数组)
- 【Java没基础】I/O学习笔记(一)传统IO
- VRTK 可行走区域块的实现
- Mac安装Texpad1.7.40
- 按需加载的那些事儿
- MinGW与MSVC
- zabbix3.4监控华为防火墙USG6600
- 看似简单的行为识别模型
- 二分图匹配学习笔记(网络流)