1. 程式人生 > >山東理工大學2017《程式設計基礎(B)I》期末上機測試第一場題解

山東理工大學2017《程式設計基礎(B)I》期末上機測試第一場題解

題目列表: sdutoj 4129 皮卡丘的主人是?題目連結 sdutoj 4130 皮卡丘的生日是?題目連結 sdutoj 4131 皮卡丘的屬性是?題目連結 sdutoj 4132 皮卡丘的HP是?題目連結 sdutoj 4133 皮卡丘的編號是?題目連結 sdutoj 4134 皮卡丘的叫聲是?題目連結 sdutoj 4135 皮卡丘的敵人是?題目連結 sdutoj 4136 皮卡丘的夥伴是?題目連結 皮卡丘的主人是? 考點:簡單的判斷條件+輸入輸出。 解析:判斷Yes和No的條件是輸入的徽章數N>=8
#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    if(n>=8)printf("Yes\n");
    else printf("No\n");
    return 0;
}

皮卡丘的生日是? 考點:多重條件判斷+基礎迴圈。 解析:若當前日期在該年的2月27日以後時,年齡等於當前年份-1996,否則,年份等於當前年份-1997.
#include <stdio.h>
int main()
{
    int y,m,d,a;
    while(~scanf("%d%d%d",&y,&m,&d))
    {
        a=y-1996;
        if(m<2||(m==2&&d<27))a--;
        printf("%d\n",a);
    }
    return 0;
}
皮卡丘的屬性是? 考點:巢狀迴圈條件的使用。 解析:上下兩條斜線唯一的區別是下斜線比上斜線每行多一個空格,橫線的*號共有n+1個,之後注意迴圈條件的改變即可。
#include <stdio.h>
int main()
{
    int n,i,j;
    while(~scanf("%d",&n))
    {
        for(i=n-1;i>=0;i--)
        {
            for(j=1;j<=i;j++)
            {
                printf(" ");
            }
            printf("*\n");
        }
        for(i=1;i<=n+1;i++)printf("*");
        printf("\n");
        for(i=n;i>0;i--)
        {
            for(j=1;j<=i;j++)
            {
                printf(" ");
            }
            printf("*\n");
        }
        printf("\n");
    }
    return 0;
}
皮卡丘的HP是? 考點:資料型別控制+基礎計算。 解析:int型可直接將所得結果向下取整,所以直接用int型即可,因為有兩次取整,所以將公式拆成兩部分計算。
#include <stdio.h>
int main()
{
    int l,a,b,hp;
    while(~scanf("%d%d%d",&l,&a,&b))
    {
        hp=70+a+b/4;
        hp=hp*l/100+10+l;
        printf("%d\n",hp);
    }
    return 0;
}

皮卡丘的編號是? 考點:一維陣列運用、基本排序方法的使用、基本查詢。
解析:此題有兩種做法。第一種:建立一個數組,將在圖鑑中記錄的寶可夢對應下標的資料用1表示,其餘的用0表示,列印時將資料為1的下標升序輸出。第二種:直接將編號加入陣列,每遇到一個新寶可夢,進行一次查詢,如果在陣列中找到,則不處理,否則將其加入陣列末端,並將元素個數加一,最後一起進行排序。 第一種:
#include <stdio.h>
int main()
{
    int n,m,i,x,s,f;
    int a[1010];
    while(~scanf("%d%d",&n,&m))
    {
        for(i=0;i<=900;i++)a[i]=0;
        while(n--)
        {
            scanf("%d",&x);
            a[x]=1;
        }
        while(m--)
        {
            scanf("%d",&x);
            a[x]=1;
        }
        s=0;
        for(i=1;i<=807;i++)
        {
            if(a[i])s++;
        }
        printf("%d\n",s);
        f=1;
        for(i=1;i<=807;i++)
        {
            if(a[i])
            {
                if(f)printf("%d",i);
                else printf(" %d",i);
                f=0;
            }
        }
        printf("\n");
    }
    return 0;
}

第二種:
#include <stdio.h>
int main()
{
    int a[1010];
    int n,m,i,j,t,f;
    while(~scanf("%d%d",&n,&m))
    {
        for(i=0;i<n;i++)scanf("%d",&a[i]);
        while(m--)
        {
            f=0;
            scanf("%d",&t);
            for(i=0;i<n;i++)
            {
                if(a[i]==t)
                {
                    f=1;
                    break;
                }
            }
            if(f==0)a[n++]=t;
        }
        for(i=0;i<n;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(a[i]>a[j])
                {
                    t=a[i];
                    a[i]=a[j];
                    a[j]=t;
                }
            }
        }
        printf("%d\n",n);
        for(i=0;i<n;i++)
        {
            if(i==n-1)printf("%d\n",a[i]);
            else printf("%d ",a[i]);
        }
    }
    return 0;
}
皮卡丘的叫聲是? 考點:字串基礎匹配。 解析:判斷每個位置及其之後的6位是否滿足匹配到"pikachu"這個條件,若滿足,計數加一。
#include <stdio.h>
int main()
{
    char b[]="pikachu";
    char a[1010];
    int i,j,ct,f;
    while(~scanf("%s",a))
    {
        ct=0;
        for(i=0;a[i];i++)
        {
            f=1;
            for(j=0;j<7;j++)
            {
                if(a[i+j]!=b[j])f=0;
            }
            if(f)ct++;
        }
        printf("%d\n",ct);
    }
    return 0;
}

