C语言的基础

volatile:是易变的,每次进入的时候告诉cpu是容易变化的,使用的时候需要重新去内存取
\转义字符
字符型用单引号
字符串用双引号
%d 十进制有符号整数
%c 单个字符
%u 十进制无符号整数
%x 十六进制表示整数
%o 八进制表示的整数
%e 指数形式的浮点数
%s 字符串
特殊应用
%3d 要求宽度为3 不足三位 前面补空格
%03d 要求宽度为3 不足三位 前面补0
%-3d 要求宽度为3 不足三位 后面补空格
%.2f 小数点只保留两位

构造类型
概念:由若干个相同或者不同类型数据构成的集合,这种数据类型被称为构造类型
数组 结构体 共用体 枚举

类型转换
自动转换:占用内存小的可以向占内存大的自动转换,以保证精度不降低
强制转换:把表达式的结果强制转换为所需的数据类型

运算符
双目运算符:操作数为两个
单目运算符:操作数为一个
三目运算符 ? : 若前面的式子成立输出结果1否则输出结果2

算数运算符:±*/%
关系运算符:><=
逻辑运算符:&& || !
位运算符:
&按位与 任何值与0得0 与1保持不变
|按位或 任何值或1得1 或0保持不变
~按位取反 1变0 0变1
^按位异或 相同为0 不同为1
。>>右移
。<<左移
逻辑右移:高位补0 低位溢出
算术右移:高位补符号位,低位溢出(有符号数)
逻辑左移:
十进制转二进制方法除2取余
正数得原码=反码=补码
反码就是将原码得每一位取反
负数得补码就是先转换位反码在加一即可
(),()逗号运算符输出的是逗号后面的结果
switch(表达式)
{
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
default:语句3;
break;

}

例子:
#include <stdio.h>
short int a;
typedef int U;
int main() {

int i;
printf("请输入一个1-7数字\n");
scanf_s("%d", &i);
switch (i) {
case 1: 
	printf("今天是星期1");
	break;

case 2:
	printf("今天是星期2");
	break;
	
default:printf("尽情期待");
	break;

}
return 0;

}

===============================================
goto:实现语句跳转

例子
#include <stdio.h>
short int a;
typedef int U;
int main() {

printf("0000000000\n");
goto tmp;
printf("0000000001\n");
printf("0000000002\n");
printf("0000000003\n");
tmp:
printf("0000000004\n");
printf("0000000005\n");
return 0;

}

水仙花
#include <stdio.h>

int main() {
int a, b, c;
int i;
//水仙花数 一个数的=它的各位的立方和
for( i=0;i<=999;i++)
{

	a = i / 100;
	b = i % 100 / 10;
	c = i % 10;
	if (i == a * a * a + b * b * b +c * c * c) {
		printf("i=%d\n", i);
	}

	}

return 0;

}

输入年月日判断这是第几天
#include <stdio.h>

int main() {
int y,m,d,sum;
printf(“请输入年月日\n”);
scanf_s(“%d %d %d”,&y,&m,&d);

switch (m)
{
case 1:
	sum = d;
	break;
case 2:
	sum = 31 + d;
	break;
case 3:
	sum = 31 + 28 + d;
	break;
case 4:
	sum = 31 + 28 +31+ d;
	break;
case 5:
	sum = 31 + 28 + 31 + +30+d;
	break;
case 6:
	sum = 31 + 28 + 31 + +30+31+d;
	break;
case 7:
	sum = 31 + 28 + 31 + +30 + 31 + 30+d;
	break;
case 8:
	sum = 31 + 28 + 31 + +30 + 31 + 30+31+d;
	break;
case 9:
	sum = 31 + 28 + 31 + +30 + 31 +30+31+31+ d;
	break;
case 10:
	sum = 31 + 28 + 31 + +30 + 31 + 30+31+31+30+d;
	break;
case 11:
	sum = 31 + 28 + 31 + +30 + 31 + 30+31+31+30+30+d;
	break;
case 12:
	sum = 31 + 28 + 31 + +30 + 31 + 30 + 31 + 31 + 30 + 30 +30+ d;
	break;
default:
	sum = 0;
	printf("您输入的月份有误!!!");
	break;
}
if (((y % 4 == 0)&&(y % 100 == 0) )&& (m>2)) {
	sum += 1;
	

}
printf("您好这是%d年的第%d天", y, sum);
return 0;

}

数组:数组是若干个相同类型的变量在内存中有序存储的集合

数组类型 数组名称 []
int a[10];
int a[]={1,2,3}
char s[10];
指针数组
char *a[10];
int *a[10];
结构体数组
struct stu boy[10]
按维数分
一维数组 int a[10]
二维数组 int a[10][10]

升级版计算第几天
#include <stdio.h>

int main() {
int y,m,d,sum;
int buf[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
printf(“请输入年月日\n”);
scanf_s(“%d %d %d”,&y,&m,&d);
for (int i = 0; i < m - 1; i++) {
sum = sum + buf[i];
}
sum += d;
if (((y % 4 == 0)&&(y % 100 == 0) )&& (m>2)) {
sum += 1;

}
printf("您好这是%d年的第%d天", y, sum);
return 0;}

===================
打字游戏

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#define AL 51
void help() {

printf("\n=======================");
printf("\n打字小游戏");
printf("\n请按所给字母进行敲击键盘");
printf("\n输入错误则用_表示");
printf("\n=======================\n");

}

int main() {
//srand((unsigned)time(null))以当前时间为准,设置随机种子
//注意此函数,在每次开始游戏后调用一次即可
//rand()每调用一次,产生一个随机数字
//getch() 无需按下回车获得键值
//start_time=time(null);
//end_time-4=time(null);
//sysyem(“cls”) 清空屏幕
int count=0;
char ch;
char str[51] = “”;
time_t start_time, end_time;
while (1) {
help();
ch = _getch();
srand(time(NULL));
for (int i = 0; i < 50; i++)
{
str[i] = rand() % 26 + ‘a’;

	}
	str[50] = '\0';
	printf("%s \n", str);
	count = 0;
	for (int i = 0; i < 50; i++)
	{
		ch = _getch();
		if (i == 0) {
			start_time=time(NULL);
		}
		if (ch == str[i]) {
			count++;
			printf("%c", ch);
		}
		else {
			printf("_");
		}
		
	}
	end_time = time(NULL);
	printf("\n正确个数%d", count);
	printf("\n正确率为:%d %% ",count*100/50 );
	
	printf("\n使用时间为%d s", (long int)(end_time - start_time));
}
return 0;}

===========================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值