1,进制转换-整型常量的不同进制表示
2,补码的作用
3,强制类型转换
4,scanf循环读取
5,scanf读取混合类型输入
6,getchar(),putchar()讲解
7, goto语句
8,while循环
9,do-while循环
10,for循环
11,continue语句
------------------------------------------详细项目代码
1,进制转换-整型常量的不同进制表示
#include<stdlib.h>
#include<stdio.h>
int main() {
int i = 0x7b;//赋值十六进制
printf("the i =%d\n",i);//十进制打印
i = 0173;//赋值8进制
printf("the i =%d\n",i);//十进制打印
system("pause");
return 0;
}
2,补码的作用
补码:对原码取反加 1
#include<stdlib.h>
#include<stdio.h>
int main() {
int i, j, k;
i = -5;
j = 2;
k = i + j;
printf("k=%d\n", k);
return 0;
}
3,强制类型转换
#include<stdlib.h>
#include<stdio.h>
int main() {
int i = 5;
float f, g;
short m;
long l = 5;
f = i / 2;//因为没有强制类型转换i/2表达式为整型运算
g = (float)i / 2;
m = (short)l + 2;//由于l为long型,不加short强转编译会警告
printf("i=%d,f=%f,g=%f,m=%d\n",i,f,g,m);
system("pause");
return 0;
}
4,scanf循环读取
#include<stdlib.h>
#include<stdio.h>
int main(){
int i;
int ret;//用来获取scanf的返回值
while(rewind(stdin),(ret=scanf("%d",&i))!=EOF){
printf("i=%d\n",i);
}
system("pause");
return 0;
}
//小写改为大写
#include<stdlib.h>
#include<stdio.h>
int main(){
while(rewind(stdin),(ret=scanf("%d",&i))!=EOF){
if(c!='\n'){
printf("%c",c-32);
}else {
printf("\n");
}
}
system("pause");
return 0;
}
5,scanf读取混合类型输入
#include<stdlib.h>
#include<stdio.h>
//整型,字符,浮点型混合输入
int main(){
int i=5;
double f;
char c;
int ret;
ret=scanf("%d %c%lf%f",&i,&c,&f,&l);
printf("i=%d,c=%c,f=%5.2lf,l=5.2f,ret=%d\n",i,c,f,l,ret);//5.2代表总结占用5个空格的位置, 2代表小数点后显示两位
system("pause");
return 0;
}
6,getchar(),putchar()讲解
getchar():可以一次从标准输入读取一个字符,等价于 charc,scanf(“%c”,&c)
putchar():向显示设备输出一个字符
7, goto语句
向上跳转//100内的数字递增相加
#include<stdlib.h>
#include<stdio.h>
int main(){
int i=1;
int total=0;
lable:
total=total+i;
i++;
if(i<100){
goto lable;
}
printf("total=%d\n",total);
system("pause");
return 0;
}
goto语句向下跳转
#include<stdlib.h>
#include<stdio.h>
//goto向下跳转,实现部分代码不执行
int main(){
int disk;
scanf("%d",&disk);
if(disk==0){
goto lable_disk_error;
}
//写磁盘的操作
lable_disk_error:
printf("system is error\n");
system("pause");
return 0;
}
8,while循环
//1到100相加
#include<stdlib.h>
#include<stdio.h>
int main(){
int i=1;
int total=0;
while(i<=100){
total+=i;
i++;
}
printf("total=%d\n",total);
system("pause");
return 0;
}
9,do-while循环
do
{
total+=i;
i++;
}while(i<=100);
10,for循环
for(i=1,total=0;i<=100;I++){
total+=i;
}
11,continue语句/break语句
//100内奇数奇数相加
#include<stdlib.h>
#include<stdio.h>
int main(){
int i,total;
for(i=1,total=0;i<=100;i++){
if(i%2==0){
continue;//偶数提前结束/或是break撤出for循环
}
total+=i;
}
printf("total=%d\n",total);
system("pause");
}
12,一维数组
先定义的变量j的地址大于后定义的变量i的地址,所以先定义的变量放在高地址,后定义的变量放在低地址
#include<stdlib.h>
#include<stdio.h>
void print(int b[],int len){
int i;
for(i=0;i<len;i++){
printf("%3d",b[i]);
}
b[4]=20;//在子函数中修改数组元素
printf("\n");
}
//数组越界
//一组数组的传递
#define N 5
int main(){
int j=10;
int a[5]={1,2,3,4,5};//定义数组时,数组长度必须固定
int i=3;
a[5]=20;//越界访问
a[6]=21;
a[7]=22;//越界访问会造成数据异常
print(a,5);
printf("a[4]=%d\n",a[4]);//a[4]发生改变
system("pause");
}