皮卡丘的敵人是: 考點:二維陣列基礎。 解析:首先找到小智(1)的座標,然後對二維陣列中的每個陷阱(2)進行距離最小的判斷,注意距離是一個正數,應該為座標差的絕對值。
#include <stdio.h>
int dis(int x1,int y1,int x2,int y2)
{
    int y=0;
    if(x1>x2)y+=x1-x2;
    else y+=x2-x1;
    if(y1>y2)y+=y1-y2;
    else y+=y2-y1;
    return y;
}
int main()
{
    int n,m,x,y,i,j,s;
    int a[30][30];
    while(~scanf("%d%d",&n,&m))
    {
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
                scanf("%d",&a[i][j]);
                if(a[i][j]==1)
                {
                    x=i;
                    y=j;
                }
            }
        }
        s=m+n;
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
                if(a[i][j]==2&&s>dis(x,y,i,j))s=dis(x,y,i,j);
            }
        }
        printf("%d\n",s);
    }
    return 0;
}

皮卡丘的夥伴是: 考點:模擬實際問題、字元陣列、二維陣列的綜合運用。 解析:首先將字串對應成數字,再將屬性剋制關係用二維陣列表示,題目就簡化了很多。最後就是注意一下同屬性有一個50%的加成,最後比大小時用的是浮點數即可。
#include <stdio.h>
#include <string.h>
int main()
{
    char na[4][10]={"Water","Fire","Grass","Electric"};
    char a[10],b[10],c[10];
    int aa,bb,cc,i;
    double x1,x2,x3,max;
    int y;
    double t[4][4]={0.5,2,0.5,1,0.5,0.5,2,1,2,0.5,0.5,1,2,1,0.5,0.5};
    while(~scanf("%s %s",a,b))
    {
        scanf("%lf %lf",&x1,&x2);
        scanf("%s",c);
        x3=60;
        x1*=1.5;
        for(i=0;i<4;i++)
        {
            if(strcmp(a,na[i])==0)aa=i;
            if(strcmp(b,na[i])==0)bb=i;
            if(strcmp(c,na[i])==0)cc=i;
        }
        x1*=t[aa][bb];
        x3*=t[cc][bb];
        max=x1;
        y=1;
        if(x2>max){y=2;max=x2;}
        if(x3>max){y=3;max=x3;}
        printf("%d\n",y);
    }
    return 0;
}



相關推薦

山東理工大學2017程式設計基礎BI期末上機測試第一題解

題目列表: sdutoj 4129 皮卡丘的主人是?題目連結 sdutoj 4130 皮卡丘的生日是?題目連結 sdutoj 4131 皮卡丘的屬性是?題目連結 sdutoj 4132 皮卡丘的HP是?題目連結 sdutoj 4133 皮卡丘的編號是?題目連結 sdutoj

Linux學習之shell 程式設計基礎

一、bash環境變數 HOME、MAIL、SHELL、PATH 等,環境變數大都用大寫字母組成 [[email protected] dalianmao]# echo $SHELL /bin/bash [[email protected] dalianmao]# echo

Linux學習之shell 程式設計基礎

一、linux中經常和正則表示式聯合使用的工具 grep sed awk(自己去研究吧). 二,以grep為例,有以下正則操作 特殊符號彙總 特殊符號 代表意義 [:alnum:] 代表英文

Linux-Shell指令碼程式設計基礎1

1. 我們一般在使用Linux系統的時候,都活接觸到shell指令碼的使用,例如我們經常在linux系統中使用的ls命令、cd命令等,都是衣蛾簡單而又基本的shell命令,在 linux系統中我們一般的使用如下的格式來進行shell指令碼的編寫: (1)格式 #!bin/bash e

Python語言程式設計基礎7—— 檔案和資料格式化

返回字串 file = input() #返回字串 fo = open(file,"r").read(6) print(fo)   返回列表形式 file = input() fo = open(file,"r") #print(fo) #返回列表形式 pr

Python語言程式設計基礎5—— 組合資料型別

