C语言基础题目汇总

C语言基础题目汇总

在这里插入图片描述
使用普通方法

#include<stdio.h>
void main()
{
	int a, b,temp;
	printf("请分别输入两个整形:");
	scanf("%d %d", &a, &b);
	//从大到小
	if (a < b)
	{
		temp = a;
		a = b;
		b = temp;
	}
	//从小到大
	//if (a > b)
	//{
	//	temp = a;
	//	a = b;
	//	b = temp;
	//}
	printf("max=%d,min=%d\n", a, b);
}
//请分别输入两个整形:3232 2
//max = 3232, min = 2

使用函数方法

#include<stdio.h>
void swap(int x, int y);
void main()
{
	int a, b;
	printf("请分别输入两个整形:");
	scanf("%d %d", &a, &b);
	swap(a, b);
}
void swap(int x, int y)
{
	int temp;
	if (x < y)
	{
		temp = x;
		x = y;
		y = temp;
	}
	printf("max=%d,min=%d", x, y);
}
//请分别输入两个整形:3232 4
//max = 3232, min = 4

使用指针的方法

#include<stdio.h>
void main()
{
	int a, b, *p1, *p2, *p;
	printf("请分别输入两个整形:");
	scanf("%d %d", &a, &b);
	p1 = &a;
	p2 = &b;
	if (a < b)
	{
		p = p1;
		p1 = p2;
		p2 = p;
	}
	//p1指向b,p2指向a
	printf("a=%d,b=%d\n", a, b);
	printf("max=%d,min=%d\n", *p1, *p2);
}
//请分别输入两个整形:2321 23
//a=2321,b=23
//max=2321,min=23

#include<stdio.h>
int main()
{
	int a, b,temp;
	printf("请分别输入两个整形:");
	scanf("%d %d", &a, &b);
	int *p1, *p2;
	p1 = &a;
	p2 = &b;
	if (*p1 < *p2)
	{
		temp = *p1;
		*p1 = *p2;
		*p2 = temp;
	}
	printf("max=%d,min=%d", a, b);
}
//请分别输入两个整形:483 54
//	max = 483, min = 54

使用指针+函数方法

#include<stdio.h>
void swap(int* p1, int* p2);
void main()
{
	int a, b;
	int* p1, *p2;
	printf("请分别输入两个整形:");
	scanf("%d %d", &a, &b);
	p1 = &a;
	p2 = &b;
	swap(p1, p2);
	printf("max=%d,min=%d", a, b);

}
void swap(int* p1, int* p2)
{
	int temp;
	if (*p1 < *p2)
	{
		temp = *p1;
		*p1 = *p2;
		*p2 = temp;
	}
}
//请分别输入两个整形:3232 4
//max = 3232, min = 4


使用函数指针变量调用函数

#include <stdio.h>
int max, min;
void main()
{
	void result(int, int);
	int a, b, c;
	printf("请分别输入两个整形:");
	scanf("%d %d", &a, &b);
	int(*p)();
	p = result;
	(*p)(a, b);
	printf("max=%d min=%d", max,min);
}
void result(int x, int y)
{
	if (x > y)
	{
		max = x;
		min = y;
	}
	else
	{
		max = y;
		min = x;
	}

}
//请分别输入两个整形:32 3123
//max = 3123 min = 32
#include <stdio.h>
void main()
{
	void result(int, int);
	int a, b;
	int *p1, *p2;
	printf("请分别输入两个整形:");
	scanf("%d %d", &a, &b);
	int(*p)();
	p = result;
	p1 = &a;
	p2 = &b;
	(*p)(p1, p2);
	printf("max=%d min=%d", a, b);
}
void result(int *x, int *y)
{
	int temp;
	if (*x < *y)
	{
		temp = *x;
		*x = *y;
		*y = temp;
	}
	
}
//请分别输入两个整形:32 3123
//max = 3123 min = 32

在这里插入图片描述
使用普通方法

#include<stdio.h>
void main()
{
	int str[3];
	int max, min;
	printf("请分别输入三个整形:");
	for (int i = 0; i < 3; i++)
	{
		scanf("%d", &str[i]);
	}
	min = max = str[0];
	for (int i = 0; i < 3; i++)
	{
		if (max < str[i])
		{
			max = str[i];
		}
		else if (min > str[i])
		{
			min = str[i];
		}
	}
	printf("max:%d min:%d", max, min);

}
//请分别输入三个整形:1 10 100
//max : 100 min : 1

使用函数方法

#include<stdio.h>
int max, min;
void main()
{
	void result(int a[]);
	int str[3];
	printf("请分别输入三个整形:");
	for (int i = 0; i < 3; i++)
	{
		scanf("%d", &str[i]);
	}
	result(str);
	printf("max:%d min:%d", max, min);
}
void result(int a[])
{
	min = max = a[0];
	for (int i = 0; i < 3; i++)
	{
		if (max < a[i])
		{
			max = a[i];
		}
		else if (min > a[i])
		{
			min = a[i];
		}
	}
}
//请分别输入三个整形:1 100 200
//max : 200 min : 1

使用下标法

#include <stdio.h>
void first(int a[]);
int max, min;
void main()
{
	int a[3];
	printf("请分别输入3个整数:");
	for (int i = 0; i < 3; i++)
	{
		scanf("%d", &a[i]);
	}
	first(a);
	printf("max=%d,min=%d", max, min);
}
void first(int a[])
{
	max = min= *a;
	for (int i = 0; i < 3; i++)
	{
		if (max < *(a + i))
		{
			max = *(a + i);
		}
		else if (min > * (a + i))
		{
			min = *(a + i);
		}
	}
}
//请分别输入3个整数:54 27 74
//max = 74, min = 27

使用指针方法

#include <stdio.h>
void first(int* a);
int max, min;
void main()
{
	int a[3];
	printf("请分别输入3个整数:");
	for (int i = 0; i < 3; i++)
	{
		scanf("%d", &a[i]);
	}
	first(a);
	printf("max=%d,min=%d", max, min);
}
void first(int a[])
{
	max = min = *a;
	int* p;
	for (p = a; p < (a + 3); p++)
	{
		if (max < *p)
		{
			max = *p;
		}
		else if (min > * p)
		{
			min = *p;
		}
	}
}
//请分别输入3个整数:21 23 87
//max = 87, min = 21

在这里插入图片描述
使用普通方法

#include <stdio.h>
void main()
{
	int a[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };//二维数组
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
}
//0 1 2 3
//4 5 6 7
//8 9 10 11

使用下标法

#include <stdio.h>
void main()
{
	int a[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };//二维数组
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", *(*(a + i) + j));
		}
		printf("\n");
	}
}
//0 1 2 3
//4 5 6 7
//8 9 10 11

使用指针方法

#include <stdio.h>
void main()
{
	int a[3][4] = { 0,1,2,3,4,5,6,7,8,9,10,11 };//二维数组
	int(*p)[4];
	p = a;//a==*a==a[0]==&a[0]==&a[0][0]
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d ", *(*(p + i) + j));
		}
		printf("\n");
	}
}
//0 1 2 3
//4 5 6 7
//8 9 10 11

在这里插入图片描述
返回指针值的函数

#include <stdio.h>
void main()
{
	double score[][4] = { {79.5,89.5,99,67},{67,84,60,90.5},{77,79,97,87.5},{55,76,66,88} };
	double* search(double(*pointer)[4], int n);
	double* p;
	int m;
	printf("请输入学生的序号(0-3):");
	scanf("%d", &m);
	p = search(score, m);
	for (int i = 0; i < 4; i++)
	{
		printf("%5.2f\t", *(p + i));
	}

}
double* search(double(*pointer)[4], int n)
{
	double* pt;
	pt = *(pointer + n);
	return pt;
}
//请输入学生的序号(0 - 3) :3
//55.00   76.00   66.00   88.00

指针方法

