首页 > 编程语言 >C和C++练习

C和C++练习

时间:2023-12-17 20:36:25浏览次数:34  
标签:src int void 练习 C++ char str printf

要点:

1、数组

2、冒泡排序BubbleSort

3、带指针的结构体(malloc,free)

4、字符串操作(拷贝、逆序、比较)

5、格式化输出printf,sprintf

6、格式化输入,scanf,sscanf

7、文件操作fopen,feof,EOF,fputc,fgetc,fputs,fgets,stdin,stdout

8、数组传参(需要指定长度)、字符串传参(不需指定长度,\0结尾)

#define _CRT_SECURE_NO_WARNINGS
//#pragma warning(diable:4996)
#include <iostream>
using namespace std;
#include <vector>


//遍历测试
void foreachTest()
{
	vector<int> vec{ 1,3,5,6,7,5,3 };
	for (auto a : vec)
	{
		cout << a << ",";
	}
	cout << endl;
	for (auto a : vec)
	{
		a *= 3;
	}
	for (auto a : vec)
	{
		cout << a << ",";
	}
	cout << endl;

	for (auto& a : vec)
	{
		a *= 3;
	}
	for (auto a : vec)
	{
		cout << a << ",";
	}
	cout << endl;
	//  1, 3, 5, 6, 7, 5, 3,
	//	1, 3, 5, 6, 7, 5, 3,
	//	3, 9, 15, 18, 21, 15, 9,
	//	请按任意键继续. . .
}
//拉姆达表达式测试
void lambdaTest()
{
	int a = 1;
	int b = 2;
	auto f = [a, &b] {
		cout << "a= " << a << endl;
		cout << "b= " << b << endl;
		//a++;//表达式必须是可修改的左值
		b++;//OK
	};
	f();
	f();
	f();
	cout << "final b= " << b << endl;

}
//a = 1
//b = 2
//a = 1
//b = 3
//a = 1
//b = 4
//final b = 5
//请按任意键继续. . .

#include <functional>

//拉姆达表达式作为返回值
function<int(int, int)> returnLambda()
{
	return [](int x, int y) {return x + y; };
}
//评分1
void scoreTest1()
{
	int score;
	printf("请输入分数:");
	scanf("%d", &score);
	if (score >= 90)
	{
		printf("优秀\n");
	}
	else if (score >= 80)
	{
		printf("良好\n");
	}
	else if (score >= 60)
	{
		printf("及格\n");
	}
	else
	{
		printf("不及格\n");
	}

}
//评分2
void scoreTest2()
{
	int score2;
	printf("请输入分数:");
	scanf("%d", &score2);
	switch (score2 / 10)
	{
	case(10):
		printf("优秀\n");
		break;
	case(9):
		printf("优秀\n");
		break;
	case(8):
		printf("良好\n");
		break;
	case(7):
		printf("及格\n");
		break;
	case(6):
		printf("及格\n");
		break;

	default:
		printf("不及格\n");
		break;
	}
}
//评分3
void scoreTest3()
{
	int score;
	printf("请输入分数:");
	scanf("%d", &score);
	switch (score / 10)
	{
	case(10):
	case(9):
		printf("优秀\n");
		break;
	case(8):
		printf("良好\n");
		break;
	case(7):
	case(6):
		printf("及格\n");
		break;
	default:
		printf("不及格\n");
		break;
	}

}
//三只小猪的游戏
void threePigs1()
{
	int pig1, pig2, pig3;
	printf("请输入三只小猪的重量,以空格分隔:\n");
	scanf("%d %d %d", &pig1, &pig2, &pig3);
	if (pig1 > pig2)
	{
		if (pig1 > pig3)
		{
			printf("第1只小猪最重:%d\n", pig1);
		}
		else
		{
			printf("第3只小猪最重:%d\n", pig3);
		}
	}
	else
	{
		if (pig2 > pig3)
		{
			printf("第2只小猪最重:%d\n", pig2);
		}
		else
		{
			printf("第3只小猪最重:%d\n", pig3);
		}
	}
}

