首页 > 其他分享 >C语言 备份

C语言 备份

时间:2024-08-29 17:14:18浏览次数:10  
标签:main int 备份 C语言 char printf 字符串 include

scanf读取原理

行缓冲:标准缓存区读入字符 ‘20\n’,会打印输出20,紧接着的scanf,会打印输出\n,标准输入缓冲区有\n,scanf(c=%c,&c),直接读取缓冲区的\n字符输出。

scanf匹配规则:scanf函数在读取整型数、浮点数、字符串会忽略'\n'字符

判断闰年

#include <stdio.h>
int main(){
	int year;
	scanf("%d",&year);
	if (year % 400 == 0 || year % 4 == 0 && year % 100 !=0){
		printf("year is 闰年");
	}
	else{
		printf("不是闰年");
	}
}

小写字母转大写

#include <stdio.h>
int main()
{
	char c;
	while(scanf("%c",&c)!=EOF)
	{
		if(c!=0){
			printf("%c",c-32);
		}	
		else
		{
		printf("\n");
		}
	}
}

一个scanf读多种类型的数据

#include <stdio.h>
//一个scanf读多种类型的数据
//混合输入每次在%c前面加一个空格
int main()
{
	int i;
	char c;
	float f;
	scanf("%d %c%f",&i,&c,&f);
	printf("i=%d,c=%c,f=%f\n",i,c,f);
	return 0;
}

printf输出格式

#include <stdio.h>
int main()
{
	printf("name=%s,age=%d,score=%4.1f","xiaoming",22,99.9);
}

选择与循环

反转

#include <stdio.h>
int main()
{
	int a;
	scanf("%d",&a);
	while(a!=0)
	{
		printf("%d",a%10);
		a=a/10;
	}
	return 0;
}

选择与循环

if

if (){

}
else if {

}
else{
	
}

while循环

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
	int i = 1;
	int sum = 0;
	while (i <= 100) {
		sum = sum + i;
		i++;
	}
	printf("sum is %d",sum);
}

for循环

for (表达式1;表达式2;表达式3) 语句;

(1)先执行表达式1.

(2)求解表达式2,若其值为真(值为非0),则先执行for语句中的内嵌语句,后执行第(3)步,若其值为假(值为0),则结束循环,转到第(5)步

(3)求解表达式3

(4)转回第(2)步继续执行

(5)循环结束

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
	int i, sum;
	//for循环中只能有两个分号
	for (i = 1,sum =0; i <= 100; i++)
	{
		sum += i;
	}
	printf("sum is %d\n",sum);
}

continue

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
	int i, sum;
	for (i = 1,sum =0; i <= 100; i++)
	{
		if (i%2==0){
			continue;//提前结束本轮循环
		}
		sum += i;
	}
	printf("sum is %d\n",sum);
}

break

break语句的作用是结束整个循环过程,不再判断执行循环条件是否成立;跳出循环

判断是否是对称数

输入一个整型数,判断是否是对称数,如果是,输出yes,否则输出no,不用考虑这个整型数过大,int类型存不下,不用考虑负值;

例如 12321是对称数,输出yes,124421是对称数,输出yes,1231不是对称数,输出no

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
	int a,b,c,d;
	scanf("%d", &a);
	b = 0;
	d = a;
	while (a!=0) {
		c = a % 10;
		b = b * 10 + c;
		a = a / 10;
	}
	if (d == b) {
		printf("yes\n");
	}
	else{
		printf("no\n");
	}
}

数组

数组的定义

  • 具有相同的数据类型

  • 使用过程中需要保留原始数据

    C语言提供了一种构造数据类型---数组。数据,是指一组具有相同数据类型的数据的有序集合。

一维数组的定义格式:

类型说明符 数组名 [常量表达式]
int a[10];//定义一个整型数组,数组名为a,它有10个元素。
#include <stdio.h>
#define N 5
int main() {
	//定义一个数组 变量名,后面加上方括号,方括号
	//int a[5] = { 1,3,5,7,9 };
	int a[N] = { 1,3,5,7,9 };
	printf("%d\n", a[3]);
}

