C语言 每日一练(100个小练习)

运行环境:vs2013

1.求两个整数的较大值

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int num1, num2;
	printf("---------您需要输入两个整数------------\n");
	printf("---------------------------------------\n");
	printf("请输入第一个整数:\n");
	scanf_s("%d",&num1);
	printf("请输入第二个整数:\n");
	scanf_s("\n%d",&num2);
	/*也可以表示为
	int max=(num1>mun2)?num1:num2;
	printf("较大的数为:%d\n",max);
	*/
	printf("较大的数为:%d\n",(num1>num2)?num1:num2);
	system("pause");
	return 0;
}

2. 0到100可以被整除的数

#include<stdio.h>
#include<stdlib.h>
int main()
{
	printf("请输入一个被除数:\n");
	int num1 = 0;
	scanf_s("%d",&num1);

	printf("0到100可以被%d整除的数有:\n",num1);

	for (int i = 1; i <= 100; i++)
	{
		if (i%num1 == 0)
			printf("%d\n",i);
	}
	system("pause");
	return 0;
}

3. 鸡兔同笼
已知:头共有88个,脚共有244只。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int x=0, y=0;		//假设鸡的数量为x,兔的数量为y
	for (x = 0; x <= 88; x++)
	{
		y = 88 - x;
		if (x * 2 + 4 * y == 244)
		{
			printf("鸡的数量为:%d\n兔的数量为:%d\n", x, y);
		}
	}
	system("pause");
	return 0;
}

4.超简单的计算器
只是用来熟悉switch语句。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	while (1)
	{
		float x = 0, y = 0;
		char ch;
		printf("请输入:\n");
		scanf_s("%f", &x);

		ch = getchar();
		scanf_s("%f", &y);

		switch (ch)
		{
		case '+':
			printf("%f\n", x + y);
			break;
		case '-':
			printf("%f\n", x - y);
			break;
		case '*':
			printf("%f\n", x*y);
			break;
		case '/':
			if (y == 0)
				printf("除数不能为0!\n");
			else
				printf("%f\n", x / y);
			break;
		default:
			printf("超纲啦!\n");
		}
	}
	system("pause");
	return 0;
}

5. 成绩等级划分

/*
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int score = 0;
	printf("请输入一个成绩:\n");
	scanf_s("%d",&score);
	if (score > 100 || score < 0)
	{
		printf("成绩输入错误!\n");
	}
	else if (score >= 90)
		printf("等级为A\n");
	else if (score >= 80 && score < 90)
		printf("等级为B\n");
	else if (score >= 70 && score < 80)
		printf("等级为C\n");
	else if (score >= 60 && score < 70)
		printf("等级为D\n");
	else
		printf("等级为E\n");
	system("pause");
	return 0;
}
*/

#include<stdio.h>
#include<stdlib.h>
int main()
{
		int score = 0;
		int num = 0;
		printf("请输入成绩:\n");
		scanf_s("%d", &score);

		if (score >= 0 && score <= 100)
		{
			num = score / 10;
			switch (num)
			{
			case 10:
			case 9:
				printf("等级为A\n\n");
				break;
			case 8:
				printf("等级为B\n\n");
				break;
			case 7:
				printf("等级为C\n\n");
				break;
			case 6:
				printf("等级为D\n\n");
				break;
			default:
				printf("等级为E\n\n");
				break;
			}
		}
		else
			printf("成绩输入错误!\n");
	
	system("pause");
	return 0;
}

6. 最简单的密码

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int x = 123456;
	int y = 0;
	printf("请输入密码:\n");
	scanf_s("%d",&y);
	if (x == y)
	{
		printf("输入正确,欢迎使用!\n");
	}
	else
		printf("密码错误,即将退出程序!\n");
	system("pause");
	return 0;
}

7. if / else if ,可以写猜数字游戏

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int x = 0, y = 0;
	printf("请输入第一个数字:\n");
	scanf_s("%d",&x);
	printf("请输入第二个数字:\n");
	scanf_s("%d",&y);
	if (x*y > 5000)
		printf("它们的乘积大于5000\n");
	else if (x*y == 5000)
		printf("它们的乘积等于5000\n");
	else
		printf("它们的乘积小于5000\n");
	system("pause");
	return 0;
}

8. 判断闰年

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int year = 0;
	printf("请输入年份:\n");
	scanf_s("%d",&year);
	if (year % 100 == 0 && year % 400 == 0)
	{
		printf("这一年是世纪年并且是闰年\n");
	}
	else if (year % 4 == 0 && year % 100 != 0)
	{
		printf("这一年是普通年并且是闰年");
	}
	else
		printf("这不是闰年");
	system("pause");
	return 0;
}

9. 判断输入的字符类型

#include<stdio.h>
#include<stdlib.h>
int main()
{
	char ch;
	printf("请输入一个字符:\n");
	ch = getchar();

	if (ch>='0'&&ch<='9')
	{
		printf("这是一个数字!\n");
	}
    if (ch >= 'a'&&ch <= 'z')
	{
		printf("这是一个小写字母!\n");
	}
	if (ch >= 'A'&&ch <= 'Z')
	{
		printf("这是一个大写字母!\n");
	}
	system("pause");
	return 0;
}

10. 输入日期查询所属星座

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int month = 0;
	int day = 0;
	printf("请输入月份:\n");
	scanf_s("%d",&month);
	if(month > 12 || month < 1)
	{
		printf("月份输入错误!\n");
	}
	printf("请输入日期:\n");
	scanf_s("\n%d", &day);
	if (day>31 || day <1)
	{
		printf("日期输入错误!\n");
	}
	else if (month == 2 && day>29)
		printf("日期输入错误!\n");
	else
	{
		switch (month)
		{
		case 1:
			if (day >= 21 && day <= 31)
				printf("宝瓶座");
			else
				printf("摩羯座");
			break;
		case 2:
			if ( day <= 20)
				printf("宝瓶座");
			else
				printf("双鱼座");
			break;
		case 3:
			if (day <= 20)
				printf("双鱼座");
			else
				printf("白羊座");
			break;
		case 4:
			if ( day <= 20)
				printf("白羊座");
			else
				printf("金牛座");
			break;
		case 5:
			if (day <= 20)
				printf("金牛座");
			else
				printf("双子座");
			break;
		case 6:
			if ( day <= 20)
				printf("双子座");
			else
				printf("巨蟹座");
			break;
		case 7:
			if ( day <= 22)
				printf("巨蟹座");
			else
				printf("狮子座");
			break;
		case 8:
			if ( day <= 22)
				printf("狮子座");
			else
				printf("处女座");
			break;
		case 9:
			if (day <= 22)
				printf("处女座");
			else
				printf("天秤座");
			break;
		case 10:
			if ( day <= 22)
				printf("天秤座");
			else
				printf("天蝎座");
			break;
		case 11:
			if ( day <= 22)
				printf("天蝎座");
			else
				printf("人马座");
			break;
		case 12:
			if ( day <= 22)
				printf("人马座");
			else
				printf("摩羯座");
			break;
		default:
			printf("输入错误!");
			break;
		}
	}

	system("pause");
	return 0;
}

