考研C语言进阶题库——更新51-60题

目录

51.银行系中有很多恒星,H 君晚上无聊,便爬上房顶数星星,H 君将整个银河系看做一个平面,左上角为原点(坐标为(1, 1))。现在有 n 颗星星,他给每颗星星都标上坐标(xi,yi)表示这颗星星在第 x 行,第 y 列。现在, H 君想问你 m 个问题,给你两个点的坐标(x1,y1)(x2,y2),表示一个矩形的左上角的点坐标和右下角的点坐标。请问在这个矩形内有多少颗星星(边界上的点也算是矩形内)

52.输入正整数n在屏幕上打印出所有小于n不含n的正偶数格式见样例

53.任意输入一段字符串,请编写一个函数,用来删除字符串中的所有空格,并输出新的字符串

54.某比赛的成绩是依次出现的,而每个选手的成绩依次公布的时候,榜单都会刷新一遍,就能看到该选手在当前榜单加入时所带的名次,下面给出了榜单选手的成绩,这里想知道对于某个选手求该选手再加入榜单时所处的名次

55.请按照下面的格式输出图形的形状输入1的时候需要输出的图形///\//输入 2 的时候需要输出的图形// /\///\/\//

56.给出2个序列A={a[1],a[2],…,a[n]},B={b[1],b[2],…,b[n]},从A、B中各选出n个元素进行一一配对(可以不按照原来在序列中的顺序),并使得所有配对元素差的绝对值之和最大。

57.若一个正数从左向右与从右向左读都一样,我们将其称为回文数,例如12321443都是回文数,输入一个正整数,判断它是否是回文数,是则输出yes否则输出no,以字符串形式读取输入的整数?

58.从键盘输入三个大于零的整数,判断这三个数作为边长是否能组成直角三角形,如果能则输出yes否则输出no用勾股定理判断及直角三角形两条直角边长的平方和等于斜边长的平方

59.输入十个学生的成绩计算,平均分保留一位小数,并统计不及格,成绩低于60分的学生人数

60.现有一序数列3,7,5,13,25,45,78,23,8,33,99,28,41,50,从键盘输入一个正整数,如果既是奇数又在数列里,则输出其在序列中的位置。三为第一个,如果输入整数是偶数或不在数列里,则输出error


51.银行系中有很多恒星,H 君晚上无聊,便爬上房顶数星星,H 君将整个银河系看做一个平面,左上角为原点(坐标为(1, 1))。现在有 n 颗星星,他给每颗星星都标上坐标(xi,yi)表示这颗星星在第 x 行,第 y 列。现在, H 君想问你 m 个问题,给你两个点的坐标(x1,y1)(x2,y2),表示一个矩形的左上角的点坐标和右下角的点坐标。请问在这个矩形内有多少颗星星(边界上的点也算是矩形内)

#include 

int main(){
    //初始化
    int n,m,x1,x2,y1,y2,k=0;//n颗星星,m个问题,两个坐标
    scanf("%d",&n);
    int a[n],b[n],c[1000]={0};
    for (int i = 0; i < n; i++) {
        scanf("%d%d",&a[i],&b[i]);
    }
    scanf("%d",&m);
    for (int i = 0; i < m; i++) {
        scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
        for (int j = 0; j < n; j++) {
            if(a[j]>=x1 && a[j]<=x2){
                if(b[j]>=y1 && b[j]<=y2){
                    c[k]+=1;
                }
            }
        }
        k++;
    }
    for (int i = 0; i < m; i++) {
        printf("%d ",c[i]);
    }
    return 0;
}

52.输入正整数n在屏幕上打印出所有小于n不含n的正偶数格式见样例

#include 

int main(){
    //初始化
    int n;
    scanf("%d",&n);
    for (int i = 2; i < n; i=i+2) {
        printf("%d ",i);
    }
    return 0;
}

53.任意输入一段字符串,请编写一个函数,用来删除字符串中的所有空格,并输出新的字符串

#include

void fun(char *str)
{
    char *str_c=str;
    int i,j=0;
    for(i=0;str[i]!='\0';i++)
    {
        if(str[i]!=' ')
            str_c[j++]=str[i];
    }
    str_c[j]='\0';
    str=str_c;
}
//void fun(char *str)
//{
//    char *p=str;
//    int i=0;
//    while(*p)
//    {
//        if(*p!=' ')
//            str[i++]=*p;
//        p++;
//    }
//    str[i]='\0';
//}
int main()
{
    char str[81];
    printf("Input a string : ");
    gets(str);
    fun(str);
    printf("*** str: %s\n",str);
}

54.某比赛的成绩是依次出现的,而每个选手的成绩依次公布的时候,榜单都会刷新一遍,就能看到该选手在当前榜单加入时所带的名次,下面给出了榜单选手的成绩,这里想知道对于某个选手求该选手再加入榜单时所处的名次

