第14、15週PTA題目的處理

題目1 選擇法排序

1.實驗代碼

#include <stdio.h>
#include <stdlib.h>
int main()
{
  int n,index,exchange,i,j;
  scanf("%d\n",&n);
  int num[n];
  for(index=0;index<n;index++)
  scanf("%d ",&num[index]);
  for(i=0;i<n-1;i++)
  {
    for(j=i+1;j<n;j++)
    {
      if(num[j]>num[i])
      {
        exchange=num[j];
        num[j]=num[i];
        num[i]=exchange;
      }
      else
      continue;
    }
  }
  for(index=0;index<n;index++)
  {
    if(index==0)
    printf("%d",num[index]);
    else
    printf(" %d",num[index]);
  }
  system("pause");
  return 0;
}

2.設計思路

(1)算法

第一步:輸入整數的個數n,定義數組num[n]

第二步:按照順序輸入整數存入num[n]

第三步:外循環變量i=0,內循環變量j=i+1

第四步:若num[i]<num[j],則交換num[i]和num[j]

第五步:j++,若j>=n,則i++,若i>=n-1,則下一步,否則跳到上一步

第六步:輸出num[n]中的數,第二個數開始前面跟上空格

(2)流程圖

3.本題調試過程碰到問題及解決辦法

(注:圖片在保存後成了問號,沒有副本)

問題:在做交換時,內外循環都用了一個循環變量,導致進行完第一次內循環外循環就停止了

解決辦法:在內外循環中使用兩個不同的循環變量

題目2 輸出數組元素

1.實驗代碼

#include <stdio.h>
#include <stdlib.h>
int main()
{
  int n,index,difference;
  scanf("%d\n",&n);
  int num[n];
  for(index=0;index<n;index++)
  scanf("%d ",&num[index]);
  for(index=1;index<n;index++)
  {
    difference=num[index]-num[index-1];
    printf("%d",difference);
    if(index+1==n)
    printf("\n");
    else if(index%3!=0)
    printf(" ");
    else
    printf("\n");
  }
  system("pause");
  return 0;
}

2.設計思路

(1)算法

第一步:輸入整數元素個數n

第二步:按照順序輸入整數存入num[n]中

第三步:循環變量index=1,若index<n,則後項減前項的差difference=num[index]-num[index-1],輸出difference,否則結束

第四步:若index+1=n,則輸出回車,否則判斷index mod 3不等於0,若是則輸出空格,否則輸出回車

第五步:index++,跳到第三步

(2)流程圖

3.本題調試過程碰到問題及解決辦法

(注:圖片在保存後成了問號,沒有副本)

問題:輸出元素時最後一個不是三的倍數會輸出空格,第一個數也會輸出空格

解決辦法:判斷輸出的這個數是不是最後一個數,如果是的話就輸出回車,不是的話就判斷輸出的元素是不是3的倍數

題目3 數組元素循環右移問題

1.實驗代碼

#include <stdio.h>
#include <stdlib.h>
int main()
{
  int N,M,index,exchange;
  scanf("%d %d\n",&N,&M);
  int num[N],item[N];
  for(index=0;index<N;index++)
  scanf("%d ",&num[index]);
  for(index=0;index<N;index++)
  {
    if(index+M>=N)
    item[(index+M)%N]=num[index];
    else
    item[index+M]=num[index];
  }
  for(index=0;index<N;index++)
  {
    if(index==0)
    printf("%d",item[index]);
    else
    printf(" %d",item[index]);
  }
  system("pause");
  return 0;
} 

2.設計思路

(1)算法

第一步:輸入兩個正整數元素個數N,右移位數M

第二步:按照順序輸入各個整數存入num[N]中

第三步:循環變量i=0

第四步:若i>=N,跳到第七步

第五步:若i+M>=N,則項item[(i+M) mod N]=num[i],否則item[i+M]=num[i]

第六步:i++,跳到第四步

第七步:輸出item[index],第二個數前輸出一個空格

(2)流程圖

3.本題調試過程碰到問題及解決辦法

問題:沒有考慮M比N大的情況

解決辦法:當前值的下標與M和的餘數剛好是輸出值的下標,不管M是不是N的倍數都是一樣的

Git地址:https://git.coding.net/MemoriesBook/123.git

個人總結

本週學習了一維數組和二維數組,了解了二維數組的框架結構,如同行和列的數字的排列,下標還是和一維數組一樣的0到n-1,二維數組可以存放矩陣一類的數字,還可以進行矩陣的運算以及各種變換,其中有點難懂的是選擇法排序和冒泡法排序容易搞混,現在還不是很理解選擇法排序的意思,暫時先記住格式,寫在書上。