11. 输入字母的大小写转换

#include<stdio.h>
#include<stdlib.h>
int main()
{
	char ch;
	ch = getchar();
	if (ch >= 'a' && ch <= 'z')
	{
		printf("对应的大写字母为%c\n",ch - 32);
	}
	else if (ch >= 'A' && ch <= 'Z')
		printf("原样输出为%c\n", ch);
	else
		printf("输入错误!\n");
	system("pause");
	return 0;
}

12. 求100以内3的倍数和

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int sum = 0;
	for (int i = 1; i <= 100; i++)
	{
		if (i % 3 == 0)
		{
			sum += i;
			printf("sum=%d 当前循环次数为i=%d\n", sum, i / 3);
		}
	}
	printf("结果为%d\n", sum);
	system("pause");
	return 0;
}

13. 求100以内偶数的和

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int sum = 0;
	int i=0;
		for (i = 0; i <= 100; i = i++)
		{
			if (i % 2 == 0)
			{
				sum += i;
				printf("sum=%d 当前循环次数为i=%d\n", sum, i / 2 + 1);
			}
		}
	printf("100以内偶数之和为%d\n", sum);

	system("pause");
	return 0;
}

14. do-while实现循环累加

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int sum = 0;
	int i = 0;
	do                       //do语句先做循环后做判断,这是与其他语句的不同
	{
		i++;
		sum += i;
		printf("sum=%d 当前循环次数为i=%d\n",sum,i);
	} while (i < 100);      //取<=100的话,当i=100时,还要做一次循环,会多加一个101的值;
	printf("结果为%d\n",sum);
	system("pause");
	return 0;
}

15. for循环实现循环累加

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int sum = 0;
	for (int i = 1; i <= 100; i++)
	{
		sum +=i;
		printf("sum=%d 当前循环次数为i=%d\n",sum,i);
	}
	printf("从1加到100的结果为%d\n",sum);
	system("pause");
	return 0;
}

16. while循环实现累加

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i = 1;
	int sum = 0;
	while (i <= 100)
	{
		sum = sum + i;
		printf("sum=%d 当前循环次数为i=%d\n",sum,i);
		i++;
	}
	printf("从1加到100的结果为%d\n",sum);
	system("pause");
	return 0;
}

17. 倒三角打印九九乘法表

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i, j;
	for (j = 1; j <= 9; j++)
	{
		for (i = j; i <= 9; i++)
		{

			printf("%d*%d=%d ",j,i, i*j);
		}
		printf("\n");
	}
	system("pause");
	return 0;
}

19. 求m的n次方

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int m = 0, n = 0;
	int k = 1;
	printf("请输入m:");
	scanf_s("%d",&m);
	printf("请输入n:");
	scanf_s(" %d",&n);
	if (n == 0)
		printf("结果为1\n");
	else if (n == 1)
		printf("结果为%d\n",m);
	else
	{
		for (int j = 1; j <= n; j++)
			k *= m;
		printf("结果为%d\n", k);
	}
	system("pause");
	return 0;
}

20. 用*号打印三角形

#include<stdio.h>
#include<stdlib.h>
int main()
{
	for (int i = 0; i < 6; i++)
	{
		for (int j = 0; j <6-1-i; j++)            //打印空格数
		{
			printf(" ");
		}
		for (int k = 0; k < 2 * i+1; k++)          //打印*号数
			printf("*");
		printf("\n");
	}

	system("pause");
	return 0;
}

21. 从输入的多个数中找到最大值

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int max = 0;
	printf("请输入六个数:\n");
	for (int i = 0; i < 6; i++)
	{
		int num = 0;
		scanf_s("%d",&num);

		if (i == 0)
		{
			max = num;
		}
		else if (max<num)
		{
			max = num;
		}
	}
	printf("max=%d\n",max);
	system("pause");
	return 0;
}

22. 韩信点兵
已知:士兵站3列余2个,站5列余3个,站7列余4个,求士兵最少多少人。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int n = 1;
	while (1)
	{
		if (n % 3 == 2 && n % 5 == 3 && n % 7 == 4)
		{
			break;
		}
		n++;
	}
	printf("人数至少为%d人\n",n);
	system("pause");
	return 0;
}

23. 求1-2+3-4+5-6…+99-100的结果

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int sum = 0;
	for (int i = 1; i <= 100; i++)
	{
		if (i % 2 == 0)
		{
			sum -= i;
		}
		else
			sum += i;
	}
	printf("结果为%d\n",sum);
	system("pause");
	return 0;
}

24. 给出时间,打印下一秒的时刻

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a = 0, b = 0, c = 0;
	printf("请输入时\n");
	scanf_s("%d",&a);
	printf("请输入分\n");
	scanf_s("\n%d", &b);
	printf("请输入秒\n");
	scanf_s("\n%d", &c);
	if ((a >= 0 && a <= 23) && (b >= 0 && b <= 59) && (c >= 0 && c <= 59))
	{
		if (c == 59 && b != 59)
			printf("%.2d:%.2d:00\n", a, b + 1);
		else if (c == 59 && b == 59 && a != 23)
			printf("%.2d:00:00\n", a + 1);
		else if (c == 59 && b == 59 && a == 23)
			printf("00:00:00\n");
		else
			printf("%.2d:%.2d:%d\n",a,b,c+1);

	}
	else
	{
		printf("输入错误!\n");
	}
	system("pause");
	return 0;
}

25. 数组赋值与打印

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[6] = {};
	for (int i = 0; i < 6; i++)
	{
		arr[i] = (i + 1) * 2;
		printf("arr[%d]=%d\n",i,arr[i]);
	}
	system("pause");
	return 0;
}