#include
int main()
{
    int k,n,l;
    int a[1000],b[1000];
    scanf("%d",&n);
    for(int i=0;i=0;j--)
        {
            if(a[j]>a[i])
                k++;
        }
        b[i]=k;
    }
    scanf("%d",&l);
    printf("%d\n",b[l-1]);
    return 0;
}
//数据演示:
//第一行是一个数字n(n<3000),代表选手的数量
//接下来一行,共n个数,表示选手的成绩
//接下来一个数i,表示输出选手i加入榜单时的名次

//输出格式
//一个数,表示加入榜单时,选手的名次

//样例输入
//6
//95 92 93 100 102 99
//3

//样例输出
//2

55.请按照下面的格式输出图形的形状
//
//输入1的时候需要输出的图形
///\
//输入 2 的时候需要输出的图形
// /\
///\/\
//

#include 
void print(){
    putchar('/');
    putchar('\\');
}
int main(){
    //初始化
    int n;
    while(scanf("%d",&n)!=EOF){
        for (int i = 0; i < n; i++) {
            for (int j = n-i-1; j >0; j--) {
                putchar(' ');
            }
            for (int k = -1; k < i; k++) {
                print();
            }
            printf("\n");
        }
    }
    return 0;
}
//数据演示:
//输入格式
//循环输入一个整数 n (1 <= n <= 40),代表需要输出的三角形的大小
//输出格式
//按照题目要求打印所需要的三角形大小
//样例输入复制
//1
//2
//样例输出复制
///\
// /\
///\/\

56.给出2个序列A={a[1],a[2],…,a[n]},B={b[1],b[2],…,b[n]},从A、B中各选出n个元素进行一一配对(可以不按照原来在序列中的顺序),并使得所有配对元素差的绝对值之和最大。

#include 
#include 
#include 
fun(int a[],int n){
    int temp[1000];
    for (int i = 0; i < n; i++) {
        scanf("%d",&a[i]);
    }
    for (int i = 0; i < n-1; i++) {
        for (int j = 1; j < n ; j++) {
            if(a[i]>a[j]){
                temp[j]=a[i];
                a[i]=a[j];
                a[j]=temp[j];
            }
        }
    }
}
int main(){
    //初始化
    int n,*p,*q,i,j,sum=0;
    scanf("%d",&n);
    p=(int *) malloc(n* sizeof(int));
    q=(int *) malloc(n* sizeof(int));
    fun(p,n);
    fun(q,n);
    for (int i = 0; i < n; i++) {
        sum=sum+ abs(p[i]-q[n-1-i]);
    }
    printf("%d\n",sum);

    free(p);
    free(q);
    return 0;
}

57.若一个正数从左向右与从右向左读都一样,我们将其称为回文数,例如12321443都是回文数,输入一个正整数,判断它是否是回文数,是则输出yes否则输出no,以字符串形式读取输入的整数?

#include 
#include 
int main(){
    //初始化
    char s[1000];
    int len,i,j;
    gets(s);
    len= strlen(s);
    for ( i=0,j=len-1; i < j; i++,j--) {
        if(s[i]!=s[j]){
            break;
        }
    }
    if(i>=j){
        printf("yes");
    } else{
        printf("no");
    }
    return 0;
}

58.从键盘输入三个大于零的整数,判断这三个数作为边长是否能组成直角三角形,如果能则输出yes否则输出no用勾股定理判断及直角三角形两条直角边长的平方和等于斜边长的平方

#include 

int main() {
    // 初始化
    int a, b, c, temp;
    scanf("%d %d %d", &a, &b, &c);

    temp = a > b ? a : b;
    temp = temp > c ? temp : c;

    //temp=((a>b?a:b)>(a>c?a:c)?(a>b?a:b):(a>c?a:c));
    if (a * a + b * b == c * c || a * a + c * c == b * b || c * c + b * b == a * a) {
        printf("yes");
    } else{
        printf("no");
    }

    return 0;
}

59.输入十个学生的成绩计算,平均分保留一位小数,并统计不及格,成绩低于60分的学生人数

#include 

int main(){
    //初始化
    double score,sum;
    int n,count=0;
    scanf("%d",&n);
    for (int i = 0; i < n; i++) {
        scanf("%lf",&score);
        sum=sum+score;
        if(score<60){
            count++;
        }
    }
    printf("%.1lf  %d",sum/n,count);
    return 0;
}

60.现有一序数列3,7,5,13,25,45,78,23,8,33,99,28,41,50,从键盘输入一个正整数,如果既是奇数又在数列里,则输出其在序列中的位置。三为第一个,如果输入整数是偶数或不在数列里,则输出error

#include 

int main(){
    //初始化
    int a[15]={0,3,7,5,13,25,45,78,23,8,33,9,19,28,41,50};
    int n;
    scanf("%d",&n);
    for (int i = 1; i <= 15; i++) {
        if(a[i]==n && n%2!=0){
            printf("%d",i);
            return 0;
        }
        if(a[i]!=n && n%2==0){
            printf("error");
            return 0;
        }
    }
    printf("啥也不是");
    return 0;
}

你可能感兴趣的:(白露考研C语言,算法,数据结构)