當前位置:首頁 » 網頁前端 » 腳本while循環拼接字元
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

腳本while循環拼接字元

發布時間: 2022-08-27 08:28:35

⑴ 如何有for循環或while循環來輸入和輸出一段字元串

#include<iostream>
using namespace std;

void main()
{
char str[50] , ch;

for(int i = 0;i <50; i++)//輸入
{
ch = getchar();
if('\0' !=ch)
{
str[i] = ch ;
}
break;
}
for(int i = 0; i < strlen(str);i++)
{
cout<<str[i];
}
}

⑵ 如何用bash腳本中創建while無限循環

一、簡介

Shell編程中循環命令用於特定條件下決定某些語句重復執行的控制方式,有三種常用的循環語句:for、while和until。while循環和for循環屬於「當型循環」,而until屬於「直到型循環」。循環控制符:break和continue控制流程轉向。

二、詳解

1、for循環

(1)for循環有三種結構:一種是列表for循環,第二種是不帶列表for循環。第三種是類C風格的for循環。

(2)列表for循環

#!/bin/bashfor varible1 in {1..5}#for varible1 in 1 2 3 4 5doecho "Hello, Welcome $varible1 times "done

  • do和done之間的命令稱為循環體,執行次數和list列表中常數或字元串的個數相同。for循環,首先將in後list列表的第一個常數或字元串賦值給循環變數,然後執行循環體,以此執行list,最後執行done命令後的命令序列。

  • Sheel支持列表for循環使用略寫的計數方式,1~5的范圍用{1..5}表示(大括弧不能去掉,否則會當作一個字元串處理)。

  • Sheel中還支持按規定的步數進行跳躍的方式實現列表for循環,例如計算1~100內所有的奇數之和。

  • #!/bin/bashsum=0for i in {1..100..2}dolet "sum+=i"doneecho "sum=$sum"

  • 通過i的按步數2不斷遞增,計算sum值為2500。同樣可以使用seq命令實現按2遞增來計算1~100內的所有奇數之和,for i in $(seq 1 2 100),seq表示起始數為1,跳躍的步數為2,結束條件值為100。
  • for循環對字元串進行操作,例如通過for循環顯示當前目錄下所有的文件。

  • #!/bin/bashfor file in $( ls )#for file in *doecho "file: $file"done

  • 也可一使用for file in *,通配符*產生文件名擴展,匹配當前目錄下的所有文件。

  • for通過命令行來傳遞腳本中for循環列表參數

  • #!/bin/bashecho "number of arguments is $#"echo "What you input is: "for argument in "$@"doecho "$argument"done


  • $#表示參數的個數,$@表示參數列表而$*則把所有的參數當作一個字元串顯示。

    (3)不帶列表for循環

    由用戶制定參數和參數的個數,與上述的for循環列表參數功能相同。

  • #!/bin/bashecho "number of arguments is $#"echo "What you input is: "for argumentdoecho "$argument"done

  • 比上述代碼少了$@參數列表,$*參數字元串。
  • (4)類C風格的for循環

    也被稱為計次循環

  • #!/bin/bashfor((integer = 1; integer <= 5; integer++))do echo "$integer"done

  • for中第一個表達式(integer = 1)是循環變數賦初值的語句,第二個表達式(integer <= 5)決定是否進行循環的表達式,退出狀態為非0時將退出for循環執行done後的命令(與C中的for循環條件是剛好相反的)。第三個表達式(integer++)用於改變循環變數的語句。

    Sheel中不運行使用非整數類型的數作為循環變數,循環條件被忽略則默認的退出狀態是0,for((;;))為死循環。

    類C的for循環計算1~100內所有的奇數之和。

  • #!/bin/bashsum=0for(( i = 1; i <= 100; i = i + 2 ))dolet "sum += i"doneecho "sum=$sum"

  • 2、while循環

    也稱為前測試循環語句,重復次數是利用一個條件來控制是否繼續重復執行這個語句。為了避免死循環,必須保證循環體中包含循環出口條件即表達式存在退出狀態為非0的情況。

    (1)計數器控制的while循環

  • #!/bin/bashsum=0i=1while(( i <= 100 ))dolet "sum+=i"let "i += 2" doneecho "sum=$sum"

  • 指定了循環的次數500,初始化計數器值為1,不斷測試循環條件i是否小於等於100。在循環條件中設置了計數器加2來計算1~100內所有的奇數之和。

  • (2)結束標記控制的while循環

    設置一個特殊的數據值(結束標記)來結束while循環。

  • #!/bin/bashecho "Please input the num(1-10) "read numwhile [[ "$num" != 4 ]]do if [ "$num" -lt 4 ]thenecho "Too small. Try again!"read numelif [ "$num" -gt 4 ]thenecho "To high. Try again" read numelseexit 0fidoneecho "Congratulation, you are right! "

  • 例:通過結束標記控制實現階乘的操作

  • #!/bin/bashecho "Please input the num "read numfactorial=1while [ "$num" -gt 0 ]dolet "factorial= factorial*num"let "num--"doneecho "The factorial is $factorial"


  • (3)標志控制的while循環
  • 使用用戶輸入的標志值來控制循環的結束(避免不知道循環結束標志的條件)。

  • #!/bin/bashecho "Please input the num "read numsum=0i=1signal=0while [[ "$signal" -ne 1 ]]doif [ "$i" -eq "$num" ]thenlet "signal=1"let "sum+=i"echo "1+2+...+$num=$sum"elselet "sum=sum+i"let "i++"fidone

  • 標志控制的while循環求1~n的累加和,循環變數值小於100執行else累加同時循環變數加1,直到循環變數值等於100將標志值設置為1,並輸出。

    標志控制的while循環與結束標記控制的while循環的區別是用戶無法確定無法確定結束標志,只能程序運行後確定結束標志。兩者也可以相互轉化。

    (4)命令行控制的while循環
    使用命令行來指定輸出參數和參數個數,通常與shift結合使用,shift命令使位置變數下移一位($2代替$1、$3代替$2,並使$#變數遞減),當最後一個參數顯示給用戶,$#會等於0,$*也等於空。

  • #!/bin/bashecho "number of arguments is $#"echo "What you input is: "while [[ "$*" != "" ]]doecho "$1"shiftdone


  • 循環條件可以改寫為while[[ "$#" -ne 0 ]],等於0時退出while循環
  • 3、until循環

    until命令和while命令類似,while能實現的腳本until同樣也可以實現,但區別是until循環的退出狀態是不為0,退出狀態是為0(與while剛好相反),即whie循環在條件為真時繼續執行循環而until則在條件為假時執行循環。

  • #!/bin/bashi=0until [[ "$i" -gt 5 ]] #大於5dolet "square=i*i"echo "$i * $i = $square"let "i++"done


  • 4、循環嵌套

    一個循環體內又包含另一個完整的循環結構,在外部循環的每次執行過程中都會觸發內部循環,for、while、until可以相互嵌套。

    (1)嵌套循環實現九九乘法表

  • #!/bin/bashfor (( i = 1; i <=9; i++ ))dofor (( j=1; j <= i; j++ ))dolet "temp = i * j" echo -n "$i*$j=$temp " done echo "" #output newlinedone

  • (2)for循環嵌套實現*圖案排列

  • #!/bin/bashfor ((i=1; i <= 9; i++))doj=9;while ((j > i))doecho -n " "let "j--"donek=1while ((k <= i))doecho -n "*"let "k++"doneecho ""done


  • 外層for循環嵌套了兩個內層while循環,先列印空格在列印*號形成圖案。

    5、循環控制符break和continue

    若須退出循環可使用break循環控制符,若退出本次循環執行後繼續循環可使用continue循環控制符。

    (1)break

    在for、while和until循環中break可強行退出循環,break語句僅能退出當前的循環,如果是兩層循環嵌套,則需要在外層循環中使用break。

  • #!/bin/bashsum=0for (( i=1; i <= 100; i++))do let "sum+=i"if [ "$sum" -gt 1000 ]thenecho "1+2+...+$i=$sum"breakfidone

  • (2)continue

    在for、while和until中用於讓腳本跳過其後面的語句,執行下一次循環。continue用於顯示100內能被7整除的數。

  • #!/bin/bashm=1for (( i=1; i < 100; i++ ))dolet "temp1=i%7" #被7整除if [ "$temp1" -ne 0 ]thencontinuefiecho -n "$i "let "temp2=m%7" #7個數字換一行if [ "$temp2" -eq 0 ]thenecho ""filet "m++"done

  • 6、select結構

    select結構從技術角度看不能算是循環結構,只是相似而已,它是bash的擴展結構用於互動式菜單顯示,功能類似於case結構比case的交互性要好。

    (1)select帶參數列表

  • #!/bin/bashecho "What is your favourite color? "select color in "red" "blue" "green" "white" "black"do breakdoneecho "You have selected $color"


  • (2)select不帶參數列表
  • 該結構通過命令行來傳遞參數列表,由用戶自己設定參數列表。

  • #!/bin/bashecho "What is your favourite color? "select colordo breakdoneecho "You have selected $color"


  • 三、總結

    (1)循環結構中相互嵌套組成更復雜的流程,並結合break和continue可以實現很多復雜的運算。

    (2)可以結合其他語言的語法有助於更好的理解循環結構。

    (3)熟練應用還需要大量的重復練習,重寫優秀的shell代碼也是一種很好的方式。

⑶ 使用while循環,不斷地輸入字元,如果是小寫字母,則轉變為大寫字母並輸出,直到接收到的字元為「0」。

#include"stdio.h"
main()
{charc;
while((c=getchar())!='0')
{if(c>='a'&&c<='z')
c=c-32;
printf("%c",c);
}
}

getchar()是到緩沖區讀取第一個字元
首先,從鍵盤輸入許多字元,最後回車後,所有字元包括回車放到緩沖區
這時才開始循環執行getchar(),讀入一個字元判斷是否為0,不是就繼續讀,是0就退出循環(之所以說是順序接受一行字元,是因為它取的始終是緩沖區中第一個字元,每取一個緩沖區的字元少一個,也就是順序讀取了)

c語言字元數組用while循環輸出字元數量的問題

while(s[n++]!='\0'); 這個語句等價於:
while(s[n]!='\0') {n=n+1;} ;
意思是 測字元串的長度。通過尋找字元串的尾巴在哪裡,就知道長度了。
找法是 從 s[0]開始,s[1],s[2],... 若 s[n]=='\0' 就是字元串尾巴了。n 就是字元串長度。 '\0' 是 c/c++ 里規定的 字元串結束符號。
分號是語句的結束符,是語句語語句的分隔符。單獨的分號,表示「空語句」,例如下面for循環條件:
for (;;) {x=x+1; if (x>10) break; }
while後不加分號 是因為它有個 用 花括弧括起來的 循環體:
while () {....}.
而 while(s[n++]!='\0'); 這里循環體是 「空語句」。

⑸ 循環輸入字元串,將這些輸入的字元串都連接起來,至到輸入的字元串為「Esc」就結束 用jaVA以及while循環寫

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
StringBuffer buffer = new StringBuffer();
String nextLine;
while (true) {
nextLine = scanner.nextLine();
if ("Esc".equals(nextLine)) {
break;
}
buffer.append(nextLine);
}
System.out.println("您輸入的字元為: " + buffer.toString());
}

