c语言经典例题

阅读目录

        • 1、计算 int, float, double 和 char 字节大小
        • 2、交换两个数的值,使用临时变量
        • 3、判断奇数/偶数
        • 4、循环区间范围内的奇数/偶数
        • 5、判断三个数中的最大数
        • 6、求一元二次方程:ax2+bx+c=0 的根。输入三个实数a, b, c的值,且a不等于0
        • 7、用户输入年份,判断该年份是否为闰年。
        • 8、for和while计算自然数的和
        • 9、输出9x9乘法表
        • 10、斐波那契数列:这个数列从第3项开始,每一项都等于前两项之和
        • 11、求两数的最大公约数
        • 12、使用 while 和 if 求两数的最大公约数
        • 13、使用 函数求两数的最大公约数
        • 14、使用 while 和 if 求两数的最小公倍数
        • 15、通过最大公约数计算 求两数的最小公倍数
        • 16、计算n!=1×2×3×...×n
        • 17、使用递归计算n!=1×2×3×...×n
        • 18、 输出大写或小写字母
        • 19、 判断数字为几位数
        • 20、使用递归计算一个数的 n 次方
        • 21、判断回文数
        • 22、判断两个数之间的素数
        • 23、求一个整数的所有因数
        • 24、字符串翻转
        • 25、二进制转换为十进制
        • 26、十进制转换为二进制
        • 27、计算数组的平均值
        • 28、使用 for 循环输出数组/逆向输出数组
        • 29、使用 for 循环迭代出输出元素,并将各个元素相加
        • 30、查找数组中最大/小的元素值
        • 31、将一个数组拆分为两个数组,一个为奇数数组,一个为偶数数组
        • 32、将奇数数组与偶数数组合并为一个数组
        • 33、矩阵转换

来源:菜鸟教程C 语言实例
使用软件:microsoft visual studio
输入语句用scanf_s

1、计算 int, float, double 和 char 字节大小

使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小。sizeof 是 C 语言的一种单目操作符,如C语言的其他操作符++、–等,它并不是函数。sizeof 操作符以字节形式给出了其操作数的存储大小。

#include
void main()
{
	int integerType;
	float floatType;
	double doubleType;
	char charType;
	//sizeof操作符用于计算变量的字节大小
	printf("Size of int:%ld bytes\n", sizeof(integerType));
	printf("Size of float:%ld bytes\n", sizeof(floatType));
	printf("Size of double:%ld bytes\n", sizeof(doubleType));
	printf("Size of char:%ld bytes\n", sizeof(charType));
	return 0;
}

c语言经典例题_第1张图片

2、交换两个数的值,使用临时变量

#include
void main()
{
	double a, b, c;
	printf("输入第一个数字:");
	scanf_s("%lf", &a);
	printf("输入第二个数字:");
	scanf_s("%lf", &b);

	c = a;
	a = b;
	b = c;

	printf("\n交换后,a=%.2lf\n", a);
	printf("交换后,b=%.2lf\n", b);
	return 0;
}

c语言经典例题_第2张图片

3、判断奇数/偶数

#include

void main()
{
	int number;
	printf("请输入一个整数:");
	scanf_s("%d", &number);
	if (number % 2 == 0)或者 if(number&1)
		printf("%d是偶数", number);

	else
		printf("%d 是奇数", number);
	return 0;
}

在这里插入图片描述

4、循环区间范围内的奇数/偶数

#include
循环区间范围内的奇数/偶数
void main()
{
	int i,total = 0;
	for (i = 1; i <= 10; i++) 
	{
		f (i % 2 == 0) 
		{			
			printf("%2d  ", i);
			total++;
		}	
	}	
	printf("total=%d",total);
	return 0;
}

在这里插入图片描述

5、判断三个数中的最大数