26. 数组求和

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[5] = {0};
	int sum = 0;
	printf("请输入:\n");
	for (int i = 0; i <5; i++)
	{
		scanf_s("%d",&arr[i]);
		sum += arr[i];
	}
	printf("sum=%d\n", sum);
	system("pause");
	return 0;
}

27. 有次数限制的密码输入

#include<stdio.h>
#include<stdlib.h>
int main()
{
int pass = 0;
	int i = 1;
	while (1)
	{
		if (i == 1)
			printf("请输入密码:");
		else 
		{
			printf("密码错误,还有%d次机会,请重新输入:", 6 - i);
		}
	
	scanf_s("%d",&pass);
		{
		if (pass == 123456)
		  {
			printf("输入正确,欢迎使用!\n");
			break;
		  }
		else if (i >= 1 && i < 5)
		{
			i++;
		  }
		else if (i = 5)
		  {
			printf("今日次数已用完,请明日再试!\n");
			break;
		  }
		}
	  }
	system("pause");
	return 0;
}

28. 找水仙花数

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a = 0, b = 0, c = 0;
	for (int i = 100; i <= 999; i++)         //水仙花数是三位数
	{
		a = i / 100;                         //a得到的值为三位数的百位数
		b = i / 10 % 10;                     //a得到的值为三位数的十位数
		c = i % 10;                          //a得到的值为三位数的个位数
		if (i == a*a*a+ b*b*b+c*c*c)
			printf("水仙花数有%d\n",i);
	}
	system("pause");
	return 0;
}

29. 数组的输入与拷贝

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr1[5] = {0};
	int arr2[5] = {0};
	int i = 0;
	for (int i = 0; i < 5; i++)
	{
		scanf_s("%d",&arr1[i]);
		arr2[i] = arr1[i];
	}
	for (i = 0; i < 5;i++)                      //打印for循环的结果要再进行一次for循环
	printf("arr2[%d]=%d\n", i, arr2[i]);
	/*for (int j = 0; j < 5; j++)              可以再for循环一下进行拷贝
	{
		arr2[j] = arr1[j];
		printf("arr2[%d]=%d\n",j, arr2[j]);
	}*/
	
	system("pause");
	return 0;
}

30. 求数组元素中偶数的和

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i = 0;
	int sum = 0;
	int arr[10] = {0};
	for (int i = 0; i < 6; i++)                  //从终端输入数组元素
	{
		scanf_s("%d",&arr[i]);
	}
	for (i = 0; i < 6; i++)                      //调用数组
	{                                            //将偶数的和加在一起存放在sum里
		if (arr[i] % 2 == 0)
		{
			sum += arr[i];
		}
	}
	printf("sum=%d\n", sum);
	system("pause");
	return 0;
}

31. 将输入数组的多个个位数,按从后向前的顺序组成一个多位数。

#include<stdio.h>
#include<stdlib.h>
int main()
{//输入0-9的数组元素,让它倒着输出一个整数
	int arr[5] = {0};
	printf("请输入5个0-9之间的数:\n");
	for (int i = 0; i < 5; i++)
	{
		scanf_s("%d",&arr[i]);
	}
	int number = 0;
	for (int j = 4; j >= 0; j--)            //从输入数组元素的最后一个开始
	{
		number = number * 10 + arr[j];
	}
	printf("number=%d\n",number);
	system("pause");
	return 0;
}

32. 将数组中的元素整体向前移动
如输入12345,输出23451

#include<stdio.h>
#include<stdlib.h>
int main()
{ //输入进去的数整体向前移动移位,如输入12345,输出23451
	int arr[5] = {0};
	for (int i = 0; i < 5; i++)
	{
		scanf_s("%d",&arr[i]);
	}
	int first = arr[0];                 //先把第一个值赋给first
	for (int i = 0; i<4; i++)
	{
		arr[i] = arr[i+1];             //依次把后面的值赋给前一个
	}
	arr[4] = first;                       //把first即第一个的值赋给最后一个
	for (int i = 0; i < 5; i++)
	{
		printf("%d ",arr[i]);
	}
	putchar('\n');
	system("pause");
	return 0;
}

33. 将数组中元素倒序放进另一个数组输出

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[6] = { 0 };
	int i = 0;
	for (int i = 0; i < 6; i++)
	{
		scanf_s("%d", &arr[i]);
	}
	for (int i = 0; i < 6/2; i++)                    //将数组前面和后面的元素对调,循环次数为数组元素的一半 
	{
		int temp = arr[i];
		arr[i] = arr[5-i];
		arr[5 - i] = temp;
	}
	for (int i = 0; i < 6; i++)
	{
		printf("arr[%d]=%d\n", i, arr[i]);
	}

	system("pause");
	return 0;
}

34. 找到数组中连续三个元素和最大的子集
思路:将前三个元素和看作是一个数,再依次向后移动一位,依次作比较。

/*#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[10];
	for (int i = 0; i < 10; i++)
	{
		scanf_s("%d",&arr[i]);
	}
	int arr2[3] = {0};
	int max = arr[0]+arr[1]+arr[2];
	int sum = 0;
	for (int i = 0; i < 8; i++)            //最后三个之后没有连续的三个元素,最后两个元素不再循环
	{
		sum = arr[i] + arr[i + 1] + arr[i + 2];
		if (max < sum)
		{
			max = sum;
			arr2[0] = arr[i];
			arr2[1] = arr[i + 1];
			arr2[2] = arr[i + 2];
		}
	}
	printf("最大和为%d arr2[0]=%d arr2[1]=%d arr2[2]=%d",max,arr2[0],arr2[1],arr2[2]);
	system("pause");
	return 0;
}
*/

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[10];
	for (int i = 0; i < 10; i++)
	{
		scanf_s("%d", &arr[i]);
	}
	int index = 0;
	int max = arr[0] + arr[1] + arr[2];
	int sum = 0;
	for (int i = 0; i < 8; i++)
	{
		sum = arr[i] + arr[i + 1] + arr[i + 2];
		if (max < sum)
		{
			max = sum;
			index = i;
		}
	}
	for (int i = index; i <= index + 2; i++)
	{
		printf("%d ", arr[i]);
	}
	system("pause");
	return 0;
}