⑹ bat批處理中怎樣用while循環

bat
常用命令

echo、@、call、pause、rem(小技巧:用::代替rem)是批處理文件最常用的幾個命令,我們就從他們開始學起。

==== 注 ===========
首先, @ 不是一個命令, 而是DOS 批處理的一個特殊標記符, 僅用於屏蔽命令行回顯. 下面是DOS命令行或批處理中可能會見到的一些特殊標記符:
CR(0D) 命令行結束符
Escape(1B) ANSI轉義字元引導符
Space(20) 常用的參數界定符
Tab(09) ; = 不常用的參數界定符
+ COPY命令文件連接符
* ? 文件通配符
「「 字元串界定符
| 命令管道符
< > >> 文件重定向符
@ 命令行回顯屏蔽符
/ 參數開關引導符
: 批處理標簽引導符
% 批處理變數引導符

其次, :: 確實可以起到rem 的注釋作用, 而且更簡潔有效; 但有兩點需要注意:
第一, 除了 :: 之外, 任何以 :開頭的字元行, 在批處理中都被視作標號, 而直接忽略其後的所有內容, 只是為了與正常的標號相區別, 建議使用 goto 所無法識別的標號, 即在 :後緊跟一個非字母數字的一個特殊符號.
第二, 與rem 不同的是, ::後的字元行在執行時不會回顯, 無論是否用echo on打開命令行回顯狀態, 因為命令解釋器不認為他是一個有效的命令行, 就此點來看, rem 在某些場合下將比 :: 更為適用; 另外, rem 可以用於 config.sys 文件中.
=====================

