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

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

1. (10分) 6-4-1 一维数组中的最值求解

题目描述

编写程序:编程从键盘上输入待输入的整数个数(不多于20个整数)和整数值,求去掉最大值和最小值以后的整数的平均值。

输入描述

连续输入20个整数,用空格作为分隔

输出描述

用”max element:%d\n”的格式输出最大值
用”min element:%d\n”的格式输出最小值
如果可以计算平均值用”average is %5.2f\n”的格式输出平均值,否则输出”no solution\n”

样例输入1:

5
10 10 11 12 13

样例输出1:

max element:13
min element:10
average is 11.50

样例输入2:

3
12 12 12

样例输出2:

max element:12
min element:12
no solution
#include<stdio.h>
int maxx=0,minn=2147483647,i,n,l[114514];
double avg,ct;
int main()
{
	scanf("%d",&n);
	for (i=1;i<=n;++i)
	{
		scanf("%d",&l[i]);
		if (l[i]>maxx)maxx=l[i];
		if (l[i]<minn)minn=l[i];
	}
	for(i=1;i<=n;++i)
	{
		if ((l[i]!=maxx)&&(l[i]!=minn))
		{avg+=l[i];
		++ct;
		}
	}
	if (maxx==minn)
	printf("max element:%d\nmin element:%d\nno solution\n",maxx,minn);
	else 
	printf("max element:%d\nmin element:%d\naverage is %5.2f\n",maxx,minn,avg/ct);
	return 0;
}

2. (10分) 10-3-1 学生平均成绩计算和输出

题目描述

利用结构体数组保存不超过n个学生的信息,每个学生的信息包括:学号、姓名和成绩,其中成绩包括高数、物理和英语成绩。计算每个学生的平均分并输出。

输入描述

先输入学生数量n,在输入n个学生的信息,每个学生信息包含:学号、姓名和成绩,其中成绩包括高数、物理和英语成绩。

输出描述

每个学生的平均分,格式字符串为:”The average score of the %dth student is %d.\n”

样例输入1:

5
1001 Zhang 100 90 80
1002 Wu 93 90 98
1003 Zhu 89 88 87
1004 Hu 90 98 98
1005 Wang 90 98 97

样例输出1:

The average score of the 1th student is 90.
The average score of the 2th student is 93.
The average score of the 3th student is 88.
The average score of the 4th student is 95.
The average score of the 5th student is 95.
#include<stdio.h>

struct st
{
	int num;
	char name[20];
	int math,eng,phy;
}stu;
int i,n;
int main()
{
	scanf("%d",&n);
	for(i=1;i<=n;++i)
	{
		scanf("%d %s %d%d%d",&stu.num,stu.name,&stu.math,&stu.phy,&stu.eng);
		printf("The average score of the %dth student is %d.\n",i,(stu.eng+stu.math+stu.phy)/3);
	}
return 0;
}

3. (10分) 8-4-2 小写转大写

题目描述

编写一个程序,从键盘中读入一串字符,用函数完成:将其中的小写字母转化为大写字母,要求采用指针读取每一个字符。

输入描述

输入一串字符

输出描述

将字符中的小写字母转为大写字母,输出字符串

样例输入1:

aAieBG2*

样例输出1:

AAIEBG2*

样例输入2:

Hello,World!

样例输出2:

HELLO,WORLD!
#include<stdio.h>
char str[114514];
int i;
int main()
{
	gets(str);
	while (*(str+i)!=0)
	{
		if ((*(str+i)<='z')&&(*(str+i)>='a'))
		putchar(*(str+i)-'a'+'A');
		else putchar(*(str+i));
		++i;
	}
return 0;
}

4. (10分) 6_21循环移动

题目描述

有n个整数,现在将前面各数顺序向后移m个位置,最后m个数变成最前面m个数,并输出。(编程提示:定义函数,实现每次数组往后移动一个元素,最后一个放到数组前面,这样调用m次即实现数组后移m个数。)

输入描述

先输入数组元素个数,再输入数组元素,最后输入需要移动的元素个数

输出描述

输出移动后的数组元素cout<<a[i]<<‘ ‘; (又是C++)

样例输入1:

5
4 6 8 9 7
3

样例输出1:

8 9 7 4 6

样例输入2:

4
1 2 3 4
2

样例输出2:

3 4 1 2
#include<stdio.h>
int a[114514],n,i,m;
void yw()
{int i; 
	int l=a[n];
	for(i=n;i>1;i--)
	a[i]=a[i-1];
	a[1]=l;
	return ;
}

int main()
{
scanf("%d",&n);
for(i=1;i<=n;++i)
{
	scanf("%d",&a[i]);
	}	
	scanf("%d",&m);
	for(i=1;i<=m;++i)yw();
	printf("%d",a[1]);
	for(i=2;i<=n;++i)printf(" %d",a[i]);
return 0;
}

5. (10分) 5-4-4 求非负整数的各位数字之和

题目描述

编写程序:写一个递归函数digitSum(n),输入一个非负整数,返回组成它的数字之和。例如,调用digitSum(1729),则应该返回1+7+2+9,它的和是19。

输入描述

不要用printf打印提示语句
scanf(“%d”, &n); //要求输入一个非负整数

输出描述

输出一个正整数

样例输入1:

1729

样例输出1:

19

样例输入2:

987

样例输出2:

24

PS: 由于递归内容不做教学,此处使用字符串实现

#include<stdio.h>
char str[114514];
int i,ans;

int main()
{
gets(str);
while (*(str+i)!=0)
{if ((*(str+i)<='9')&&(*(str+i)>='0'))
	ans+=*(str+i)-'0';
	++i;
}
printf("%d",ans);
return 0;
}

6. (10分) 5-4-6 水仙花数

题目描述

编写一个判断水仙花数的函数,所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如:153=13+53+33循环,通过主函数调用该函数求100到999之间的全部水仙花数。

输入描述

输出描述

使用以下格式字符串输出每一个水仙花数:
%5d

样例输入1:

样例输出1:

153  370  371  407
#include<stdio.h>
int i;
void sxh(int x)
{
	int y=x,ans=0;
	
	while (y)
	{
		ans+=(y%10)*(y%10)*(y%10);
		y/=10;
	}
	if(!(x-ans))printf("%5d",x); 
	return ;
}
int main()
{
for(i=100;i<=999;++i)
sxh(i);
return 0;
}

发表评论

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