文章目录

  • 101、整数的分类处理 (20 分)
  • 102、统计工龄 (20 分)
  • 103、7-10 数组循环左移 (20 分)
  • 104、求链式线性表的倒数第K项 (20 分)
  • 105、方阵循环右移 (20 分)
  • 106、组个最小数 (20 分)
  • 107、猴子吃桃问题 (15 分)
  • 108、字符串字母大小写转换 (15 分)
  • 109、计算分段函数[3] (10 分)
  • 110、查找整数 (10 分)
  • 111、旅游规划 (25 分)
  • 112、黑洞数 (20 分)
  • 113、龟兔赛跑 (20 分)
  • 114、螺旋方阵 (20 分)
  • 115、删除字符串中的子串 (20 分)
  • 116、 A-B (20 分)
  • 117、猜数字 (20 分)
  • 118、40059 四则运算 (15 分)
  • 119、宿舍谁最高? (20 分)
  • 120、阶梯电价 (15 分)

创作不易,有用请点个赞,感谢各位!

101、整数的分类处理 (20 分)

给定 N 个正整数,要求你从中得到下列三种计算结果:

A1 = 能被 3 整除的最大整数
A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数
A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)
输入格式:
输入首先在第一行给出一个正整数 N,随后一行给出 N 个正整数。所有数字都不超过 100,同行数字以空格分隔。

输出格式:
在一行中顺序输出 A1、A2、A3的值,其间以 1 个空格分隔。如果某个数字不存在,则对应输出NONE。

输入样例 1:
8
5 8 7 6 9 1 3 10
输出样例 1:
9 3 6.5
输入样例 2:
8
15 18 7 6 9 1 3 10
输出样例 2:
18 3 NONE

7-7 整数的分类处理 (20 分)

#include<stdio.h>
int main()
{int n,a2=0,a3=0,i,x,max=0,sum=0;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&x);if(x%3==0&&x>max)    //得到A1数max=x;  if((x-1)%3==0)        //成立的个数==A2a2++;if((x-2)%3==0)        //成立的整数和/成立的个数==A3{   a3++; sum+=x;   }}if(max==0)  printf("NONE ");  //按照题目说的a1,a2,a3中某个值不在就输出HONEelse       printf("%d ",max);if(a2==0) printf("HONE ");else      printf("%d ",a2);if(sum==0) printf("HONE");else       printf("%.1f",sum*1.0/a3);return 0;
}

102、统计工龄 (20 分)

给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。

输入格式:
输入首先给出正整数N(≤10
​5
​​ ),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0, 50]。

输出格式:
按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。每项占一行。如果人数为0则不输出该项。

输入样例:
8
10 2 0 5 7 2 5 2
输出样例:
0:1
2:3
5:2
7:1
10:1
7-8 统计工龄 (20 分)

#include<stdio.h>
int main()
{int i,n,a,b[52]={0};scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a);b[a]++;}for(i=0;i<52;i++)if(b[i]!=0)printf("%d:%d\n",i,b[i]);return 0;
}

103、7-10 数组循环左移 (20 分)