void sevenGame()
{
	int start = 1;
	while (start <= 100)
	{
		if (start % 7 == 0 || start % 10 == 7 || start / 10 == 7)
		{
			printf("拍桌子\n");
		}
		else
		{
			printf("%d\n", start);
		}
		start++;
	}
}
//格式化打印 测试
void printTest1()
{
	int n = 70000;
	printf("%%hd= %hd\n", n);
	printf("%%d= %d\n", n);
	printf("%%ld= %d\n", n);



	printf("%%x= %x\n", n);
	printf("%%X= %X\n", n);
	printf("%%#x= %#x\n", n);
	printf("%%#X= %#X\n", n);

	char str1[] = "hello world";
	printf("%%s= %s\n", str1);
	printf("%%c= %c\n", str1);
	char str2[] = { 'h','e','l','l','o',' ','w','o','r','l','d' };
	printf("%%s= %s\n", str2);
	printf("%%c= %c\n", str2);

	float f = 3.14;
	printf("%%f= %f\n", f);

	printf("%%lf= %lf\n", f);
	printf("%%e= %e\n", f);
	printf("%%le= %le\n", f);
	printf("%%E= %E\n", f);
	printf("%%LE= %LE\n", f);
	printf("%%g= %g\n", f);
	printf("%%lg= %lg\n", f);
	printf("%%G= %G\n", f);
	printf("%%LG= %LG\n", f);

	double d = 123.456789;

	printf("%%f= %f\n", d);
	printf("%%8.1f= %5.1f %5.1f\n", d, d);
	printf("%%8.2f= %5.2f %5.2f\n", d, d);
	printf("%%5.3f= %5.3f\n", d);
	printf("%%5.4f= %5.4f\n", d);

	int m = 5678;
	printf("%%d= %d\n", m);
	printf("%%1d= %1d\n", m);
	printf("%%2d= %2d\n", m);
	printf("%%3d= %3d\n", m);
	printf("%%4d= %4d\n", m);


	unsigned int u = 10;
	unsigned short uh = 20;
	unsigned long ul = 30;
	unsigned long long ull = 40;
	printf("%%u= %u\n", u);
	printf("%%hu= %hu\n", uh);
	printf("%%lu= %lu\n", ul);
	printf("%%llu= %llu\n", ull);
}
//% hd = 4464
//% d = 70000
//% ld = 70000
//% x = 11170
//% X = 11170
//% #x = 0x11170
//% #X = 0X11170
//% s = hello world
//% c =
//% s = hello world烫烫烫烫蘦ello world
//% c = ?
//% f = 3.140000
//% lf = 3.140000
//% e = 3.140000e+00
//% le = 3.140000e+00
//% E = 3.140000E+00
//% LE = 3.140000E+00
//% g = 3.14
//% lg = 3.14
//% G = 3.14
//% LG = 3.14
//% f = 123.456789
//% 8.1f = 123.5 123.5
//% 8.2f = 123.46 123.46
//% 5.3f = 123.457
//% 5.4f = 123.4568
//% d = 5678
//% 1d = 5678
//% 2d = 5678
//% 3d = 5678
//% 4d = 5678
//% u = 10
//% hu = 20
//% lu = 30
//% llu = 40
//请按任意键继续. . .

