B1027.打印沙漏

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

这里写图片描述
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入格式:

输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。

输出格式:

首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

这里写图片描述

代码样例:

#include "cstdio"

int main()
{
    int n,used,row=0; //row存放图形的行数
    int j=0,i=0,cn=0;
    char c;

    scanf("%d %c",&n,&c);
    while(cn <= (n+1)/2)
    {
        cn += i*2+1;
        i ++;
    }
    row = (i-1)*2-1;
    used = (row+1)*(row+1)/2-1; //used存放使用的字符数

    //输出倒三角
    for(i=(row+1)/2; i>=1; i--)
    {
        for(j=(row+1)/2; j>i; j--)
            printf(" ");

        for(j=1; j<=2*i-1; j++)
            printf("%c",c);

        printf("\n");
    }
    //输出正三角
    for(i=1; i<(row+1)/2; i++)
    {
        for(j=(row+1)/2-1; j>i; j--)
            printf(" ");

        for(j=1; j<=2*i+1; j++)
            printf("%c",c);

        printf("\n");
    }

    printf("%d\n",n-used);

    return 0;
}

{"log":{"version":"1.2","creator":{"name":"Reqable","version":"2.30.3"},"entries":[{"startedDateTime":"2025-05-20T07:18:39.857Z","time":43,"request":{"method":"GET","url":"https://www.gy0.cc/consumer/sc/api/getScanInfo?key=2524544%2520-T3J2ZHIO8EAE2EJJ%253AL85&pagePath=%2523%252Fsc%252FpureRawDoll%253Fkey%253D2524544%252B-T3J2ZHIO8EAE2EJJ%253AL85%2526SHUYUN_TOKEN%253D026372DD7587FCE040CD6067F9A40B1C527B233645D296A7B84D66206FCB3F5D7D66F51061A0AB6541257AA958C4D9E996BA8AFC0226ED1F8F19B5E7B1F9430AC6895F620BD86071B7C223107D25A02FCB3E1831258F80550B1027CCF727A67D%2526longitude%253D104.06688503689236%2526latitude%253D30.57524875217014","httpVersion":"HTTP/2.0","cookies":[],"headers":[{"name":":authority","value":"www.gy0.cc"},{"name":":method","value":"GET"},{"name":":path","value":"/consumer/sc/api/getScanInfo?key=2524544%2520-T3J2ZHIO8EAE2EJJ%253AL85&pagePath=%2523%252Fsc%252FpureRawDoll%253Fkey%253D2524544%252B-T3J2ZHIO8EAE2EJJ%253AL85%2526SHUYUN_TOKEN%253D026372DD7587FCE040CD6067F9A40B1C527B233645D296A7B84D66206FCB3F5D7D66F51061A0AB6541257AA958C4D9E996BA8AFC0226ED1F8F19B5E7B1F9430AC6895F620BD86071B7C223107D25A02FCB3E1831258F80550B1027CCF727A67D%2526longitude%253D104.06688503689236%2526latitude%253D30.57524875217014"},{"name":":scheme","value":"https"},{"name":"shuyun_token","value":"026372DD7587FCE040CD6067F9A40B1C527B233645D296A7B84D66206FCB3F5D7D66F51061A0AB6541257AA958C4D9E996BA8AFC0226ED1F8F19B5E7B1F9430AC6895F620BD86071B7C223107D25A02FCB3E1831258F80550B1027CCF727A67D"},{"name":"sec-ch-ua-platform","value":"\"Android\""},{"name":"user-agent","value":"Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/134.0.6998.136 Mobile Safari/537.36 XWEB/1340095 MMWEBSDK/20250201 MMWEBID/2949 MicroMessenger/8.0.58.2841(0x28003A3E) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64"},{"name":"accept","value":"application/json, text/plain, */*"},{"name":"sec-ch-ua","value":"\"Chromium\";v=\"134\", \"Not:A-Brand\";v=\"24\", \"Android WebView\";v=\"134\""},{"name":"sec-ch-ua-mobile","value":"?1"},{"name":"x-requested-with","value":"com.tencent.mm"},{"name":"sec-fetch-site","value":"same-origin"},{"name":"sec-fetch-mode","value":"cors"},{"name":"sec-fetch-dest","value":"empty"},{"name":"referer","value":"https://www.gy0.cc/consumer/sc/"},{"name":"accept-encoding","value":"gzip, deflate, br, zstd"},{"name":"accept-language","value":"zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"},{"name":"priority","value":"u=1, i"}],"queryString":[{"name":"key","value":"2524544%20-T3J2ZHIO8EAE2EJJ%3AL85"},{"name":"pagePath","value":"%23%2Fsc%2FpureRawDoll%3Fkey%3D2524544%2B-T3J2ZHIO8EAE2EJJ%3AL85%26SHUYUN_TOKEN%3D026372DD7587FCE040CD6067F9A40B1C527B233645D296A7B84D66206FCB3F5D7D66F51061A0AB6541257AA958C4D9E996BA8AFC0226ED1F8F19B5E7B1F9430AC6895F620BD86071B7C223107D25A02FCB3E1831258F80550B1027CCF727A67D%26longitude%3D104.06688503689236%26latitude%3D30.57524875217014"}],"headersSize":1476,"bodySize":0,"_status":"completed","_startTimestamp":1747725519857796,"_endTimestamp":1747725519860535},"response":{"status":200,"statusText":"","httpVersion":"HTTP/2.0","cookies":[],"headers":[{"name":":status","value":"200"},{"name":"server","value":"openresty"},{"name":"date","value":"Tue, 20 May 2025 07:18:39 GMT"},{"name":"content-type","value":"application/json"},{"name":"access-control-allow-credentials","value":"true"},{"name":"access-control-allow-methods","value":"GET, POST, OPTIONS"},{"name":"access-control-allow-headers","value":"DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"}],"content":{"size":1538,"mimeType":"application/json","text":"{\"returnCode\":\"1\",\"returnMsg\":\"获取成功\",\"errorCode\":null,\"errorCodeDes\":null,\"datas\":\"{\\\"activityRuleId\\\":10000,\\\"adCode\\\":\\\"510107\\\",\\\"appletScan\\\":true,\\\"areaHeaderUrl\\\":\\\"https://www.gy0.cc/cpmdp/sc\\\",\\\"code\\\":\\\"-T3J2ZHIO8EAE2EJJ:L85\\\",\\\"codeStoreId\\\":66605240,\\\"customerPrizeKey\\\":\\\"2524544+-T3J2ZHIO8EAE2EJJ:L85\\\",\\\"dealer\\\":{\\\"areaFirstCode\\\":\\\"50025920\\\",\\\"areaFirstId\\\":510,\\\"areaFirstName\\\":\\\"乐山销售大区\\\",\\\"areaSecondId\\\":520,\\\"areaSecondName\\\":\\\"犍为业务部\\\",\\\"areaThreeId\\\":522,\\\"areaThreeName\\\":\\\"乐山五通桥\\\",\\\"marketCenterCode\\\":\\\"50002083\\\",\\\"marketingCenter\\\":\\\"sc\\\",\\\"name\\\":\\\"乐山市五通桥区吉鸿商行\\\",\\\"no\\\":\\\"160007278\\\",\\\"waiterMaxAmount\\\":0},\\\"fillUserInfo\\\":0,\\\"member\\\":{\\\"gmtRegist\\\":1747725497730,\\\"hasUser\\\":1,\\\"headImgUrl\\\":\\\"https://thirdwx.qlogo.cn/mmopen/vi_32/kCoOHhj27ko0xKXiabIqvqpNdzMgnGfnlU3fuBftiaaqrLpic5X7ibPW1BpqqhMxA47KIRssmH3Zc0ia9HfgsYLNicjg/132\\\",\\\"id\\\":2524544,\\\"idCardNo\\\":\\\"\\\",\\\"isException\\\":0,\\\"isFocusWeixin\\\":0,\\\"mobile\\\":\\\"17705821447\\\",\\\"nickName\\\":\\\"开心就好\\\",\\\"sex\\\":\\\"0\\\",\\\"status\\\":\\\"O\\\",\\\"type\\\":\\\"XF\\\",\\\"unionId\\\":\\\"oQdqpwKgoDoZnJUvyHkR_JzYU4vg\\\"},\\\"openId\\\":\\\"od4Kx6seH0c9VMOczGCi1AeMNmhs\\\",\\\"redRain\\\":false,\\\"result\\\":[{\\\"activityType\\\":0,\\\"awardName\\\":\\\"10.8元红包\\\",\\\"count\\\":1080,\\\"drinkGame\\\":0,\\\"fillUserInfo\\\":0,\\\"rewardType\\\":4,\\\"showImg\\\":\\\"\\\",\\\"userInfoType\\\":0}],\\\"ruleId\\\":10155,\\\"showAd\\\":false,\\\"staticRoot\\\":\\\"https://www.gy0.cc/cpmdp/static/sc\\\",\\\"userInfoType\\\":0,\\\"virtualProductId\\\":148338,\\\"winBeerSquare\\\":false}\"}"},"redirectURL":"","headersSize":326,"bodySize":1538,"_status":"completed","_startTimestamp":1747725519898801,"_endTimestamp":1747725519900708},"cache":{},"timings":{"send":-1,"wait":-1,"receive":-1},"serverIPAddress":"134.175.212.211","connection":"53","comment":"","_id":159,"_uid":"2618f643-4511-42dd-87e7-986a5d204ff3","_cid":53,"_ctime":1747725516423,"_sid":81,"_stime":1747725519857,"_serverAddress":"134.175.212.211","_serverAddressFamily":0,"_serverPort":443,"_clientAddress":"192.168.51.9","_clientAddressFamily":0,"_clientPort":41844,"_app":{"name":"微信","id":"com.tencent.mm","path":null,"stackTrace":null}}]}} 帮我改成一个正常的请求
最新发布
05-22
### 如何将复杂的HTTP GET请求简化为可读性更高的API请求 为了提高可读性和维护性,可以通过以下方式将复杂的HTTP GET请求转换为更简洁的API请求格式: #### 1. 使用结构化参数替代复杂URL 如果URL中包含大量查询参数,可以将其封装到对象或字典中。这样不仅提高了代码的清晰度,还便于后续修改和扩展。 ```python import requests params = { 'key1': 'value1', 'key2': 'value2' } response = requests.get('https://api.example.com/data', params=params) print(response.url) # 输出最终构建的完整URL ``` 通过这种方式,`requests`库会自动将`params`字典中的键值对拼接到URL后面[^1]。 --- #### 2. 将重复使用的头部信息提取为常量 对于频繁使用的头部信息(如Authorization Token、User-Agent等),建议定义全局变量或配置文件存储这些信息,而不是每次都手动输入。 ```python HEADERS = { 'Authorization': 'Bearer YOUR_ACCESS_TOKEN', 'Content-Type': 'application/json', 'Accept-Language': 'en-US' } response = requests.get('https://api.example.com/resource', headers=HEADERS) ``` 这种做法减少了冗余代码,并使头部管理更加集中化[^2]。 --- #### 3. 利用函数抽象逻辑 当多个地方都需要发起类似的GET请求时,可以创建一个通用函数来封装请求细节。这有助于减少重复代码并增强复用能力。 ```python def fetch_data(api_url, query_params=None, custom_headers=None): default_headers = {'Authorization': 'Bearer YOUR_ACCESS_TOKEN'} if custom_headers: default_headers.update(custom_headers) response = requests.get(api_url, params=query_params, headers=default_headers) return response.json() query_parameters = {'search_term': 'example', 'page': 1} custom_header = {'Custom-Header': 'SpecialValue'} data = fetch_data('https://api.example.com/search', query_parameters, custom_header) print(data) ``` 此方法能够显著提升代码的模块化程度[^1]。 --- #### 4. 考虑使用RESTful API工具链 某些情况下,可能需要进一步优化API调用流程。此时可以选择专门针对RESTful服务开发的框架或者SDK,比如Postman Collections、Swagger/OpenAPI Specification等。它们支持自动生成客户端代码以及文档说明,从而极大降低手写繁琐请求的工作负担[^3]。 --- #### 5. 防止超大头部引发性能问题 需要注意的是,在实际应用过程中应避免设置过长的头部字段值,以免超出目标服务器所能接受的最大长度限制。通常来说,默认阈值范围介于8KB至16KB之间,具体取决于所采用的技术栈[^2]。 --- ### 总结 综上所述,要实现从原始HTTP日志向标准化API请求形式转变的目标,主要涉及以下几个方面操作:一是借助编程语言特性重构URL与Query String;二是合理规划Headers布局;三是引入辅助功能以促进整体架构精炼高效。以上措施均能在不同程度上改善原有表达方式存在的弊端,达到预期效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值