1
给定一个区间,输出其中前半部分数字之和等于后半部分数字之和的数,没有则输出No output。(15分)
题目内容:
给定一个区间,输出其中前半部分数字之和等于后半部分数字之和的数,没有则输出No output。
输入样例:120[空格]130[回车]
输出样例:121[回车]
输入样例:500[空格]500[回车]
输出样例:No output[回车]
时间限制:500ms内存限制:32000kb
#include <stdio.h> int divide(int i,int *num) { int j = 0; while(i) { num[j] = i%10; i = i/10; j ++; } return j; } int sum_equal(int *num,int len) { int i,sum,sum1; sum = sum1 = 0; for(i=0;i<len/2;i++) { sum += num[i]; sum1 += num[len-i-1]; } if(sum == sum1) return 1; else return 0; } int main() { int a,b,len,num[12],flag; scanf("%d%d",&a,&b); flag = 0; for(int i=a;i<=b;i++) { len = divide(i,num); if(sum_equal(num,len)) { flag = 1; printf("%d\n",i); } else{ if(i == b && !flag) puts("No output"); } } return 0; }
2
输入数字和大写字母,输出由字母组成的菱形。(15分)
题目内容:
输入数字和大写字母,输出由字母组成的菱形。
输入样例:
3[空格]B[回车]
输出样例:
[空格][空格]B[回车]
[空格]C[空格]C[回车]
D[空格][空格][空格]D[回车]
[空格]E[空格]E[回车]
[空格][空格]F[回车]
时间限制:500ms内存限制:32000kb
#include <stdio.h> int main() { int num,index; char c; scanf("%d%c",&num,&c); scanf("%c",&c); index = 0; // printf("%c\n",'c'+1); //分开打印上半部分和下半部分 for(int i=1;i<=num;i++) { for(int j=num-i;j>0;j--) printf(" "); printf("%c",c+index); for(int k=2*i-3;k>0;k--) printf(" "); if(i != 1) printf("%c",c+index); puts(""); index ++; } index = num; for(int t=num-1;t>=1;t--) { for(int j=num-t;j>0;j--) printf(" "); printf("%c",c+index); for(int k=2*t-3;k>0;k--) printf(" "); if(t != 1) printf("%c",c+index); puts(""); index ++; } return 0; }
第一组用例居然没有通过,不可思议!!!
3
输入学生的个数,然后输入姓名及三科成绩列表,输出按平均成绩从高到低排序的成绩单(10分)
题目内容:
输入学生的个数,然后输入姓名及三科成绩列表,输出按平均成绩从高到低排序的成绩单。
#include <stdio.h> #include <string.h> typedef struct STU{ char name[10]; int score[3]; float avg; }stu; void SortByAvg(stu *s,int n) { char t_name[10]; for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) if(s[j].avg > s[i].avg) { strcpy(t_name,s[j].name); strcpy(s[j].name,s[i].name); strcpy(s[i].name,t_name); for(int k=0;k<3;k++) s[i].score[k] = s[j].score[k] + s[i].score[k] -(s[j].score[k] = s[i].score[k]); } } int main() { stu s[50]; int n; scanf("%d",&n); for(int i=0;i<n;i++) { getchar(); scanf("%s%d%d%d",s[i].name,&(s[i].score[0]),&(s[i].score[1]),&(s[i].score[2])); s[i].avg = 1.0*(s[i].score[0]+s[i].score[1]+s[i].score[2])/3; } SortByAvg(s,n); for(int t=0;t<n;t++) { printf("%s %d %d %d\n",s[t].name,s[t].score[0],s[t].score[1],s[t].score[2]); } return 0; }