[Coursera 计算导论与C语言基础]期末

编程题#1:判断闰年

判断某年是否是闰年。
输入只有一行,包含一个整数a(0 < a < 3000)
输出一行,如果公元a年是闰年输出Y,否则输出N
提示

公历纪年法中,能被4整除的大多是闰年,但能被100整除而不能被400整除的年份不是闰年, 能被3200整除的也不是闰年,如1900年是平年,2000年是闰年,3200年不是闰年。

#include<stdio.h>
int main()
{
	int a=1;
	bool leap=0;
	printf("input a:");
	scanf("%d",&a);
	while(a>=3000||a<=0)
	{	
		printf("again:");
		scanf("%d",&a);
	}
	if(a%4==0)
	{
		if(a%100==0)
		{
			if(a%400==0)
			{
				if(a%3200!=0)
					leap=1;
				else leap=0;
			}
			else leap=0;
		}
		else leap=1;
	}
	else leap=0;
	if(leap)
		printf("yes");
	else printf("no");
	return 0;
}
编程题#2:能被3,5,7整除的数
输入一个整数,判断它能否被3,5,7整除,并输出以下信息:
1、能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格);
2、能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者 3 7或者5 7,中间用空格分隔)
3、能被其中一个数整除(输出这个除数)
4、不能被任何数整除;(输出小写字符'n',不包括单引号)
输入 一个数字

输出一行数字,从小到大排列,包含3,5,7中为该输入的除数的数字,数字中间用空格隔开

#include<stdio.h>
int main()
{
	int a=0;
	bool leap=0;
	printf("input a:");
	scanf("%d",&a);
	if(a%3==0)
	{
		printf("3 ");
		leap=1;
	}
	if(a%5==0)
	{
		printf("5 ");
		leap=1;
	}
	if(a%7==0)
	{
		printf("7");
		leap=1;
	}
	if(leap=0)
		printf("n");
	return 0;
}

编程题#3:最远距离
给定一组点(x,y),求距离最远的两个点之间的距离。
输入
第一行是点数n(n大于等于2)
接着每一行代表一个点,由两个浮点数x y组成。
输出
输出一行是最远两点之间的距离。
使用cout << fixed << setprecision(4) << dis << endl;输出距离值并精确到小数点后4位。

fixed和setprecision是在<iomanip>头文件里定义的格式控制操作符,需要#include <iomanip>.

#include<stdio.h>
#include<math.h>
int main()
{
	int n=2;
	double result=0;
	double max=0;
	double x[100];
	printf("input n:");
	scanf("%d",&n);
	while(n<2)
	{
		printf("input again n:");
		scanf("%d",&n);
	}
	printf("input number:");
	for(int i=0;i<2*n;i=i+2)
	{
		scanf("%d%d",&x[i],&x[i+1]);
		printf("\n");
	}
	for(i=0;i<(2*n-3);i=(i+2))
	{
		for(int j=i+2;j<(2*n-1);j=(j+2))
		{
			result=(x[i]-x[j])*(x[i]-x[j])+(x[i+1]-x[j+1])*(x[i+1]-x[j+1]);
			result=sqrt(result);
			if(result>max)
				max=result;
		}
	}
	printf("%4.4lf",max);
	for(i=0;i<2*n;i++)
		printf("%2d",x[i]);
	return 0;
}

编程题#4:简单计算器
一个最简单的计算器,支持+, -, *, / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。
输入
输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。
输出
输出只有一行,一个整数,为运算结果。然而:
1. 如果出现除数为0的情况,则输出:Divided by zero!

2. 如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!


#include<stdio.h>
int main()
{
	int a,b;
	a=b=0;
	double result=0;
	char c=0;
	printf("input:");
	scanf("%d%d%c",&a,&b,&c);
	if(c=='/')
	{
			if(b==0)
		{
			printf("Divided by zero!");
			return 0;
			}
		}
	switch(c)
	{
	case'+':printf("a+b\n");break;
	case'-':printf("a-b\n");break;
	case'*':printf("a*b\n");break;
	case'/':printf("a/b\n");break;
	default :printf("Invalid operator!");
	}

	return 0;
}
编程题#5:字符串插入
有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的'\0'。)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。
输入包括若干行,每一行为一组测试数据,格式为
str substr
输出
对于每一组测试数据,输出插入之后的字符串。
提示
这题有多组输入,请参照第二题的提示依次读入和处理每一组数据。

如果使用了字符串函数,比如strlen,请包含cstring头文件 #include <cstring>。

#include<stdio.h>
#include<string.h> 
using namespace std;  
int main()
{
	
    char str[14]={0};  
    char substr[4]={0};  
	int max=0;
	int result=0;
    printf("输入第一行:");  
    cin.getline(str,14);  
    printf("输入第二行:");  
    cin.getline(substr,4);  
	for(int i=0;i<14;i++)
		if(max<str[i])
		{
			max=str[i];
			result=i+1;
		}
	for(result=i+1;;result++)
	{
		for(int j=0;j<3;j++)
		{
			str[result]=substr[j];
		}
	}
	for(i=0;i<14;i++)
		printf("%s",str[i]);
	return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值