C語言部落格作業--資料類型

來源:互聯網
上載者:User

標籤:dex   sum   失敗   異或   換行   表達   .com   畫圖   多次   

一、PTA實驗作業題目1:7-4 列印菱形圖案1. 本題PTA提交列表

2. 設計思路
  • 定義變數n,s,i,j,n表示菱形長度
  • 輸入n;s=n/2+1;
  • 上半部分菱形for(i=1;i<=s;i++) //從1到s行;
    for(j=0;j<s-i;j++) //第i行,輸入的空格數與s和i的關係,注意每次輸出兩個空格;
    printf(" ");
    for(j=0;j<i2-1;j++) //輸入星號與i的關係,格式為星號+空格
    printf("
    ");
  • 每次迴圈結束後換行;
  • 下半部分菱形for(i=1;i<=n/2;i++) //餘下n/2行另外算
    for(j=0;j<i;j++)
    printf(" ");
    for(j=0;j<(n/2-i)2+1;j++)
    printf("
    ");

    3.代碼

    4.本題調試過程碰到問題及PTA提交列表情況說明
  • 提交列表顯示格式錯誤和部分正確,在Dev c上運行,輸出的菱形不對稱;
  • 用#號代替空格觀察菱形的格式,發現輸出*號之前輸出的空格數不對,在第s行開頭應該沒有空格輸出,將j<=s-i和j<=i改為j<s-i和j<i
  • 發現輸出*號前輸出的空格數還是不對,少了一倍,所以將每次輸出一個空格改為每次輸出兩個空格,得到正確結果

    題目2:7-7 發紅包1. 本題PTA提交列表

    2. 設計思路
  • 定義數組a[7]={100,50,20,10,5,2,1}表示面值,數組b[7]={0}表示各面值的張數,定義變數money表示面值,定義i;
  • 輸入money
  • for(i=0; i<7;i++) 此迴圈用於計算各面值的張數
    {
    b[i]=money/a[i]; 計算面值a[i]的張數,並記錄在b[i]
    money-=a[i]*b[i]; 減去已取的金額,money為下一次迴圈的金額
    printf("%3d元:%3d張\n", a[i], b[i]);
    }

    3.代碼

    4.本題調試過程碰到問題及PTA提交列表情況說明
  • 一開始沒有用數組進行編程,而是用了七個for語句,提交結果顯示運行逾時,Dev c上也運行不了;
  • 改用數組做,提交顯示格式錯誤,編譯器上運行結果排版錯誤,題目要求嚴格按個位對齊;
  • 將輸出語句該為%3d,每個數值佔三位,得到正確結果

    題目3:7-10 簡單計算機1. 本題PTA提交列表

    2. 設計思路
  • 定義變數char ch=‘0‘ ,int i,sum,flag=0,flag用於判斷被除數為零和非法字元
  • 輸入初始數值sum
  • 進入迴圈while(ch!=‘=‘){ 輸入ch
    如果ch==‘=‘,迴圈結束;
    輸入數值i;
    如果ch==‘+‘,sum=sum+i
    如果ch==‘-‘,sum=sum-i
    如果ch==‘‘,sum=sumi
    如果ch==‘/‘,當i!=0時,sum=sum/i,否則flag=1
    否則flag=1
  • 如果flag=1,輸出ERROR;否則輸出sum

    3.代碼

    4.本題調試過程碰到問題及PTA提交列表情況說明
  • 提交多次部分正確,提示錯誤為非法字元的處理不正確,在Dev c上運行結果也不對;

  • 發現自己用的都是if語句,忽略了非法字元的判斷,最後改用if , else if的結構,在判斷完加減乘除的後面,用else判斷非法字元,若為非法字元,flag=1
    得到正確答案;

    二、本周題目集的PTA最後排名

    三、本周學習總結1.你學會了什嗎?1.1 一維數組如何定義、初始化?
  • 定義數組:一般形式為 類型名 數組名 [數組長度]
  • 數組的初始化:類型名 數組名 [數組長度]={初值表},從下標為0開始逐一對應,靜態數組沒有初始化,所有元素均為0

    1.2 一維數組在記憶體中結構?可畫圖說明。數組名表示什嗎?
  • 一維數組:
  • 數組名是一個地址常量,存放數組記憶體空間的首地址

    1.3 為什麼用數組?
  • 數組是最基本的構造類型,它是一組相同類型資料的有序集合。在程式中使用數組,可以讓一批相同類型的變數使用同一個陣列變數名,用下標加以區分,它的有點是表達簡潔,可讀性好,便於使用迴圈結構

    1.4 介紹選擇法、冒泡法、直接插入排序如何排序?虛擬碼展示.
  • 選擇排序法:1)輸入n,數組a[n]
    2)for(k=0;k<n-1;k++){
    index=k; //index用於存放最小值所在下標
    for(i=k+1;i<n;i++) //尋找最小值所在下標
    if(a[i]<a[index]) index=i
    temp=a[index];a[index]=a[k];a[k]=temp; } //最小元素與下標為k的元素交換
    3)依次輸出n個數組元素的值
  • 冒泡排序法:1)輸入n,數組a[n]
    2)for (k=0; k< n-1; k++) {
    for (i=0; i<n-k-1; i++) { //比較相鄰元素
    if a[i]>a[i+1]) { //如果前面大於後面,下標不變,交換元素的值
    temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp;}}
    3)依次輸出n個數組元素的值
  • 直接插入排序法:1)輸入n,數組a[n]
    2)for (k=1; k< n; k++) {
    temp=a[k]; //用來臨時儲存將要進行插入操作的元素temp
    for (i=k-1; i>=0&&a[i]>temp; j--) { //尋找插入位置並移動元素
    a[i+1]=a[i];}
    a[i+1]=temp; } 將tmp插入到尋找到的位置i+1
    3)依次輸出n個數組元素的值

    1.5 介紹什麼是二分尋找法?它和順序尋找法區別?
  • 二分尋找的基本思想是將n個元素分成大致相等的兩部分,取a[n/2]與x做比較,如果x=a[n/2],則找到x,演算法中止;如果x<a[n/2],則只要在數組a的左半部分繼續搜尋x,如果x>a[n/2],則只要在數組a的右半部搜尋x.
  • 區別:順序尋找的特點就是從表的第一個元素開始一個一個向下尋找,如果有和目標一致的元素,尋找成功;如果到最後一個元素仍沒有目標元素,則尋找失敗;而二分尋找法是從中間開始尋找,逐步縮小範圍,對於大資料的處理比較適用,減少了迴圈次數,效率更高;

    1.6 二維數組如何定義、初始化?
  • 二維數組的定義:類型名 數組名 [行長度] [列長度]
  • 初始化:分行賦初值:類型名 數組名 [行長度] [列長度]={ {初值表0},..... ,{初值表k},...... },把初值表k中的數值依次賦給第k行;
    順序賦值法:類型名 數組名 [行長度] [列長度]={初值表},依次賦值;

    1.7 矩陣轉置怎麼實現?方陣中:下三角、上三角、對稱矩陣的行標i列標j的關係?
  • 矩陣轉置:for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    if(i<=j){
    temp=a[i][j];a[i][j]=a[j][i];a[j][i];}
  • 下三角:i>=j 上三角:i<=j 對稱:i==j 或 i+j==N-1

    1.8 二維數組一般應用在哪裡?
  • 有一系列元素時用一維數組,如果這些元素有一定的位置邏輯,如矩陣,就用二維數組

    2.本周的內容,你還不會什嗎?
  • pta題目中第九題切分運算式——寫個tokenizer吧還不會做,我的做法是首先用迴圈輸入一個合法運算式,直到輸入=,接著再用迴圈拆分運算式並輸出,但是,在輸出完數字之後怎麼換行不會,所以每次輸出完之後還會再輸出一個字元,再換行,問題還沒有解決;以下My Code,望大佬幫忙
  • 還有這次期中測試,發現很多電腦基本理論和一些邏輯運算還不懂,尤其是位元運算,與、或、異或等等;
  • 對二位元組的應用還不太瞭解,與迴圈結合常用於解決那些問題?

C語言部落格作業--資料類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.