#02数据结构练习二

参考答案看底部

1.分段函数3
题目描述
有一分段函数,y=f(x)。当x小于6时,y=x-12;当x大于等于6且小于15时,y=3x-1;当x大于等于15时,y=5x+9。从键盘上输入一个整数x,输出对应的y值。
输入描述
0
输出描述
-12
样例输入
0
样例输出
-12

2. 出租车计费
题目描述
根据某城市普通出租车收费标准编写程序对车费进行计算。具体标准如下:起步里程为3km,起步费10元;10km以内超过起步里程部分,每千米2元,超过10km以上的部分,每千米3元。
输入描述
行驶里程数(单位千米)。
输出描述
乘客应支付的车费(单位元),结果四舍五入,保留到元。
样例输入
12.5
样例输出
32 
3. 判断输入的字符的类型
题目描述
我们将字符分为五类:大写字母、小写字母、数字、控制字符、其他字符。
编写程序,从键盘输入一个字符,输出字符所属的类型:大写字母时输出capital letters, 小写字母时输出small letters,数字是输出figures,其他字符时输出 others。
输入描述
从键盘输入一个字符
输出描述
输出字符所属的类型
样例输入
A
样例输出
capital letters 
4. 【循环】马戏团观众人数
题目描述
一个马戏团表演, n 个座位全满,全部门票收入是 120 元,现在知道,男人每人 5 元,女人每人 2 元,小孩每人 1 角。根据总人数,计算出男人、女人和小孩各多少人。
输入描述
总人数 n
输出描述
男人、女人和小孩人数,若 n 人无法满足条件,则输出“No output\n”
样例输入
60
样例输出
0 60 0
19 11 30 
5. 【循环】计算:t=1-1/(22)-1/(33)-…-1/(mm)
题目描述
计算:t=1-1/(2
2)-1/(33)-…-1/(mm)
输入描述
整型变量m
输出描述
t(保留六位小数)
样例输入
10
样例输出
0.450232 
6. 【循环】计算一个整数N的阶乘
题目描述
计算一个整数N的阶乘
输入描述
一个整数N, (0〈=N〈=12)
输出描述
整数N的阶乘.
样例输入
5
样例输出
120

7. 素数问题
题目描述
编写一个程序判断一个数是否为素数
输入描述
整数
输出描述
1或0(其中1表示此数为素数,0为表示为不是素数)
样例输入
5
样例输出
1 
8. 【数组】输出最大值及其下标
题目描述
在数组中输入10个数据,输出最大值及其下标。
输入描述
输入10个整型数据。
输出描述
输出最大值,及其对应的数组元素下标。
样例输入
1 3 5 9 6 4 2 0 8 7
样例输出
9 3 
9. 顺着念,花丛飞,倒着念,比糖甜
题目描述
基础科学学院元旦晚会,游戏环节是大家最喜爱的部分,既能全民参与又有奖品可拿。这次的游戏是将一行英文内容颠倒过来,并快速说出。假设我们把这行英文放到str数组中,逆序存放后仍然存到str中,str的长度不超过100个字符。
输入描述
输入包括一行。 第一行输入的字符串(含空格)。
输出描述
输出转换好的逆序字符串。
样例输入
I am a student!
样例输出
!tneduts a ma I

10. 【数组】排序
题目描述
下了飞机终于到家了,老王很高兴啊!毕竟解决了一道题,好像是你解决的,他高兴什么。。。←_←,对啊!你解决的!所以老王想请你吃饭,他带你去了一个神奇的地方:一家神奇的面包店!这家店的面包很独特!每个面包的大小都不一样!老王买了一些面包,但是啊,老王有强迫症!!!想吃的话,必须要摆整齐吃才行,怎么摆呢?最简单的一种是按照面包的大小从小到大排出来,╮(╯▽╰)╭说到这里,可能你不想吃了,老王请的你敢不吃!所以排吧!(哈哈!!!)
输入描述
输入两行
第一行一个正整数,表示一共有n个数字
第二行有n个整数a[i],每个数字用一个空格隔开
输出描述
输出一行,排序后的数组,数字之间用空格隔开,最后一位没有空格
样例输入
3
2 1 3
样例输出
1 2 3
提示
1<=n<=1,000
-10,000<=a[i]<=10,000

