




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言作業解析——第三彈寄語:本次作業比較變態。。涉及到一些初等的算法整理ppt11級第四次作業---刪數問題1.【問題描述】輸入一個高精度的大正整數S(S最長可達240位),去掉其中任意N位數字后剩下的數字按原次序組成一個新的正整數S’。編程對給定的N和S,尋找一種方案使得剩下的數字組成的新數S’最小。
【輸入形式】輸入有兩行:
1.第一行是大整數S。其中S最長可達240位。
2.第二行是整數N。S、N均以非0數字開頭。
【輸出形式】輸出有一行,是在S中刪除N位后所得的最小數字S’。
【樣例輸入1】
178543
4
【樣例輸出1】13【樣例輸入2】
1002
1
【樣例輸出2】002【樣例說明】樣例1中輸入整數S=178543,N=4,要求在178543中刪除4位,使剩下的數字最小。正確答案為S’=13。樣例2中輸入整數S=1002,N=1,刪完一位后S’=002,而不是2,即2之前的0也必須輸出。
【運行時限】程序一次運行的最長時間限制在15秒內,超出則認為程序錯誤。
【評分標準】該題要求輸出一個大整數的各位數字。結果完全正確得20分,每個測試點4分。上傳C語言文件名為delete.c。整理ppt本題解析:這道題主要的障礙存在于兩個方面:1.怎么讀入2.怎么刪。讀入的話簡單的說就是將一個數以字符串的形式存儲下來然后通過字符串處理對數字的每一位進行操作。刪除的方式比較精髓。這里介紹一個比較容易懂的方法:每次刪除都搜索第一個第i位比第i+1位大的,然后把第i位刪掉。重復m次就可以得到最優解了。
整理ppt#include<stdio.h>#include<string.h>intmain(){chars[245];inti,j,k;intn,m;scanf("%s",s);scanf("%d",&m);n=strlen(s);/*這里是上面string.h中的函數,就是求s的長度的意思*/for(i=1;i<=m;i++)/*總共刪m個數*/{for(j=0;j<=n-1;j++)/*從頭到尾掃描*/{if(s[j]>s[j+1])/*如果這個數比下一個數大那么這個數要刪掉*/{for(k=j;k<=n;k++)/*刪除操作*/s[k]=s[k+1];break;/*刪除結束退出掃描,繼續刪除下一個數*/}}}printf(“%s”,s);/*輸出*/}整理ppt11級第四次作業---擴展字符2.【問題描述】
編寫一函數expand(s1,s2),用以將字符串s1中的縮記符號在字符串s2中擴展為等價的完整字符,例如將a-d擴展為abcd。該函數可以處理大小寫字母和數字,并可以處理a-b-c、a-z0-9與-a-z等類似的情況。在main函數中測試該函數:從鍵盤輸入包含縮記符號的字符串,然后調用該函數進行擴展,輸出擴展結果。
(教材P63:Exercise3-3)注意:待擴展字符串中有可能包含空格,例如:a-dx-z應擴展成:abcdxyz。所以讀入待擴展字符串時,應能夠讀入包含空格的字符串。只要縮記符號-之后的字符比之前的字符的ASCII碼值大,就要將它們之間的所有字符擴展出來,例如:Z-a之間的字符也要擴展出來;特殊情況:a-b-c將被擴展為:abc。a-a將被擴展為:a-a。
【輸入形式】
從鍵盤輸入包含擴展符的字符串
【輸出形式】
輸出擴展后的字符串
【輸入樣例】
a-c-u-B
【輸出樣例】
abcdefghijklmnopqrstu-B
整理ppt本題解析:這個題目乍一看比較麻煩。。其實是這次作業中比較簡單的題目之一。因為特殊的字符只有一個,那就是‘-’,只要判斷好’-’這個題目就完成了。這個方法比較樸素,就是用一個flag來表示前一個字符是不是‘-’如果不是‘-‘那么就輸出這個字符,如果是的話就進行判斷,判斷這個字符跟’-‘前字符的關系,如果這個字符≤’-‘前字符,那就輸出’-‘在輸出這個字符。否則的話就從‘-’前字符到這個字符循環輸出即可。整理ppt#include<stdio.h>#include<string.h>voidexpands(chars1[],chars2[]);intmain(){chars1[200],s2[200];gets(s1);/*讀入*/expands(s1,s2);printf("%s",s2);}/*這個程序寫的微微有些長,下頁還有*/整理pptvoidexpands(chars1[],chars2[]){intflag;charj;inti,l;intsum=-1;l=strlen(s1);/*確定字符串長度*/flag=0;for(i=0;i<l;i++){if(s1[i]==‘-’){flag=1;continue;}/*如果這個字符是‘-‘那么將flag賦值為1*/if(!flag)/*如果flag為0的話*/{sum++;s2[sum]=s1[i];}/*直接輸出*/elseif(s1[i]<=s1[i-2])/*否則如果這個字符比’-‘前的字符小*/{sum+=2;s2[sum-1]=‘-’;s2[sum]=s1[i];}/*就先打一個’-‘再打這個字符*/else/*否則的話就應該從前一個字符打印到這個字符*/{for(j=s1[i-2]+1;j<=s1[i];j++)/*這里注意,前一個字符已經存在于數組中了就不需要再打印了,所以是從s1[i-2]+1開始而不是s1[i-2]*/{sum++;s2[sum]=j;}flag=0;}}s2[sum+1]=‘\0’;/*在字符串的最后放一個’\0’表示結束*/}整理ppt寄語:這個題寫起來比較繁瑣。可能理解起來有些困難。有能力的同學可以分步調試一下來查看結果。實在不會的話就去中408找我吧~整理ppt11級第四次作業---矩陣運算3.【問題描述】
對于多個N階矩陣,依次進行加、減運算?!据斎胄问健?/p>
從標準輸入讀取輸入。第一行只有一個整數N(1≤N≤10),代表矩陣的階數。
接下來是一個矩陣,是N行,每行有N個整數(可能是正、負整數),是矩陣的所有元素。
然后一行只含一個字符“+”或“-”,代表加、減操作。
然后用同樣的方式輸入另一個矩陣。
后續仍然是運算符和矩陣。直至運算符為“#”時停止計算,將結果輸出。
【輸出形式】
向標準輸出打印矩陣的操作結果。輸出N行,每行對應矩陣在該行上的所有元素,每一行末均輸出一個回車符。每個元素占5個字符寬度(包括負號),向右對齊,不足部分補以空格。
整理ppt【輸入樣例】
3
1-27
28-5
369
+
357
-126
3710
-
1-27
28-5
369
#【輸出樣例】
(下圖中”-”代表空格)
####3####5####7
###-1####2####6
####3####7###10
整理ppt本題解析:這個題。。乍一看嚇一跳。。其實仔細讀題以后發現這個題是比較水的。。首先是題目敘述問題:樣例輸出中(下圖中”-”代表空格)
應該是打錯了…其實是’#’代表空格。。然后矩陣加法就是把矩陣中對應的元素相加,減法就是對應的元素相減。比如說答案中第一行第一個數的3就是1+3-1得到的…整理ppt#include<stdio.h>intmain(){intn;ints[10][10];inti,j,k;charch;scanf("%d",&n);for(i=0;i<n;i++)for(j=0;j<n;j++)scanf(“%d”,&s[i][j]);/*讀入矩陣*/while(1){ch=getchar();/*這里兩次getchar()的原因是讀完矩陣中的數后行尾還有一個’\n‘,這時再讀入讀入的才是’+’’-’或者’#’*/ch=getchar();
if(ch=='#'){for(i=0;i<n;i++){for(j=0;j<n;j++)printf(“%5d”,s[i][j]);/*%5d,輸出5位位數不足的用空格補齊*/printf("\n");}return0;/*退出*/}for(i=0;i<n;i++)for(j=0;j<n;j++){/*這里是進行加減操作*/scanf("%d",&k);if(ch=='+')s[i][j]+=k;elses[i][j]-=k;}}}整理ppt由于題目難度增加,可能有些程序不能夠在一頁以內打完。所以可能看起來稍微費勁,見諒~整理ppt11級第四次作業---魔方陣4.【問題描述】輸入一個自然數N(1≤N≤9),要求輸出如下的魔方陣,即邊長為2*N-1,N在中心出現一次,其余位置上的數字從外向中心逐漸增大。
N=3時:
11111
12221
12321
12221
11111
N=4時:
1111111
1222221
1233321
1234321
1233321
1222221
1111111
【輸入形式】從標準輸入讀取一個整數N。
【輸出形式】向標準輸出打印結果。輸出符合要求的方陣,每個數字占一個字符寬度,在每一行末均輸出一個回車符。
整理ppt本題解析:這個題有多種做法。其中一種做法是將這個大矩陣看做是n個正方形疊放在一起的,最后看每個位置的重疊次數就可以了。面積重疊的計算方法也可以去看第三次作業的矩陣相交的那個題?;疽粯诱韕pt#include<stdio.h>intmain(){intn;inti,j,k;ints[20][20];scanf("%d",&n);for(i=0;i<=19;i++)for(j=0;j<=19;j++)s[i][j]=0;/*數組初始化*/for(i=1;i<=n;i++)/*一共n個正方形*/for(j=i;j<=2*n-i;j++)/*邊坐標從i到2*n-i*/for(k=i;k<=2*n-i;k++)s[j][k]+=1;/*進行過面積填充*/for(i=1;i<=2*n-1;i++){for(j=1;j<=2*n-1;j++)printf(“%d”,s[i][j]);/*輸出*/printf("\n");}}整理ppt11級第四次作業---文件拷貝25.【問題描述】
寫一程序將一個文件fcopy.in拷貝至另一個文件fcopy.out,其中在所拷貝的文件中,多個連續空白符(包括空格符、制表符)只拷貝一個空格符,其它字符不變。
【輸入形式】
源文件名和目標文件名分別為fcopy.in和fcopy.out,程序將從當前目錄下讀取fcopy.in文件。
【輸出形式】
將fcopy.in文件內容拷貝至當前目錄下的fcopy.out文件中。在所拷貝的文件中,多個連續空白符(包括空格符、制表符)只拷貝一個空格符,若非空白符之間有一個制表符,則該制表符也要替換為空格符,其它字符不變。
【輸入樣例】
假如文件fcopy.in中內容如下:
Alcatel
provides
end-to-endsolutions.
【輸出樣例】
輸出文件fcopy.out中內容為:
Alcatelprovidesend-to-endsolutions.
【樣例說明】
將文件fcopy.in拷貝到fcopy.out,同時做適當的轉換。
【評分標準】
其中在所拷貝的文件中,多個連續空白符(包括空格符、制表符)只拷貝一個空格符,其它字符不變,完全符合要求得20分,每個測試點4分。提交程序名為copy.c。整理ppt本題解析:這里涉及到文件輸入輸出。慚愧的是…某個人上課沒好好聽文件。就用了一種比較方便的方法,先介紹一下,使用與否看各位喜好了~不需要指針!scanf不用改成fscanf!…#include<stdio.h>Intmain(){freopen(“test.in”,”r”,stdin);/*打開輸入文件*/freopen(“test.out”,”w”,stdout);/*打開輸出文件*/
exit(0);/*關文件*/}整理ppt本題解析:這次是真的解析。這個題目比較好思考。就是一個字符一個字符的讀入。如果這個字符是空格或者’\t’的話就看它的上一個字符是不是空格或者’\t’如果是的話就不輸出,否則輸出一個空格。如果這個字符不是空格或者’\t’那么就直接將這個字符輸出就可以了。整理ppt#include<stdio.h>#include<string.h>intmain(){freopen("fcopy.in","r",stdin);freopen("fcopy.out","w",stdout);chars,s1;inti;s=getchar();while(s!=EOF)/*沒有讀完的時候繼續讀*/{if((s=='')||(s=='\t')){if((s1!='')&&(s1!='\t'))printf("");}elseprintf("%c",s);s1=s;s=getchar();}exit(0);}整理ppt11級第四次作業---括號匹配6.【問題描述】
假設一個輸入字符串中包含圓括號、方括號和花括號三種類型的括號,以及其它一些任意字符。編寫程序,判別串中的括號是否正確匹配,即:
1.
各種左、右括號的個數要一致;
2.
不能先出現右括號;3.其它規則暫不考慮,例如:(ad[ce)ef]
認為是正確的。
【輸入形式】
從當前目錄下correct.in文件中讀入一行字符串。字符串最大長度80,不含空格。
【輸出形式】
輸出到當前目錄下correct.out文件中。輸出只有一個單詞,如果括號匹配則輸出“True”到文件中,否則輸出“False”。在輸出末尾要有一個回車符。
整理ppt本題解析:這個題目由于是一個不完全的匹配也就是說([)]是合法的那么只需要三個變量來分別計算圓括號方括號和花括號。遇到左括號的時候那么對應的變量值加一,遇到右括號的時候對應的變量值減一,如果出現了某個變量值為-1的時候也就是說沒有出現左括號就出現右括號的時候表示不匹配。或者到了最后三個變量值中有一個不為0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業園區電氣系統設計與施工策略
- 工業大數據在制造業中的應用
- 工業安全與防護技術的發展
- 工業污染源的環境監測與管理
- 工業廢水處理廠的環境監控技術
- 工業污染控制與環境保護技術
- 工業生產中的事故分析與預防
- 工業綠色改造的途徑與策略
- 工業自動化與智能制造的探討
- 工業設計與智能制造技術
- 醫院常見消毒劑的使用
- 國開電大《流通概論》形考任務
- 肺癌圍手術期靶向治療
- 《中國企業在“一帶一路”沿線國投資風險分析及對策》12000字(論文)
- 【提分攻略·河北專用】《專題07 生物的遺傳和變異》中考生物大題(解析版)
- 新版建設工程工程量清單計價標準解讀
- 初中數學專題講座課件
- 中國當代文學專題-003-國開機考復習資料
- 國家開放大學礦井火災防治課程形成性考核作業1-4
- 幼兒園 中班語言繪本《章魚先生賣雨傘》
- 嬰幼兒發展引導員(育嬰員)職業技能競賽理論考試題庫(含答案)
評論
0/150
提交評論