《算法笔记》在codeup上对应的3.2小节

   感觉还是得自己多看些其它资料,编程东西这么多,一本书没办法覆盖那么全,多练,多看,多想。

问题A:

题目描述

读入N名学生的成绩,将获得某一给定分数的学生人数输出。

输入

测试输入包含若干测试用例,每个测试用例的格式为

第1行:N
第2行:N名学生的成绩,相邻两数字用一个空格间隔。
第3行:给定分数

当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。

输出

对每个测试用例,将获得给定分数的学生人数输出。

样例输入

4
70 80 90 100
80
3
65 75 85
55
5
60 90 90 90 85
90
0

样例输出

1
0
3
#include<cstdio>
int main(){
    freopen("in.txt","r",stdin);
    int N;
    scanf("%d",&N);
    while(N!=0){
        int a[1000]={0},i;
        for( i=0;i<N;i++)
            scanf("%d",&a[i]);
            int c;
            scanf("%d",&c);
            int d=0;
            for(i=0;i<N;i++)
            if(a[i]==c)
            d++;
            printf("%d\n",d);
            scanf("%d",&N);
    }
    return 0;
}

问题B:

题目描述

输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。

输入

测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。

输出

对于每组输入,请输出结果。

样例输入

4
1 2 3 4
3

样例输出

2
#include<cstdio>
int main(){
    freopen("in.txt","r",stdin);
    int n,a[205],i;
while(scanf("%d",&n)!=-1){
    int d=-1;
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    int x;//x要在这里定义,否则通不过
    scanf("%d",&x);
    for(i=0;i<n;i++){
        if(a[i]==x){
            d=i;
            break;
        }
    }
    printf("%d\n",d);
}
    return 0;
}

问题C:

题目描述

输入N个学生的信息,然后进行查询。

输入

输入的第一行为N,即学生的个数(N<=1000)

接下来的N行包括N个学生的信息,信息格式如下:
01 李江 男 21
02 刘唐 男 23
03 张军 男 19
04 王娜 女 19
然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:
02
03
01
04

输出

输出M行,每行包括一个对应于查询的学生的信息。

如果没有对应的学生信息,则输出“No Answer!”

样例输入

5
001 张三 男 19
002 李四 男 20
003 王五 男 18
004 赵六 女 17
005 刘七 女 21
7
003
002
005
004
003
001
006

样例输出

003 王五 男 18
002 李四 男 20
005 刘七 女 21
004 赵六 女 17
003 王五 男 18
001 张三 男 19
No Answer!
#include<cstdio>
#include<cstdlib>
#include<cstring>
typedef struct student{
    char num[100];
    char name[200];
    char sex[10];
    int age;
}student;//题目没要求 字符串数组范围,尽量开大
int main(){
    freopen("in.txt","r",stdin);
    int N,M;
while(    scanf("%d",&N)!=-1){//没说几组数据,按照多点测试来
    student *st=(student*)malloc(sizeof(student)*N);
    int i;
    for(i=0;i<N;i++)
        scanf("%s%s%s%d",st[i].num,st[i].name,st[i].sex,&st[i].age);
        scanf("%d",&M);
        while(M--){
            char nu[100];
            scanf("%s",nu);
            for(i=0;i<N;i++){
                if(!strcmp(nu,st[i].num)){
                    printf("%s %s %s %d\n",st[i].num,st[i].name,st[i].sex,st[i].age);
                    break;
                }
            }
            if(i==N)
            printf("No Answer!\n");
        }
        free(st);
        st=NULL;
    }
    return 0;
}

问题D:

题目描述

输入数组长度 n 
输入数组      a[1...n] 
输入查找个数m 
输入查找数字b[1...m] 
输出 YES or NO  查找有则YES 否则NO 。

输入

输入有多组数据。
每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m<=n<=100)。

输出

如果在n个数组中输出YES否则输出NO。

样例输入

6
3 2 5 4 7 8
2
3 6

样例输出

YES
NO
#include<cstdio>
int main(){
    freopen("in.txt","r",stdin);
    int a[105],n,i;
while(    scanf("%d",&n)!=-1){
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    int m;
    scanf("%d",&m);
    for(i=0;i<m;i++){
        int temp,j;
        scanf("%d",&temp);
        for( j=0;j<n;j++){
            if(a[j]==temp){
                printf("YES\n");
                break;
            }
        }
        if(j==n)
        printf("NO\n");
    }
}
    return 0;
}

问题E:

题目描述

输入n个学生的信息,每行包括学号、姓名、性别和年龄每一个属性使用空格分开。最后再输入一学号,将该学号对应的学生信息输出。

输入

测试数据有多组,第一行为样例数m。对于每个样例,第一行为学生人数n(n不超过20),加下来n行每行4个整数分别表示学号、姓名、性别和年龄最后一行表示查询的学号

输出

输出m行,每行表示查询的学生信息,格式参见样例。

样例输入

1
4
1 李江 男 21
2 刘唐 男 23
3 张军 男 19
4 王娜 女 19
2

样例输出

2 刘唐 男 23
#include<cstdio>
#include<cstring>
typedef struct{
    char num[100];
    char name[100];
    char sex[10];
    int age;
}students;
int main(){
    freopen("in.txt","r",stdin);
    int n,i,m;
while(scanf("%d",&m)!=-1){
    int d=m;
    while(m--){
        scanf("%d",&n);
            students st[25];
        for(i=0;i<n;i++)
        scanf("%s%s%s%d",st[i].num,st[i].name,st[i].sex,&st[i].age);
        char nu[100];
    //    for(i=0;i<d;i++){  //题目只要求查询一个学号
            scanf("%s",nu);
            for(int j=0;j<n;j++){
                if(!strcmp(nu,st[j].num)){
                    printf("%s %s %s %d\n",st[j].num,st[j].name,st[j].sex,st[j].age);
                    break;
                }
            }
    //    }
    }
}
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值