董欣的博客地址:

董雅潔的博客地址:

馮子旋的博客地址:

代碼行數 時間 博客字數 時間 涉及的知識點
200 11.20 10 4 數組
100 11.21 10 4.5 數組
100 11.22 300 2 if語句、循環結構
200 11.23 50 3 數組
100 11.24 50 1.5 數組
200 11.25 100 2.5
300 11.26 100 3 無 
300 11.27 0 2.5 二維數組 
100 11.28 0 3.5 二維數組 
200 11.29 60 5 二維數組 
100 11.30 60 1 二維數組 
300 12.1 90 2 二維數組 
300 12.2 100 1.5 二維數組 

时间: 2024-10-23 10:26:04

第14、15週PTA題目的處理的相关文章

PTA題目的處理(三)

题目7-1 高速公路超速處罰 1.實驗代碼 #include <stdio.h> //#include <stdlib.h> int main() { int csp,lsp; double percent; scanf("%d %d",&csp,&lsp); if(csp<=lsp) { printf("OK\n"); } else { percent=((csp-lsp)*1.0f)/lsp; if(percent&

LINUX块设备驱动&lt;12/13/14/15&gt;

第 12章 +---------------------------------------------------+ |                 写一个块设备驱动                   | +---------------------------------------------------+ | 作者:赵磊                                         | | email: [email protected]             

js如何判断一组数字是否连续,得到一个临时数组[[3,4],[13,14,15],[17],[20],[22]];

var arrange = function(arr){ var result = [], temp = []; arr.sort(function(source, dest){ return source - dest; }).concat(Infinity).reduce(function(source, dest){ temp.push(source); if(dest-source>1){ result.push(temp); temp = []; } return dest; });

多线程-线程一打印1,2,3,4,5线程二打印6,7,8,9,10,线程三打印11,12,13,14,15,...直到45结束

多线程-线程一打印1,2,3,4,5线程二打印6,7,8,9,10,线程三打印11,12,13,14,15,...知道45结束 public class Exam3{ public static void main(String[]args){ MyThread t1=new MyThread("线程一"); MyThread t2=new MyThread("线程二"); MyThread t3=new MyThread("线程三"); t1.

剑指offer19:按照从外向里以顺时针的顺序依次打印出每一个数字,4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

1 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 2 思路和方法 直接定义一个矩形,在矩形的四条边取值,程序大大简化. 3 核心代码 1 class Solution { 2 public: 3 vector<int> printMatrix(vector<

一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值

'''一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值''' l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]] def get(seq): for item in seq: if type(item) is list: get(item) else: print(item) get(l) 原文地址:https://www.cnblogs.com/

NIO.2: 目錄的處理

檔案系統的 I/O,除了前幾篇所說明的檔案相關處理外,另一個主題就是目錄的處理 - 讀取.走訪.過濾檔案等,說明如下: 取得根目錄 1 package idv.steven.nio2.filedir; 2 3 import static java.lang.System.out; 4 import java.nio.file.FileSystems; 5 import java.nio.file.Path; 6 import java.util.ArrayList; 7 8 public cla

在 Windows 上遇到非常多 TIME_WAIT 連線時應如何處理

我們公司所代管的網站裡,有幾個流量是非常大的,在尖峰的時刻同時上線人數可能高達數千到數萬人,而在這個時候如果使用 netstat 或 TCPView 查看所有 TCP 連線時就會看到非常多處於 TIME_WAIT 狀態的連線,平時就會多達數千條 TIME_WAIT 連線之多,尖峰的時候還有一萬多條 TIME_WAIT 連線的狀況,雖然這些連線目前還不致於造成連線發生問題,但基於一股好奇心才決定研究到底查探個究竟,深入研究後才得知這問題現在不處理,等網站流量在大一些的時候那就會出亂子了! 以下是用

C++ 檔案、資料夾、路徑處理函式庫:boost::filesystem

原帖:https://tokyo.zxproxy.com/browse.php?u=uG7kXsFlW1ZmaxKEvCzu8HrCJ0bXIAddA1s5dtIUZ%2FYzM1u9JI7jjKLTXvXJlIqeavUo1Ak%3D&b=6 如果要在 C++ 裡對特定的檔案做存取,其實透過 STL 的 fstream(參考)來做,一般是不會有什麼問題的:相對的,問題比較大的部分,可能會是在於對於資料夾(folder.directory)的處理,以及對於路徑的操作上.像是以路徑來說,Windo