c語言中用循環for語句輸入空格的問題
scanf("%s",a[i]); 用%s 的話遇到空格或回車就會停止讀取的了- -
連讀都讀不進去,怎么統計,話說那個空格還在緩存里面,所以后續的scanf根本都沒有讀取- -
gets的話是遇見回車才停止讀取。。。另外呢 "1234567890"
上面那個字符串的長度是10,但是字符數組的長度是11,因為上面的字符串實際上是
"1234567890\0" 所以實際上放了11個字符。你用10個字符的數組存放11個字符,出錯是很正常的= =||
\0 是空字符,表示一個字符串結束了,實際上基本所有字符串處理函數都是遇到 \0才停止的。。。所以要是自己手工構造字符串的話,記得把 '\0'算上。
c語言 用for語句寫: 8個空格9個9 7個空格8個8 6個空格7個7 依次到一
#include<stdio.h>
int main()
{
int i,j;
for(i=8;i>=0;i--)
{
for(j=0;j<i;j++)
printf(" ");
for(j=0;j<=i;j++)
printf("%d",i+1);
printf("\n");
}
return 0;
}
c語言中用循環for語句輸入空格的問題
scanf("%s",a[i]); 用%s 的話遇到空格或回車就會停止讀取的了- -連讀都讀不進去,怎么統計,話說那個空格還在緩存里面,所以后續的scanf根本都沒有讀取- -gets的話是遇見回車才停止讀取。
另外呢 "1234567890"上面那個字符串的長度是10,但是字符數組的長度是11,因為上面的字符串實際上是"1234567890\0" 所以實際上放了11個字符。你用10個字符的數組存放11個字符,出錯是很正常的= =||\0 是空字符,表示一個字符串結束了,實際上基本所有字符串處理函數都是遇到 \0才停止的。
所以要是自己手工構造字符串的話,記得把 '\0'算上。
C語言:用for循環語句編程輸出1—20之間的所有整數,兩數之間以空
自己加:#include
/*1、輸出1-20*/
int main(int argc, char **argv)
{
int max =20;
int i;
for(i=1;iprintf("%d ",i);
}
/*2、輸出20-1*/
int main(int argc, char **argv)
{
int max =20;
int i;
for(i=max;i>0;i--)
printf("%d ",i);
}
/*3、輸出A-Z*/
int main(int argc, char **argv)
{
char min='A',max='Z';
char i;
for(i=min;iprintf("%c ",i);
if((i-min+1)%8 == 0)
printf("\n");
}
}
/*4、輸出100~200之間所有能被3和7整除的數(每行輸出4個數)*/
int main(int argc, char **argv)
{
int min=100,max =200;
int i,c;
for(i=min,c=0;iif((i%3 == 0 )&&(i%7 ==0))
printf("%d",i);
c++;
if(c%4 == 0)
printf("\n");
}
}
/*5、輸出1至1000之間所有滿足用3除余2、用5除余3、用7除余2的數(要求每行只輸出5個數)*/
int main(int argc, char **argv)
{
int min=1,max=1000;
int i,c;
for(i=min,c=0;iif((i%3 ==2)&&(i%5 == 3)&&(i%7 == 2)){
printf("%d ",i);
c ++;
if(c%5 == 0)
printf("\n");
}
}
}
/*6、求前n個偶數和*/
int main(int argc, char **argv)
{
int n;
int i,sum;
do{
printf("Please input a number(>0):");
scanf("%d",&n);
}while(n>0);
for(i=1,sum=0;isum += 2*i;
printf("sum=%d",sum);
}
/*7、求1+1/2+……+1/200*/
int main(int argc, char **argv)
{
int i;
float sum;
for(i=1,sum=0;isum += 1.0/i;
printf("sum=%f",sum);
}
/*8、求1-3+5-7+……-99+101*/
int main(int argc, char **argv)
{
int max=101;
int i,sum,flag;
for(i=1,sum=0,flag=1;isum += flag*i;
flag *= -1;
}
printf("sum=%d",sum);
}
if語句 for語句
關于IF IF 條件判斷語句,語法格式如下: IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 command IF [NOT] EXIST filename command 說明: [NOT] 將返回的結果取反值即“如果沒有”的意思。
ERRORLEVEL 是命令執行完成后返回的退出值 Number 退出值的數字取值范圍0~255。判斷時值的排列順序應該又大到小。
返回的值大于或等于指定的值時條件成立。 string1==string2 string1和string2都為字符的數據,英文字符的大小寫將看做不同,這個條件中的等于號必須是2個(絕對相等),條件想等后即執行后面的 command EXIST filename 為文件或目錄存在的意思。
IF ERRORLEVEL這條語句必須放在某一個命令后面。執行命令后由IF ERRORLEVEL來判斷命令的返回值。
例: 1、 IF [NOT] ERRORLEVEL number command 檢測命令執行完后的返回值做出判斷。 echo off dir z: rem 如果退出代碼為1(不成功)就跳至標題1處執行 IF ERRORLEVEL 1 goto 1 rem 如果退出代碼為0(成功)就跳至標題0處執行 IF ERRORLEVEL 0 goto 0 :0 echo 命令執行成功! Rem 程序執行完畢跳至標題exit處退出 goto exit :1 echo 命令執行失敗! Rem 程序執行完畢跳至標題exit處退出 goto exit :exit Rem 這里是程序的出口 2、IF string1==string2 command string是字符串的意思,string1是第一個字符串,string2是第二個字符串。
檢測當前變量的值做出判斷: ECHO OFF IF %1==2 goto no (%1代表第一個字符串,“2”是第二個字符串) Echo 變量相等! Goto exit :no echo 變量不相等 goto exit :exit 大家可以這樣看效果 C:\>* 數字 3、IF [NOT] EXIST filename command 發現特定的文件做出判斷 echo off IF not EXIST * goto 1 echo 文件存在成功! goto exit :1 echo 文件不存在失敗! goto exit :exit 這個批處理大家可以放在c盤和d盤分別執行看看效果。 關于FOR FOR這個命令比較特殊是一個循環執行命令的命令,同時FOR的循環里面還可以套用FOR在進行循環。
這篇我們介紹基本的用法就不做套用的循環了,后面再來講解套用的循環。在批處理中FOR的命令如下: FOR [%%c] IN (set) DO [command] [arguments] 在命令行中命令如下: FOR [%c] IN (set) DO [command] [arguments] 常用參數: /L 該集表示以增量形式從開始到結束的一個數字序列。
因此,(1,1,5) 將產生序列 1 2 3 4 5,(5,-1,1) 將產生序列 (5 4 3 2 1)。 /D 如果集中包含通配符,則指定與目錄名匹配,而不與文件名匹配。
/F 從指定的文件中讀取數據作為變量 eol=c - 指一個行注釋字符的結尾(就一個) skip=n - 指在文件開始時忽略的行數。 delims=xxx - 指分隔符集。
這個替換了空格和跳格鍵的默認分隔符集。 tokens=x,y,m-n - 指每行的哪一個符號被傳遞到每個迭代的 for 本身。
這會導致額外變量名稱的分配。m-n格式為一個范圍。
通過 nth 符號指定 mth。如果符號字符串中的最后一個字符星號,那么額外的變量將在最后一個符號解析之后分配并接受行的保留文本。
usebackq - 指定新語法已在下類情況中使用:在作為命令執行一個后引號的字符串并且一個單引號字符為文字字符串命令并允許在 filenameset中使用雙引號擴起文件名稱。 下面來看一個例子: FOR /F "eol=; tokens=2,3* delims=, " %i in (*) do @echo %i %j %k 會分析 * 中的每一行,忽略以分號打頭的那些行,將每行中的第二個和第三個符號傳遞給 for 程序體;用逗號和/或空格定界符號。
請注意,這個 for 程序體的語句引用 %i 來取得第二個符號,引用 %j 來取得第三個符號,引用 %k來取得第三個符號后的所有剩余符號。對于帶有空格的文件名,您需要用雙引號將文件名括起來。
為了用這種方式來使用雙引號,您還需要使用 usebackq 選項,否則,雙引號會被理解成是用作定義某個要分析的字符串的。 %i 專門在 for 語句中得到說明,%j 和 %k 是通過tokens= 選項專門得到說明的。
您可以通過 tokens= 一行指定最多 26 個符號,只要不試圖說明一個高于字母 'z' 或'Z' 的變量。請記住,FOR 變量名分大小寫,是通用的;而且,同時不能有 52 個以上都在使用中。
您還可以在相鄰字符串上使用 FOR /F 分析邏輯;方法是,用單引號將括號之間的 filenameset 括起來。這樣,該字符串會被當作一個文件中的一個單一輸入行。
最后,您可以用 FOR /F 命令來分析命令的輸出。方法是,將括號之間的 filenameset 變成一個反括字符串。
該字符串會被當作命令行,傳遞到一個子 *,其輸出會被抓進內存,并被當作文件分析。因此,以下例子: FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i 會枚舉當前環境中的環境變量名稱。
以下列舉一個簡單的例子,他將說明參數/L和沒有參數的區別: 刪除文件* * * * * 例: ECHO OFF FOR /L %%F IN (1,1,5) DO DEL %%* 或 FOR %%F IN (1,2,3,4,5) DO DEL %%* 以上2條命令執行的結果都是一樣的如下: C:\>DEL * C:\>DEL * C:\>DEL * C:\>DEL * C:\>DEL * 關于變量的特別補充說明 批處理文件還可以像C語言的函數一樣使用。