#include <stdio.h>
void main()
{
	double score[][4] = { {79.5,89.5,99,67},{67,84,60,90.5},{77,79,97,87.5},{55,76,66,88} };
	double search(double(*pointer)[4], int n);
	int m;
	printf("请输入学生的序号(0-3):");
	scanf("%d", &m);
	search(score, m);

}
double search(double(*pointer)[4], int n)
{
	for (int i = 0; i < 4; i++)
	{
		printf("%5.2f\t", *(*(pointer + n)+i));
	}
}
//请输入学生的序号(0 - 3) :3
//55.00   76.00   66.00   88.00

在这里插入图片描述
使用普通方法

#include <stdio.h>
void main()
{
	char a[] = "I Love FishC!";
	char b[40];
	int i;
	for (i = 0; a[i]!='\0'; i++)
	{
		b[i] = a[i];
	}
	b[i] = '\0';
	for (int i = 0; b[i]!='\0'; i++)
	{
		printf("%c", b[i]);
	}
}

使用下标法

#include <stdio.h>
void main()
{
	char a[] = "I Love FishC!";
	char b[40];
	int i;
	for (i = 0; *(a + i) != 0; i++)
	{
		*(b + i) = *(a + i);
	}
	*(b + i) = '\0';
	for (int i = 0; b[i] != '\0'; i++)
	{
		printf("%c", b[i]);
	}
}
//I Love FishC!

使用指针方法

#include <stdio.h>
void main()
{
	char a[]="I Love FishC!";
	char b[40];
	char *p1;
	char *p2;
	p1 = a;
	p2 = b;
	for (;*p1!='\0'; p1++,p2++)
	{
		*p2= *p1;
	}
	*p2 = '\0';
	for (int i = 0; b[i]!='\0'; i++)
	{
		printf("%c", b[i]);
	}
}
//I Love FishC!

在这里插入图片描述
使用普通方法

#include <stdio.h>
char copy(char from[], char to[]);
void main()
{
	char a[] = "I Love FishC!";
	char b[] = "I Love Chian!";
	printf("a=%s\nb=%s\n", a, b);
	copy(a, b);
	printf("a=%s\nb=%s\n", a, b);
}
char copy(char from[], char to[])
{
	int i;
	for (i = 0; from[i] != '\0'; i++)
	{
		to[i] = from[i];
	}
	to[i] = '\0';
}
//a = I Love FishC!
//b = I Love Chian!
//a = I Love FishC!
//b = I Love FishC!

使用指针方法

#include <stdio.h>
void copy(char* p1, char* p2);
void main()
{
	char a[] = "I Love FishC!";
	char b[] = "I Love Chian!";
	char* p1, * p2;
	p1 = a;
	p2 = b;
	printf("a=%s\nb=%s\n", a, b);
	copy(p1, p2);
	printf("a=%s\nb=%s\n", a, b);
}
void copy(char *p1, char *p2)
{
	for (; *p1 != '\0'; p1++, p2++)
	{
		*p2 = *p1;
	}
	*p2 = '\0';
}
//a = I Love FishC!
//b = I Love Chian!
//a = I Love FishC!
//b = I Love FishC!

在这里插入图片描述

#include<stdio.h>
void main()
{
	int year;
	printf("请输入一个年份:\n");
	scanf("%d", &year);
	if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
	{
		printf("闰年");
	}
	else
	{
		printf("平年");
	}
}
//请输入一个年份:
//2021
//平年


在这里插入图片描述
使用普通方法

#include<stdio.h>
void main()
{
	int year, month, day, months, sum = 0, days;
	printf("请分别输入年月日:");
	scanf("%d%d%d", &year, &months, &days);
	for (month = 1; month < months; month++)
	{
		if (month == 2)
		{
			if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
			{
				day = 29;
			}
			else
			{
				day = 28;
			}
		}
		if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
		{
			day = 31;
		}
		else if (month == 4 || month == 6 || month == 9 || month == 11)
		{
			day = 30;
		}
		sum = sum + day;
	}
	sum = sum + days;
	printf("这一天是今年的第%d天", sum);

}
//请分别输入年月日:2021 3 5
//这一天是今年的第64天

使用结构体变量方法

#include<stdio.h>
void main()
{
	struct date
	{
		int year;
		int month;
		int day;
	}one;
	int months, days=0,sum=0;
	printf("请输入年月日:");
	scanf("%d %d %d", &one.year,&one.month,&one.day);
	for (months = 1; months < one.month; months++)
	{
		if (months == 2)
		{
			if ((one.year % 4 == 0 && one.year % 100 != 0) || (one.year % 400 == 0))
			{
				days = 29;
			}
			else
			{
				days = 28;
			}
		}
		if (months == 1 || months == 3 || months == 5 || months == 7 || months == 8 || months == 10 || months == 12)
		{
			days = 31;
		}
		else if(months == 4 || months == 6 || months == 9 || months == 11)
		{
			days = 30;
		}
		sum = sum + days;
	}
	sum = sum + one.day;
	printf("这一天是今年的第%d天", sum);

}
//请输入年月日:2021 2 9
//这一天是今年的第40天

使用结构体函数方法

#include<stdio.h>
int cal(int year, int month, int day);
void main()
{
	struct date
	{
		int year;
		int month;
		int day;
	}one;
	int result;
	printf("请输入年月日:");
	scanf("%d %d %d", &one.year, &one.month, &one.day);
	result=cal(one.year, one.month, one.day);
	printf("这一天是今年的第%d天", result);

}
int cal(int year,int month,int day)
{
	int months, days = 0,sum=0;
	for (months = 1; months < month; months++)
	{
		if (months == 2)
		{
			if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
			{
				days = 29;
			}
			else
			{
				days = 28;
			}
		}
		if (months == 1 || months == 3 || months == 5 || months == 7 || months == 8 || months == 10 || months == 12)
		{
			days = 31;
		}
		else if (months == 4 || months == 6 || months == 9 || months == 11)
		{
			days = 30;
		}
		sum = sum + days;
	}
	sum = sum + day;
	return sum;
}
//请输入年月日:2021 2 9
//这一天是今年的第40天

在这里插入图片描述

#include<stdio.h>
void main()
{
	int head = 16;
	int foot = 40;
	int chicken;
	int rabbit;
	rabbit = (foot-2*head)/2;
	chicken = head - rabbit;
	printf("兔子有:%d\n鸡有:%d", rabbit, chicken);

}
//兔子有:4
//鸡有:12

在这里插入图片描述

#include<stdio.h>
void main()
{
	float r = 0.1;
	float P = (1+r);
	for (int i = 1; i < 10; i++)
	{
		P = P * 1.1;
	}
	printf("10年后增长%f百分比\n", P);
}
//10年后增长2.593743百分比

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
#include<math.h>
void main()
{
	int P = 1000;
	float p1, p2, p3, p4, p5;
	float year1 = 0.0414;
	float year2 = 0.0468;
	float year3 = 0.054;
	float year5 = 0.0585;
	float year0 = 0.0072;
	p1 = P * ((1 + year5 )* 5);
	p2 = P * (1 + 2 * year2) * (1 + 3 * year3);
	p3 = P * (1 + 3 * year3) * (1 + 2 * year2);
	p4 = P * pow(1+year1,5);
	p5 = P * pow(1 + (year0 / 4), 4*5);
	printf("(1):%f (2):%f (3):%f (4):%f (5):%f\n",p1,p2,p3,p4,p5);
}
//(1):5292.500488 (2):1270.763062 (3):1270.763184 (4):1224.863770 (5):1036.621094

在这里插入图片描述

#include<stdio.h>
#define PI 3.1415926
void main()
{
	float r,h;
	float a,b,c,d,e;
	printf("请分别输入圆的半径和圆柱体的高:");
	scanf("%f %f", &r, &h);
	a = 2.0 * PI * r;//圆周长公式:2πr
	b = PI*r*r;//圆面积公式:πr²
	c = 4.0*PI*r*r;//圆球表面积公式:4πr²
	d = (4.0 / 3.0) * PI * r * r * r;//圆球体积公式:(4/3)πr^3
	e =PI*r*r*h ;//圆柱体积公式:πr²h
	printf("圆周长:%.2f 圆面积:%.2f 圆球表面积:%.2f 圆球体积:%.2f 圆柱体积:%.2f\n", a, b, c, d, e);
}
//请分别输入圆的半径和圆柱体的高:1.5 3
//圆周长 : 9.42 圆面积 : 7.07 圆球表面积 : 28.27 圆球体积 : 10.60 圆柱体积 : 21.21

