栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言试题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言试题

①统计单词的平均长度

输入:若干个单词,每个单词的前后都有若干个空格隔开

输出:单词的平均长度,保留到小数点后两位

解题思路如下:

第一步:解决空格+单词共同输入的问题;既然每个单词都可能前后有若干空格如何判断输入停止?

用gets()进行输入即可,gets()表示的是一行的输入,遇到回车就结束

第二步:解决计算单词个数问题;用多重判断条件就好了,前面是空格后面不是空格单词数+1

int main() {
	char arr[1000] = { 0 };
	int i = 0;
	gets(arr);
	int num = 0;
	float ret = 0.0;
	float c = 0.0;
	while (arr[i] != 0)
	{
		if (i != 0) 
		{
			if (arr[i] == ' '){}
			else if (arr[i] != ' ' && arr[i - 1] == ' ')
			{
				num++;
				c++;
			}
			else 
				c++;
		}
		else 
		{
			if (arr[i] == ' ') {}
			else 
			{
				c++;
				num++;
			}
		}
		i++;
	}
	ret = c / num;
	printf("%.2f", ret);
}

出现的问题:

Ⅰ:若gets()输入,因为把数组元素全部初始化为0了,是否就无法用arr[i] = ''来作为终止判断条件?

答:有可能,所以就直接arr[i] = 0作条件。

②绝对值排序

输入:若干个整数

输出:按照绝对值降序输出整数,每个整数输出后都换行

解题思路:

第一步:解决多个整数输入进数组的问题;在未知输入数字的个数条件下,如何实现想输入多少个数就多少个?

用EOF实现。

第二步:比较绝对值的大小

第三步:排序 -> 冒泡

第四步:按顺序打印

int fab(int n)
{
	int ret = 0;
	if (n < 0)
		return (0 - n);
	return n;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int arr[1000] = { 0 };
	int i = 0;
	int j = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}
	int tmp = 0;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n - 1 - i; j++)
		{
			if (fab(arr[j]) > fab(arr[j + 1]))
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
	for (i = n - 1; i >= 0; i--)
	{
		printf("%dn", arr[i]);
	}
	return 0;
}

出现的问题:

Ⅰ:math.h库函数无法使用

答:自己写一个绝对值函数就好

③13号星期几

1900年1月1日是星期一,判断n年后的每个月13号是周一到周日周日的次数都有多少

输入:整数n,表示经过了n年  // 如1 

输出:七个整数,表示是周一...周日的次数  //如1 3 1 2 2 2 4

解题思路:

第一步:判断是否是闰年 ,闰年二月多一天 //写一个闰年judge函数 

第二步:判断是哪个月  // 提前设定好每个月的天数

第三步:判断当月的13号是星期几  //当月天数==13时候,总天数%7看看是多少来判断星期几

int leapYear(int n)
{
	n += 1900;
	if (n % 400 == 0 ||( n % 4 == 0 && n % 100 != 0))
		return 1;
	return 0;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int month[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
	int cnt[7] = { 0 };
	int i = 0;
	int monthday = 0;
	int day = 6;
	int year = 0;

	if (n >= 1 && n <= 100)
	{
		for (year = 0; year < n; year++)
		{
			month[1] += leapYear(n);
			for (i = 0; i < 12; i++)
			{
				for (monthday = 0; monthday <= month[i]; monthday++)
				{
					monthday = 13;
					day += 13;
					cnt[day % 7]++;
					monthday += (month[i] - 13);
					day += (month[i] - 13);
				}
			}
			month[1] = 28;
		}
	}
	i = 0;
	for (i = 0; i < 7; i++)
	{
		if (i < 6)
			printf("%d ", cnt[i]);
		else
			printf("%d", cnt[i]);
	}
	return 0;
}

④字符串的最小周期

输入:一个字符串

输出:字符串的最小周期

解题步骤:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836394.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号