打印数组里的每一个元素

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void print(int a[5]) {
	for (int i = 0; i < 5; i++) {
		printf("a[%d]=%d\n", i, a[i]);
}
}
int main() {
	int a[5] = { 1,3,5,7,9 };
	print(a);
}

数组在传递时,元素个数传递不过去。可以在子函数中修改数组元素。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void print(int b[],int len) {
	for (int i = 0; i < len; i++) {
		printf("a[%d]=%d\n", i, a[i]);
        b[4] = 20;
}
}
int main() {
	int a[5] = { 1,3,5,7,9 };
	print(a,5);
    printf("a[4]=%d\n",a[4]); //a[4]发生改变
}

字符数组

char c[10];

字符数组的初始化

对每个字符单独赋值

c[0]='X';c[1]='H'

对整个数组进行初始化

char c = {'I','A','H'};

字符数组一般用来存取字符串。通常采用的初始化方式是char c[10] = "hello"。因为C语言规定字符串的结束标志为本0',而系统会对字符串常量自动加一一个'\0',所以字符数组存储的字符串长度必须比字符数组少1字节。char [10]最长存储9个字符,剩余的一个字符用来存储'\0'。

初始化字符数组时,一 定要让字符数组的大小比看 到的字符串的长度多1

#include <stdio.h>
int main() {
	char c[6] = { 'h','e','l','l','o' };
	char d[5] = "how";
	printf("%s---%s", c, d);
}
hello---how
#include <stdio.h>
int main() {
	char c[6] = { 'h','e','l','l','o' };
	char d[4] = "how";
	printf("%s---%s\n", c, d);
	char e[10],f[10];
	scanf("%s%s", e, f);
	printf("%s---%s", e, f);
}

字符数组的传递

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void print(char d[]) {
	int i = 0;
	while (d[i]!='\0')
	{
		printf("%c", d[i]);
		i++;
	}
	printf("\n");
	d[0] = 'H';
	printf(d);
}
int main() {
	char c[10] = "hello";
	print(c);

	return 0;
}
输出:
hello
Hello

字符数组的数组名里存的就是字符数组的起始地址,类型就是字符指针

gets函数与puts函数

gets函数类似与scanf函数,用于读取标准输入。scanf函数在读取字符串时遇到空格就认为读取结束,所以当输入的字符串存在空格时,需要使用gets函数进行读取。

puts输出,并打印一行换行。

#include <stdio.h>
int main() {
	char c[20];
	gets(c);
	puts(c); //等价于printf("%s\n",c)
	return 0;
}

从标准输入读取字符,加载到str字符串中,知道遇到(\n)或达到EOF。输入ni hao 可以看到gets会读取空格,最后有'\0',因为gets遇到(\n),不会存储\n,而是将其翻译成空字符'\0'。

str系列字符串操作函数

主要包括:strlen、strcpy、strcmp、strcat等

strlen:用于统计字符串长度

strcpy:用于将某个字符串复制到字符数组中

strcmp:用于比较两个字符串的大小

strcat:用于将两个字符串拼接到一起

#include <stdio.h>
#include <string.h>
int main() {
	char c[20] = "jiangsu";
	printf("数组c内的长度为%d\n",strlen(c));
	char d[20];
	char e[20] = "I love";
	//char* strcpy(char* to,const char* from);有const修饰代表这个地方可以放一个字符串常量
	strcpy(d, c);
	puts(d);
	/*
		输出:
		数组c内的长度为7
		jiangsu
	*/
	printf("两个字符串比较后的结果=%d\n", strcmp("how", "hello"));
	//输出:两个字符串比较后的结果=1、比较的是字符串的ascii码值
	//strcat,拼接两个字符串,目标数组(前)要可以容纳拼接的字符串
	strcat(e, c);
	puts(e);
	//输出: I lovejiangsu
}

指针

指针的本质
指针的使用场景
二级指针的传递

指针的本质

指针的定义

内存区域中的每字节都对应一个编号,这个编号就是“地址”。如果在程序中定义了一个变量,那么在对程序进行编译时,系统就会给这个变量分配内存单元。按变量地址存取变量值的方式称为“直接访问”,如printf("%d",i);、scanf("%d",&i);另一种存取变量的方式称为“间接访问”,即将变量i的地址存放到另一个变量中。在C语言中,指针变量是一种特殊的变量,它用来存放变量地址。