在这里插入图片描述

#include<stdio.h>
void main()
{
	float F,C;
	printf("请输入一个华氏温度:");
	scanf("%f", &F);
	C = (5.0 / 9.0) * (F - 32.0);
	printf("摄氏温度:%.2f", C);
}
//请输入一个华氏温度:87
//摄氏温度 : 30.56

在这里插入图片描述
普通方法

#include<stdio.h>
int main()
{
	int a[50];
	a[0] = 0;
	a[1] = 1;
	for (int i = 2; i <= 15; i++)
	{
		a[i] = a[i - 1] + a[i - 2];
		printf("%d ", a[i]);
	}
	return 0;
}
//1 2 3 5 8 13 21 34 55 89 144 233 377 610

递归方法

#include <stdio.h>
void main()
{
	for (int i = 0; i <= 15; i++)
	{
		printf("%d ", f(i));
	}
}
int f(int i)
{
	if (i == 0 || i == 1)
	{
		return 1;
	}
	else
	{
		return f(i - 1) + f(i - 2);
	}
	return 0;
}
//1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987

在这里插入图片描述

#include<stdio.h>
int main()
{
	char a[100];
	printf("请输入密码:");
	scanf("%s", &a);
	for (int i = 0; a[i]!='\0'; i++)
	{
        if (a[i] >= 'a' && a[i] <= 'z')
        {
            if (a[i] > 'v')
            {
                printf("%c", 100 - (122 - a[i]));
            }
            else
            {
                printf("%c", a[i] + 4);
            }
        }
        else if (a[i] >= 'A' && a[i] <= 'Z')
        {
            if (a[i] > 'V')
            {
                printf("%c", 68 - (90 - a[i]));
            }
            else
            {
                printf("%c", a[i] + 4);
            }
        }
        else
        {
            printf("%c", a[i]);
        }
	}
	return 0;
}
//请输入密码:China!
//Glmre!

在这里插入图片描述

#include<stdio.h>
int main()
{
	int a[3][4];
	int max;
	int row, colum;
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			scanf("%d", &a[i][j]);
		}
	}
	max = a[0][0];
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			if (a[i][j] > max)
			{
				max = a[i][j];
				row = i;
				colum = j;
			}
		}
	}
	printf("最大值为:%d\n", max);
	printf("第%d行 第%d列\n", row+1,colum+1);
	return 0;
}
//1 2 4 5
//12 32 123 55
//23 56 973 91
//最大值为:973
//第3行 第3列

在这里插入图片描述

#include<stdio.h>
void main()
{
	char str[100];
	char temp;
	printf("请输入一个不多于5位的正整数:");
	scanf("%s", str);

	printf("它是%d位数\n", strlen(str));
	printf("每位数字为:");
	for (int i = 0; str[i]!='\0'; i++)
	{
		printf("%c ", str[i]);
	}
	printf("\n");
	printf("反序数字为:");
	for (int j = 0; j < strlen(str) / 2; j++)
	{
		temp = str[j];
		str[j] = str[strlen(str) - j - 1];
		str[strlen(str) - j - 1] = temp;
	}
	for (int k = 0; str[k] != '\0'; k++)
	{
		printf("%c", str[k]);
	}

}
//请输入一个不多于5位的正整数:98423
//它是5位数
//每位数字为 : 9 8 4 2 3
//反序数字为 : 32489

在这里插入图片描述

#include<stdio.h>
void main()
{
	long  int I;
	double  money;
	printf("请输入你的利润I:");
	scanf("%ld", &I);
	if (I <= 100000)
	{
		money = I * 0.1;
	}
	else if (I <= 200000)
	{
		money = 100000 * 0.1 + (I - 100000) * 0.075;
	}
	else if (I<=400000)
	{
		money = 100000 * 0.1+ 100000 * 0.075 + (I - 200000) * 0.05;
	}
	else if (I <= 600000)
	{
		money = 100000 * 0.1 + 100000 * 0.075 + 100000 * 0.05 + (I - 400000) * 0.03;
	}
	else if (I <= 1000000)
	{
		money = 100000 * 0.1 + 100000 * 0.075 + 100000 * 0.05 +  100000 * 0.03+ (I - 600000) * 0.015;
	}
	else
	{
		money = 100000 * 0.1 + 100000 * 0.075 + 100000 * 0.05 + 100000 * 0.03 +  600000 * 0.015+ (I - 1000000) * 0.01;
	}
	printf("奖金是:%.2f", money);
}
//请输入你的利润I:234000
//奖金是 : 19200.00

在这里插入图片描述

#include<stdio.h>
void main()
{
	float d1, d2, d3, d4, x, y, x1, x2, x3, x4, y1, y2, y3, y4;
	scanf("%f,%f",&x,&y);
	int h;
	x1 = 2, y1 =2, x2 = 2, y2 = -2, x3 = -2, y3 = -2, x4 = -2, y4 = 2;
	d1 = (x - x1) * (x - x1) + (y - y1) * (y - y1);
	d2 = (x - x2) * (x - x2) + (y - y2) * (y - y2);
	d3 = (x - x3) * (x - x3) + (y - y3) * (y - y3);
	d4 = (x - x4) * (x - x4) + (y - y4) * (y - y4);
	if (d1 > 1 && d2 > 1 && d3 > 1 && d4 > 1)
	{
		h = 0;
	}
	else
	{
		h = 10;
	}
	printf("该点的高度为:%d",h);
} 
//0.5, 0.7
//该点的高度为:0
//2.1, 2.3
//该点的高度为:10

在这里插入图片描述

#include<stdio.h>
#include<math.h>
void main()
{
	int i,j,k;
	printf("100-200之间的素数有:");
	for (i = 100; i <= 200; i++)
	{
		k = sqrt(i);
		for (j = 2; j <= k; j++)
		{
			if (i % j == 0)
			{
				break;
			}
		}
		if (j >= k + 1)
		{
			printf("%d ", i);
		}
	}
}
//100-200之间的素数有: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199

在这里插入图片描述

#include<stdio.h>
#include<math.h>
void main()
{
	int a;
	int flag=0;
	int i, j, k;
	for (int a = 100; a <= 1000; a++)
	{
		i = a % 1000 / 100;//百位
		j = a % 100 / 10;//十位
		k = a % 10;//个位
		if (pow(i,3) + pow(j,3) + pow(k,3) == a)
		{
			printf("%d ", a);
		}
	}

}
//153 370 371 407

在这里插入图片描述

#include<stdio.h>
void main()
{
	int n = 1;//第10天剩下一个桃子
	for (int day = 10; day > 1; day--)
	{
		n= (n + 1) * 2;//第一天的桃子数是第二天桃子数加1后的2倍
	}
	printf("第一天一共有%d个桃子\n", n);
}
//第一天一共有1534个桃子

在这里插入图片描述

#include<stdio.h>
void main()
{
	float h = 100;
	float sum=100;
	for (int i = 1; i <= 10; i++)
	{
		h = h / 2.0;
		sum = sum + (2 * h);
	}
	printf("共经过了%fm\n", sum);
	printf("第10次反弹%fm\n", h);
}
//共经过了299.804688m
//第10次反弹0.097656m

在这里插入图片描述

#include<stdio.h>
void main()
{
	for (int i = 0; i <= 3; i++)//输出前面4行
	{
		for (int j = 0; j <= 2 - i; j++)//输出空格 3-2-1-0
		{
			printf(" ");
		}
		for (int k=0;k<=2*i;k++)//输出* 1-3-5-7
		{
			printf("*");
		}
		printf("\n");
	}
	for (int i = 0; i <= 2; i++)//输出后面3行
	{
		for (int j = 0; j <= i; j++)//输出空格 1-2-3
		{
			printf(" ");
		}
		for (int k = 0; k <= 4-2 * i; k++)//输出* 5-3-1
		{
			printf("*");
		}
		printf("\n");
	}
}