tuple 元組(建立後不能修改) tuple = "cat","dog","tiger","human" print(tuple) def fun(x): return x,x*2 print(type(fun(3))) for x,y in ((2,0),(2,5),

shell程式設計基礎轉載

Shell程式設計基礎 原作者 Leal;請參閱頁面底部的編者列表。 授權許可: 創作共享署名協議 GNU 自由文件許可證 注意:本文仍然在持續的修訂之中,且錯漏之處可能較多。如果能夠閱讀英語的話,可以考慮試試較為完善的 Wooledge BashGuide。這個站點除了教程之外,還有一

Windows網路程式設計基礎1---郵槽

/* 2018-9-6 12:21:04 郵槽的使用 */ 預備知識:CreateFile,ReadFile的使用 關鍵的函式 CreateMailslot 如果建立失敗 返回一個無效的控制代碼值INVILID_HANDLE_VALUE 用一個有效的控制代碼建立了郵槽之後,便可開始資料的實際讀取

C程式設計基礎

參考書籍介紹 作業系統之哲學原理() C程式設計(譚浩強) 計算機網路(謝希仁) 微機原理(清華大學出版社) 高階資料結構 C語言基本資料型別、運算子與表示式 基本型別及其所佔位元組 short(短整型) :2個儲存單位 int (整型) :4個儲存單

Linux C高階程式設計——網路程式設計基礎1

Linux高階程式設計——BSD socket的網路程式設計 宗旨:技術的學習是有限的,分享的精神是無限的。 一網路通訊基礎         TCP/IP協議簇基礎:之所以稱TCP/IP是一個協議簇,是因為TCP/IP包含TCP 、IP、UDP、ICMP等多種協議。下圖

MapReduce程式設計基礎——數值概要計算最大值、最小值、平均值

數值概要 數值概要模式是計算資料集聚合統計的一般性模式 適用場景: 要處理的資料數值或者計數 資料可以按某些特定的欄位分組 數值概要的應用: 單詞計數 記錄計數 最大/最小值計數 平均值/中位數/標準差

JAVA Socket程式設計基礎轉載

 Java Socket程式設計 對於Java Socket程式設計而言,有兩個概念,一個是ServerSocket,一個是Socket。服務端和客戶端之間通過Socket建立連線,之後它們就可以進行通訊了。首先ServerSocket將在服務端監聽某個埠,當發現客

Java程式設計基礎1

一、概述1、三大平臺(1)java ME:嵌入式應用(小型裝置,比如行動通訊,智慧卡,電視機頂盒等)(2)Java SE:桌面級應用(也就是Eclipse一類的應用,Java SE SDK也簡稱JDK)(3)Java EE:Java的企業級應用平臺2、跨平臺特性——得益於ja

linux網路程式設計基礎

 一、資料儲存順序:大端和小端          高位位元組儲存高位元組稱為小端模式,通常都計算機採用這個模式儲存。而網路則採用大端傳輸。所以需要轉換       面試有時會出這麼個題:寫一個程式判

第一篇:面向物件程式設計基礎

面向物件程式設計(Object Oriented Programming),簡稱OOP。是java程式設計的核心,也是java web應用開發的核心。主要有三個概念:封裝,繼承,和多型。 簡要闡述下三個概念:1、封裝:封裝是OOP語言的優點之一。把一個物件的資

MFC介面程式設計基礎28:直接訪問MySql API 連線 mysql

直接訪問MySql API 連線 mysql 第一步: 安裝MySql 第二步: 在工程檔案中新增mysql 標頭檔案 #include mysql.h 第三步: 在VS屬性中做如下配置: ①:附加包含標頭檔案mysql.h的目錄,即安裝目錄下的

MFC介面程式設計基礎27:排序和篩選

上一篇:MFC介面程式設計基礎(26):更新記錄 下一篇:MFC介面程式設計基礎(28):直接訪問MySql API 連線 mysql CRecordView類有兩個重要的資料成員m_strFilter和m_str

MFC介面程式設計基礎26:更新記錄

上一篇:MFC介面程式設計基礎(25):設計記錄操作介面 下一篇:MFC介面程式設計基礎(27):排序和篩選 更新記錄操作包括修改,新增和刪除記錄,CRecordSet類提供了AddNew()、Delete()、E

MFC介面程式設計基礎25:設計記錄操作介面

上一篇:MFC介面程式設計基礎(24):建立資料庫應用框架 下一篇:MFC介面程式設計基礎(26):更新記錄 開啟資源管理器的 Dialog資料夾,選擇IDD_EXAM2_1_FORM,在對話方塊中按下圖新增靜態控

MFC介面程式設計基礎24:建立資料庫應用框架

上一篇:MFC介面程式設計基礎(23):建立並註冊資料來源 下一篇:MFC介面程式設計基礎(25):設計記錄操作介面 使用MFC類嚮導可以方便地得到一個數據庫應用程式的框架,建立一個MFC單文件EXE應用程式Exa