//数组测试1
void arrTest1()
{
	int arr1[5] = { 1,2,3 };
	size_t len1 = sizeof(arr1) / sizeof(arr1[0]);
	printf("len of arr1= %d\n", len1);
	printf("arr1= %p\n", arr1);
	for (size_t i = 0; i < len1; i++)
	{
		printf("&arr1[%u]= %p , arr1[%u]= %p\n", i, &arr1[i], i, arr1[i]);
	}
	int arr2[10] = {  };//全部初始化为0
	size_t len2 = sizeof(arr2) / sizeof(arr2[0]);
	printf("len of arr2= %d\n", len2);
	for (size_t i = 0; i < len2; i++)
	{
		printf("arr2[%u]= %d\n", i, arr2[i]);
	}
	int arr3[] = { 3,4,5 };
	size_t len3 = sizeof(arr3) / sizeof(arr3[0]);
	printf("len of arr3= %d\n", len3);
	for (size_t i = 0; i < len3; i++)
	{
		printf("arr3[%u]= %d\n", i, arr3[i]);
	}
	int arr4[6];
	size_t len4 = sizeof(arr4) / sizeof(arr4[0]);
	printf("len of arr4= %d\n", len4);
	for (size_t i = 0; i < len4; i++)
	{
		printf("arr4[%u]= %d\n", i, arr4[i]);
	}
}

//len of arr1 = 5
//arr1 = 00CFF6D4
//& arr1[0] = 00CFF6D4, arr1[0] = 00000001
//& arr1[1] = 00CFF6D8, arr1[1] = 00000002
//& arr1[2] = 00CFF6DC, arr1[2] = 00000003
//& arr1[3] = 00CFF6E0, arr1[3] = 00000000
//& arr1[4] = 00CFF6E4, arr1[4] = 00000000
//len of arr2 = 10
//arr2[0] = 0
//arr2[1] = 0
//arr2[2] = 0
//arr2[3] = 0
//arr2[4] = 0
//arr2[5] = 0
//arr2[6] = 0
//arr2[7] = 0
//arr2[8] = 0
//arr2[9] = 0
//len of arr3 = 3
//arr3[0] = 3
//arr3[1] = 4
//arr3[2] = 5
//len of arr4 = 6
//arr4[0] = -858993460
//arr4[1] = -858993460
//arr4[2] = -858993460
//arr4[3] = -858993460
//arr4[4] = -858993460
//arr4[5] = -858993460


//数组测试2
void arrTest2()
{
	int arr[] = { 1,2,3 };
	int* p = arr;
	size_t len = sizeof(arr) / sizeof(arr[0]);
	for (size_t i = 0; i < len; i++)
	{
		printf("arr[%u]= %d\n", i, arr[i]);
		printf("*(arr+%u)= %d\n", i, *(arr + i));
		printf("p[%u]= %d\n", i, p[i]);
		printf("*(p+%u)= %d\n", i, *(p + i));
		printf("\n");
	}
}
//arr[0] = 1
//* (arr + 0) = 1
//p[0] = 1
//* (p + 0) = 1
//
//arr[1] = 2
//* (arr + 1) = 2
//p[1] = 2
//* (p + 1) = 2
//
//arr[2] = 3
//* (arr + 2) = 3
//p[2] = 3
//* (p + 2) = 3