在这里插入图片描述

#include<stdio.h>
void main()
{
	for (char i = 'X'; i <= 'Z'; i++)//i是A的对手,j是B的对手,k是C的对手
	{
		for (char j = 'X'; j <= 'Z'; j++)
		{
			for (char k = 'X'; k <= 'Z'; k++)
			{
				if (i != j && i != k && j != k)
				{
					if (i != 'X' && k != 'X' && k != 'Z')
					{
						printf("A--%c B--%c C--%c", i, j, k);
					}
				}
			}
		}
	}
}
//A--Z B--X C--Y

在这里插入图片描述
使用普通方法

#include<stdio.h>
#define N 10
int main()
{
	int a[10];
	int b;
	for (int i = 0; i < N; i++)
	{
		scanf("%d", &b);
		a[i] = b;
	}
	for (int i = 0; i < N-1; i++)
	{
		for (int j = i + 1; j < N; j++)
		{
			if (a[j] < a[i]) {
				int temp = a[j];
				a[j] = a[i];
				a[i] = temp;
			}
		}
	}
	for (int i = 0; i < N; i++)
	{
		printf("%d ", a[i]);
	}

	return 0;
}
//12 321 3123 11 23 123 213 31211 2444 120
//11 12 23 120 123 213 321 2444 3123 31211


使用下标法和指针方法

#include <stdio.h>
void first(int* a);
void second(int* a);
#define N 10
void main()
{
	int a[N];
	printf("请分别输入10个整数:");
	for (int i = 0; i < N; i++)
	{
		scanf("%d", &a[i]);
	}
	first(a);
	second(a);
}
void first(int a[])
{
	for (int i = 0; i < N - 1; i++)
	{
		for (int j = i + 1; j < N; j++)
		{
			if (*(a + j) > * (a + i))
			{
				int temp = *(a + i);
				*(a + i) = *(a + j);
				*(a + j) = temp;
			}

		}
	}
	printf("从大到小的排序为:");
	for (int i = 0; i < N; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
}
void second(int a[])
{
	int* p1;
	int* p2;
	for (p1 = a; p1 < (a + (N - 1)); p1++)
	{
		for (p2 = p1 + 1; p2 < (a + N); p2++)
		{
			if (*p2 < *p1)
			{
				int temp = *p2;
				*p2 = *p1;
				*p1 = temp;
			}

		}
	}
	printf("从小到大的排序为:");
	for (int i = 0; i < N; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
}
//请分别输入10个整数:14 17 27 82 44 77 92 36 99 65
//从大到小的排序为 : 99 92 82 77 65 44 36 27 17 14
//从小到大的排序为 : 14 17 27 36 44 65 77 82 92 99

选择排序将10个数从小到大排序

#include<stdio.h>
void main()
{
	void sort(int a[], int n);
	int a[10];
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}
	sort(a, 10);
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", a[i]);
	}

}
void sort(int a[], int n)
{
	int i, j, k, t;
	for (i = 0; i < n - 1; i++)
	{
		k = i;
		for (int j = i + 1; j < n; j++)
		{
			if (a[j] < a[k])
			{
				k = j;
			}
			if (k != i)
			{
				t = a[k];
				a[k] = a[i];
				a[i] = t;
			}
		}
	}
}

在这里插入图片描述

#include<stdio.h>
#define N 3
#define M 4
void main()
{
	float a[N][M];
	float score[N];
	float sum;
	float temp=0;
	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < M; j++)
		{
			scanf("%f", &a[i][j]);
		}
	}

	for (int i = 0; i < N; i++)
	{
		sum = 0;
		for (int j = 0; j < M; j++)
		{
			sum = sum + a[i][j];
		}
		score[i] = sum / 4.0;
	}

	for (int i = 0; i < N; i++)
	{
		printf("第%d的学生的平均成绩位:%.2f\n", i + 1, score[i]);
	}
}
//94 78 87 76
//66 87 75 69
//100 98 89 77
//第1的学生的平均成绩位:83.75
//第2的学生的平均成绩位 : 74.25
//第3的学生的平均成绩位 : 91.00

在这里插入图片描述
使用普通方法

#include<stdio.h>
#define N 5
void main()
{
	int a[N];
	int temp;
	for (int i = 0; i < N; i++)
	{
		scanf("%d", &a[i]);
	}
	for (int j = 0; j < N / 2; j++)
	{
		temp = a[j];
		a[j] = a[N - j - 1];
		a[N - j - 1] = temp;
	}
	for (int i = 0; i < N; i++)
	{
		printf("%d ", a[i]);
	}
}
//8 6 5 4 1
//1 4 5 6 8

使用指针方法

#include<stdio.h>
#define N 5
void swap(int a[]);
void main()
{
	int a[N];
	for (int i = 0; i < N; i++)
	{
		scanf("%d", &a[i]);
	}
	swap(a);
	for (int i = 0; i < N; i++)
	{
		printf("%d ", a[i]);
	}
}
void swap(int a[])
{
	int temp, * p1, * p2;
	for (int i = 0; i < N / 2; i++)
	{
		p1 = a + i;
		p2 = a + (N - 1 - i);
		temp = *p1;
		*p1 = *p2;
		*p2 = temp;
	}
}
//8 6 5 4 1
//1 4 5 6 8

在这里插入图片描述

#include<stdio.h>
void main()
{
	for (int i = 0; i <= 5; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			printf("*");
		}
		printf("\n");
	}
}

在这里插入图片描述

#include<stdio.h>
void main()
{
    for (int i = 0; i <= 5; i++)
    {
        for (int j = 0; j <= i-1; j++)
        {
            printf(" ");
        }
        for (int k = 0; k <= 5; k++)
        {
            printf("*");
        }
        printf("\n");
    }
}

在这里插入图片描述

#include<stdio.h>
void main()
{
    char str[3][80];
    int a = 0, b = 0, c = 0, d = 0, e = 0;
    for (int i = 0; i < 3; i++)
    {
        gets(str[i]);
        for (int j = 0; j < 80 && str[i][j] != '\0'; j++)
        {
            if (str[i][j] >= 'a' && str[i][j] <= 'z')
            {
                a++;
            }
            else if (str[i][j] >= 'A' && str[i][j] <= 'Z')
            {
                b++;
            }
            else if (str[i][j] >= '0' && str[i][j] <= '9')
            {
                c++;
            }
            else if (str[i][j] == ' ')
            {
                d++;
            }
            else
            {
                e++;
            }
        }
    }
    printf("小写字母有:%d 大写字母有:%d 数字有:%d 空格有:%d 其他字符有:%d\n", a, b, c, d,e);
    
}
//I am a student.
//123456
//ASDFG
//小写字母有 : 10 大写字母有 : 6 数字有 : 6 空格有 : 3 其他字符有 : 1

在这里插入图片描述
递归方法

#include<stdio.h>
void main()
{
	int result(int a, int b);
	int a, b, str;
	printf("请输入两个整数:");
	scanf("%d %d", &a, &b);
	str = result(a, b);
	printf("最大公约数:%d\n", str);
	printf("最小公倍数:%d", a * b/ str);
}
int result(int a, int b)
{
	if (a == 0)
	{
		return b;
	}
	else
	{

		return result(b % a, a);
	}
}
//请输入两个整数:12 15
//最大公约数 : 3
//最小公倍数 : 60

普通方法

#include<stdio.h>
void main()
{
	int m, n,sum;
	scanf_s("%d %d",&m,&n);
	sum = m * n;
	while (m - n != 0)
		if (m > n)
		{
			m = m - n;
		}
		else
		{
			n = n - m ;
		}
	printf("最大公约数:%d\n", m);
	printf("最小公倍数:%d\n", sum/m);
}
//5 4
//最大公约数:1
//最小公倍数 : 20
#include<stdio.h>
int main()
{
	int x, y, j;
	int gys(int m, int n);
	printf("输入两个正整数m和n:");
	scanf("%d %d", &x, &y);
	j = gys(x, y);
	printf("最大公约数:%d\n", j);
	printf("最小公倍数:%d", x*y/j);

}
int gys(int m, int n)
{
	int r;
	while ((r = m % n ) != 0)
	{
		m = n;
		n = r;
	}
	return n;
}
//输入两个正整数m和n:4 8
//	最大公约数 : 4
//	最小公倍数 : 8