指针变量的定义格式

基类型 *指针变量名
例如:
int *p;

取地址操作符与取值操作符

取地址操作符为&,也称引用,通过改操作符我们可以获取一个变量的地址值;取值操作符为*,也称解引用,通过改操作符我们可以得到一个地址对应的数据。

image-20220917230214700

#include <stdio.h>
int main() {
	//指针变量的初始化一定是某个变量取地址
	int i = 5;
	int* p=&i;
	printf("i=%d\n", i);//直接访问
	printf("*p=%d", *p);//间接访问
}
/*
输出:
i=5
*p=5
*/

注意:

  • 指针变量前面的 * 表示改变量为指针型变量
  • 定义指针变量时必须指定其类型

小题

Description

利用while或者for循环计算n!的值。

提示:n!=1*2*3…*n

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i = 1,total=1,n;
	scanf("%d", &n);
while (i<=n) {
	total *= i;
	i++;
}
printf("%d", total);
}

Description

某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问:有几种换法?

int main()
{
	int t, f, s, o,e=0;
	for (t = 1; t <= 10; t++) {
		for (f = 1; f <= 19; f++) {
			for (s = 1; s <= 37; s++) {
				for (o = 1; o <= 37; o++) {
					if(10*t+f*5+2*s+o==100&&t+f+s+o==40){
						e++;
					}
				}
			}
		}
	}
	printf("%d", e);
}
//34 

Description

输入N个数(N小于等于100),输出数字2的出现次数;

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i,n;
	int a[100];
	scanf("%d", &n);
	for (i=0;i<n;i++){
		scanf("%d", &a[i]);
	}
	int count = 0;
	for (i = 0; i < n; i++) {
		if (a[i] == 2) {
			count++;
		}
	}
	printf("2出现的次数为%d", count);
}

Description

读取一个字符串,字符串可能含有空格,将字符串逆转,原来的字符串与逆转后字符串相同,输出0,原字符串小于逆转后字符串输出-1,大于逆转后字符串输出1。例如输入 hello,逆转后的字符串为 olleh,因为hello 小于 olleh,所以输出-1注意最后的判断一定要这么写,因为strcmp标准C中并不是返回-1和1,而是负值和正值

#include <stdio.h>
#include <string.h>
int main()
{
	char c[100], d[100];
	gets(c);
	int i, j;
	for (i = strlen(c) - 1, j = 0; i >= 0; i--, j++) {
		d[j] = c[i];
	}
	d[j] = '\0';
	int result = strcmp(c, d);
	if (result < 0) {
		printf("%d\n", -1);
	}
	else if (result > 0) {
		printf("%d\n", 1);
	}
	else {
		printf("%d\n", 0);
	}
	return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i, j;
	char k;
	scanf("%d%c%d", &i, &k, &j);
	printf("i=%d,k=%c,j=%d\n", i, k, j);
}
//输入 1 2 3
* scanf匹配原理
i=1 k= j=2

指针的使用场景

传递与偏移

指针的传递

#include <stdio.h>
void change(int *j)//j为形参,j=&i
{
	*j = 10;
}
int main()
{
	int i = 5;
	printf("before change i=%d\n", i);
	change(&i);//函数调用时,把&i成为实参
	printf("after change i=%d\n", i);
	return 0;
}

指针的偏移

数组是特殊的,不能和整型变量,浮点型变量类比

数组名 a 类型是数组 a 里面存了一个值,是地址值,是数组的起始地址。

#include <stdio.h>
int main() {
	int a[5] = { 1,2,3,4,5 };
	int* p;
	p = a;
	printf("*p=%d\n", *p);
	for (int i = 0; i < 5; i++) {
		printf("%d\n", *(p + i));
	}
}
输出:
*p=1
1
2
3
4
5
#include <stdio.h>
int main() {
	int n = 0, c;
	c = getchar();//getchar()  从标准输入 stdin 获取一个字符(一个无符号字符)
	while (c!='\n') {
		if (c>='0' && c<='9')
			n++;
		c = getchar();//为了让你接收下一个字符
	}
	printf("%d\n", n);
}