35. 找到数组的最大公约数
思路:先找到数组中最小的数,因为最大公约数不会超过这个最小的数,再从这个最小的数依次向下找,直到数组所有数都能被整除。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[5] = {0};
	int min = 0;
	for (int i = 0; i < 5; i++)               //找到数组中最小的数,因为最大公约数不会超过这个最小的数
	{
		scanf_s("%d",&arr[i]);
		if (i == 0)
		{
			min = arr[0];
		}
		if (min>arr[i])
		{
			min = arr[i];
		}
	}
	while(1)
	{
		int a = 0;
		for (int i = min; i >= 1; i--)                   //从这个最小的数开始往下找到最大公约数
		{
			for (int j = 0; j < 5; j++)            
			if (arr[j] % i != 0)                         //判断数组中的每个数是否可以被i整除
			{
				a = 1;
			}
			if (a == 0)
			{
				printf("最大公约数为%d\n", i);
				break;
			}
		}
		break;
	}
	system("pause");
	return 0;
}

36. 找到数组的最小公倍数
与上题类似,也应该先找到数组中最大的数。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[5] = {0};
	for (int i = 0; i < 5; i++)
	{
		scanf_s("%d", &arr[i]);
	}
	int num = 1;
	while (1)
	{
		int a = 0;
		for (int i = 0; i < 5; i++)
		{
			if (num%arr[i] != 0)
			{
				a = 1;
			}
		}
		if (a ==0)
		{
			printf("最小公倍数为%d\n", num);
			break;
		}
		num++;
	}
	
	system("pause");
	return 0;
}

37. 删除数组中的某个元素
思路:直接从要删除的元素位置开始,将其后面的元素依次向前移动,直接将要删除的元素覆盖就可以。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[10];
	int i = 0;
	for (int i = 0; i < 10; i++)
	{
		scanf_s("%d", &arr[i]);
	}
	for (int i = 2; i< 10; i++)              //从前往前移  ,直接将要删除的元素用后面的元素覆盖就可以了   
	{
		arr[i] = arr[i+1];                   //将后面位置的值赋给前一个位置
	}
	for (int i = 0; i < 10; i++)               //只是少了一个元素,数组的长度不改变,所以还是循环10次,但是最后一个元素位置将存储一个任意值
	{
		printf("%d ", arr[i]);
	}
	system("pause");
	return 0;
}

38. 在数组中插入一个元素
思路:以要插入元素的位置为届,将其后面的元素从后向后移,这样才不会造成元素覆盖,将要插入元素的位置腾空,就可以直接插入元素值了。

#include<stdio.h>
#include<stdlib.h>
int main()
{//在长度为10的数组中输入9个数,然后在第五个位置插入一个数23,原来的数一次往后移
	int arr[10];
	int i = 0;
	for (int i = 0; i < 9; i++)
	{
		scanf_s("%d",&arr[i]);
	}
	for (int i = 8; i >= 4; i--)                //从最后一个元素往后移,如果从前面开始向后移的话,后面的元素会被覆盖
	{
		arr[i+1] = arr[i];
	}
	arr[4] = 23;
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}
	system("pause");
	return 0;
}

39. 找到数组中最大元素的下标

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[10];
	for (int i = 0; i < 10; i++)
	{
		scanf_s("%d",&arr[i]);
	}
	int max = arr[0];
	int index = 0;
	for (int i = 0; i < 10; i++)
	{
		if (max < arr[i])                               //  <找到第一个最大的元素;<=找到最后一个最大的元素
		{
			max = arr[i];
			index = i;
		}	
	}
	for (int i = 0; i < 10; i++)
	{
		if (max == arr[i])                             //找到相同时最大值的下标
			printf("最大值的下标为%d ", i);
	}
	printf("max=%d index=%d\n",max,index);
	system("pause");
	return 0;
}

40. 遍历输入输出二维数组

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[2][3];
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			scanf_s("%d",&arr[i][j]);
		}
	}
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			printf("arr[%d][%d]=%d\n",i,j,arr[i][j]);
		}
		printf("\n");
	}
	system("pause");
	return 0;
}

41. 求两个二维数组对应位置的元素和

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr1[3][4];
	int arr2[3][4];
	int i, j;
	printf("请为第一个二维数组赋值:\n");
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			scanf_s("%d",&arr1[i][j]);
		}
	}
	printf("请为第二个二维数组赋值:\n");
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			scanf_s("%d", &arr2[i][j]);
		}
	}
	for (int k = 0; k < 3; k++)
	{
		for (int m = 0; m < 4; m++)
		{
			printf("%d+%d=%d  ", arr1[k][m], arr2[k][m], arr1[k][m]+arr2[k][m]);
		}
		printf("\n");
	}
	system("pause");
	return 0;
}

42. 二维数组从小到大排序
思路:先将二维数组转为一维数组,再按照一维数组排序比较的方法实现。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	int arr[2][3];
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			scanf_s("%d", &arr[i][j]);
		}
	}
	int arr1[6];
	int index = 0;
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			arr1[index++] = arr[i][j];
		}
	}
	for (int i = 0; i < 6; i++)
	{
		printf("%d ", arr1[i]);
	}
	printf("\n");
	for (int i = 1; i < 5; i++)
	{
		int flag = 0;
		int temp;
		for (int j = 0; j < 6-i; j++)
		{
			if (arr1[j] > arr1[j + 1])
			{
				temp = arr1[j];
				arr1[j] = arr1[j+1];
				arr1[j + 1] = temp;
				flag = 1;
			}
		}
		if (flag == 0)
		{
			break;
		}
	}
	printf("从小到大排列为:\n");
	for (int i = 0; i < 6; i++)
	{
		printf("%d ",arr1[i]);
	}
	printf("\n");


	char str[10] = "beijing";
	printf("stlen=%d\n",strlen(str));


	system("pause");
	return 0;
}

43. 倒序输出二维数组的值

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[2][3];
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			scanf_s("%d", &arr[i][j]);
		}
	}
	for (int i = 1; i>=0; i--)
	{
		for (int j = 2; j>=0; j--)
		{
			printf("arr[%d][%d]=%d\n", i, j, arr[i][j]);
		}
		printf("\n");
	}
	system("pause");
	return 0;
}

44. 将一维数组中的元素按奇偶数分别排序
如输入:1 5 3 2 6 8 4 7 9 0
输出:1 3 5 7 9 0 2 4 6 8
思路:先把所有元素排序(冒泡排序),再将排好序的元素按照奇数、偶数依次分别存在新的数组,最后将这两个数组再存放在一个新的数组打印出来。