在这里插入图片描述

#include<stdio.h>
#include<math.h>
void main()
{
	int result(int a);
	int a;
	printf("请输入一个整数:");
	scanf("%d", &a);
	result(a);
	

}
int result(int a)
{
	int i,k;
	k = sqrt(a);
	for (i = 2; i <= k; i++)
	{
		if (a % i == 0)
		{
			break;
		}
	}
	if (i >= k + 1)
	{
		printf("是素数");
	}
	else
	{
		printf("不是素数");
	}
}
//请输入一个整数:17
//是素数
#include<stdio.h>
#include<math.h>
int main()
{
	int m, i,k;
	scanf("%d", &m);
	for (i = 2; i <= m-1; i++)
	{
		if (m%i == 0)
		{
			break;
		}
	}
	if (i>= m)
	{
		printf("yes");
	}
	else
	{
		printf("no");
	}

}

在这里插入图片描述

#include<stdio.h>
int main()
{
	void change(int b[3][3]);
	int a[3][3];
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			scanf("%d", &a[i][j]);
		}
	}
	change(a);
};
void change(int b[3][3])
{
	int a[3][3];
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			a[i][j] = b[j][i];
			//*(*(a+i)+j) = *(*(b + j) + i);
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
}
//1 2 3
//4 5 6
//7 8 9

//1 4 7
//2 5 8
//3 6 9

在这里插入图片描述
使用普通方法

#include<stdio.h>
int main()
{
	void change(char str[]);
	char a[100];
	scanf("%s", a);
	change(a);
	printf("%s", a);
};
void change(char str[])
{
	char temp;
	for (int i = 0; i < strlen(str) / 2; i++)
	{
		temp = str[i];
		str[i] = str[strlen(str) - i - 1];
		str[strlen(str) - i - 1] = temp;
	}

}
//CANADA
//ADANAC

使用指针方法

#include<stdio.h>
#define N 5
void swap(char a[]);
void main()
{
	char a[100];
	scanf("%s", a);
	swap(a);
	printf("%s", a);
}
void swap(char a[])
{
	char temp, * p1, * p2;
	for (int i = 0; i < strlen(a) / 2; i++)
	{
		p1 = a + i;
		p2 = a + (strlen(a) - 1 - i);
		temp = *p1;
		*p1 = *p2;
		*p2 = temp;
	}
}
//CANADA
//ADANAC

在这里插入图片描述

#include<stdio.h>
int main()
{
	void change(char str[]);
	char a[100];
	scanf("%s", a);
	change(a);
};
void change(char str[])
{
	char a[100];
	int j=0;
	for (int i = 0; str[i]!='\0'; i++)
	{
		if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u'||
			str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U')
		{
			a[j] = str[i];
			j++;
		}
		a[j] = '\0';
	}

	for (int k = 0; a[k] != '\0'; k++)
	{
		printf("%c", a[k]);
	}
	
}
//hello world
//eo

在这里插入图片描述

#include<stdio.h>
int main()
{
	void change(char str[]);
	char a[100];
	scanf("%s", a);
	change(a);
};
void change(char str[])
{
	for (int i = strlen(str); i>0; i--)
	{
		str[2 * i] = str[i];
		str[2 * i - 1] = ' ';
	}
	printf("%s", str);
	
}
//2008
//2 0 0 8

在这里插入图片描述

#include <stdio.h>
void main()
{
	void longestword(char s[]);
	char s[81];	//一行字符最多有81个字符 
	printf("input string:\n");
	gets(s);
	longestword(s);
}
void longestword(char s[])
{
	char t[30], temp[30];
	t[0] = '\0';
	int j = 0;
	for (int i = 0; i < strlen(s); i++)
	{
		j = 0;
		while (s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z')
		{
			temp[j++] = s[i++];	//将由非字母字符分割成的每个单词临时储存在temp[]中 
		}
		temp[j] = '\0';
		if (strlen(t) < strlen(temp))//t[]为储存最长单词的字符数组 
		{
			strcpy(t, temp);//通过比较t、temp字符数组的长度,判断当前最长单词并将其储存在t中 
		}
	}
	printf("the longest word:\n");
	puts(t);
}

//input string:
//I am Student fuck you Happying
//the longest word :
//Happying

//I 0<1 t=I
//am 1<2 t=am
//student 2<7 t=Student 
//fuck 7>4 t=Student
//you 7>3  t=Student 
//Happying 7<9 t=Happying

在这里插入图片描述

#include <stdio.h>
void main()
{
	void change(char s[]);
	char s[20];
	scanf("%s", s);
	change(s);
	printf("%s", s);

}
void change(char s[])
{
	char temp;
	for (int i = 0; i < strlen(s) - 1; i++)
	{
		for (int j = i + 1; j < strlen(s); j++)
		{
			if (s[j] < s[i])
			{
				temp = s[j];
				s[j] = s[i];
				s[i] = temp;
			}
		}
	}
}
//reputation
//aeinoprttu

在这里插入图片描述

#include <stdio.h>
void main()
{
	int max(int a, int b, int c, int d);
	int max_2(int x, int y);
	int a, b, c, d;
	scanf("%d %d %d %d", &a, &b, &c, &d);
	int result = max(a,b,c,d);
	printf("max:%d", result);
}
int max(int a, int b, int c, int d)
{
	return max_2(max_2(max_2(a, b), c), d);
}
int max_2(int x, int y)
{
	return x > y ? x : y;
}
//1 100 200 400
//max:400
//1 100 200 400
//max:400

在这里插入图片描述

#include<stdio.h>
void main()
{
	void convert(int n);
	int a;
	printf("请输入一个整数:");
	scanf("%d", &a);
	if (a < 0)//如果为负数先输出'-'和' ',然后改数变成正数
	{
		putchar('-');
		putchar(' ');
		a = -a;
	}
	convert(a);
}

void convert(int n)//递归函数 123
{
	int i;
	if ((i = n / 10) != 0)//i=12 i=1 i=0
	{
		convert(i);
	}
	putchar(n%10+'0');
	putchar(' ');
}
//请输入一个整数:3123
//3 1 2 3

在这里插入图片描述

#include<stdio.h>
int main()
{
	int recursion(int n);
	int a,result;
	printf("请输入一个整形:");
	scanf("%d", &a);
	result = recursion(a);
	printf("%d的阶乘为:%d\n",a,result);
}
int recursion(int n)
{
	int temp;
	if (n < 0)
	{
		printf("输入错误\n");
	}
	else if (n==0||n==1)//退出程序条件
	{
		temp = 1;
	}
	else
	{
		temp = recursion(n - 1) * n;
	}
	return temp;
}
//请输入一个整形:4
//4的阶乘为 : 24

使用普通程序

#include<stdio.h>
int main()
{
	int a=4;
	int c=1;
	for (int i = 1; i <=a; i++)
	{
		c *= i;
	}
	printf("%d的阶乘为:%d", a,c);
}
//4的阶乘为 : 24

在这里插入图片描述

#include<stdio.h>
int first(char str[100], char a);
void main()
{
	char str[100];
	char a;
	printf("请输入一段字符:");
	scanf("%s", &str);
	printf("请输入要删除的一个字符:");
	scanf(" %c", &a);
	first(str, a);
	printf("结果为:%s\n", str);
}
int first(char str[100], char ch)
{
	int i, j;
	for(i=j=0;str[i]!='\0'; i++)
	{
		if (str[i] != ch)
		{
			str[j++] = str[i];
		}
	}
	str[j] = '\0';
}
//请输入一段字符:abcd
//请输入要删除的一个字符 : a
//结果为 : bcd

指针内容概况

指针数组

#include <stdio.h>
void main()
{
	int a[5] = { 1,2,3,4,5 };
	int* name[5] = {&a[0],&a[1], &a[2], &a[3], &a[4] };
	for (int i = 0; i < 5; i++)
	{
		printf("%d ", *name[i]);
	}
}
//1 2 3 4 5

#include <stdio.h>
void main()
{
	int* name[5] = { 1,2,3,4,5 };
	for (int i = 0; i < 5; i++)
	{
		printf("%d ", name[i]);
	}
}
//1 2 3 4 5

指针数组

#include <stdio.h>
void main()
{
	char* str[] = { "I Love You","Shift","Love You","Thank You","Giao" };
	for (int i = 0; i < 5; i++)
	{
		printf("%s\n ", str[i]);
	}
}
//I Love You
//Shift
//Love You
//Thank You
//Giao

指向指针的指针

#include <stdio.h>
void main()
{
	char *str[] = {"I Love You","Shift","Love You","Thank You","Giao"};
	char** p;
	for (int i = 0; i < 5; i++)
	{
		p = str + i;
		printf("%s\n", *p);
	}
}
//I Love You
//Shift
//Love You
//Thank You
//Giao

在这里插入图片描述

在这里插入图片描述

#include<stdio.h>
#include<string.h>
void main()
{
	void swap(char* p1, char* p2);
	char str1[40],str2[40],str3[40];
	printf("请分别输入3行语句:");
	gets(str1);
	gets(str2);
	gets(str3);
	if (strcmp(str1, str2) > 0)
	{
		swap(str1, str2);
	}
	if (strcmp(str1, str3) > 0)
	{
		swap(str1, str3);
	}
	if (strcmp(str2, str3) > 0)
	{
		swap(str2, str3);
	}
	printf("%s\n%s\n%s\n", str1, str2, str3);
	
}
void swap(char* p1, char* p2)//void swap(char p1[], char p2[])
{
	char p[40];
	strcpy(p, p1);
	strcpy(p1, p2);
	strcpy(p2, p);
}

//请分别输入3行语句:
//I studey very hard
//C language is very interesting
//He is a professfor

//C language is very interesting
//He is a professfor
//I studey very hard

在这里插入图片描述

#include<stdio.h>
void first(int a[]);
void second(int a[]);
void third(int a[]);
int max, min;
#define N 10
void main()
{
    int a[N];
    first(a);
    second(a);
    third(a);
}
void first(int a[])
{
    printf("请分别输入10位整数:");
    for (int i = 0; i < N; i++)
    {
        scanf("%d", &a[i]);
    }
}
void second(int a[])
{
    min = max = *a;
    int* p;
    int temp;
    for (p = a; p < (a + N); p++)
    {
        if (max < *p)
        {
            max = *p;
        }
        else if (min > * p)
        {
            min = *p;
        }
    }
    for (int i = 0; i < N; i++)
    {
        if (a[i] == min)
        {
            temp = a[0];
            a[0] = min;
            a[i] = temp;
        }
        else if (a[i] == max)
        {
            temp = a[9];
            a[9] = max;
            a[i] = temp;
        }
    }

}
void third(int a[])
{
    for (int i = 0; i < N; i++)
    {
        printf("%d ", a[i]);
    }
}
//请分别输入10位整数:32 24 56 78 1 98 36 33 29 6
//1 24 56 78 32 6 36 33 29 98

在这里插入图片描述

#include<stdio.h>
void move(int array[20], int n, int m);
void main()
{
    int number[20],n,m;
    printf("共有多少个数:");
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &number[i]);
    }
    printf("向后移动多少位数:");
    scanf("%d", &m);
    move(number, n, m);
}
void move(int array[20], int n, int m)
{
    int* p;
    for (p=array+m; p < (array+n); p++  ) //(p=array; p < (array+n); p++)
    {
        printf("%d ", *p);
    }
    for (p= array; p < (array+m); p++)
    {
        printf("%d ", *p);
    }
}
//共有多少个数:8
//12 43 65 67 8 2 7 11
//向后移动多少位数 : 4
//8 2 7 11 12 43 65 67