echo 表示顯示此命令後的字元
echo off 表示在此語句後所有運行的命令都不顯示命令行本身
@與echo off相象,但它是加在每個命令行的最前面,表示運行時不顯示這一行的命令行(只能影響當前行)。
call 調用另一個批處理文件(如果不用call而直接調用別的批處理文件,那麼執行完那個批處理文件後將無法返回當前文件並執行當前文件的後續命令)。
pause 運行此句會暫停批處理的執行並在屏幕上

⑺ shell腳本 while循環

while:
do
...#填充點擊事件
done
#不知道你是不是這個意思。。。

⑻ python:通過while循環鍵盤錄入字元串存入列表

L=[]
whileTrue:
n=input('請錄入字元')
L.append(n)
ifn=='OK':
lens=0
foriinL:
iflen(i)>5:
lens=lens+1
withopen('work.txt','a')asf:
f.write(i)
iflens==0:
print('沒有符合條件的元素,work.txt文件內容為空!')
break

⑼ 編寫一個程序,用while循環實現從鍵盤上輸入10個字元,僅將其中的大寫英文字母轉換成小寫字母後顯示出來

#include <stdio.h>
int main()
{
int ch;
int i=0;
while( i++ < 10 ) //循環控制10次
{
ch=getchar();
if ( ch >='A' && ch<='Z' ) //如果是大寫字母
{
printf("%c" , ch-'A'+'a' ) ; //轉換成小寫並輸出
}
}
printf("\n");
return 0;
}