#include<stdio.h>
#include<stdlib.h>
int main()
{//总体思路:先把所有元素排序,再将排好序的元素按照奇数、偶数依次分别存在新的数组,最后将这两个数组再存放在一个新的数组打印出来
	int arr[10] = { 0 };
	for (int i = 0; i < 10; i++)
	{
		scanf_s("%d", &arr[i]);
	}
	for (int i = 1; i < 10; i++)                   //先排序(冒泡排序),外层为遍历次数,从1开始
	{
		int flag = 0;                             //flag用于判断比较是否完成,即如果所有的元素都是后面的大,flag将一直为0,就跳出循环
		for (int j = 0; j < 10 - i; j++)           //内层为两两比较,将较大的元素后移,循环完成一次排好一个最大的数,两两比较因此会少一次,所以j<10-i
		{
			if (arr[j] > arr[j + 1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
				flag = 1;
			}
		}
		if (flag == 0)                     //表示后面的数都比前面的数大,可以跳出循环了
		{
			break;
		}
	}
	int arr1[10];                           //定义两个新数组,分别存放排好序的奇数和偶数
	int arr2[10];
	int index1 = 0;                         //定义两个数字,记录奇数组和偶数组元素的下标
	int index2 = 0;
	for (int i = 0; i < 10; i++)
	{
		if (arr[i] % 2 != 0)                //判断元素是否为奇数
		{
			arr1[index1++] = arr[i];          //将奇数元素存放在一个新数组arr1里
		}
		else                                
		{
			arr2[index2++] = arr[i];           //将偶数元素存放在一个新数组arr2里
		}
	}
	int newarr[10];
	for (int i = 0; i < index1; i++)          //把奇数和偶数数组分别存进一个新数组newarr里
	{
		newarr[i] = arr1[i];
	}
	for (int i = 0; i < index2; i++)
	{
		newarr[index1+i] = arr2[i];
	}
	for (int i = 0; i < 10; i++)                //遍历打印新数组newarr[]
	{
		printf("%d ",newarr[i]);
	}
		system("pause");
		return 0;
	}

45. 二维数组中找最大值

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[2][3];
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			scanf_s("%d", &arr[i][j]);
		}
	}
	int max = arr[0][0];
	for (int i = 0; i<2; i++)
	{
		for (int j = 0; j <3; j++)
		{
			if (max < arr[i][j])
			{
				max = arr[i][j];
			}
		}
	}
	printf("max=%d",max);
	system("pause");
	return 0;
}

46. 冒泡排序

/*#include<stdio.h>
#include<stdlib.h>
int main()
{//冒泡排序
	int arr[5] = { 0 };
	for (int i = 0; i < 5; i++)
	{
		scanf_s("%d",&arr[i]);
	}
	int min = arr[0];
	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 4; j++)           //当与最后一个元素比较时考虑j+1越界的问题所以j<4,如果j<5,当j=4时,j+1就越界了
		{
			if (arr[j]>arr[j + 1])             //把较大的值往后移,较小的值往前移,就是冒泡排序
			{
				int temp = arr[j];               //两两交换值
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	for (int i = 0; i < 5; i++)
	{
		printf("%d ", arr[i]);
	}

	system("pause");
	return 0;
}
*/



/*上面的未做优化,即每次排序都要经历5次比较,但实际上每排一次,下次将少一次比较,
因为每次比较会把最大的放在最后,这个数可以不用再与前面的作比较*/


#include<stdio.h>
#include<stdlib.h>
int main()
{//冒泡排序
	int arr[5] = { 0 };
	for (int i = 0; i < 5; i++)
	{
		scanf_s("%d", &arr[i]);
	}
	int min = arr[0];
	for (int i = 1; i < 5; i++)                 //外层循环表示次数,次数从1开始
	{
		int flag = 0;                           //内层循环j表示数组下标
		for (int j = 0; j < 5-i; j++)           //考虑到每完成一次排序比较,下一次比较可以减少一次,所以j<5-i(每外循环一次,内循环的两两比较可以减少一次)
		{
			if (arr[j]>arr[j + 1])             //把较大的值往后移,较小的值往前移,就是冒泡排序
			{
				int temp = arr[j];               //两两交换值
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
				flag = 1;
		}
		if (flag == 0)                           //考虑有些数组不用排5次就可以排好,所以在它第一次就排好时结束循环
		{
			break;
		}
		printf("第%d次排序:",i);                //查看每一次排序的结果
		for (int i = 0; i < 5; i++)
		{
			printf("%d ", arr[i]);
		}
		printf("\n");                            //打印第i次排序后,让其自动换行
	}

	for (int i = 0; i < 5; i++)                  //查看最后排好的结果
	{
		printf("%d ", arr[i]);
	}

	system("pause");
	return 0;
}

47. 将字符串下标为偶数的位置如果是小写字母将其改为大写字母,如果是大写字母保持不变。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char str[] = "abcDEFjkM";
	for (int i = 0; i < strlen(str); i++)
	{
		if (i%2==0)
		{
			if (str[i] >= 'a'&&str[i] <= 'z')
			{
				str[i] -= 32;
			}
		}
	}
	printf("%s",str);
	system("pause");
	return 0;
}

48. 判断输入的字符是不是手机号

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{        //判断输入的字符串是否为手机号
	char phoneNum[12] = "";
	gets_s(phoneNum);
	if (phoneNum[0] != '1')                  //先判断是否是1开头
	{
		printf("不是大陆的手机号!\n");
	}
	else{
		int flag = 0;                                //用于记录输入的字符串中是否有非数字的字符
		for (int i = 1; i < 11; i++)
		{
			if (phoneNum[i] < '0' || phoneNum[i] > '9')     //如果字符串中有一个不是数字输出不合法的手机号
			{
				flag = 1;
				break;
			}
		}
		if (flag == 0)
		{
			printf("是大陆的手机号!\n");
		}
		else{
			printf("不合法的手机号!\n");
		}
	}
	system("pause");
	return 0;
}