在这里插入图片描述

#include<stdio.h>
int number(char a[]);
void main()
{
    char str[100];
    int result=0;
    printf("请输入:");
    scanf("%s", &str);
    result=number(str);
    printf("一共%d个字符", result);
}

int number(char a[])
{
    char* p1;
    p1 = a;
    int sum=0;
    for (; *p1 != '\0'; p1++)
    {
        sum++;
    }
    return sum;
}
//请输入:China
//一共5个字符

在这里插入图片描述

#include<stdio.h>
void swap(char x[], char y[]);
void main()
{
	char a[100] = "My name is Li jilin.";//Li jilin
	char b[100] = "Mr. Zhang Haoqiang is very happy.";//Zhang Haoqiang
	swap(a, b);
	printf("a=%s", a);
}
void swap(char x[], char y[])
{
	char* p1, * p2;
	p1 = x, p2 = y;
	int m=11,n1 = 4, n2 = 18;
	p1 = p1 + m;//Li jilin.
	p2 = p2 + n1;//Zhang Haoqiang is very happy.
	for (; n1 <= n2; p1++, p2++,n1++)
	{
		*p1 = *p2;
	}
	*p1 = '\0';
}
//My name is Zhang Haoqiang

在这里插入图片描述
使用普通方法

#include<stdio.h>
void main()
{
    char str[30];
    int a = 0, b = 0, c = 0, d = 0, e = 0;
    gets(str);
    for (int i = 0; str[i] != '\0'; i++)
    {
        if (str[i] >= 'a' && str[i] <= 'z')
        {
            a++;
        }
        else if (str[i] >= 'A' && str[i] <= 'Z')
        {
            b++;
        }
        else if (str[i] >= '0' && str[i] <= '9')
        {
            c++;
        }
        else if (str[i] == ' ')
        {
            d++;
        }
        else
        {
            e++;
        }
    }
    printf("小写字母有:%d 大写字母有:%d 数字有:%d 空格有:%d 其他字符有:%d\n", a, b, c, d, e);

}
//Today is 2018/8/8
//小写字母有:6 大写字母有 : 1 数字有 : 6 空格有 : 2 其他字符有 : 2

使用指针方法

#include<stdio.h>
void main()
{
    char str[30];
    int a = 0, b = 0, c = 0, d = 0, e = 0;
    gets(str);
    char* p1;
    p1 = str;
    for (; *p1 != '\0'; p1++)
    {
        if (*p1 >= 'a' && *p1 <= 'z')
        {
            a++;
        }
        else if (*p1 >= 'A' && *p1 <= 'Z')
        {
            b++;
        }
        else if (*p1 >= '0' && *p1 <= '9')
        {
            c++;
        }
        else if (*p1 == ' ')
        {
            d++;
        }
        else
        {
            e++;
        }
    }
    printf("小写字母有:%d 大写字母有:%d 数字有:%d 空格有:%d 其他字符有:%d\n", a, b, c, d, e);

}
//Today is 2018/8/8
//小写字母有:6 大写字母有 : 1 数字有 : 6 空格有 : 2 其他字符有 : 2

在这里插入图片描述

#include<stdio.h>
#include<string.h>
void sort(char s[10][6]);
void main()
{
	char str[10][6];
	printf("请输入10个等长的字符串:\n");
	for (int i = 0; i < 10; i++)
	{
		scanf("%s", str[i]);
	}
	sort(str);
	printf("从小到大的顺序为:\n");
	for (int i = 0; i < 10; i++)
	{
		printf("%s\n", str[i]);
	}
}
void sort(char s[10][6])
{
	char* p;
	char temp[10];
	p = temp;
	for (int i = 0; i < 9; i++)
	{
		for (int j = 0; j < 9 - i; j++)
		{
			if (strcmp(s[j], s[j+1]) > 0)//从小到大排序>
			{
				strcpy(p, s[j]);
				strcpy(s[j], s[j+1]);
				strcpy(s[j+1], p);
			}
		}
	}
}
//请输入10个等长的字符串:
//China
//Japan
//Korea
//Egypt
//Nepal
//Burma
//Ghana
//sudan
//Italy
//Libya
//从小到大的顺序为 :
//Burma
//China
//Egypt
//Ghana
//Italy
//Japan
//Korea
//Libya
//Nepal
//sudan

