算法學習之循環結構程序設計

for循環
打印1,2,3,...,n每個占一行。

復制代碼
#include <conio.h>
#include<stdio.h>
int main(){int i,n;scanf("%d",&n);for(i=1;i<=n;i++){printf("%d\n",i);}getch();return 0;
}
復制代碼


分支結合循環,威力很強大
輸出所有形如aabb的四位完全平方數。
分析:先全部列出來,然后開根,看是否為整數。其中a可以從1到9,
b可以從0到9。如何組成aabb呢?
a*1100+b*11即可。
偽代碼可以開拓思路。
下面來實現它

復制代碼
#include <conio.h>
#include<stdio.h>
#include<math.h>
int main(){int a,b,n;double m;for(a=1;a<=9;a++){for(b=0;b<=9;b++){n = a*1100+b*11;m = sqrt(n);if((int)m == m){//判斷是否為整數printf("%d\n",n);}}}getch();return 0;
}
復制代碼

另一個思路是枚舉平方根x,從而避免開平方操作。

復制代碼
#include <conio.h>
#include<stdio.h>
#include<math.h>
int main(){int x,n,high,low;for(x = 1;;x++){n = x*x;if(n<1100) continue;//跳過本次循環if(n>9999) break;//結束本次循環,這一句很重要high = n / 100;//獲取高位,技巧low = n  % 100;//獲取低位,技巧啊,余下的不滿足100的就是低位的數字if(high/10 == high%10&&low/10 == low%10){//前兩位相同,后兩位相同,則滿足條件printf("%d\n",n);}}getch();return 0;
}
復制代碼

這個效率貌似不如第一個高!執行的時間比較久,如果沒有終止操作,不知道要執行多久呢!
這個大概就是算法的復雜度吧!一定要有意識提高代碼的效率!

3n+1問題
猜想:對于任意大于1的自然數n,若n為奇數,則將n變為3n+1,否則變為n的一般。經過若干次這樣的變換,
一定會使n變為1。例如3->10->5->16->8->4->2->1。
輸入n,輸出變換的次數。n<=10的9次方。
樣例輸入:3
樣例輸出:7
分析:程序完成工作依然是重復性勞動,循環的次數是不確定的,而且n不是遞增的循環。可以考慮用
while條件式的循環來實現。

復制代碼
#include <conio.h>
#include<stdio.h>
int main(){int n,count = 0;//定義變量n,count并為count賦初值scanf("%d",&n);while(n>1){//只要n不等于1,這里n>0的整數,也就是只要n大于1,就執行操作if(n%2 == 1){//奇數n = 3*n+1;  }else{n = n/2;}count++;  }printf("%d\n",count);//不要忘記測試,一個看上去正確的程序可能隱含錯誤。//斷點輸出是很好的排錯方式//printf("%d\n",n);
    getch();return 0;
}
復制代碼

for與while的關系
"
for(初始化;條件;調整){
?? ?循環體
}
"
等價于
"
初始化
while(條件)
{
? 循環體;
? 調整;
}
"
階乘之和
輸入n,計算S = 1!+2!+3!+...+n!的末6位(不含前導0)。n<=10的6次方。
樣例輸入:10
樣例輸出:37913(其實總和為4037913)
分析:如何實現階乘呢?用一次循環唄。

復制代碼
#include <conio.h>
#include<stdio.h>
int main(){int n,i,j,S=0;scanf("%d",&n);for(i=1;i<=n;i++){int factorial = 1;//定義階乘,每次循環都被重新賦初值for(j=1;j<=i;j++){factorial *= j;}S += factorial;}S = S%1000000;//有幾個0就會剩下幾位//S = int(S);printf("%d\n",S);getch();return 0;
}
復制代碼

每步取模,加一個“計時器”,可以計算出時間復雜度。

輸入一些整數,求出它們的最小值、最大值和平均值(保留3位小數)。輸入保證這些數都是不超過1000的整數。
樣例輸入:2 8 3 5 1 7 3 6
樣例輸出:1 8 4.375

復制代碼
#include <conio.h>
#include<stdio.h>
#define INF 1000000000
int main(){int x,n = 0,min = INF,max = -INF,s=0;while(n!=8&&scanf("%d",&x) == 1){s += x;if(x<min) min = x;if(x>max) max = x;n++;}printf("%d %d %.3lf\n",min,max,(double)s/n);getch();return 0;
}
復制代碼

下面將其改造成讀文件,寫文件的形式

復制代碼
#define LOCAL
#include <conio.h>
#include<stdio.h>
#define INF 1000000000
int main(){//讀取文件
    #ifdef LOCALfreopen("in.txt","r",stdin);freopen("out.txt","w",stdout);#endifint x,n = 0,min = INF,max = -INF,s=0;while(n!=8&&scanf("%d",&x) == 1){//如果前面不通過,就不執行后面的內容了s += x;if(x<min) min = x;if(x>max) max = x;/*printf("x = %d,min = %d,max = %d\n",x,min,max);*/n++;}printf("%d %d %.3lf\n",min,max,(double)s/n);getch();return 0;
}
復制代碼

讀取當前文件夾下的in.txt
并將結果輸出到out.txt中

輸出2,4,6,8...2n
方法1

復制代碼
#include <conio.h>
#include<stdio.h>
int main(){int i,n;scanf("%d",&n);for(i=2;i<=2*n;i+=2){printf("%d\n",i);}getch();return 0;
}
復制代碼


方法2

復制代碼
#include <conio.h>
#include<stdio.h>
int main(){int i,n;scanf("%d",&n);for(i=1;i<=n;i++){printf("%d\n",2*i);}getch();return 0;
}
復制代碼

浮點陷阱

復制代碼
#include <conio.h>
#include<stdio.h>
int main(){double i;for(i=0;(int)i!=10;i+=0.1)//如果不加(int)就永遠不會等于10,程序永遠不停止!
    {printf("%.1lf\n",i);}getch();return 0;
}
復制代碼


C++中的輸入輸出
方式1

復制代碼
#include <conio.h> //C++中保留了C語言中常用的頭文件,如果你愿意,可以繼續使用stdio.h
#include<cstdio>//功能和C中的stdio.h很接近
using namespace std; //C++特有的單行注釋,可以和C中傳統注釋/**/混合使用
int main(){int a,b;while(scanf("%d%d",&a,&b)==2){printf("%d\n",a+b);}getch();return 0;
}
復制代碼


方式2(用iostream)

復制代碼
#include <conio.h> //C++中保留了C語言中常用的頭文件,如果你愿意,可以繼續使用stdio.h
#include<iostream>//C++中的輸入輸出頭文件
using namespace std; //C++特有的單行注釋,可以和C中傳統注釋/**/混合使用
int main(){int a,b;while(cin>>a>>b){//張嘴送給cincout<<a+b<<"\n";//張嘴送給a+b
    }getch();return 0;
}
復制代碼


C++中讀取文件

復制代碼
#include <conio.h>
#include<fstream>
using namespace std;
ifstream fin("in.txt");
ofstream fout("out.txt");
int main(){int a,b;while(fin>>a>>b){//張嘴送給cinfout<<a+b<<"\n";//張嘴送給a+b
    }getch();return 0;
}


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282729.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282729.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282729.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux常用命令 (分門別類)

一、系統安全: su: 用于切換當前用戶身份到其他用戶身份&#xff0c;變更時須輸入所要變更的用戶帳號與密碼 sudo: 用來以其他身份來執行命令&#xff0c;預設的身份為root lastlog: 用于顯示系統中所有用戶最近一次登錄信息 lastb: 用于顯示用戶錯誤的登錄列表&#x…

hibernate自定義校驗器使用(字段在in范圍之內)

2019獨角獸企業重金招聘Python工程師標準>>> 1.自定義注解類DigitsMustIn Constraint(validatedBy DigitsMustInValidator.class) //具體的實現 Target({java.lang.annotation.ElementType.METHOD,java.lang.annotation.ElementType.FIELD}) Retention(java.lang.a…

sql將html轉成excel,使用SQL*PLUS,構建完美excel或html輸出

通過SQL*PLUS我們可以構建友好的輸出&#xff0c;滿足多樣化用戶需求。本例通過簡單示例&#xff0c;介紹通過sql*plus輸出xls&#xff0c;html兩種格式文件.首先創建兩個腳本:1.main.sql用以設置環境&#xff0c;調用具體功能腳本2.功能腳本-get_tables.sql為實現具體功能之腳…

[cogs347]地震

COGS&#xff1a;地震&#xff08;平衡樹&#xff09; COGS上一道題。。。文件名是equake 還是又打了一遍板子。。。 加個lazy標記就行了。。。 注意查詢時先下傳標記&#xff08;lazy&#xff09; // It is made by XZZ #include<cstdio> #include<algorithm> #de…

第八課-第二講 08_02_bash腳本編程之七 case語句及腳本選項進階

第八課-第二講 08_02_bash腳本編程之七 case語句及腳本選項進階 一. 面向過程控制結構順序結構選擇結構循環結構選擇結構if語句 單分支&#xff0c;雙分支&#xff0c;多分支case 語句 case語句:選擇結構 case SWITCH invalue1)---此處的value是當做字符來比較的statement....…

html表單提交按鈕怎么居中,與表單框一致,居中提交按鈕_html_開發99編程知識庫...

我嘗試將提交按鈕與表單的一個條目對齊失敗。 我只是希望提交按鈕稍微定位到窗體框的右側和中心。 現在是右邊&#xff0c;但在盒子的底部。我試圖回答相似的查詢&#xff0c;對於提交按鈕( 浮點&#xff0c;margin 等等 )&#xff0c;但是我不能找到正確的選擇。我的HTML如下所…

一個簡單的WebService服務

現在&#xff0c;網上提供的免費的webservice服務的網站&#xff1a; http://www.webxml.com.cn/從擴展名上看&#xff0c;是 .net構建的網站。看看功能的實現效果&#xff1a;需求&#xff1a;我們要遠程調用手機號歸屬地的查詢&#xff1a;開發步驟&#xff1a; 1&#xff0e…

Linux中的vi和vim

一、vi與vim的概念和區別 概念: 它們都是多模式編輯器&#xff0c;不同的是vim 是vi的升級版本&#xff0c;它不僅兼容vi的所有指令&#xff0c;而且還有一些新的特性在里面。 vim優勢主要體現在一下幾方面: 1、多級撤消 我們知道在vi里&#xff0c;按 u只能撤消上次命令&a…

[工具分享]備份SSAS模型TMSL腳本元數據工具,多給自己一點后悔藥可吃。

筆者在2019年分享過自己寫的一個小工具&#xff0c;用于備份Sqlserver數據庫的元數據。近期在一個PowerBI項目中&#xff0c;發現很有必要也備份下SSAS分析模型的元數據&#xff0c;防止不小心服務器壞了或使用Tabular Editor連接數據庫方式開發過程中&#xff0c;不小心覆蓋了…

UVA - 11181 數學

UVA - 11181 題意&#xff1a; n個人去買東西&#xff0c;其中第i個人買東西的概率是p[i],最后只有r個人買了東西&#xff0c;求每個人實際買了東西的概率 代碼&#xff1a; //在r個人買東西的概率下每個人買了東西的概率&#xff0c;這是條件概率&#xff0c;因為最多20個人可…

js時間戳轉成日期格式

//第一種2 function getLocalTime(nS) { 3 return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/, ); 4 } 5 alert(getLocalTime(1293072805));6 //結果是2010年12月23日 10:537 //第二種 8 function getLocalTime(nS) { 9 r…

計算機桌面去方格子,win7桌面office圖標變成白色方格圖標的原因和解法

win7系統開機發現桌面上所有office圖標變成白色方格圖標&#xff0c;其他程序圖標都正常顯示&#xff0c;是怎么回事呢&#xff1f;出現這樣的情況&#xff0c;一般是由于文件圖標緩存錯誤或者丟失導致&#xff0c;找打原因后該如何解決問題&#xff1f;可以通過記事本來解決此…

JS獲取元素的offsetTop,offsetLeft等相關屬性

1. obj.clientWidth //獲取元素的寬度 obj.clientHeight //元素的高度 obj.offsetLeft //元素相對于父元素的left obj.offsetTop //元素相對于父元素的top obj.offsetWidth //元素的寬度 obj.offsetHeight //元素的高度 區別&#xff1a; clientWidth width padding clientHe…

vi/vim 三種模式及命令 (簡單粗暴,輕松搞懂)

//一般模式(默認模式) 一般模式&#xff1a; 移動光標 h 或 向左方向鍵 光標向左移動一個字符 j 或 向下方向鍵 光標向下移動一個字符 k 或 向上方向鍵 光標向上移動一個字符 l 或 向右方向鍵 光標向右移動一個字符 [Ctrl] [f] 屏幕『向前』移動一頁&#xff08;常用) [Ct…

Kong入門學習實踐(1)基礎概念快覽

【API網關】| 總結/Edison Zhou最近在學習Kong網關&#xff0c;因此根據老習慣&#xff0c;我會將我的學習過程記錄下來&#xff0c;一來體系化整理&#xff0c;二來作為筆記供將來翻看。由于我司會直接使用Kong企業版&#xff0c;學習過程中我會使用Kong開源版。什么是Kong&am…

條件鎖

ReentrantLock類有一個方法newCondition用來生成這個鎖對象的一個條件&#xff08;ConditionObject&#xff09;對象&#xff0c;它實現了Condition接口。Condition提供了線程通訊的一套機制await和signal等線程間進行通訊的方法。。1、適用場景當某線程獲取了鎖對象&#xff0…

計算機應用技術 平面設計,全國信息化計算機應用技術水平教育考試試卷 平面設計師...

科目編號&#xff1a;4233全國信息化計算機應用技術水平教育考試試卷(考試時間&#xff1a;180分鐘 考試總分&#xff1a;100分 專業認證課程&#xff1a;Photoshop 平面設計)注意事項1、 請首先按要求在試卷的標封處填寫您的姓名、考號等&#xff1b;2、 請仔細閱讀各種題目的…

RabbitMQ之消息模式簡單易懂,超詳細分享

前言上一篇對RabbitMQ的流程和相關的理論進行初步的概述&#xff0c;如果小伙伴之前對消息隊列不是很了解&#xff0c;那么在看理論時會有些困惑&#xff0c;這里以消息模式為切入點&#xff0c;結合理論細節和代碼實踐的方式一起來學習。正文常用的模式有Simple、Work、Fanout…

每天一個linux命令(6):rmdir 命令

今天學習一下linux中命令&#xff1a; rmdir命令。rmdir是常用的命令&#xff0c;該命令的功能是刪除空目錄&#xff0c;一個目錄被刪除之前必須是空的。&#xff08;注意&#xff0c;rm - r dir命令可代替rmdir&#xff0c;但是有很大危險性。&#xff09;刪除某目錄時也必須具…

jvm系列(八):jvm知識點總覽

在江湖中要練就絕世武功必須內外兼備&#xff0c;精妙的招式和深厚的內功&#xff0c;武功的基礎是內功。對于武功低&#xff08;就像江南七怪&#xff09;的人&#xff0c;招式更重要&#xff0c;因為他們不能靠內功直接去傷人&#xff0c;只能靠招式&#xff0c;利刃上優勢來…