49. 判断字符串A中是否包含字符串B
思路:将字符串A按照字符串B的长度分开存在一个临时字符串中,将临时字符串与字符串B作比较即可。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{     //找到str1中存在与str2相同的子字符串
	char str1[] = "abcdefgsjhdefg";
	char str2[] = "defg";
	for (int i = 0; i < strlen(str1)-3; i++)        //四个元素分一组,只需要循环到倒数第三个元素之前
	{
		char temp[100] = "";
		for (int j = 0; j < strlen(str2); j++)
		{
			temp[j] = str1[j + i];              //将str1中的字符串按照str2的长度分开存在temp中
			if (strcmp(temp,str2)==0)            //如果strcmp(temp,str2)==0,则两个字符串相等
			{
				printf("第%d个元素开始出现相同:",i+1);   //i记录的是元素下标,从0开始
				printf("%s\n ",temp);
			}
		}
	}
	system("pause");
	return 0;
}

50. 从一个字符串中查找字符

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char address[100]="";
	char findchar ;
	memset(address, '\0', sizeof(address));
	printf("请输入一个字符串:");
	gets_s(address);
	printf("请输入要查找的字符:");
	scanf_s("\n%c",&findchar);            //终端赋值失败??
	printf("%s %c",address,findchar);
	int num = 0;
	for (int i = 0; i < strlen(address); i++)
	{
		if (findchar == address[i])
		{
			num++;
		}
	}
	if (num == 0)
	{
		printf("Sorry! Not found!\n");
	}
	else
	{
		printf("num=%d\n", num);
	}
	system("pause");
	return 0;
}

51. 倒序输出字符串

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char str[100];
	memset(str,'\0',sizeof(str));
	printf("请输入字符串:\n");
	gets_s(str);
	for (int i = strlen(str); i >= 0; i--)
	{
		printf("%c",str[i]);
	}
	printf("\n");
	system("pause");
	return 0;
}

52. 字符串的输入与长度计算

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char str[20] = "";
	gets_s(str);
	//scanf_s("%s",str);
	printf("长度为%d",strlen(str));
	system("pause");
	return 0;
}

53. 计算二位数组的总和和平均值

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[2][3];
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			scanf_s("%d",&arr[i][j
			]);
		}
	}
	int sum = 0;
	int num = 0;
	int linesum = 0;
	int linenum = 0;
	for (int i = 0; i < 2; i++)
	{
		linesum = 0;                              //只记录一行的和
		linenum = 0;                              //只记录一行的元素个数
		for (int j = 0; j < 3; j++)
		{
			sum += arr[i][j];
			num++;
			linesum += arr[i][j];
			linenum++;
		}
		printf("第%d行:linesum=%d lineave=%.2f\n",i+1,linesum,linesum/(float)linenum);
	}
	for (int i = 0; i < 3; i++)
	{
		int listsum = 0;
		int listnum = 0;
		for (int j = 0; j < 2; j++)
		{
			listsum += arr[j][i];
			listnum++;
		}
		printf("第%d列:listsum=%d listave=%.2f\n", i + 1, listsum, listsum / (float)listnum);
	}
	printf("总计:sum=%d ave=%.2f\n", sum,sum/(float)num);    //平均值可能是浮点数,所以要把除数或者被除数中的一个强制转换成浮点数
	system("pause");
	return 0;
}

54. 字符串的拼接

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char s1[100] = "";
	char s2[100] = "";
	printf("请输入第一个字符串数组:\n");
	gets_s(s1);
	printf("请输入第二个字符串数组:\n");
	gets_s(s2);
	strcat_s(s2,s1);    //xcode里可以在字符串数组后面+一个常量,表示在这个常量个元素后进行操作
	printf("s2=%s", s2);
	system("pause");
	return 0;
}

55. 字符串的复制

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char s1[100] = "";
	char s2[100] = "";
	printf("请输入第一个字符串数组:\n");
	gets_s(s1);
	printf("请输入第二个字符串数组:\n");
	gets_s(s2);
	strcpy_s(s1,s2);
	printf("s1=%s",s1);
	system("pause");
	return 0;
}

56. 数字字符转换为整数(char to int)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char str[] = { '2', '5', '3', '1', '2' };
	long length = sizeof(str);
	int sum = 0;
	for (int i = 0; i < length; i++)
	{
		int num = str[i] - '0';             //将字符变成对应的数字
		sum = sum * 10 + num;
	}
	printf("sum=%d", sum);
	system("pause");
	return 0;
}

57. 统计字符串中字母的个数

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char str[]="abc123def";
	long num = 0;
	for (int i = 0; i <strlen(str); i++)
	{
		if ((str[i] <= 'z'&&str[i] >= 'a') || (str[i] <= 'Z'&&str[i] >= 'A'));   
		{
			num++;               
		}
	}
	printf("%ld\n",num);
	system("pause");
	return 0;
}

58. 寻找字符串中第一次出现的唯一一个的字符

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{   //打印字符串中第一次只出现了一次的字符
	char str[] = "abaccdeefshdds";
	for (int i = 0; i < strlen(str); i++)
	{
		char temp = str[i];
		int num = 0;
		for (int j = 0; j < strlen(str); j++)
		{
			if (temp == str[j])              //将第一次循环记录的temp与第二次循环比较是否有相等的,若没有,则这个字符只出现了一次
			{
				num++;                       //有几个同样的元素,则num记录加一,若num只等于一,则只出现了一次
			}
		}
		if (num == 1)
		{
			printf("%c\n", temp);
				break;
		}
	}
	system("pause");
	return 0;
}

59. 字符串输出指定字符

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char c[] = "it's a computer";
	int j = 0;
	for (int i = 0; i < strlen("computer"); i++)          //循环次数为要打印的字符串的长度,可以用strlen()求到
	{
		j = i + 7;                   //找到从computer开始的位置,它前面有7个位置
		printf("%c",c[j]);
	}
	printf("\n");
	system("pause");
	return 0;
}

60. 字符串大小写转换

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char str[] = "abCDnH";
	for (int i = 0; i < strlen(str); i++)
	{
		if (str[i] >= 'a'&&str[i] <= 'z')
		{
			str[i] -= 32;
		}
		else
		{
			str[i] += 32;
		}
	}
	printf("%s\n",str);
	system("pause");
	return 0;
}

61. 用函数比较大小

#include<stdio.h>
#include<stdlib.h>
double min(double x, double y)
{
	return x < y ? x : y;
}
int main()
{
	double a;
	double b;
	scanf_s("%lf",&a);         //double类型输入用%lf
	scanf_s("%lf",&b);
	double m = min(a, b);
	printf("%lf\n",m);
	system("pause");
	return 0;
}

62. 函数求谐均值

