初识C语言---这些题你都会吗?

1.输入一个年份year,判断它是不是闰年

#include <stdio.h>
int main()
{
	int year = 0;
	scanf("%d", &year);
	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
		printf("%d年是闰年\n",year);
	else
		printf("%d年不是闰年\n", year);
	return 0;
}

再用函数编写上述代码

#include <stdio.h>
int is_leap_year(int y)
{
	if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
		return 1;
	else
		return 0;
}
int main()
{
	int year = 0;
	scanf("%d", &year);
	if (is_leap_year(year))
	{
		printf("%d年是闰年\n", year);
	}
	else
	{
		printf("%d年不是闰年\n", year);
	}
	return 0;
}

2.输入一个正数,逆序打印它的每一位。

#include <stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	while (num)
	{
		printf("%d ", num % 10);
		num /= 10;
	}
	return 0;
}

用函数来实现

#include <stdio.h>
void reverse_order(int n)
{
	while (n)
	{
		printf("%d ", n % 10);
		n /= 10;
	}
}
int main()
{
	int num = 0;
	scanf("%d", &num);
	reverse_order(num);
	return 0;
}

3.输入一个正整数,计算这个整数是几位数;

#include <stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	int count = 0;
	do
	{
		count++;
		num /= 10;
	} while (num);
	printf("%d\n", count);
	return 0;
}

用函数来编写。

#include <stdio.h>
int get_count(n)
{
	int count = 0;
	do
	{
		count++;
		n /= 10;
	} while (n);
	return count;
}

int main()
{
	int num = 0;
	scanf("%d", &num);
	int count = get_count(num);
	printf("%d\n", count);
	return 0;
}

4.从100~200之间找出素数并打印出来。

#include <stdio.h>
#include <math.h>
int main()
{
	int i = 0;
	for (i = 100; i <= 200; i++)
	{
		int flag = 1;
		int j = 0;
		for (j = 2; j < sqrt(i); j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1)
			printf("%d ", i);
	}
	return 0;
}

用函数实现

#include <stdio.h>
#include <math.h>
int pri_num(int i)
{
	int j = 2;
	for (j = 2; j < sqrt(i); j++)
	{
		if (i % j == 0)
		{
			return 0;
		}
	}
	return 1;
}

int main()
{
	int i = 0;
	for (i = 100; i <= 200; i++)
	{
		if (pri_num(i))
		{
			printf("%d ", i);
		}
	}
	return 0;
}

5.电脑关机小操作

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
	char input[20] = { 0 };
	system("shutdown -s -t 60");//倒计时60秒关机
again:
	printf("您的电脑将在60秒后关机,输入“我是猪”后将停止关机!!!");
	scanf("%s", input);
	if ((strcmp(input, "我是猪") == 0))
	{
		system("shutdown -a");//取消关机
	}
	else
	{
		goto again;
	}

	return 0;
}

1.system()是一个库函数需要引用头文件#include <stdlib.h>,它是用来执行系统命令的。
2.strcmp()也是一个库函数,需要引用头文件#include <string.h>,它是用来比较量个字符串大小的;形如strcmp(str1,str2)

当str1>str2时,返回一个>0的值;
当str1<str2时,返回一个<0的值;
当str1=str2时,返回0;

6.输入年份与月份判断天数

#include <stdio.h>
int get_days(int y, int m)
{
	int arr[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	if (((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))&&m == 2)
	{
		return arr[m]+1;
	}
	else
	{
		return arr[m];
	}
}
int main()
{
	int year = 0;
	int month = 0;
	printf("请输入年份和月份:");
	scanf("%d%d", &year, & month);
	int d = get_days(year, month);
	printf("%d年%d月有%d天\n", year, month, d);

	return 0;
}

7.对从键盘上输入的若干正整数求和,遇到负数终止程序,并且输入的数不超过10个;

#include <stdio.h>
int main()
{
	int i = 0;
	int num = 0;
	int sum = 0;
	for (i = 1; i <= 10; i++)
	{
		scanf("%d", &num);
		if (num >= 0)
			sum += num;
		else
			break;
	}
	printf("%d", sum);
	return 0;
}

8.从键盘输入若干字符,过滤所有的空格后再输出。

#include <stdio.h>
int main()
{
	char ch;
	while ((ch = getchar()) != '\n')
	{
		if (ch == ' ')
		{
			continue;
		}
		else
		{
			putchar(ch);
		}
	}
	return 0;
}

9.十个评委打分,去掉最高分和最低分,求平均分。

#include <stdio.h>
int main()
{
	float score, sum, max, min, avg;
	printf("请输入十位评委打分:\n");
	scanf("%f", &score);
	max = min = score;
	sum = score;
	int i = 1;
	for (i = 1; i <= 9; i++)
	{
		scanf("%f", &score);
		sum += score;
		if (max < score)
			max = score;
		if (min > score)
			min = score;
	}
	avg = (sum - max - min)/8.0;
	printf("%f %f %f",max,min, avg);
	return 0;
}

用函数实现

#include <stdio.h>
float get_avg(float score[], int n)
{
	float sum = 0.0, max, min;
	max = min = score[0];
	for (int i = 0; i < 10; i++)
	{
		sum = sum + score[i];
		if (max < score[i])
		{
			max = score[i];
		}
		if (min > score[i])
		{
			min = score[i];
		}
	}
	float avg = (sum - max - min) / 8;
	return avg;

}
int main()
{
	float score[10];
	for (int i = 0; i < 10; i++)
	{
		scanf("%f", &score[i]);
	}
	float avg = get_avg(score, 10);
	printf("%f", avg);
	return 0;
}

猴子吃桃问题,第一天吃了桃子的一半多一个,后面亦是如此,直到第十天想吃桃子时发现只有1个了,求第一天的桃子数;

#include <stdio.h>
int main()
{
	int rest = 1;
	for (int i = 9; i > 0; i--)
	{
		rest = (rest + 1) * 2;
	}
	printf("%d", rest);
	return 0;
}

10.穷举法:用一张一元钞票换1分,2分和5分硬币(至少各一枚),有几种换法。

#include <stdio.h>
int main()
{
	int x, y,z, count = 0;
	for( x = 1;x<20;x++)
		for(y=1;y<50;y++)
			for(z = 1;z<100;z++)
				if (5 * x + 2 * y + z == 100)
				{
					count++;
					printf("一元能换:%d张5分,%d张两分,%d张一分\n",x,y,z);
				}
	printf("一共有%d种换法\n", count);
	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值