在这里插入图片描述

#include<stdio.h>
void swap(int a[]);
void main()
{
	int a[20];
	printf("共有多少个数:");
	int n;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
	}
	swap(a, n);
	for (int i = 0; i < n; i++)
	{
		printf("%d ", a[i]);
	}
}
void swap(int a[],int n)
{
	int temp, * p1, * p2;
	for (int i = 0; i < n / 2; i++)
	{
		p1 = a + i;
		p2 = a + (n - 1 - i);
		temp = *p1;
		*p1 = *p2;
		*p2 = temp;
	}
}
//共有多少个数:10
//32 24 56 78 1 98 36 33 29 6
//6 29 33 36 98 1 78 56 24 32

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
void input(struct student stu[]);
void print(struct student stu[]);
struct student
{
	int num;
	char name[6];
	float score[3];
};
void main()
{
	struct student stu[5];
	input(stu);
	print(stu);
}
void input(struct student stu[])
{
	for (int i = 0; i < 5; i++)
	{
		printf("NO:");
		scanf(" %d", &stu[i].num);
		printf("Name:");
		scanf(" %s", &stu[i].name);
		for (int j = 0; j < 3; j++)
		{
			printf("Score:");
			scanf(" %f", &stu[i].score[j]);
		}
	}
}
void print(struct student stu[])
{
	for (int i = 0; i < 5; i++)
	{
		printf("%s   ",stu[i].name);
		printf("%d   ", stu[i].num);
		for (int j = 0; j < 3; j++)
		{
			printf("%.2f   ", stu[i].score[j]);
		}
		printf("\n");
	}
}
//NO:1
//Name : A
//Score : 67
//Score : 76
//Score : 54
//NO : 2
//Name : B
//Score : 43
//Score : 76
//Score : 87
//NO : 3
//Name : C
//Score : 65
//Score : 76
//Score : 54
//NO : 4
//Name : D
//Score : 65
//Score : 76
//Score : 23
//NO : 5
//Name : E
//Score : 43
//Score : 76
//Score : 87
//A   1   67.00   76.00   54.00
//B   2   43.00   76.00   87.00
//C   3   65.00   76.00   54.00
//D   4   65.00   76.00   23.00
//E   5   43.00   76.00   87.00

在这里插入图片描述

#include<stdio.h>
void input(struct student stu[]);
void average(struct student stu[]);
void print(struct student stu[]);
void maxs(struct student stu[]);
struct student
{
	int num;
	char name[6];
	float score[4];
};
void main()
{
	struct student stu[3];
	input(stu);
	average(stu);
	print(stu);
	maxs(stu);

}
void input(struct student stu[])
{
	for (int i = 0; i < 3; i++)
	{
		printf("NO:");
		scanf(" %d", &stu[i].num);
		printf("Name:");
		scanf(" %s", &stu[i].name);
		for (int j = 0; j < 3; j++)
		{
			printf("Score:");
			scanf(" %f", &stu[i].score[j]);
		}
	}
}
void average(struct student stu[])
{
	float sum;
	float avg=0;
	for (int i = 0; i < 3; i++)
	{
		sum = 0;
		for(int j=0;j<3;j++)
		{
			sum=sum+stu[j].score[i];
		}
		stu[i].score[3] = sum/3.0;
		avg = avg + stu[i].score[3];
	}
	avg = avg / 3;
	printf("全部课程的平均数为:%.2f\n", avg);

}
void print(struct student stu[])
{
	for (int i = 0; i < 3; i++)
	{
		printf("%s   ", stu[i].name);
		printf("%d   ", stu[i].num);
		for (int j = 0; j < 4; j++)
		{
			printf("%.2f   ", stu[i].score[j]);
		}
		printf("\n");
	}
}
void maxs(struct student stu[])
{
	float max=stu[0].score[0];
	int a;
	for (int i = 0; i < 3; i++)
	{
		if (max<stu[i].score[3])
		{
			a = i;
		}
	}
	printf("姓名:%s 学号:%d   ", stu[a].name, stu[a].num);
	for (int j = 0; j < 3; j++)
	{
		printf("课程:%.2f   ", stu[a].score[j]);
	}
	printf("平均分:%.2f   ", stu[a].score[3]);
}
//NO:1
//Name : A
//Score : 67
//Score : 76
//Score : 54
//NO : 2
//Name : B
//Score : 43
//Score : 76
//Score : 87
//NO : 3
//Name : C
//Score : 65
//Score : 76
//Score : 54
//全部课程的平均数为 : 66.44
//A   1   67.00   76.00   54.00   58.33
//B   2   43.00   76.00   87.00   76.00
//C   3   65.00   76.00   54.00   65.00
//姓名 : B 学号 : 2   课程 : 43.00   课程 : 76.00   课程 : 87.00   平均分 : 76.00

在这里插入图片描述

#include<stdio.h>
void main()
{
	struct student
	{
		int num;
		char name[20];
		float score;
		struct student* next;
	}stu[3];
	for (int i = 0; i < 3; i++)
	{
		printf("NO:");
		scanf(" %d", &stu[i].num);
		printf("Name:");
		scanf(" %s", &stu[i].name);
		printf("Score:");
		scanf(" %f", &stu[i].score);
	}
	struct student* head;
	head = &stu[0];
	stu[0].next = &stu[1];
	stu[1].next = &stu[2];
	stu[2].next = NULL;

	do
	{
		printf("%d %s %.2f\n", (*head).num, (*head).name,(*head).score);
		head = (*head).next;
	} while (head != NULL);//符号条件执行do语句,不符合退出循环
}

//NO:1
//Name : Li
//Score : 66
//NO : 2
//Name : Ma
//Score : 78
//NO : 3
//Name : Alex
//Score : 88
//1 Li 66.00
//2 Ma 78.00
//3 Alex 88.00

在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
void main()
{
	char str[20];
	FILE* fp;
	gets(str);//输入字符
	char ch;
	for (int i = 0; str[i] != '\0'; i++)
	{
		if (str[i] >= 'a' && str[i] <= 'z')
		{
			str[i] = str[i] - 32;//小写字母转换为大写字母
		}
	}
	if (!(fp = fopen("test.txt", "w+")))
	{
		printf("文件错误");
		exit(0);
	}
	else
	{
		fputs(str,fp);//将数组内容写入文件
		//循环读取文件数据
		rewind(fp);
		ch = fgetc(fp);
		while (ch!=EOF)
		{
			putchar(ch);
			ch = fgetc(fp);
		}
	}
}

在这里插入图片描述

#include<stdio.h>
#include<math.h>
void main()
{
	FILE * fp1, * fp2, * fp3;
	char ch1, ch2,ch3;
	char str1[50], str2[50], *str3;
	if (!(fp1=fopen("A.txt", "r+")))//I LOVE CHINA
	{
		printf("文件错误");
		return;
	}
	if (!(fp2=fopen("B.txt", "r+")))//I LOVE BEIJING
	{
		printf("文件错误");
		return;
	}
	if (!(fp3=fopen("C.txt", "w+")))
	{
		printf("文件错误");
		return;
	}
	fgets(str1, 50, fp1);//将文件A读取数据保存到数组1
	fgets(str2, 50, fp2);//将文件B读取数据保存到数组2
	str3 = strcat(str1,str2);//数组3=数组1+数组2
	//交换顺序
	char temp;
	for (int i = 0; i < strlen(str3) - 1; i++)
	{
		for (int j = i + 1; j < strlen(str3); j++)
		{
			if (str3[j] < str3[i])
			{
				temp = str3[i];
				str3[i] = str3[j];
				str3[j] = temp;
			}
		}
	}
	//将交换好顺序的数组3写入文件C中
	fputs(str3, fp3);
	rewind(fp3);//鼠标移至文件头
	ch3 = fgetc(fp3);//读取第一个字符
	while (ch3 != EOF)
	{
		putchar(ch3);//循环输出字符
		ch3=fgetc(fp3);//循环读取字符
	}
}
//    ABCEEEGHIIIIIJLLNNOOVV