#include<stdio.h>
#include<stdlib.h>
double xiejunzhi(double a, double b)
{
	if (a != 0 && b != 0)
	{
		double ave = (1 / a + 1 / b) / 2;
		return 1/ave;
	}
	else{
		printf("0不能求谐均值\n");
	}
}
int main()
{
	double result = xiejunzhi(3.5, 4.8);
	printf("谐均值为%lf\n",result);
	system("pause");
	return 0;
}

63. 指针

#include<stdio.h>
#include<stdlib.h>
int main()
{   //练习
	double *head = NULL;    //定义指针head,并赋值NULL
	double salary = 8000.75; //定义一个double类型salary,并赋值8000.75
	head = &salary;         //让head指向salary
	printf("&salary=%p\n",&salary); //用&打印salary的地址
	printf("head=%p\n",head);       //用head打印salary的地址
	printf("salary=%.2lf\n",salary);  //通过salary本身打印salary的值
	printf("*head=%.2lf\n",*head);    //通过head显示salary的值
	double *tail = NULL;
	tail = &salary;
	//tail = head;                 这两种方式都是让tail指向salary
	printf("tail=%p\n",tail);     //打印tail本身的值
	printf("*tail=%.2lf\n",*tail);   //打印tail指向的值
	*tail = 3023.25;      //通过tail修改salary的值
	printf("*head=%.2lf\n",*head);   //通过head显示它指向的值
	int age = 28;
	//head = &age;      //将age的地址赋值给head(指针类型与变量类型必须一致,void*除外)
	*tail += 100;    //通过tail将变量salary的值加100
	printf("salary=%.2lf\n",salary);
	printf("size of salary =%.2ld\n",sizeof(salary));
	printf("size of tail =%.2ld\n", sizeof(tail));
	printf("size of head =%.2ld\n", sizeof(head));
	system("pause");
	return 0;
}

64. 用函数分离出实数的整数部分

#include<stdio.h>
#include<stdlib.h>
int myprint(float number)
{
	return(number / 1);
}
int main()
{
	int a = myprint(123.45);
	printf("%d\n",a);
	system("pause");
	return 0;
}

65. 裴波拉契数列(函数递归)

#include<stdio.h>
#include<stdlib.h>
int myprint(int n)
{  //斐波拉契数列:1、1、2、3、5、8、13、21.....
	if (n == 1 || n == 2)        //前两个数是已知的,返回1;
	{
		return 1;
	}
	else{
		return myprint(n - 1) + myprint(n - 2);    //后面的数等于前面两个数之和
	}   //n不是已知条件,就一直myprint缩小,直到遇到已知的n=1、n=2,然后再一直返回到n的值
}
int main()
{
	int a = myprint(8);
	printf("%d\n", a);
	system("pause");
	return 0;
}

66. 函数 循环调用

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void donut(int number)
{
	for (int i = 0; i < number; i++)
	{
		printf("*");
	}
	printf("\n");
}
int main()
{
	donut(3);
	system("pause");
	return 0;
}

67. 将一个四位数拆分成4个字符,以空格分开

#include<stdio.h>
#include<stdlib.h>
void myprint(int number)
{
	if (number >= 1000 && number <= 9999)
	{
		printf("%d %d %d %d\n", number / 1000, number / 100 % 10, number / 10 % 10, number % 10);
	}
	else
	{
		printf("输入的数字不合法\n");
	}
}
int main()
{
	myprint(1234);
	system("pause");
	return 0;
}

68. 输出指定格式的字符
比如,输出3行4列的*号

#include<stdio.h>
#include<stdlib.h>
void chline(char ch, int i, int j)
{
	for (int m = 0; m < i; m++)
	{
		for (int n = 0; n < j; n++)
		{
			printf("%c",ch);
		}
		putchar('\n');
	}
}
int main()
{
	chline('*', 3, 4);         //输出3行4列的*号
	system("pause");
	return 0;
}

69. 指针函数

#include<stdio.h>
#include<stdlib.h>
int findmax(int a, int b)
{
	return a > b ? a : b;
}
int main()
{
	int (*pmax)(int num1,int num2);
	pmax = findmax;
	int max = pmax(3, 5);
	printf("max=%d\n",max);
	system("pause");
	return 0;
}

70. 指针排序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void paixu(char *str)             //首地址
{
	int nlength = strlen(str);
	for (int i = 1; i < nlength; i++)
	{                                        //冒泡排序
		
		int flag = 0;
		for (int j = 0; j < nlength - i; j++)
		{
			if (str[j]>str[j + 1])
			{
				char temp = str[j];
				str[j] = str[j + 1];
				str[j + 1] = temp;
				flag = 1;
			}
		}
		if (flag == 0)
		{
			break;
		}
	}

}
int main()
{
	char str[100] = "";
	gets_s(str);
	paixu(str);
	printf("%s\n",str);
	system("pause");
	return 0;
}

71. 指针与数组

#include<stdio.h>
#include<stdlib.h>
int main()
{
	double salarys[5] = {1500,200.43,1202.78,8000.32,5000};
	for (int i = 0; i < 5; i++)
	{
		printf("%.2f,",*(salarys+i));
	}
	printf("\n");
	printf("数组中第一个元素的地址:%p\n",&salarys[0]);
	printf("整个数组中的首地址:%p\n", salarys);
	printf("数组中最后一个元素的地址:%p\n", &salarys[4]);
	printf("数组中最后一个元素的地址:%p\n", salarys+4);
	double *head = &salarys[0];
	double *tail = &salarys[4];
	printf("*head=%.2f\n",*head);
	printf("*tail=%.2f\n",*tail);
	printf("head=%p\n", head);
	printf("tail=%p\n",tail);
	printf("tail-head=%d\n",tail-head);
	*head -= 50;
	printf("第一个元素减50后的值为%lf\n",*head);
	head += 2;
	printf("通过指针head加法运算后第三个元素为%.2f\n",*head);
	head = &salarys[0];
	for (int i = 0; i < 5; i++)
	{
		printf("使用head顺序输出%.2f,",*(head+i));
	}
	printf("\n");
	for (int i = 0; i <5 ; i++)
	{
		printf("使用tail倒序输出%.2f,",*(tail-i));
	}
	printf("\n");
	system("pause");
	return 0;
}

72. 指针与字符串

#include<stdio.h>
#include<stdlib.h>
int main()
{
	char str[100]="";
	char* p = NULL;
	gets_s(str);         //这个编译器字符串输入必须用gets_s,不能用scanf_s
	p = str;
	printf("%s\n",p);
	system("pause");
	return 0;
}