本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a
​0
​​ a
​1
​​ ⋯a
​n−1
​​ )变换为(a
​m
​​ ⋯a
​n−1
​​ a
​0
​​ a
​1
​​ ⋯a
​m−1
​​ )(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:
输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整数,其间以空格分隔。

输出格式:
在一行中输出循环左移m位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:
8 3
1 2 3 4 5 6 7 8
输出样例:
4 5 6 7 8 1 2 3

7-10 数组循环左移 (20 分)

#include<stdio.h>
int main(void){int a[101];int n,m,i;while(scanf("%d%d",&n,&m)!=EOF){for( i=0;i < n;i++)scanf("%d",&a[i]);for( i =m;i<n+m;i++){if( i >=n)printf("%d",a[ i%n]);else printf("%d",a[i]);if( i == n+m -1)printf("\n");else printf(" ");    }}return 0;
}

104、求链式线性表的倒数第K项 (20 分)

给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。

输入格式:
输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。

输出格式:
输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。

输入样例:
4 1 2 3 4 5 6 7 8 9 0 -1
输出样例:
7

7-11 求链式线性表的倒数第K项 (20 分)

#include<stdio.h>
#include<string.h>
#define maxn 0x7fffffff
int a[maxn];
int main()
{int k;scanf("%d",&k);int count=0,x;while(1){scanf("%d",&x);if(x<0)break;else {a[count]=x;count++; } }if(count-k<0)printf("NULL\n");elseprintf("%d\n",a[count-k]); return 0;
}

105、方阵循环右移 (20 分)

本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m+1、⋯、n−1、0、1、⋯、n−m−1列。

输入格式:
输入第一行给出两个正整数m和n(1≤n≤6)。接下来一共n行,每行n个整数,表示一个n阶的方阵。

输出格式:
按照输入格式输出移动后的方阵:即输出n行,每行n个整数,每个整数后输出一个空格。

输入样例:
2 3
1 2 3
4 5 6
7 8 9
输出样例:
2 3 1
5 6 4
8 9 7

7-12 方阵循环右移 (20 分)

#include <stdio.h>
//时间:2018年4月23日20:08:02
//思路:通过思考发现,循环输出主要是数组下标的控制问题,只要能够控制列的下标就可实现
//      循环的打印出循环右移后的二维数组,正是因为循环右移,所以需要将数值m控制在0至n-1中。
int main()
{int a[10][10];int i, j, n, m;scanf("%d%d",&m,&n);for (i = 0; i<n; i++){for (j = 0; j<n; j++){scanf("%d", &a[i][j]);}}m %= n; //使得m的取值为小于n的值,钳制在0至n-1中,便于下面下标的控制。for (i = 0; i<n; i++){for (j = 0; j<n; j++){printf("%d ", a[i][(n - m + j) % n]); //循环输出下标的控制 a[i][(n-m+j) % n]}printf("\n");}return 0;
}

106、组个最小数 (20 分)

给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。

现给定数字,请编写程序输出能够组成的最小的数。

输入格式:
输入在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。

输出格式:
在一行中输出能够组成的最小的数。

输入样例:
2 2 0 0 0 3 0 0 1 0
输出样例:
10015558

7-3 组个最小数 (20 分)

#include<stdio.h>
int main(int argc, char const *argv[])
{int i,j;int x[9];for(i=0;i<10;i++)scanf("%d",&x[i]);for(i=1;i<10;i++)if(x[i]){   printf("%d",i);  x[i]--;  break;  }for(i=0;i<10;i++)while(x[i]){    printf("%d",i);   x[i]--;     }return 0;
}

107、猴子吃桃问题 (15 分)

一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?

输入格式:
输入在一行中给出正整数N(1<N≤10)。

输出格式:
在一行中输出第一天共摘了多少个桃子。

输入样例:
3
输出样例:
10

7-1 猴子吃桃问题 (15 分)

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{int i,j;int n;int sum=2;scanf("%d",&n);for(i=1;i<n;i++){if(i==n-1)sum*=2;elsesum=sum*2+1;}printf("%d\n",sum);return 0;
}

108、字符串字母大小写转换 (15 分)

本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。

输入格式:
输入为一个以“#”结束的字符串(不超过30个字符)。

输出格式:
在一行中输出大小写转换后的结果字符串。

输入样例:
Hello World! 123#
输出样例:
hELLO wORLD! 123

7-2 字符串字母大小写转换 (15 分)

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{int i,j;char a[10010];gets(a);int k = strlen(a);a[k-1] = '\0';for(i=0;a[i]!='\0';i++){if(((a[i]>='a'&&a[i]<='z') || (a[i]>='A'&&a[i]<='Z')) ==0)continue;else if(a[i]>='a'&&a[i]<='z')a[i]-=32;elsea[i]+=32;}puts(a);return 0;
}

109、计算分段函数[3] (10 分)

本题目要求计算下列分段函数f(x)的值:

输入格式:
输入在一行中给出实数x。

输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。

输入样例1:
10
输出样例1:
f(10.0) = 0.1
输入样例2:
234
输出样例2:
f(234.0) = 234.0

7-5 计算分段函数[3] (10 分)

#include<string.h>
#include<stdlib.h>
int main()
{float x;float result=0;scanf("%f",&x);if(x!=10)result = x;elseresult = 1/x;printf("f(%.1f) = %.1f\n",x,result);return 0;
}

110、查找整数 (10 分)

本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。

输入格式:
输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。

输出格式:
在一行中输出X的位置,或者“Not Found”。

输入样例1:
5 7
3 5 7 1 9
输出样例1:
2
输入样例2:
5 7
3 5 8 1 9
输出样例2:
Not Found

7-6 查找整数 (10 分)

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int main()
{int n,x,i;int c[10010];scanf("%d%d",&n,&x);for(i=0;i<n;i++){scanf("%d",&c[i]);if(c[i]==x)break;}if(i==n)printf("Not Found\n");elseprintf("%d\n",i);return 0;
}

111、旅游规划 (25 分)

有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。

输入格式:
输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额,中间用空格分开,数字均为整数且不超过500。输入保证解的存在。

输出格式:
在一行里输出路径的长度和收费总额,数字间以空格分隔,输出结尾不能有多余空格。

输入样例:
4 5 0 3
0 1 1 20
1 3 2 30
0 3 4 10
0 2 2 20
2 3 1 20
输出样例:
3 40

7-7 旅游规划 (25 分)

这是一次比赛出现的提醒,正确答案我就不放了,这是我当时写的17分代码,让你们看看大概思路,如果这道题想要的满分,要对迪…啥的那个算法才可以!

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main()
{int cheng1[5010];  //城市1int cheng2[5010];  //城市2int chang[5010];       //高速公路长度int money[5010];        //收费总额int i,j;int N;    //城市编号int M;    //高速公路条数int S;  //出发地的城市编号int D;    //目的地的城市编号int MIN=0;   //最短路径int result=0;    //收费额int shangMIN=0;int shangResult=0;int index;scanf("%d%d%d%d",&N,&M,&S,&D);for(i=0;i<M;i++)//输入每一条高速公路的信息scanf("%d%d%d%d",&cheng1[i],&cheng2[i],&chang[i],&money[i]);for(i=0;i<M;){if((cheng1[i]==0)&&(cheng2[i]==N-1)){ result=money[i];   MIN=chang[i];index=1;}else{MIN=chang[i]+chang[i+1];result=money[i]+money[i+1];index=2;}if(i==0){shangMIN = MIN;shangResult=result;}else{if(MIN==shangMIN && result<shangResult){shangMIN=MIN;shangResult=result;}}if(index==1)i++;else if(index==2)i=i+2;}printf("%d %d\n",shangMIN,shangResult);return 0;
}

112、黑洞数 (20 分)

黑洞数也称为陷阱数,又称“Kaprekar问题”,是一类具有奇特转换特性的数。

任何一个各位数字不全相同的三位数,经有限次“重排求差”操作,总会得到495。最后所得的495即为三位黑洞数。所谓“重排求差”操作即组成该数的数字重排后的最大数减去重排后的最小数。(6174为四位黑洞数。)

例如,对三位数207:

第1次重排求差得:720 - 27 = 693;
第2次重排求差得:963 - 369 = 594;
第3次重排求差得:954 - 459 = 495;
以后会停留在495这一黑洞数。如果三位数的3个数字全相同,一次转换后即为0。

任意输入一个三位数,编程给出重排求差的过程。

输入格式:
输入在一行中给出一个三位数。

输出格式:
按照以下格式输出重排求差的过程:

序号: 数字重排后的最大数 - 重排后的最小数 = 差值
序号从1开始,直到495出现在等号右边为止。

输入样例:
123
输出样例:
1: 321 - 123 = 198
2: 981 - 189 = 792
3: 972 - 279 = 693
4: 963 - 369 = 594
5: 954 - 459 = 495

7-8 黑洞数 (20 分)

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int number[6] = {0};
int MAX,MIN;
int sum=0;
int swap2(int x,int y)
{if(x<y)return x;elsereturn y;
}
int swap(int x,int y)
{if(x>y)return x;elsereturn y;
}
int main()
{int n;int ci=1;int i=0,j;int index;int ge,shi,bai;int result;scanf("%d",&n);index = n;while(1){ge=index%10;shi=index/10%10;bai=index/100;number[0] = ge + shi*100 + bai*10;number[1] = shi + ge*10 + bai*100;number[2] = shi + ge*100 + bai*10;number[3] = bai + shi*10 + ge*100;number[4] = bai + shi*100 + ge*10;number[5] = index;MAX=number[0];MIN=number[0];for(i=1;i<6;i++)MAX = swap(number[i],MAX);for(i=1;i<6;i++)MIN = swap2(number[i],MIN);sum = MAX-MIN;printf("%d: %d - %d = %d\n",ci,MAX,MIN,sum);ci++;index = sum;if(sum==495)break;}return 0;
}

113、龟兔赛跑 (20 分)

乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?

输入格式:
输入在一行中给出比赛时间T(分钟)。

输出格式:
在一行中输出比赛的结果:乌龟赢输出@@,兔子赢输出_,平局则输出--;后跟1空格,再输出胜利者跑完的距离。

输入样例:
242
输出样例:
@_@ 726

7-9 龟兔赛跑 (20 分)

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int main()
{int fen;int i,j;int gui=0,tu=0;int index=0; //标记兔子休息时间int swap=1;      //决定兔子是否还继续跑scanf("%d",&fen);for(i=1;i<=fen;i++){if(index==30){  index=0;   swap=1;    }if(swap!=-1){gui+=3;tu+=9;}else{gui+=3;index++;}if(i%10==0){if(tu>gui)swap=-1;}     }if(gui>tu)printf("@_@ %d\n",gui);else if(gui==tu)printf("-_- %d\n",gui);elseprintf("^_^ %d\n",tu);//printf("gui = %d,tu = %d\n",gui,tu);return 0;
}

114、螺旋方阵 (20 分)

所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。

输入格式:
输入在一行中给出一个正整数N(<10)。

输出格式:
输出N×N的螺旋方阵。每行N个数字,每个数字占3位。

输入样例:
5
输出样例:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

7-4 螺旋方阵 (20 分)

#include<stdio.h>
int main()
{int n;int h=0,l=0;int result=1;int t;int a[100][100]={0};scanf("%d",&n);a[h][l]=1;while(n*n!=result){for(t=result;;)      //横{if((l+1<n && !a[h][l+1])!=true)break;a[h][++l] = ++result;}for(t=result;;)      //竖{if((h+1<n && !a[h+1][l])!=true)break;a[++h][l] = ++result;}  for(t=result;;)        //横{if((l-1>=0 && !a[h][l-1])!=true)break;a[h][--l] = ++result;}for(t=result;;)        //竖{if((h-1>=0 && !a[h-1][l])!=true)break;a[--h][l] = ++result;}}for(h=0;h<n;h++){for(l=0;l<n;l++)printf("%3d",a[h][l]);printf("\n");}return 0;
}

115、删除字符串中的子串 (20 分)

输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。

输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。

输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。

输入样例:
Tomcat is a male ccatat
cat
输出样例:
Tom is a male

7-5 删除字符串中的子串 (20 分)

#include<stdio.h>
#include<string.h>
char a[85],b[85],l,m;
void dete1(char *p,char *q){p=strstr(p,q);while(*(p+l)!='\0'){*p=*(p+l);*p++;}*p=*(p+l);return ;
}
int main(){int i,j,k;gets(a);gets(b);l=strlen(b);while(strstr(a,b)!=NULL){m=strlen(a);dete1(a,b); }printf("%s\n",a);return 0;
}

116、 A-B (20 分)

本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。

输入格式:
输入在2行中先后给出字符串A和B。两字符串的长度都不超过10
​4
​​ ,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。

输出格式:
在一行中打印出A−B的结果字符串。

输入样例:
I love GPLT! It’s a fun game!
aeiou
输出样例:
I lv GPLT! It’s fn gm!

#include<stdio.h>
#include<string.h>
int main()
{int i=0,j=0;         //用于循环和数组下标char str1[10010];        //用来存储A、B两个字符串char str2[10010];     //用来存储要删除的字符串字母int length;              //用来存储字符串长度gets(str1);gets(str2);length = strlen(str2);    //这里只需要记住str2字符串的长度即可while(str1[i]!='\0')    //将str1字符串从第一个字母开始带进去一一查验{for(j=0;j<length;j++)//将这个字母放到str2中一一查询是否有对应的,若有对应的{                 //那么for循环就会提前跳出,并且j的值不可能会等于length,if(str1[i]==str2[j])//记住关键词,提前!所以从这里就可以肯定若for循环执行break;         //到了最后,那么证明这个字母在str2中是找不到对应的,}                        //那么自然需要显示啦!if(j==length)printf("%c",str1[i]);i++;}printf("\n");return 0;
}

117、猜数字 (20 分)

一群人坐在一起,每人猜一个 100 以内的数,谁的数字最接近大家平均数的一半就赢。本题就要求你找出其中的赢家。

输入格式:
输入在第一行给出一个正整数N(≤10
​4
​​ )。随后 N 行,每行给出一个玩家的名字(由不超过8个英文字母组成的字符串)和其猜的正整数(≤ 100)。

输出格式:
在一行中顺序输出:大家平均数的一半(只输出整数部分)、赢家的名字,其间以空格分隔。题目保证赢家是唯一的。

输入样例:
7
Bob 35
Amy 28
James 98
Alice 11
Jack 45
Smith 33
Chris 62
输出样例:
22 Amy

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct E{char name[11];
int num;
}a[10001];
int main(){int n,sum=0;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%s%d",a[i].name,&a[i].num);sum+=a[i].num;}int avg=(sum/n)/2,minm=11111,tag;for(int i=0;i<n;i++){if(abs(avg-a[i].num)<minm){minm=abs(avg-a[i].num);tag=i;}}printf("%d %s\n",avg,a[tag].name);return 0;
}

118、40059 四则运算 (15 分)

编写一个不考虑优先级的,能够进行加、减、乘、除四则运算的袖珍计算器。

输入格式:
如:键盘输入 10.83+0.10/10= 。

输出格式:
程序计算后输出结果1.093000(运算式子以‘=’结尾)。

输入样例:
34.5-2.4*3.1/11=
输出样例:
9.722727

#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{int i,j;double num1,num2;char c;scanf("%lf",&num1);for(i=0;;i++){scanf("%c",&c);if(c=='=')break;scanf("%lf",&num2);if(c=='-')num1-=num2;else if(c=='+')num1+=num2;else if(c=='*')num1*=num2;else if(c=='/'){//          if(num2==0)
//              num1=0;
//          elsenum1/=num2;}}printf("%lf\n",num1);return 0;
}

119、宿舍谁最高? (20 分)

学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。

输入格式:
首先输入一个整型数n (1<=n<=1000000),表示n位同学。
紧跟着n行输入,每一行格式为:宿舍号,name,height,weight。
宿舍号的区间为[0,999999], name 由字母组成,长度小于16,height,weight为正整数。

输出格式:
按宿舍号从小到大排序,输出每间宿舍身高最高的同学信息。题目保证每间宿舍只有一位身高最高的同学。

输入样例:
7
000000 Tom 175 120
000001 Jack 180 130
000001 Hale 160 140
000000 Marry 160 120
000000 Jerry 165 110
000003 ETAF 183 145
000001 Mickey 170 115
输出样例:
000000 Tom 175 120
000001 Jack 180 130
000003 ETAF 183 145

#include<math.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Student{int number;char name[18];int height;int weight;
}stu[10010]={0};
int main()
{int n;int i;char temp1[20];int index[100],k=0;int temp2;int number_new;char name_new[18];int height_new;int weight_new;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d%s%d%d",&number_new,&name_new,&height_new,&weight_new);index[k++]=number_new;if(stu[number_new].height == 0)       //利用序号找身高是否有存过值{stu[number_new].number=number_new;strcpy(stu[number_new].name,name_new);stu[number_new].height=height_new;stu[number_new].weight=weight_new;}else{if(height_new>stu[number_new].height){stu[number_new].number=number_new;strcpy(stu[number_new].name,name_new);stu[number_new].height=height_new;stu[number_new].weight=weight_new;}}}//printf("\n");for(i=0;i<k;i++){if(stu[index[i]].number!=-1){printf("%06d %s %d %d\n",stu[index[i]].number,stu[index[i]].name,stu[index[i]].height,stu[index[i]].weight);stu[index[i]].number=-1;}}//printf("%06d %s %d %d\n",stu[0].number,stu[0].name,stu[0].height,stu[0].weight);return 0;
}