在这里插入图片描述

写入数据

#include <stdio.h>
void input(struct  student stu[]);
void average(struct  student stu[]);
void save(struct  student stu[]);
struct  student
{
	int num;
	char name[20];
	float score[4];
};
void main()
{
	struct  student stu[5];
	input(stu);
	average(stu);
	save(stu);

}
void input(struct  student stu[])
{
	for (int i = 0; i < 5; i++)
	{
		printf("NO:");
		scanf("%d", &stu[i].num);
		printf("Name:");
		scanf("%s",&stu[i].name);
		for (int j = 0; j < 3; j++)
		{
			printf("Score:");
			scanf("%f", &stu[i].score[j]);
		}
	}
}
void average(struct  student stu[])
{
	int sum = 0;
	for (int i = 0; i < 5; i++)
	{
		sum = 0;
		for (int j = 0; j < 3; j++)
		{
			sum = sum + stu[i].score[j];
		}
		stu[i].score[3] = sum / 3.0;//计算该学生课程的平均分
	}
}
//写入数据
void save(struct  student stu[])
{
	FILE* fp;
	if (!(fp = fopen("stud", "wb")))
	{
		printf("文件错误");
		return;
	}
	else
	{
		for (int i = 0; i < 5; i++)
		{
			if (fwrite(&stu[i], sizeof(struct student), 1, fp) != 1)
			{
				printf("文件写入错误");
				fclose(fp);
			}
		}
	}
}

读取数据

#include <stdio.h>
void load(struct  student stu[]);
struct student
{
	int num;
	char name[20];
	float score[4];
};
void main()
{
	struct  student stu[5];
	load(stu);

}
void load(struct  student stu[])
{
	FILE* fp;
	if (!(fp = fopen("stud", "rb")))
	{
		printf("文件错误");
		return;
	}
	else
	{
		for (int i = 0; i < 5; i++)
		{
			if (fread(&stu[i], sizeof(struct student), 1, fp) != 1)
			{
				printf("文件读取错误");
				fclose(fp);
			}
		}
		for (int i = 0; i < 5; i++)
		{
			printf("%s %d ", stu[i].name, stu[i].num);
			for (int j = 0; j < 4; j++)
			{
				printf("%.2f ", stu[i].score[j]);
			}
			printf("\n");
		}
	}
}
//1 1 76.00 65.00 45.00 62.00
//2 2 67.00 65.00 45.00 59.00
//3 3 67.00 56.00 8.00 43.67
//4 4 67.00 98.00 78.00 81.00
//5 5 98.00 98.00 67.00 87.67

在这里插入图片描述

#include <stdio.h>
void input(struct  student stu[]);
void average(struct  student stu[]);
void save(struct  student stu[]);
void swap(struct  student stu[]);
struct  student
{
	int num;
	char name[20];
	float score[4];
};
void main()
{
	struct  student stu[5];
	input(stu);
	average(stu);
	swap(stu);
	save(stu);

}
void input(struct  student stu[])
{
	for (int i = 0; i < 5; i++)
	{
		printf("NO:");
		scanf("%d", &stu[i].num);
		printf("Name:");
		scanf("%s",&stu[i].name);
		for (int j = 0; j < 3; j++)
		{
			printf("Score:");
			scanf("%f", &stu[i].score[j]);
		}
	}
}
void average(struct  student stu[])
{
	int sum = 0;
	for (int i = 0; i < 5; i++)
	{
		sum = 0;
		for (int j = 0; j < 3; j++)
		{
			sum = sum + stu[i].score[j];
		}
		stu[i].score[3] = sum / 3.0;
	}
}
void swap(struct  student stu[])//根据平均数交换位置
{
	struct  student temp;
	for (int i = 0; i < 4; i++)
	{
		for (int j = i+1; j < 5; j++)
		{
			if (stu[j].score[3] > stu[i].score[3])//根据平均数比较
			{
				temp = stu[i];
				stu[i] = stu[j];
				stu[j] = temp;
			}
		}
	}
}
void save(struct  student stu[])
{
	FILE* fp;
	if (!(fp = fopen("stud", "wb")))
	{
		printf("文件错误");
		return;
	}
	else
	{
		for (int i = 0; i < 5; i++)
		{
			if (fwrite(&stu[i], sizeof(struct student), 1, fp) != 1)
			{
				printf("文件写入错误");
				fclose(fp);
			}
		}
	}
}


读取数据

#include <stdio.h>
void load(struct  student stu[]);
struct student
{
	int num;
	char name[20];
	float score[4];
};
void main()
{
	struct  student stu[5];
	load(stu);

}
void load(struct  student stu[])
{
	FILE* fp;
	if (!(fp = fopen("stud", "rb")))
	{
		printf("文件错误");
		return;
	}
	else
	{
		for (int i = 0; i < 5; i++)
		{
			if (fread(&stu[i], sizeof(struct student), 1, fp) != 1)
			{
				printf("文件读取错误");
				fclose(fp);
			}
		}
		for (int i = 0; i < 5; i++)
		{
			printf("%s %d ", stu[i].name, stu[i].num);
			for (int j = 0; j < 4; j++)
			{
				printf("%.2f ", stu[i].score[j]);
			}
			printf("\n");
		}
	}
}
//5 5 98.00 98.00 67.00 87.67
//4 4 67.00 98.00 78.00 81.00
//1 1 76.00 65.00 45.00 62.00
//2 2 67.00 65.00 45.00 59.00
//3 3 67.00 56.00 8.00 43.67

在这里插入图片描述
写入数据

#include <stdio.h>
void load(struct  student stu[]);
void save(struct  student stu[]);
struct student
{
	int num;
	char name[20];
	float score[4];
};
struct students
{
	int num;
	char name[20];
	float score;
};
void main()
{
	struct  student stu[5];
	load(stu);
	save(stu);
}
void load(struct  student stu[])
{
	FILE* fp;
	if (!(fp = fopen("stud", "rb")))
	{
		printf("文件错误");
		return;
	}
	else
	{
		for (int i = 0; i < 5; i++)
		{
			if (fread(&stu[i], sizeof(struct student), 1, fp) != 1)
			{
				printf("文件读取错误");
				fclose(fp);
			}
		}
	}
}
void save(struct  student stu[])
{
	struct  students stus[5];
	for (int i = 0; i < 5; i++)
	{
		stus[i].num = stu[i].num;
		strcpy(stus[i].name ,stu[i].name);
		stus[i].score = stu[i].score[3];
	}
	FILE* fp1;
	if (!(fp1 = fopen("student", "wb+")))
	{
		printf("文件错误");
		return;
	}

	for (int i = 0; i < 5; i++)
	{
		if ((fwrite(&stus[i], sizeof(struct students), 1, fp1)) != 1)
		{
			printf("文件写入错误");
			fclose(fp1);
		}
	}
}

读取数据

#include <stdio.h>
void load(struct students stu[]);
struct students
{
	int num;
	char name[20];
	float score;
};
void main()
{
	struct students stu[5];
	load(stu);
}
void load(struct students stu[])
{
	FILE* fp;
	if (!(fp = fopen("student", "rb+")))
	{
		printf("文件错误");
		return;
	}
	else
	{
		for (int i = 0; i < 5; i++)
		{
			if (fread(&stu[i], sizeof(struct students), 1, fp) != 1)
			{
				printf("文件读取错误");
				fclose(fp);
			}
		}
		for (int i = 0; i < 5; i++)
		{
			printf("%d %s %.2f\n", stu[i].num, stu[i].name, stu[i].score);
		}
		
	}
}
//5 5 87.67
//4 4 81.00
//1 1 62.00
//2 2 59.00
//3 3 43.67

在这里插入图片描述

#include <stdio.h>
#include<math.h>
int fact(int n)
{
	int sum = 1;
	for (int i = 1; i <= n; i++)
	{
		sum = sum * i;
	}
	return sum;
}
int main()
{
	int n;
	float result;
	float sum = 0;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
	{
		result=fact(i);
		sum = sum + 1/result;
	}
	printf("%.4f", sum);
}
//5
//1.7167
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值