73. 指针运算

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr[10] = {1,2,3,4,5,6,7,8,9,0};
	int *p1 = &arr[0];
	int *p2 = &arr[5];
	long number = p2 - p1;
	printf("number=%ld\n",number);   //实际运行过程:(p2-p1)/sizeof(int);
	system("pause");
	return 0;
}

74. 函数、数组

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int sumofarray(int array[], int nlength)
{
	int sum = 0;
	for (int i = 0; i < nlength; i++)
	{
		sum += array[i];
	}
	return sum;
}
int main()
{
	int array[5] = {1,2,3,4,5};
	int sum = sumofarray(array, 5);
	printf("sum=%d\n",sum);
	system("pause");
	return 0;
}

75. 函数封装输入、输出,找最值

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void scanarray(double array[], int nlength)    //输入数组
{
	for (int i = 0; i < nlength; i++)
	{
		scanf_s("%lf",&array[i]);
	}
}
void printarray(double array[], int nlength)   //打印数组中的元素
{
	for (int i = 0; i < nlength; i++)
	{
		printf("%.2lf  ",array[i]);
	}
	printf("\n");
}
void findmaxmin(double array[], int nlength)   //找数组中的最大值与最小值
{
	int max = array[0];
	int min = array[0];
	for (int i = 1; i < nlength; i++)
	{
		if (max < array[i])
		{
			max = array[i];
		}
		if (min>array[i])
		{
			min = array[i];
		}
	}
	printf("max=%d min=%d\n", max, min);
}
int main()
{
	double array[10] = { 0 };
	scanarray(array,10);
	printarray(array,10);
	findmaxmin(array, 10);
	system("pause");
	return 0;
}

76. 结构体

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{     //给结构体变量赋值并输出。boy1和boy2被定义为外部结构变量,并对boy1作了部分成员变量初始化
	struct student{

		int age;
		char name[10];
		float score;
	}boy1 = {boy1.age=19}, boy2;
	strcpy_s(boy1.name,"xiaoming");
	printf("input score\n");
	scanf_s("%f",&boy1.score);
	boy2 = boy1;
	printf("age=%d\n name=%s\n score=%.2f\n",boy1.age,boy1.name,boy1.score);
	printf("------------------------\n");
	printf("age=%d\n name=%s\n score=%.2f\n", boy2.age, boy2.name, boy2.score);
	system("pause");
	return 0;
}

77. 结构体数组,计算平均值

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//定义了一个外部结构数组,并计算了平均值、找到了不及格人数
struct student{

		int age;
		char name[10];
		float score;
	}boy[3] = {
		{18,"xiaoming",70},
		{17,"xiaohong",50},
		{19,"xiaohua",60.5}
	};
int main()
	{
	float ave = 0, sum = 0;
	int num = 0;    //记录不及格人数
	for (int i = 0; i < 3; i++)
	{
		sum += boy[i].score;
		if (boy[i].score < 60)    //遍历分数不及格的boy
		{
			num += 1;
		}
	}
	ave = sum / 3;
	printf("平均成绩为%.2f\n",ave);
	printf("不及格人数有%d个\n",num);

	
	system("pause");
	return 0;
}

78. 结构指针作函数参数

#include<stdio.h>
#include<stdlib.h>
#define C 3

struct student{
	char name[10];
	char sex;
	int age;
	float mathScore;
	float chineseScore;
	float englishScore;
}students[C] = {
	{"xiaoming",'男',18,80,90,56},
	{"xiaohong",'女',19,90,91,95},
	{"xiaohua",'男',20,50,60,56}
};
void fun(struct student *pstu)
{
	float sumMathScore = 0,aveMathScore = 0;
	float sumChineseScore = 0, aveChineseScore = 0;
	float sumEnglishScore = 0, aveEnglishScore = 0;
	int num1 = 0, num2 = 0, num3 = 0, num = 0;
	for (int i = 0; i < C; i++)
	{
		sumMathScore += students[i].mathScore;
		sumChineseScore += students[i].chineseScore;
		sumEnglishScore += students[i].englishScore;
		if (students[i].mathScore < 60)
		{
			num1++;
		}
		if (students[i].chineseScore < 60)
		{
			num2++;
		}
		if (students[i].englishScore< 60)
		{
			num3++;
		}
	}
	num = num1 + num2 + num3;
	printf("数学不及格的有%d人\n",num1);
	printf("语文不及格的有%d人\n", num2);
	printf("英语不及格的有%d人\n", num3);
	printf("一共不及格的有%d人\n", num);
	aveMathScore = sumMathScore / 3;
	aveChineseScore = sumChineseScore / 3;
	aveEnglishScore = sumEnglishScore / 3;
	printf("数学平均分为%.2f\n",aveMathScore);
	printf("语文平均分为%.2f\n", aveChineseScore);
	printf("英语平均分为%.2f\n", aveEnglishScore);
}
int main()
{
	struct student *pstu;
	pstu = students;
	fun(pstu);
	system("pause");
	return 0;
}

79. 静态局部变量

#include<stdio.h>
#include<stdlib.h>
void testfunc()
{
	static int num = 9;   //如果不加static关键字,结果全是9,因为每次testfunc函数被调用时,num被重新分配内存,结束后自定释放内存,并没有保留num++后的值
	printf("%d %p",num++,&num);   //static的作用就是不会释放内存,也不会重新分配内存,所以num++后的值才会被一直保留下来
}
int main()
{
	for (int i = 0; i < 10; i++)
	{
		testfunc();
		printf("\n");
	}
	system("pause");
	return 0;
}

80. 求解特殊的4位数
已知:这个四位数前两位相同,后两位相同,前两位与后两位不同,同时这个四位数是一个整数的平方

#include<stdio.h>
#include<stdlib.h>
int main()
{
	
	for (int i = 1; i < 100; i++)    //限定这个整数的平方是一个四位数
	{
		int num = i*i;
		int a = num / 1000;           //分别求到这个四位数的千位、百位、十位和个位
		int b = num / 100 % 10;
		int c = num / 10 % 10;
		int d = num % 10;
		if (a == b&&c == d&&a != c)      //作判断
		{
			printf("这个四位数为%d\n", num);
			break;
		}
	}
	system("pause");
	return 0;
}

81. 持续更新中。。。

  • 123
    点赞
  • 790
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值