c学习笔记2018.10.9

这期笔记整理一下以前学的内容,emmmmm

不一定会

毕竟好长时间了,摆出来可以经常复习复习

Hello world 1
#include<stdio.h>
#include <stdlib.h>
int main()
{ puts(“hello world”);
system(“pause”);
return 0;
}

Hello world 2
#include<stdio.h>
#include <stdlib.h>
#pragma comment(lib, “winmm.lib”)
#include <Windows.h>
int main()
{ puts(“hello world”);
while(TRUE)
{ PlaySound(TEXT(“F:\迅雷下载\6.wav”),NULL,SND_FILENAME|SND_SYNC);
}
return 0;
}

for(i=0;i<b;i++)
for(表达式1;表达式2;表达式3)
然后再for循环下面写下循环的语句,还是以 i++为例

for执行时首先执行表达式1,然后执行表达式2,如果循环成立,
在循环结束后,下一个循环前执行表达式3,然后再执行表达式2进行判断

for循环的三个部分可以省略的,比如
i=0;
for(;i<b;i++)
但是分号是不能省略的

Do while
int i=0;
do // 第一次不用判断条件,直接执行循环体
{
i++;
}while(i<0);
// 执行完后 i=1

%s格式符表示输出的是字符串,后面对应的参数用字符数组或是字符指针
C语言中 printf(“\n”) 是打印回车符的意思,也就是我们俗称的换行
%c表示输出一个字符
%d表示输出一个整数
%s表示输出一个字符串
%运算中表示求余!!!
%c代表输出单个字符。
%d代表输出十进制整数。
%u代表输出无符号十进制数。
输出十进制整数应该用%d。
%d 整数输出 -------int 定义整数变量
%f 小数输出 -------float 定义小数变量 小数-----浮点数
%c 字符 -------char 定义字符变量 字符变量赋值 a=‘ ’

scanf ("% “,& )
读取字符
scanf(”%C",&a); 也可以 a=getchar();也可以 gets(a);
scanf 不会继续执行,至到enter
scanf 遇到空格终止gets完整读入一行。
puts()自动换行puts(a)相当于printf("%s\n",a)

C printf 格式详解
https://www.cnblogs.com/renxinyuan/p/3862772.html

随机数 rand()
头文件#include <tinme.h>
srand((unsigned)time(NULL));
a=rand()
srand 初始化随机种子数,通过当前时间获得,time不同种子不同

while (判断内容)
while (i<a)
i<a成立执行while循环,那当i的值不小于a时结束while循环
while()之后是不加分号的

连接词
并且 &&或者 ||

char [5][11];
五行十一列
可以储存五个长度不超过10的字符串

关机指令
system(“shutdown -s -t 50”);

测字符串长度
int len
len=strlen(a)
strlen()
头文件#include<string.h>

计时
Sleep() 1000=1秒 S大写
头文件 windows.h

程序内清屏
system(“cls”)

char a[10]; 定义了一个字符数组a, a 有10个空间,【0】-【9】但是只能存储9个字符,最后一个空间\0 字符串的结束标记

读取一行字符串
scanf (“%s”,a);
scanf 读入时,只有与%s搭配使用读取一行字符串时不需要在变量前加取址符&

解释
1.C没有字符串变量,字符串是用字符数组处理的。
数组的特点是数组名有双重身份:既是数组名又是这个字符串第一个字符的地址,也就是这个字符串的首地址。
所以当有char a[10]的声明后,
scanf("%s",a)和scanf("%s",&a)都是合法的,
前者a是指针身份,后者a是数组名身份;无论早期的C还是现在的C都是认可的。

2.C语言的字符串实际上是 字符数组.
既然是数组, 那么数组头自然是一个指针.
char str[] = {“abc”};
这个str实际上是一个不可变的字符指针.
scanf的参数要求传入指针. 之后按照格式化字符串对指针指向的地址赋值…
str本身就是一个指针了, 所以不需要&str,
如果&str, 那么得到是就是指针的指针,
scanf并不只是对字符串不加 取地址运算符.
例如 int arr[] = {1, 2, 3};
scanf("%d", arr);
这里对arr照样不需要取地址运算符, 因为arr是数组头, 本身就是一个指针.
上面的语句是对arr数组的第一个元素赋值, 就是arr[0];
当然也可以这么写.
scanf("%d", &arr[0]);
arr[0]是一个值, 并非指针, 于是对其取地址.
对于字符串也可以这么写.
char str[3] ;
scanf("%c", &str[0]);
这是对str的第一个元素赋值也就是 str[0];

3.因为字符串 名本身就是一个指针。 如: char a[100]; a就是指针,指向数组首地址。
而 int a; a 是整形变量,要用scanf来读取数据放入 内存, 要访问内存区域,要通过地址来访问
所以要加上&, 通过&a来访问内存区域。

strcmp(a,b)
比较字符串a和b在字典中的顺序
a和b相同 返回值为0
a在b前 小于0
a在b后 大于0
头文件#include<string.h>

字符类型数据可以直接参与运算和判断,因为C语言将字符常量视为int 类型而非char类型

猜你喜欢

转载自blog.csdn.net/qq_43261873/article/details/82987199