2022/2/23、24——浙大版《C语言程序设计实验指导》《基础题集》PAT错题记

7-34 通讯录的录入与显示 (10 分)

通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。

输入格式:

输入在第一行给出正整数N(≤10);随后N行,每行按照格式姓名 生日 性别 固话 手机给出一条记录。其中姓名是不超过10个字符、不包含空格的非空字符串;生日按yyyy/mm/dd的格式给出年月日;性别用M表示“男”、F表示“女”;固话手机均为不超过15位的连续数字,前面有可能出现+

在通讯录记录输入完成后,最后一行给出正整数K,并且随后给出K个整数,表示要查询的记录编号(从0到N−1顺序编号)。数字间以空格分隔。

输出格式:

对每一条要查询的记录编号,在一行中按照姓名 固话 手机 性别 生日的格式输出该记录。若要查询的记录不存在,则输出Not Found

输入样例:

3
Chris 1984/03/10 F +86181779452 13707010007
LaoLao 1967/11/30 F 057187951100 +8618618623333
QiaoLin 1980/01/01 M 84172333 10086
2 1 7

输出样例:

LaoLao 057187951100 +8618618623333 F 1967/11/30
Not Found

//1.正确使用结构体。 2.电话数组的大小要包括+  3.scanf里的赋值方式  4.notfound后面加回车符 

#include <stdio.h>

typedef struct people
{
    char name[11];
    char year[11];
    char sex;
    char tel[17];
    char phone[17];
}people;

int main()
{
    int N, i, M, t;
    people person[10];
    scanf("%d", &N);
  
    
    for(i = 0; i < N; i++)
    {
        scanf("%s %s %c %s %s", person[i].name, person[i].year, &person[i].sex, person[i].tel, person[i].phone);
    }
    scanf("%d", &M);
    for(i = 0; i < M; i++)
    {
        scanf("%d", &t);
        if(t >= 0 && t < N)
        {
            printf("%s %s %s %c %s\n", person[t].name, person[t].tel, person[t].phone, person[t].sex, person[t].year);
            
        }
        else
            printf("Not Found\n");
    }
    return 0;
}

7-38 数列求和-加强版 (20 分)

给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。

输入格式:

输入数字A与非负整数N。

输出格式:

输出其N项数列之和S的值。

输入样例:

1 3

输出样例:

123

//可气死我了,应该%10而不是%9,我一直%9,找了快一小时才找到错,呜呜

1.要用数组存放每一位的值

2.最高位(i == N时) 的值也不会>9,所以数组大小定位100001即可

3.每一位包括i个A相乘再加上进位

4.判断一下i==N时值是否不为0

参考代码链接如下:

7-38 数列求和-加强版 (20 分)_Re:从零开始的代码生活的博客-CSDN博客给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。输入格式:输入数字A与非负整数N。输出格式:输出其N项数列之和S的值。输入样例:1 3输出样例:123题目集全集传送门#include <stdio.h>#define MAX 100000int main(){int a, n, result[MAX + 5];scanf("%d %https://blog.csdn.net/fjdep/article/details/1190072947-38 数列求和-加强版 (20 分)_Loser-CSDN博客给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。输入格式:输入数字A与非负整数N。输出格式:输出其N项数列之和S的值。输入样例:1 3输出样例:123注释:代码里我注释掉的是最傻白甜的做法,就是模拟加法的过程,做完后我突然想起来,把所有的最后一位加起来...https://blog.csdn.net/qq_36459536/article/details/865548287-38 数列求和-加强版 - 我只有一件白T恤 - 博客园7-38 数列求和-加强版(20 分) 给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+https://www.cnblogs.com/zengguoqiang/p/8342866.html

 注:图片来自第三个链接的博客园大神,说实话用纸写写思路会很清醒的

#include <stdio.h>
int main()
{
    int N, i, A;
    int sum[100001] = {0};
    scanf("%d %d", &A, &N);
    
   
    for(i = 0; i < N; i++)
    {
        
        sum[i] += A * (N - i);
        sum[i + 1] = sum[i] / 10;
        sum[i] %= 10;
    }
    
    if(N == 0)
        printf("0");
    else
    {
        if(sum[N] != 0)
            printf("%d", sum[N]);
        for(i = N - 1; i >= 0; i--)
            printf("%d", sum[i]);
        
    }
        
    
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值