1. 程式人生 > >for語句從1加到n

for語句從1加到n

原本的程式碼:

#include<stdio.h>
#include<stdlib.h>
/* for語句算1加到n.c */
/* written by Chen Gengru */
/* updated on 2018-11-1 */
int main()
{
	int i, iN, iTotal;
	i = 0;
	iTotal = 0;
	
	printf("請輸入n\n");
	
	scanf("%d", &iN);
	
	for (i; i<iN; i++)
	{
		iTotal = iTotal + i;
	}
	
	printf("得數為:%d\n", iTotal)
; return 0; }

除錯結果:第一段程式碼測試結果
問題出在哪裡?原來,程式在計算第二個表示式的之後,如果表示式的值為真,程式就執行迴圈體的內容,即:iTotal = iTotal + i; 再計算第三個表示式,即:i++。 因此,在判斷i == 99 < 100為真後,iTotal得到前99項之和4950,下一步i更改為100,此時第二個表示式的值為假,總和便不能再加100,導致錯誤。究其原因還是迴圈語句和第三個表示式執行計算的先後順序沒搞清

更改:

#include<stdio.h>
#include<stdlib.h>
/* for語句算1加到n.c */
/* written by Chen Gengru */
/* updated on 2018-11-1 */ int main() { int i, iN, iTotal; i = 0; iTotal = 0; printf("請輸入n\n"); scanf("%d", &iN); for (i; i<=iN; i++) { iTotal = iTotal + i; } printf("得數為:%d\n", iTotal); return 0; }

除錯結果:
第二次除錯結果

相關推薦

for語句1n

原本的程式碼: #include<stdio.h> #include<stdlib.h> /* for語句算1加到n.c */ /* written by Chen Gengru

編寫個1到100的程式 誰能用c語言中的for語句

程式執行結果如下: ||| #include<stdio.h>main() { int i i=1while(i<=100){s=s+i;i++;}printf("sum=%d/n" s);}方

用python實現1到100的三種方法: for迴圈,while迴圈,匯入模組法

第一種是for迴圈 def sumStartToEnd(start,end): sum = 0 for n in range(start,end+1,1): sum

計算1到100不使用迴圈和條件語句

解決該問題當然可以使用n個printf或cout,但這也太浪費體力了,但如果不能讓編譯器自己生成這麼多printf或cout,也許可以吧。 下面的解決分別從遞迴,巨集函式,類以及模板進行解決。 以下原始碼 #pragma once //遞迴解決, //遞迴結束條件:

1到100的演算法你會嗎?那第M到第N呢?

今天在看視訊教程的時候,聽到“楊中科”老師說有很多大公司,在面試的時候常常問一些基礎的東西,甚至常問你一些簡單到“變態”的題,對於我們做Web開發來說,突然問你一些演算法題,也許有好多人當時的腦子是空白的;楊老師說例如問到從1加到100的演算法,有很多程式設計師都寫不出來;今天在這裡,我用一種數學公式來算出這

Python解決 1n整數中1出現的次數

很好 time return 面試題 span mas 1=1 大於 獲取 最近在看《劍指Offer》,面試題32的題目:輸入一個整數n,求從1到n這n個整數的十進制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1、10、11和12,1

一道算法題-1n整數中1出現的次數

參考 操作 包括 amp blank 一位 時間 www 沒有 1. 題目描述 輸入一個整數n,求從1到n這n個整數的十進制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次。 2. 題目來源 第一次看到是在《劍指Of

劍指offer-整數中1出現的次數(1n整數中1出現的次數)

cme 劍指offer int gin num count pan acmer n) 題目描述 求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對

用匯編語言實現1到100(1+2+...+100)

AS tac class 字符 執行 sum 進制 循環 AD 用匯編語言實現1+2+...+100 ;課堂作業 ;計算1+2+...+100 DATA SEGMENT COUNT DW 0 ;計數 DATA ENDS STACK SEGMENT PAR

關於劍指offer上“1n整數中1出現的次數”題的理解

寫這篇部落格是因為,看完劍指offer上這道題的解釋後,我確實是沒有看懂。所以按照我的思路重新描述一下這道題到底要怎麼做。 題目描述: 輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數 首先想到的肯定是暴力法,這裡就不多說了。 更優化的方法需要我們先列

劍指offer:(32)時間效率 :整數中1出現的次數(1n整數中1出現的次數)

求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。ACMer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數。 //主要思路

計算1N的自然數中取M個數的所有組合的lua函式

 --計算從1到maxNumber的自然數中取selNum個數的所有組合 function CalcNaturalNumberComb(maxNumber, selNum, tabReturn)     local tabComb = {}  

【Java】 劍指offer(43) 1n整數中1出現的次數 《劍指Offer》Java實現合集 《劍指Offer》Java實現合集

本文參考自《劍指offer》一書,程式碼採用Java語言。 更多:《劍指Offer》Java實現合集   題目   輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1 的數字有1,10,11和12,1一共出現了5次。 思路

計算1到1000的結果

這是個很適合初學者的流程控制問題,主要是用到for迴圈,把每次自增的結果累計   public class Jia { public static void main(String[] args) { //宣告變數sum int su

1n的正數中1出現的次數

題目:輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1 的數字有1,10,11和12,1一共出現了5次。分析:這是一道廣為流傳的google面試題。 簡單的方法就是按照給位進行分析 在個位出現1的個數=n/10+(個位=0,0;個位&

《劍指offer》系列 整數中1出現的次數(1n整數中1出現的次數)(Java)

連結 牛客:整數中1出現的次數(從1到n整數中1出現的次數) 題目描述 求出1-13的整數中1出現的次數,並算出100-1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。ACMer希望

1n 中 k 出現的次數

轉自: http://www.cnblogs.com/nailperry/p/4752987.html 一、1的數目 程式設計之美上給出的規律: 1. 如果第i位(自右至左,從1開始標號)上的數字為0,則第i位可能出現1的次數由更高位決定(若沒有高位,視高位為

python 求1到100的和,join的用法

li=[] def func3(x): li.append(str(x)) if x==1: return 1 return x+func3(x-1) # print(func3(100)) re=func3(100) print('%s=%s'%('+'.j

(劍指offer)1n整數中1出現次數

時間限制:1秒 空間限制:32768K 熱度指數:133857 題目描述 求出113的整數中1出現的次數,並算出1001300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。ACMer希望你們幫幫他

1n 列印數字 (使用字串表示一個大數)

使用字串表示一個大數 題目:列印從1到n 的數 n是多大我們並不知道,有可能已經超出了計算機所能表示的最大的數,所以此時需要使用字串或陣列來表示一個任意大小的數,並對其進行列印,對於列印下面有兩種方法 使用加法模擬 void PrintNum(int N