120、阶梯电价 (15 分)

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。

输入格式:
输入在一行中给出某用户的月用电量(单位:千瓦时)。

输出格式:
在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:“cost = 应付电费值”;若用电量小于0,则输出"Invalid Value!"。

输入样例1:
10
输出样例1:
cost = 5.30
输入样例2:
100
输出样例2:
cost = 55.50

#include<stdio.h>
int main()
{double n;scanf("%lf",&n);if(n<0)printf("Invalid Value!\n");else if(n<=50)printf("cost = %.2lf\n",n*0.53);else if(n>50)printf("cost = %.2lf\n",(50*0.53+(n-50)*0.05));return 0;
}

创作不易,有用请点个赞,感谢各位!

PTA 程序设计天梯赛(101~120题)相关推荐

  1. PTA 程序设计天梯赛(41~60题)

    文章目录 41.整除光棍 (20 分) 42. 装睡 (10 分) 43.矩阵A乘以B (15 分) 44. 倒数第N个字符串 (15 分) 45.打折 (5 分) 46. 2018我们要赢 (5 分 ...

  2. PTA 程序设计天梯赛【day2】

    L1 - 019 谁先倒下 划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家 ...

  3. PTA程序设计天梯赛 L2题解报告(40/40)

    目录 L2-001 紧急救援 (25 分) L2-002 链表去重 (25 分) L2-003 月饼 (25 分) L2-004 这是二叉搜索树吗? L2-005 集合相似度 (25 分) L2-00 ...

  4. 团体程序设计天梯赛 L1-014 简单题

    L1-014 简单题(5 分) 这次真的没骗你 -- 这道超级简单的题目没有任何输入. 你只需要在一行中输出事实:This is a simple problem. 就可以了. 输入样例: 无 输出样 ...

  5. 团体程序设计天梯赛--个人总结

    这是本人对于打代码的一个总结. 团体程序设计天梯赛--5分题_星河欲转.的博客-CSDN博客 团体程序设计天梯赛--10分题_星河欲转.的博客-CSDN博客 团体程序设计天梯赛--15分题_星河欲转. ...

  6. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  7. PTA|团体程序设计天梯赛-练习题库集

    文章目录 关于爬取脚本的编写 L1-001 Hello World! (5 分) L1-002 打印沙漏 (15 分) L1-003 个位数统计 (15 分) L1-004 计算摄氏温度 (5 分) ...

  8. PTA团体程序设计天梯赛-练习集(3)

    PTA团体程序设计天梯赛-练习集 L1-001 Hello World (5 分) 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句"Hello World!"就可以 ...

  9. PTA团体程序设计天梯赛(L1-031~L1-040)

    PTA团体程序设计天梯赛[L1-031~L1-040] L1-031 到底是不是太胖了 (10 分) L1-032 Left-pad (20 分) L1-033 出生年 (15 分) L1-034 点 ...

  10. PTA团体程序设计天梯赛篇(五)---- 难题篇一(30分题目)

    PTA团体程序设计天梯赛 数据结构类型 L3-002 特殊堆栈(树状数组) L3-003 社交集群(并查集) 搜索 L3-004 肿瘤诊断(三维bfs) 确保bfs只遍历一次的方法 图论 L3-005 ...

最新文章

  1. 再谈浏览器兼容性测试
  2. 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素...
  3. VS2010开发ribbon风格的程序
  4. python输出数字和字符串_(一)1-5Python数字和字符串
  5. cocos2d-x 调用java_cocos2d-x中通过Jni实现Java与C++的互相调用
  6. 给大家讲一个被社区团购小程序套路的经历吧
  7. 审阅“史上”最烂的代码
  8. 考研必备数学公式大全(数学二)(高等数学篇)
  9. matlab pi调节器,pi调节器的输入和输出_pi调节器的传递函数
  10. 数据挖掘研究的机遇及挑战 洪胜宏
  11. 树莓派Win10镜像下载安装教程及使用初体验
  12. 【跨境电商】5款Shopify应用,辅助你的在线商店运营
  13. Android animation呼吸动画 心形动画
  14. Hfut | 集电竞赛指南
  15. gost搭建正向代理及配置
  16. Python之base64加密解密
  17. 常用CMOS模拟开关功能和原理(4066,4051-53)
  18. 【第12题】一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数
  19. MAC解压缩zip文件
  20. NFT——加密数字资产的基石

热门文章

  1. C#反射调用类的私有方法
  2. synchronized锁机制 之 代码块锁(转)
  3. Linux的文件的打包(tar方法)
  4. 黑板课爬虫闯关之关卡二
  5. css字体及css文本控制
  6. 《神经网络和深度学习》系列文章七:实现我们的神经网络来分类数字(下)...
  7. 32位的PLSQL登录64位的ORA11g有关问题
  8. (转)apple-touch-icon-precomposed 和 apple-touch-icon属性区别
  9. blender 用户界面基本构成
  10. 好的技术不一定能给你带来财富,但是好的工具一定可以让你创造财富