程序设计类课程教辅平台-2021编程题练习1
程序设计类课程教辅平台-2021编程题练习1

程序设计类课程教辅平台-2021编程题练习1


程序设计类课程教辅平台
-C语言

1. (10分) 6-4-5 计算给定的日期是该年的第几天

题目描述

算算是第几天?给定一个日期,数据格式为YYYY-MM-DD,输出这个日期是该年的第几天。

输入描述

以YYYY-MM-DD形式输入一个日期

输出描述

直接输出是当年的第几天

样例输入1:

2018-9-11

样例输出1:

254
#include<stdio.h>
//using namespace std;
int i,y,m,d,ans;
int main()
{
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d-%d-%d",&y,&m,&d);
if ((!(y%400))||((!(y%4))&&(y%100)))
month[2]++;
for(i=1;i<m;++i)
ans+=month[i];
printf("%d",ans+d);
return 0;
}

2. (10分) 8-4-3 字符串的逆置

题目描述

编程实现字符串的逆置。输出逆置后的字符串

输入描述

一个字符串

输出描述

逆置后的字符串

样例输入1:

abcdefg

样例输出1:

gfedcba
#include<stdio.h>
char ch,chr[100];
int i,ct=1;
int main()
{
	gets(chr);
	ct=strlen(chr);
	for(i=ct-1;i>=0;--i)
	printf("%c",chr[i]);
	return 0;
}

3. (10分) 8-4-1 十进制整数转换成十六进制

题目描述

编写程序,输入一个整型数,将其转换为十六进制,以字符串形式输出。(提示:可以定义char s[]=”0123456789ABCDEF”以帮助输出十六进制字符)。

输入描述

一个长整型数

输出描述

一个十六进制数

样例输入1:

175

样例输出1:

AF

样例输入2:

20160919

样例输出2:

133A197
#include<stdio.h>
char chr[100],ty[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int i,n,ct;
int main()
{
	scanf("%d",&n);
	do{
		chr[++ct]=ty[n%16];
		n/=16;
	}while (n!=0);
	for(i=ct;i>0;--i)
	printf("%c",chr[i]);
	return 0;
}

4. (10分) 6-4-3 构造指定的数列

题目描述

编写函数fun,求出a到b之内能被7或者11整除,但不能同时被7和11整除的所有正数,并将他们放在数组中,函数返回这些数的个数。编写main函数,输入a,b的值并调用函数进行运算。

输入描述

从键盘输入a,b的值(1<=a<=b<1000),用以下格式字符串输入a,b的值:
在C语言中使用:scanf(“%d%d”,&a,&b);
在Java语言中使用Scanner对象的nextInt()方法获取a,b的值。

输出描述

用以下格式字符串输出数组中的元素的值:”%d “(注意:%d后面有一个空格)

样例输入1:

1 20 <回车>

样例输出1:

7 11 14

样例输入2:

50 100 <回车>

样例输出2:

55 56 63 66 70 84 88 91 98 99
#include<stdio.h>
int res[100],ans,ct,i,a,b;
int fun(int a,int b)
{
	for(i=a;i<=b;++i)
	{
		if ((((!(i%7)))||(!(i%11)))&&(i%77))
		res[++ct]=i;
	}
}

int main()
{
	scanf("%d%d",&a,&b);
	ans=fun(a,b);
	for(i=1;i<=ct;++i)
	printf("%d ",res[i]);
	return 0;
}

5. (10分) 2-8 加密

题目描述

要将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例,字母A后面第4个字母是E,用E代替A。因此,“China”应译为“Glmre”。请编写一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为‘C’,‘h’,‘i’,‘n’,‘a’,经过运算,使c1,c2,c3,c4,c5分别变为‘G’,‘l’,‘m’,‘r’,‘e’,并输出。

输入描述

输出描述

输出语句为:cout<<c1<<c2<<c3<<c4<<c5<<endl;

这难道不是C++吗?

样例输入1:

China

样例输出1:

Glmre

C语言

#include<stdio.h>
char c1,c2,c3,c4,c5;
int main()
{
	scanf("%c%c%c%c%c",&c1,&c2,&c3,&c4,&c5);printf("%c%c%c%c%c\n",c1+4,c2+4,c3+4,c4+4,4+c5);
	return 0;
}

C++

#include<stdio.h>
char c1,c2,c3,c4,c5;
int main()
{
	scanf("%c%c%c%c%c",&c1,&c2,&c3,&c4,&c5);
	cout<<c1+4<<c2+4<<c3+4<<c4+4<<c5+4<<endl;
	return 0;
}

另外一个版本(不限长度) C

并且同时修复了超出问题

#include<stdio.h>
char str[20];
int i;
int main()
{
	gets(str);
	while (*(str+i)!=0)
	{
		putchar((*(str+i)-'a'+4)%26+'a');
		++i;
	}
	return 0;
}

有些同学的题目是“以‘#’结束”

#include<stdio.h>
char str[20];
int i;
int main()
{
	gets(str);
	while (*(str+i)!='#')
	{
		putchar((*(str+i)-'a'+4)%26+'a');
		++i;
	}
	return 0;
}

6. (10分) 3_17有规律的数列求和

题目描述

求Sn=a+aa+aaa+……+aa……aa(n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。

输入描述

依次输入整数n(个数),a(一位数)

输出描述

输出格式中要求设置Sn的精度为20(PS:实测精度要求请忽视)

样例输入1:

5 2

样例输出1:

n=5,a=2,Sn=24690

样例输入2:

11 9

样例输出2:

n=11,a=9,Sn=111111111099
#include<stdio.h>
long long a,n,ans,re; 
int i;
int main()
{
	scanf("%lld%lld",&n,&a);
	for(i=1;i<=n;++i)
	{
		re*=10;
		re+=a;
		ans+=re;
	}
	printf("n=%lld,a=%lld,Sn=%lld",n,a,ans);
	return 0;
}

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注