参考答案

  1. 分段函数3
#include<stdio.h>
int main()
{
	int x,y;
	scanf("%d",&x);
	if(x<6){
		y=x-12;
	}else if(x<15){
		y=3*x-1;
	}else{
		y=5*x+9;
	}
	printf("%d",y);
	return 0;
}
  1. 出租车计费
#include<stdio.h>
int main(){
   double l,q,q1,q2;
   scanf("%lf",&l);
   if(l<3){
   	q=10;
   }else if(l<10){
   	q=10+(l-3)*2;
   }else{
   	q=24+(l-10)*3;
   }
   printf("%.f",q);
   return 0;
}
  1. 判断输入的字符的类型
#include<stdio.h>
int main(){
   char c;
   scanf("%c",&c);
   if(c>='0'&&c<='9'){
   	printf("figures");
   }else if(c>='A'&&c<='Z'){
   	printf("capital letters");	
   }else if(c>='a'&&c<='z'){
   	printf("small letters");
   }else{
   	printf("others");
   }
   return 0;
}
  1. 【循环】马戏团观众人数
#include<stdio.h> 
int main(){
   int m,w,c,n;
   int a=1;
   scanf("%d",&n);
   for(m=0;m<=n;m++){
   	for(w=0;w<=n;w++){
   		for(c=0;c<=n;c++){
   			if(m+w+c==n&&5*m+2*w+0.1*c==120){
   				printf("%d %d %d\n",m,w,c);
   				a=0;
   			}
   		}
   	}
   }
   if(a){
   	printf("No output\n");
   }
   return 0;
}
  1. 【循环】计算:t=1-1/(22)-1/(33)-…-1/(m*m)
#include<stdio.h>
int main(){
   int m,i;
   double t=1;
   scanf("%d",&m);
   if(m==0)
   	t=0;
   	for(i=2;i<=m;i++){
   		t-=1.0/(i*i);
   	}
   	printf("%lf",t);
   return 0;
}
  1. 【循环】计算一个整数N的阶乘
#include<stdio.h>
int main(){
   int N,i=1;
   scanf("%d",&N);
   if(N>=0&&N<=12){
   	for(N;N>0;N--){
   	i*=N; 
   }
   printf("%d",i);
   } 
   return 0;
}
  1. 素数问题
#include <iostream>
using namespace std;
int sushu(int n)
{
    int i;
    for(i=2;i<n;i++)
        if(n%i==0) return 0;
    return 1;
}int main()
{
    int m;
    cin>>m;
    if(sushu(m)==1)
        cout<<"1"<<endl;
    else cout<<"0"<<endl;
    return 0;
}
  1. 【数组】输出最大值及其下标
#include<stdio.h>
int main(){
   int a[10];
   int max=0,h,i;
   for(i=0;i<10;i++){
   scanf("%d",&a[i]);
   } 
   for(i=0;i<10;i++){
   	if(max<a[i]){
   		max=a[i];
   		h=i;
   	}
   }
   printf("%d %d",max,h);
   return 0;
}
  1. 顺着念,花丛飞,倒着念,比糖甜
#include<stdio.h>
#include<string.h>
int main(){
   char str[100],num;
   int i,j;
   gets(str);
   j=strlen(str);
   for(i=0;i<j/2;i++){
   	num=str[i];
   	str[i]=str[j-1-i];
   	str[j-1-i]=num;
   }
   printf("%s",str);
   return 0;
}
  1. 【数组】排序
#include <stdio.h>
int main(){
	int i,j,n,m,num;
	scanf("%d",&n);
	int a[n];
	for(i=0;i<n;i++){
		scanf("%d",&m);
		a[i]=m;
	}
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			if(a[i]<a[j]){
				num=a[i];
				a[i]=a[j];
				a[j]=num;
			}
		}
		
	}
	for(i=0;i<n;i++){
		printf("%d ",a[i]);
	}
   	return 0;
}
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挖洞的杰瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值