#include
void main()
{
	double n1, n2, n3;
	printf("请输入三个数。以空格分隔:");
	scanf_s("%lf %lf %lf", &n1, &n2, &n3);
	if (n1 > n2 && n1 >= n3)
		printf("%.2f 是最大数", n1);
	if (n2 >= n1 && n2 >= n3)
		printf("%.2f 是最大数", n2);
	if (n3 >= n1 && n3 >= n2)
		printf("%.2f 是最大数", n3);
	return 0;
}

在这里插入图片描述

6、求一元二次方程:ax2+bx+c=0 的根。输入三个实数a, b, c的值,且a不等于0

#include 
#include 
 
int main()
{
        float a,b,c,x1,x2,d;
        printf("输入方程的三个系数:");
        scanf_s("%f %f %f",&a,&b,&c);
        if(a!=0)
        {
                d=sqrt(b*b-4*a*c);
                x1=(-b+d)/(2*a);
                x2=(-b-d)/(2*a);
                if(x1<x2) 
                    printf("%0.2f %0.2f\n",x2,x1); 
                else
                    printf("%0.2f %0.2f\n",x1,x2);
        }
        return 0;
}

在这里插入图片描述

7、用户输入年份,判断该年份是否为闰年。

#include
void main()
{
	int year;
	printf("输入年份:");
	scanf_s("%d", &year);
	if (year % 4 == 0)
	{
		if (year % 100 == 0)
		{
			if (year % 400 == 0)
				printf("%d 是闰年", year);
			else
				printf("%d 不是闰年”,year);
		}
		else
			printf("%d 是闰年",year);
	}
	else
		printf("%d 不是闰年", year);
	return 0;
}

在这里插入图片描述

8、for和while计算自然数的和

#include
void main()
{
	
	int n, i, sum = 0;
	printf("输入一个正整数:");
	scanf("%d", &n);
	for (i = 1; i <= n; i++) {
		sum += i;
	}
	printf("sum=%d", sum);
	return 0;
}
#include
//while计算自然数的和
void main()
{
	
	int n, i, sum = 0;
	printf("输入一个正整数:");
	scanf_s("%d", &n);
	i = 1;
	while (i<=n) {
		sum += i;
		i++;
	}
	printf("sum=%d", sum);
	return 0;
}

在这里插入图片描述

9、输出9x9乘法表

#include
void main()
{
	//外循环变量控制行
	int i = 0;
	//内循环变量控制列
	int j = 0;
	for (i = 1; i <= 9; i++) {
		for (j = 1; j <= i; j++) {
			printf("%dx%d= %d\t", j, i, i*j);
			}
		//每行输出后换行
		printf("\n");
	}
	return 0;
}

c语言经典例题_第3张图片

10、斐波那契数列:这个数列从第3项开始,每一项都等于前两项之和

#include
void main()
{
	int i, n, t1 = 0, t2 = 1, nextTerm;
	printf("输出几项:");
	scanf_s("%d", &n);
	printf("斐波那契额数列:");
	for (i = 1; i <= n; ++i)
	{
		printf("%d,", t1);
		nextTerm = t1 + t2;
		t1 = t2;
		t2 = nextTerm;
	}
	return 0;
}

在这里插入图片描述

11、求两数的最大公约数

#include
void main()
{
	int n1, n2, i, gcd;
	printf("输入两个正整数,以空格分隔:");
	scanf_s("%d %d", &n1, &n2);

	for (i = 1; i <= n1 && i <= n2; ++i)
	{	//判断i是否为最大公约数
		if (n1%i == 0 && n2%i == 0)
			gcd = i;
	}
	printf("%d 和 %d 的最大公约数是:%d", n1, n2, gcd);
	return 0; 
}

在这里插入图片描述

12、使用 while 和 if 求两数的最大公约数

#include
void main()
{
	int n1, n2;
	printf("输入两个正整数,以空格分隔:");
	scanf_s("%d %d", &n1, &n2);
	while (n1 != n2)
	{
		if (n1 > n2)
			n1 -= n2;
		else
			n2 -= n1;
	}
	printf("最大公约数是:%d", n1,);
	return 0; 
}

在这里插入图片描述

13、使用 函数求两数的最大公约数

#include
void main()
{
	int n1, n2;
	printf("输入两个正整数,以空格分隔:");
	scanf_s("%d %d", &n1, &n2);

	printf("%d和%d最大公约数是:%d", n1,n2,hcf(n1,n2));
	return 0; 
}
int hcf(int n1, int n2)
{
	if (n2 != 0)
		return hcf(n2, n1%n2);
	else
		return n1;
}

在这里插入图片描述

14、使用 while 和 if 求两数的最小公倍数

#include
void main()
{
	int n1, n2, minMultiple;
	printf("输入两个正整数:");
	scanf_s("%d %d", &n1, &n2);
	minMultiple = (n1 > n2) ? n1 : n2;
	while (1)
	{
		if (minMultiple%n1 == 0 && minMultiple%n2 == 0)
		{
			printf("%d和%d的最小公倍数为:%d", n1, n2, minMultiple);
			break;
		}
		++minMultiple;
	}
	return 0; 
}

在这里插入图片描述

15、通过最大公约数计算 求两数的最小公倍数

#include
void main()
{
	int n1, n2,i,gcd,lcm;
	printf("输入两个正整数:");
	scanf_s("%d %d", &n1, &n2);
	
	for (i = 1; i <= n1 && i <= n2; i++)
	{
		//判断最大公约数
		if (n1%i == 0&&n2%i == 0)
			gcd = i;
	}
	lcm = (n1*n2) / gcd;
	printf("%d和%d的最小公倍数为:%d", n1, n2, lcm);
	
	return 0; 
}

在这里插入图片描述

16、计算n!=1×2×3×…×n

#include
void main()
{
	int n,i;
	unsigned long long factorial = 1;
	printf("输入一个整数:");
	scanf_s("%d", &n);

	if (n < 0)
		//如果是负数,显示错误!
		printf("Error!负数没有阶乘");
	else
	{
		for (i = 1; i <= n; i++)
		{
			factorial *= i;
		}
		printf("%d = %llu", n, factorial);
	}
	
	return 0; 
}

在这里插入图片描述

17、使用递归计算n!=1×2×3×…×n

#include
void main()
{
	int n;
	printf("输入一个整数:");
	scanf_s("%d", &n);
	printf("%d! =%d", n, multiplyNumbers(n));
	return 0; 
}
long int multiplyNumbers(int n)
{
	if (n >= 1)
		return n * multiplyNumbers(n - 1);
	else
		return 1;
}

7

18、 输出大写或小写字母

#include
void main()
{
	char c;
	printf("输入u显示大写字母,输入l显示小写字母:");
	scanf_s("%c", &c);
	if (c == 'U' || c == 'u')
	{
		for (c = 'A'; c <= 'Z'; ++c)
			printf("%c ", c);
	}
	if (c == 'L' || c == 'l')
	{
		for (c = 'a'; c <= 'z'; ++c)
			printf("%c ", c);
	}
	else
		printf("Error!输入非法字母");
	return 0; 
}

在这里插入图片描述

19、 判断数字为几位数

#include
void main()
{
	long long n;
	int count = 0;
	printf("输入一个整数:");
	scanf_s("%lld", &n);

	while (n != 0)
	{
		n /= 10;
		++count;
	}
	printf("数学是%d位数。", count);
	return 0; 
}

在这里插入图片描述

20、使用递归计算一个数的 n 次方

#include
int power(int n1, int n2);
int main()
{
	int base, powerRaised, result;
	printf("基数:");
	scanf_s("%d", &base);
	printf("指数:");
	scanf_s("%d", &powerRaised);
	result = power(base, powerRaised);
	printf("%d^%d= %d", base, powerRaised,result);
	return 0; 
}
int power(int base, int powerRaised)
{
	if (powerRaised != 0)
		return (base*power(base, powerRaised - 1));
	else
		return 1;
}

c语言经典例题_第4张图片

21、判断回文数

#include
int main()
{
	int n, a = 0,b, c;
	printf("输入一个整数:");
	scanf_s("%d", &n);
	c = n;
	//翻转
	while (n != 0)
	{
		b = n % 10;
		a = a * 10 + b;
		n /= 10;
	}
	//判断
	if (c == a)
		printf("%d 是回文数。", c);
	else
		printf("%d 不是回文数。", c);

	return 0; 
}

在这里插入图片描述

22、判断两个数之间的素数

#include
int main()
{
	int low, high,i, flag;
	printf("输入两个整数:");
	scanf_s("%d %d", &low, &high);
	printf("%d 与%d之间的素数为:", low, high);

	while (low < high)
	{
		flag = 0;
		for (i = 2; i <= low / 2; ++i)
		{
			if (low%i == 0)
			{
				flag = 1;
				break;
			}
		}
		if (flag == 0)
			printf("%d ", low);
		++low;
	}
	return 0; 
}

在这里插入图片描述

23、求一个整数的所有因数

#include
int main()
{
	int number, i;
	printf("输入一个整数:");
	scanf_s("%d", &number);
	printf("%d的因数有:", number);
	for (i = 1; i <= number; ++i)
	{
		if (number%i == 0)
		{
			printf("%d ", i);
		}
	}
	return 0; 
}

在这里插入图片描述

24、字符串翻转

#include
void reverseSentence();
int main()
{
	printf("输入一个字符串:");
	reverseSentence();
	return 0; 
}
void reverseSentence()
{
	char c;
	scanf_s("%c", &c);
	if (c != '\n')
	{
		reverseSentence();
		printf("%c", c);
	}
}

在这里插入图片描述

25、二进制转换为十进制

#include
#include
int converBinaryToDecimal(long long n);
int main()
{
	long long n;
	printf("输入一个二进制数:");
	scanf_s("%lld", &n);
	printf("二进制%lld转换位十进制%d", n, converBinaryToDecimal(n));
	return 0;
}
int converBinaryToDecimal(long long n)
{
	int decimalNumber = 0, i = 0, remainder;
	while (n != 0)
	{
		remainder = n % 10;
		n /= 10;
		decimalNumber += remainder * pow(2, i);
		++i;
	}
	return decimalNumber;
}

c语言经典例题_第5张图片

26、十进制转换为二进制

#include
#include
long long converDecimalToBinary(int n);
int main()
{
	int n;
	printf("输入一个十进制数:");
	scanf_s("%d", &n);
	printf("十进制数%d转换为二进制数 %lld", n, converDecimalToBinary(n));
	return 0;
}
long long converDecimalToBinary(int n)
{
	long long binaryNumber = 0;
	int remainder, i = 1, step = 1;
	while (n != 0)
	{
		remainder = n % 2;
		printf("Step %d: %d/2,余数=%d,	商 = %d\n", step++, n, remainder, n / 2);
		n /= 2;
		binaryNumber += remainder * i;
		i *= 10;
	}
	return binaryNumber;
	
}

c语言经典例题_第6张图片

27、计算数组的平均值

#include
//使用 for 循环迭代出输出元素,并将各个元素相加算出总和,再除于元素个数
int main()
{
	int array[10] = { 1,2,3,4,5,6,7,8,9,0 };
	int sum, loop;
	float avg;
	sum = avg = 0;
	for (loop = 0; loop < 10; loop++)
	{
		sum = sum + array[loop];
	}
	avg = (float)sum / loop;
	printf("平均值为 %.2f", avg);
	return 0;
}

在这里插入图片描述

28、使用 for 循环输出数组/逆向输出数组

#include
int main()
{
	int array[10] = { 1,2,3,4,5,6,7,8,9,0 };
	int loop;
	/*for (loop = 0; loop < 10; loop++)
	{
		printf("%d ", array[loop]);
	}*/
	for (loop = 9;loop >= 0; loop--)
	{
		printf("%d ", array[loop]);
	}
	return 0;
}

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

29、使用 for 循环迭代出输出元素,并将各个元素相加

#include
int main()
{
	int array[10] = { 1,2,3,4,5,6,7,8,9,0 };
	int sum ,loop;
	sum = 0;
	for (loop = 9; loop >= 0; loop--)
	{
		sum = sum + array[loop];
	}
	printf("元素和为:%d", sum);
	return 0;
}

在这里插入图片描述

30、查找数组中最大/小的元素值

#include
int main()
{
	int array[10] = { 1,2,3,4,5,6,7,8,9,0 };
	int largest ,loop;
	largest = array[0];
	for (loop = 1; loop <10; loop++)
	{
		//if (largest < array[loop])	求最大
		if (largest > array[loop])	求最小
			largest = array[loop];
	}
	printf("最大元素为:%d",largest);
	return 0;
}

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

31、将一个数组拆分为两个数组,一个为奇数数组,一个为偶数数组

#include
int main()
{
	int array[10] = { 0,1,2,3,4,5,6,7,8,9 }; 
	int even[10], odd[10];
	int loop, e, d;
	e = d = 0;
	for (loop = 0; loop < 10; loop++)
	{
		if (array[loop] % 2 == 0)
		{even[e] = array[loop];e++;
		}
		else
		{odd[d] = array[loop];d++;
		}	
	}
		printf("原始数组:");
	for (loop = 0; loop < 10; loop++)
	{
		printf(" %d", array[loop]);
	}
	printf("\n偶数:");
	for (loop = 0; loop < e; loop++)
		printf(" %d", even[loop]);
	printf("\n奇数:");
	for (loop = 0; loop < d; loop++)
		printf(" %d",odd[loop]);
	return 0;
}

c语言经典例题_第7张图片

32、将奇数数组与偶数数组合并为一个数组

#include
int main()
{
	int array[10];
	int even[5] = { 1,2,4,6,8 };
	int odd[5] = { 1,3,5,7,9 };
	int loop, index, e_len, o_len;
	e_len = o_len = 5;
	index = 0;
	for (loop = 0; loop < e_len; loop++) {
		array[index] = even[loop];
		index++;
	}
	for (loop = 0; loop < o_len; loop++) {
		array[index] = odd[loop];		
		index++;
	}
	printf("\n偶数:");
	for (loop = 0; loop < e_len; loop++)
		printf(" %d", even[loop]);
	printf("\n奇数:");
	for (loop = 0; loop < o_len; loop++)
		printf(" %d", odd[loop]);
	printf("\n合并后:");
	for (loop = 0; loop < 10; loop++)
		printf(" %d", array[loop]);

	return 0;
}

c语言经典例题_第8张图片

33、矩阵转换

#include
int main()
{
	int a[10][10], transpose[10][10], r, c, i, j;
	printf("输入矩阵的行与列:");
	scanf_s("%d %d", &r, &c);
	printf("\n输入矩阵元素:\n");
	for(i=0;i<r;++i)
		for (j = 0; j < c; ++j)
		{
			printf("输入元素 a%d%d: ", i + 1, j + 1);
			scanf_s("%d", &a[i][j]);
		}
	printf("\n输入矩阵:\n");
	for(i=0;i<r;++i)
		for (j = 0; j < c; ++j)
		{
			printf("%d ", a[i][j]);
			if (j == c - 1)
				printf("\n\n");
		}
	for(i=0;i<r;++i)
		for (j = 0; j < c; ++j)
		{
			transpose[j][i] = a[i][j];
		}
			for(i=0;i<r;++i)
		for (j = 0; j < c; ++j)
		{
			transpose[j][i] = a[i][j];
		}	
	printf("\n转换后矩阵:\n");
	for (i = 0; i < c; ++i)
		for(j=0;j<r;++j)
		{
			printf("%d ", transpose[i][j]);
			if (j == r - 1)
				printf("\n\n");
		}
	return 0;
}

c语言经典例题_第9张图片

你可能感兴趣的:(软考(程序员),c语言)