标签:main,int,备份,C语言,char,printf,字符串,include
From: https://www.cnblogs.com/hekang520/p/18387104

相关文章

  • jeecg 月份产值行转列(备份)
    @RequestMapping(params="list")publicModelAndViewlist(HttpServletRequestrequest){List<Map<String,Object>>list=newArrayList<>();for(inti=1;i<13;i++){Map<String,Object>m=......
  • 【MySQL数据库管理问答题】第11章 执行备份
    目录 1.在使用mysqlbackup进行备份时,对于InnoDB存储引擎都会备份哪些文件?2.使用mysqlbackup进行恢复时,copy-back命令执行了哪些操作?3.mysqldump和mysqlpump实用程序在功能上有哪些相同和不同的地方?4.原始二进制备份在什么条件下是可以跨平台进行移植的?5.......
  • C语言涉及问题(文件IO与数组和指针)
    一、文件IO相关1、标准出错、输入、输出三者的缓冲机制是什么?标准出错(stderr):属于不缓冲机制,数据直接写入设备标准输入(stdin)和标准输出(stdout):属于行缓冲和全缓冲,行缓冲时需要用'\n'分隔,全缓冲是缓冲区满才会写入或者输出。冲刷缓冲函数:fflush();无论是如果想将全缓冲......
  • C语言--运算符3
    自增自减运算符i++,i--运算符在后,在表达式中先用i的值,下条语句i的值自增或者自减#include<stdio.h>intmain(){inti=1;intnum;num=i++;printf("num=%d,i=%d\n",num,i);//num=1,i=2return0;}++i先加,后用#include<stdio.h>intmain(){inti=1;intnum;......
  • C语言典型例题54
    《C程序设计教程(第四版)——谭浩强》例题4.6用for语句实现1+2+3+4+……+100。代码://《C程序设计教程(第四版)——谭浩强》//例题4.6用for语句实现1+2+3+4+……+100。#include<stdio.h>intmain(){ intx=0; intsum=0; inti=0; for(i=1;i<=100;i++) { x=x......
  • 一、c语言的常见概念
    c语言的常见概念1.c语言是什么?c语言是一门计算机语言,是人和计算机交流的一门语言。2.c语言的历史和辉煌c语言最初是作为unix系统的开发工具而发明的。丹尼斯里奇——c语言之父3.编译器的选择——vs2022c语言的源代码都是文本文件,文本文件本身无法执行,必须通过编译器......
  • C语言之字符串操作
    C语言之字符串操作C语言提供了丰富的字符串处理相关的库函数,这些函数基本上,都声明在头文件string.h当中,所以使用它们需要包含这个头文件。这里只介绍几种最基本的和最常用的,以及手动实现它们的方式。字符串长度strlenstrlen函数全名:string_length函数声明:size_tstrlen(c......
  • C语言位运算
    在C语言中,位运算是对二进制位进行的操作。以下是关于C语言位运算的介绍:一、常见的位运算符按位与(&):规则:两个对应的二进制位都为1时,结果位为1,否则为0。例如:5(二进制为0101)与3(二进制为0011)进行按位与运算,结果为0001,即1。按位或(|):规则:两个对应的二进制位只要......
  • 查询权限限制备份
    TSUseruser=ResourceUtil.getSessionUser();Stringdepartid=user.getDepartid();TSDeparttsDepart=systemService.getEntity(TSDepart.class,departid);StringsysOrgCode=tsDepart.getOrgCode();try{//获取用户的......
  • C#医学影像管理系统源码,PACS系统源码带三维重建,实现检查预约、病人信息登记、计算机阅
    C#医学影像管理系统源码医学影像存储与传输系统源码PACS系统源码带三维重建PACS影像存取与传输系统以实现医学影像数字化存储、诊断为核心任务,从医学影像设备(如CT、CR、DR、MR、DSA、RF等)获取影像,集中存储、综合管理医学影像及病人相关信息,建立数字化工作流程。PACS系统可......