//冒泡排序
void BubbleSort(int* arr, size_t len, bool ascending = true)
{
	int temp;
	for (size_t i = 0; i < len - 1; i++)
	{
		for (size_t j = 0; j < len - 1 - i; j++)
		{
			if (ascending ? arr[j] > arr[j + 1]:arr[j] < arr[j + 1])
			{
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}
//冒泡排序 测试
void SortTest1()
{
	int arr[] = { 4,65,33,5,7,88,2,6,23 };
	size_t len = sizeof(arr) / sizeof(arr[0]);
	BubbleSort(arr, len, false);
	for (size_t i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}

void printSize(int* arr)
{
	printf("size of arr arg = %u\n", sizeof(arr));
}

void sizeTest()
{
	int arr[] = { 4,5,6,7,8 };
	printf("size of arr = %u\n", sizeof(arr));
	printSize(arr);
}
//size of arr = 20
//size of arr arg = 4
//请按任意键继续. . .

//字符串比较1
int strCmp1(char* str1, char* str2)
{
	int i = 0;
	while (str1[i] == str2[i])
	{
		if (str1[i] == '\0')
		{
			return 0;
		}
		i++;
	}
	return str1[i] > str2[i] ? 1 : -1;
}
//字符串比较2
int strCmp2(char* str1, char* str2)
{
	int i = 0;
	while (*(str1 + i) == *(str2 + i))
	{
		if (*(str1 + i) == '\0')
		{
			return 0;
		}
		i++;
	}
	return (*(str1 + i)) > (*(str2 + i)) ? 1 : -1;
}
//字符串比较 测试
void strCmpTest()
{
	char str1[] = "hello";
	char str2[] = "hello";
	int res = strCmp2(str1, str2);
	printf("str1= %s\n", str1);
	printf("str2= %s\n", str2);
	if (res == 0)
	{
		printf("str1==str2\n");
	}
	else if (res == 1)
	{
		printf("str1>str2\n");

	}
	else if (res == -1)
	{
		printf("str1<str2\n");
	}
}
//str1 = hello
//str2 = hello world
//str1 < str2
//请按任意键继续. . .
//str1 = hello
//str2 = hella
//str1 > str2
//请按任意键继续. . .
//str1 = hello
//str2 = hello
//str1 == str2
//请按任意键继续. . .
void strTest1()
{
	char str1[] = "abc";
	char str2[] = { 'a','b','c' };
	//char* str3 = "abc";//错误	"const char *" 类型的值不能用于初始化 "char *" 类型的实体

	//char* str4 = { 'a','b','c' }; //错误 初始值设定项值太多	
	printf("str1= %s\n", str1);
	printf("str2= %s\n", str2);
	str1[0] = 'R';
	str2[0] = 'X';
	printf("str1= %s\n", str1);
	printf("str2= %s\n", str2);
}
//str1 = abc
//str2 = abc烫烫烫烫蘟bc
//str1 = Rbc
//str2 = Xbc烫烫烫烫蘎bc
//请按任意键继续. . .

//字符串拷贝1
void strCpy1(char* src, char* dst)
{
	int i = 0;
	while (src[i] != '\0')
	{
		dst[i] = src[i];
		i++;
	}
	dst[i] = '\0';
}
//字符串拷贝2
void strCpy2(char* src, char* dst)
{
	int i = 0;
	while (*(src + i) != '\0')
	{
		*(dst + i) = *(src + i);
		i++;
	}
	*(dst + i) = '\0';
}
//字符串拷贝3
void strCpy3(char* src, char* dst)
{
	while (*src != '\0')
	{
		*dst = *src;
		dst++;
		src++;
	}
	*dst = '\0';
}
//移除空格1
void removeSpace1(char* src, char* dst)
{
	int i = 0, j = 0;
	while (src[i] != '\0')
	{
		if (src[i] != ' ')
		{
			dst[j] = src[i];
			j++;
		}
		i++;
	}
	dst[j] = '\0';
}
//移除空格2
void removeSpace2(char* src, char* dst)
{
	int i = 0, j = 0;
	while (*(src + i) != '\0')
	{
		if (*(src + i) != ' ')
		{
			*(dst + j) = *(src + i);
			j++;
		}
		i++;
	}
	*(dst + j) = '\0';
}
//移除空格3
void removeSpace3(char* src, char* dst)
{
	while (*src != '\0')
	{
		if (*src != ' ')
		{
			*dst = *src;
			dst++;
		}
		src++;
	}
	*dst = '\0';
}
//字符串拷贝测试
void strCpyTest()
{
	char src[] = "ni chou sha chou ni za di";
	size_t len = sizeof(src);
	printf("len of src = %d\n", len);
	char dst1[sizeof(src)] = {};
	strCpy1(src, dst1);
	char dst2[sizeof(src)] = {};
	strCpy2(src, dst2);
	printf("src= %s\n", src);
	printf("copy dst1= %s\n", dst1);
	printf("copy dst2= %s\n", dst2);

	char dst3[sizeof(src)] = {};
	char dst4[sizeof(src)] = {};
	removeSpace1(src, dst3);
	removeSpace2(src, dst4);
	printf("remove space dst3= %s\n", dst3);
	printf("remove space dst4= %s\n", dst4);

	char dst5[sizeof(src)] = {};
	strCpy3(src, dst5);
	printf("copy dst5= %s\n", dst5);

	char dst6[sizeof(src)] = {};
	removeSpace3(src, dst6);
	printf("remove space dst6= %s\n", dst6);


}
//len of src = 26
//src = ni chou sha chou ni za di
//copy dst1 = ni chou sha chou ni za di
//copy dst2 = ni chou sha chou ni za di
//remove space dst3 = nichoushachounizadi
//remove space dst4 = nichoushachounizadi
//copy dst5 = ni chou sha chou ni za di
//remove space dst6 = nichoushachounizadi
//请按任意键继续. . .

//统计子串个数
int subCount(char* src, char* sub)
{
	int count = 0;
	char* p = strstr(src, sub);
	while (p != NULL)
	{
		count++;
		p++;
		p = strstr(p, sub);
	}
	return count;
}
//子串个数测试
void subCountTest()
{
	char src[] = "hello world,hello ladies hello gentleman";
	char sub[] = "llo";
	int ret = subCount(src, sub);
	printf("src= %s\n", src);
	printf("sub= %s\n", sub);
	printf("count= %d\n", ret);
}
//src = hello world, hello ladies hello gentleman
//sub = llo
//count = 3
//请按任意键继续. . .

//字符串逆序1
void strReverse1(char* str)
{
	char temp;
	size_t len = strlen(str);
	for (size_t i = 0; i < len - 1 - i; i++)
	{
		temp = str[i];
		str[i] = str[len - 1 - i];
		str[len - 1 - i] = temp;
	}
}
//字符串逆序2
void strReverse2(char* str)
{
	char* start = str;
	char* end = str + strlen(str) - 1;
	char temp;
	while (start < end)
	{
		temp = *start;
		*start = *end;
		*end = temp;
		start++;
		end--;
	}
}
//字符串逆序测试
void strReverseTest()
{
	char str[] = "hello";
	printf("str= %s\n", str);
	strReverse1(str);
	printf("reverse= %s\n", str);
	strReverse2(str);
	printf("recovery= %s\n", str);
}
//str = hello
//reverse = olleh
//recovery = hello
//请按任意键继续. . .

//判断回文字符串
int str_aba(char* str)
{
	char* start = str;
	char* end = str + strlen(str) - 1;
	while (start < end)
	{
		if (*start != *end)
		{
			return 0;
		}
		start++;
		end--;
	}
	return 1;
}

int strLen_noSpace(char* str)
{
	int count = 0;
	while (*str)
	{
		if (*str != ' ')
		{
			count++;
		}
		str++;
	}
	return	count;
}
//带一级指针的结构体
struct Person
{
	char* name;
	int age;
};
void allocPerson(Person*** pPersons, int len)
{
	if (pPersons == NULL)
	{
		return;
	}
	*pPersons = (Person**)malloc(sizeof(Person*) * len);
	for (size_t i = 0; i < len; i++)
	{
		(*pPersons)[i] = (Person*)malloc(sizeof(struct Person));
		(*pPersons)[i]->name = (char*)malloc(sizeof(char) * 64);
		sprintf((*pPersons)[i]->name, "person_%u", i + 1);
		(*pPersons)[i]->age = i + 20;
	}
}
void printPerson(Person** persons, int len)
{
	for (size_t i = 0; i < len; i++)
	{
		printf("name=%s,age=%d\n", persons[i]->name, persons[i]->age);
	}
}
void freePerson(Person** persons, int len)
{
	if (persons == NULL || len < 1)
	{
		return;
	}
	for (size_t i = 0; i < len; i++)
	{
		if (persons[i] != NULL)
		{
			if (persons[i]->name != NULL)
			{
				free(persons[i]->name);
				persons[i]->name = NULL;
			}
			free(persons[i]);
			persons[i] = NULL;
		}
	}
	free(persons);
	persons = NULL;
}
void personTest()
{
	Person** persons = NULL;
	int len = 4;
	allocPerson(&persons, len);
	printPerson(persons, len);
	freePerson(persons, len);
}
//name = person_1, age = 20
//name = person_2, age = 21
//name = person_3, age = 22
//name = person_4, age = 23
//请按任意键继续. . .

//带二级指针的结构体
struct Teacher
{
	char* name;
	char** students;
};
//分配堆空间
void allocTeacher(Teacher*** pTeachers, int lenTeacher, int lenStudent)
{
	if (pTeachers==NULL)
	{
		return;
	}
	(*pTeachers) =(Teacher**) malloc(sizeof(Teacher*)*lenTeacher);
	for (size_t i = 0; i < lenTeacher; i++)
	{
		(*pTeachers)[i] =(Teacher*) malloc(sizeof(Teacher));
		(*pTeachers)[i]->name = (char*)malloc(sizeof(char) * 64);
		sprintf((*pTeachers)[i]->name,"teacher_%d",i+1);
		(*pTeachers)[i]->students = (char**)malloc(sizeof(char*) * lenStudent);
		for (size_t j = 0; j < lenStudent; j++)
		{
			(*pTeachers)[i]->students[j] = (char*)malloc(sizeof(char) * 64);
			sprintf((*pTeachers)[i]->students[j], "teacher_%d_student_%d", i + 1, j + 1);
		}
	}

}
//打印数据
void printTeacher(Teacher** teachers, int lenTeacher, int lenStudent)
{
	for (size_t i = 0; i <lenTeacher; i++)
	{
		printf("%s\n",teachers[i]->name);
		for (size_t j = 0; j < lenStudent; j++)
		{
			printf("	%s\n", teachers[i]->students[j]);
		}
	}
}
//释放堆空间
void freeTeacher(Teacher** teachers, int lenTeacher, int lenStudent)
{
	if (teachers==NULL||lenTeacher<1)
	{
		return;
	}
	for (size_t i = 0; i < lenTeacher; i++)
	{
		if (teachers[i]!=NULL)
		{
			if (teachers[i]->name!=NULL)
			{
				free(teachers[i]->name);
				teachers[i]->name = NULL;
			}
			if (teachers[i]->students!=NULL&&lenStudent>0)
			{
				for (size_t j = 0; j < lenStudent; j++)
				{
					if (teachers[i]->students[j]!=NULL)
					{
						free(teachers[i]->students[j]);
						teachers[i]->students[j] = NULL;
					}
				}
				free(teachers[i]->students);
				teachers[i]->students = NULL;
			}
			free(teachers[i]);
		}
	}
	free(teachers);
	teachers = NULL;
}
//带二级指针的结构体 测试
void teacherTest()
{
	Teacher** teachers = NULL;
	int lenTeacher = 3;
	int lenStudent = 4;
	allocTeacher(&teachers,lenTeacher,lenStudent);
	printTeacher(teachers,lenTeacher,lenStudent);
	freeTeacher(teachers,lenTeacher,lenStudent);
}
//teacher_1
//teacher_1_student_1
//teacher_1_student_2
//teacher_1_student_3
//teacher_1_student_4
//teacher_2
//teacher_2_student_1
//teacher_2_student_2
//teacher_2_student_3
//teacher_2_student_4
//teacher_3
//teacher_3_student_1
//teacher_3_student_2
//teacher_3_student_3
//teacher_3_student_4
//请按任意键继续. . .

void fileTest1()
{
	char file[] = "C:\\Users\\Dell\\Desktop\\test.txt";
	FILE* pf = fopen(file,"w");
	if (pf == NULL)
	{
		perror("file open failed");
		return;
	}
	for (size_t i = 0; i < 26; i++)
	{
		putc('a'+i,pf);
	}
	fclose(pf);
}
void fileTest2()
{
	char file[] = "C:\\Users\\Dell\\Desktop\\test.txt";
	FILE* pf = fopen(file,"r");
	if (pf==NULL)
	{
		perror("file open for read failed");
		return;
	}
	char c;
	while (1)
	{
		c = getc(pf);
		if (c==EOF)
		{
			break;
		}
		printf("%c",c);
	}
	printf("\n");
	fclose(pf);

}
//abcdefghijklmnopqrstuvwxyz
void fileTest3()
{
	char file[] = "C:\\Users\\Dell\\Desktop\\test.txt";
	FILE* pf = fopen(file,"r");
	char c;
	while (!feof(pf))
	{
		c=getc(pf);
		printf("%c",c);
	}
	printf("\n");
	fclose(pf);
}
//abcdefghijklmnopqrstuvwxyz

void fgetsTest()
{
	char buf[10];
	printf("%s",fgets(buf,10,stdin));
}
//hello
//hello
//请按任意键继续. . .
//helloworld
//helloworl请按任意键继续. . .
//无论缓存长度是否足够,一定会添加\0,
//如果长度不够,则会舍弃\n和结尾的其他字符,以_MaxCount为准
void fputsTest()
{
	char str[] = "hello";
	fputs(str,stdout);
}
//hello请按任意键继续. . .
//写入的内容,不会添加\n

//将控制台的输入内容写入文件
//以:q表示退出
//可以支持多行文本写入
void consoleToFile()
{
	char buf[1024];

	char file[] = "C:\\Users\\Dell\\Desktop\\console.txt";
	FILE* fp = fopen(file,"w");
	if (fp==NULL)
	{
		perror("fopen error");
		return;
	}
	while (1)
	{
		fgets(buf, 1024, stdin);
		if (strcmp(buf,":q\n")==0)
		{
			break;
		}
		fputs(buf,fp);
	}
	fclose(fp);
}
//基于文件的计算器
void fileCalculate()
{
	char file1[] = "C:\\Users\\Dell\\Desktop\\calculate1.txt";
	char file2[] = "C:\\Users\\Dell\\Desktop\\calculate2.txt";
	FILE* pf1 = fopen(file1,"r");
	FILE* pf2 = fopen(file2,"w");
	if (pf1==NULL|| pf2 == NULL)
	{
		perror("fopen error");
		return;
	}
	char buf[1024];
	int a, b, r=0;
	char c;
	while (!feof(pf1))
	{
		fgets(buf,1024,pf1);
		sscanf(buf,"%d%c%d=\n",&a,&c,&b);
		switch (c)
		{
		case '+':
			r = a + b; break;
		case '-':
			r = a - b; break;
		case '*':
			r = a * b; break;
		case '/':
			r = a / b; break;
		default:
			break;
		}
		sprintf(buf, "%d%c%d=%d\n",a,c,b,r);
		fputs(buf,pf2);
	}
	fclose(pf1);
	fclose(pf2);

}
//输入文件
//1 + 2 =
//44 / 4 =
//8 - 3 =
//5 * 6 =
//输出文件
//1 + 2 = 3
//44 / 4 = 11
//8 - 3 = 5
//5 * 6 = 30

void cinTest()
{
	float f = 0.1f;
	cout << "请输入一个浮点数:" << endl;
	cin >> f;
	cout << "浮点数f= " << f << endl;
	bool b = false;
	cout << "请输入一个布尔值:" << endl;
	cin >> b;
	cout << "布尔值b= " << b << endl;
}
//请输入一个浮点数:
//6.5
//浮点数f = 6.5
//请输入一个布尔值:
//55
//布尔值b = 1
//请按任意键继续. . .
//请输入一个浮点数:
//4
//浮点数f = 4
//请输入一个布尔值:
//true
//布尔值b = 0
//请按任意键继续. . .





//Main
int main()
{



	cinTest();
	//fileCalculate();
	//consoleToFile();
	//fputsTest();
	//fgetsTest();
	//fileTest1();
	//fileTest2();
	//fileTest3();
	//teacherTest();
	//personTest();
	//strReverseTest();
	//subCountTest();
	//strCpyTest();
	//strTest1();
	//strCmpTest();
	//sizeTest();
	//SortTest1();
	//arrTest2();
	//arrTest1();
	//printTest1();
	//sevenGame();
	//threePigs1();
	//scoreTest3();
	//scoreTest2();
	//scoreTest1();
	//lambdaTest();
	//foreachTest();
	system("pause");
	return 0;
}

 

标签:src,int,void,练习,C++,char,str,printf
From: https://www.cnblogs.com/zhangdezhang/p/17909719.html

相关文章

  • C++ Qt开发:自定义Dialog对话框组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍自定义Dialog组件的常用方法及灵活运用。在之前的文章中笔者已经为大家展示了默认Dialog组件的使......
  • C++中SQLite数据库操作实例:查询、增加、修改、删除一网打尽
     在C++中使用SQLite数据库需要使用SQLite的C/C++接口。以下是一个简单的示例,演示如何在C++中使用SQLite,并提供了常见的查询、增加、修改和删除功能。为了使用SQLite,你需要下载SQLite的C/C++接口,并链接到你的项目中。首先,确保你已经下载了SQLite的C/C++接口,然后将头文件和库文......
  • 基于vue脚手架练习3
    <template><div><first-page-3:person="person"></first-page-3></div></template><script>importFirstPage3from'./FirstPage3.vue'exportdefault{components:{Firs......
  • C++ Qt开发:标准Dialog对话框组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍标准对话框QInputDialog、QFileDialog这两种对话框组件的常用方法及灵活运用。在Qt中,标准对话......
  • Day01练习常见的Dos命令
    练习常见的Dos命令#盘符切換切换到根目录査看当前目录下的所有文件切換目录前往上一级目录清理屏幕#盘符切換(跨盘操作,一步切换到D盘的QQ文档)切换到根目录(切换到D盘)盘符切換(切换到D盘的QQ文档)前往上一级目录査看当前目录下的......
  • Qt/C++音视频开发60-坐标拾取/按下鼠标获取矩形区域/转换到视频源真实坐标
    一、前言通过在通道画面上拾取鼠标按下的坐标,然后鼠标移动,直到松开,根据松开的坐标和按下的坐标,绘制一个矩形区域,作为热点或者需要电子放大的区域,拿到这个坐标区域,用途非常多,可以直接将区域中的画面放大,也可以将该圈起来的区域位置发给设备,由设备设定对应的热点区域作为集中观察点......
  • C++常用STL容器
    1.queue#include<queue>usingnamespacestd;queue<int>q;常用方法1.size()q.size()值为所包含的元素的个数2.front()q.front()头元素3.back()q.back()尾元素4.push()q.push(value)将value加入队列q中5.pop()q.pop()将头元素弹出队列q中测试代码:#include<i......
  • C++ AOP 编程介绍
    AOP(Aspect-OrientedProgramming)是一种编程范式,将程序的非核心逻辑都“横切”处理,实现非核心逻辑与核心逻辑的分离【1】在日常工作中,会遇到一类需求:统计业务处理的耗时或者加锁,业务函数可以动态替换而非侵入式修改业务函数;简单粗暴的方法是:RetProcess(...)//业务函数{......
  • c++单词排序。
    --START--读入n个英文单词,将这n个单词按字典序升序排序后,重新输出。第1行,一个正整数n。(0<n<100)第2行,n个英文单词。单词之间用空格隔开。一行,n个按字典序升序排序后的英文单词。单词之间用空格隔开。in:5hiIamastudentout:Iamahistudent#include<iostream>......
  • 作用域链demon练习
    demon1functiontest(){console.log(b);//undefinedif(a){varb=100;}console.log(b)////undefinedc=234;console.log(c)//234}vara;test();a=10;console.log(c)//234//分析//VO={//a:und......