1. c語言的scanf語句格式
例:使用scanf函數輸入數據。
#include<stdio.h>
intmain(void)
{
inta,b,c;
printf("Givemethevalueofa,b,cseperatedwithwhitespaces: ");
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d ",a,b,c);
return0;
}
&a,&b,&c中的&是定址操作符,&a表示對象a在內存中的地址[3],是一個右值。變數a,b,c的地址是在編譯階段分配的(存儲順序由編譯器決定)。
這里注意:如果scanf中%d是連著寫的如「%d%d%d」,在輸入數據時,數據之間不可以用逗號分隔。
只能用空白字元(空格或tab鍵或者回車鍵)分隔——「2 (空格)3(tab) 4」 或 「2(tab)3(回車)4」等。若是「%d,%d,%d」,則在輸入數據時需要加「,」,如「2,3,4」。
(在有一些實現中,printf函數與scanf函數在使用時可以不使用預編譯命令#include <stdio.h>。)它是格式輸入函數,即按用戶指定的格式從鍵盤上把數據輸入到指定的變數之中。
scanf 是 scan format 的縮寫,意思是格式化掃描,也就是從鍵盤獲得用戶輸入,和 printf 的功能正好相反。
(1)c語言scanf怎麼輸入才正確擴展閱讀:
scanf函數使用注意問題:
(1)在高版本的 Visual Studio 編譯器中,scanf 被認為是不安全的,被棄用,應當使用scanf_s代替 scanf。
(2) 對於字元串數組或字元串指針變數,由於數組名可以轉換為數組和指針變數名本身就是地址,因此使用scanf()函數時,不需要在它們前面加上"&"操作符。
(3) 可以在格式化字元串中的"%"各格式化規定符之間加入一個整數,表示任何讀操作中的最大位數。
(4) scanf函數中沒有類似printf的精度控制。
如: scanf("%5.2f",&a); 是非法的。不能企圖用此語句輸入小數為2位的實數。
(5) scanf中要求給出變數地址,如給出變數名則會出錯
如 scanf("%d",a);是非法的,應改為scanf("%d",&a);才是合法的。
(6) 在輸入多個數值數據時,若格式控制串中沒有非格式字元作輸入數據之間的間隔,則可用空格,TAB或回車作間隔。
C編譯在碰到空格,TAB,回車或非法數據(如對「%d」輸入「12A」時,A即為非法數據)時即認為該數據結束。
(7) 在輸入字元數據(%c)時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元。
參考資料來源:網路-scanf
2. C語言:scanf不是需要用回車鍵來確認輸入嗎
1、除了%c的輸入而言:scanf輸入:abc[回車]後,遇到回車結束,但是回車還留在輸入流中。下一個scanf在輸入前碰到回車,會自動把回車拋棄,然後再輸入:efg,再碰到回車結束。所以加了getchar()時,它會吃掉一個回車。如果不加,在輸入前,它會自動刪除這個回車,所以結果是一樣的。重點是:空格、回車、跳格等結束符在輸入前碰到的話,會自動拋棄,輸入後碰到的話,就會認為結束。
2、針對%c的輸入而言:%c遇到空格、回車、跳格等結束符都是會讀取的。
例如:scanf("%c",&i);
scanf("%c",&j);
輸入a[回車]b的話,就會是:i = a; j = 回車;
但如果是:scanf("%c",&i);
getchar();
scanf("%c",&j);
輸入a[回車]b,會是:i = a; j = b;
所以一般用getchar()吃回車,都是用在%c 後面。
3、應用:輸入一個大寫字母,輸出對應的小寫字母。輸入數據的第一行為一個正整數T, 表示測試數據的組數。然後是T組測試數據。每組測試數據包含一個大寫字母C。
對於每組測試數據, 輸出它的小寫字母。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main()
{
int i,t;
scanf("%d",&t);
getchar();
char a;
for(i=0;i<t;i++)
{
scanf("%c",&a);
getchar();
printf("%c\n",a+32);
}
return 0;
}
如果scanf("%d",&t);後不加getcahr();輸入:2 [回車],則 t = 2; a = 回車
如果scanf("%c",&a);後不加getcahr(),輸入:2 [回車] A [回車] B ,則 t = 2; a = A ,下一個循環 ,a = 回車,而不是 B。
3. c語言怎麼用scanf輸入字元串
c語言用scanf輸入字元串:
char s[300];
scanf("%s",s);
這個語句只能輸入不包含空格和跳格鍵的字元串並且以回車符結束輸入。
4. 關於c語言scanf輸入
死循環的原因是你在else後採取了遞歸調用,卻沒有給出遞歸終結條件。這題也用不著遞歸,把check函數專稿 如下:
voidcheck(){
inta;
while(1){
scanf("%d",&a);
if(a>0&&a<1000){
printf("%f",sqrt)a));//注意這里是%f而不是%d
break;
}
else
printf("重新輸入小於1000的正整數 ");
}
}
5. c語言scanf輸入用法
scanf 函數最主要的用法是:
scanf("輸入控制符", 輸入參數);
函數原型:intscanf(constchar*restrictformat,...);
函數 scanf() 是從標准輸入流stdin (標准輸入設備,一般指向鍵盤)中讀內容的通用子程序,可以說明的格式讀入多個字元,並保存在對應地址的變數中。
(5)c語言scanf怎麼輸入才正確擴展閱讀:
函數的第一個參數是格式字元串,它指定了輸入的格式,並按照格式說明符解析輸入對應位置的信息並存儲於可變參數列表中對應的指針所指位置。每一個指針要求非空,並且與字元串中的格式符一一順次對應。
發展:
使用scanf函數進行輸入,必須指定輸入的數據的類型和格式,不僅繁瑣復雜,而且很容易出錯。C++保留scanf只是為了和C兼容。
以便過去用C語言寫的程序可以在C++的環境下運行。C++的編程人員都願意使用cin進行輸入,很少使用scanf。
但是scanf有一個明顯的優點,速度比cin函數快。
6. c語言中同時使用多個scanf語句,用鍵盤怎麼輸入
摘要 、程序運行時,不管有多少個scanf,一定要按scanf()語句規定的格式輸入,否則可能會出現錯誤的結果。
7. 如何在C語言中用scanf輸入數組
#include
main()
struct
int num;
char name[20];
char sex;
int age;
stu[5];
int i;
for(i=0;i<5;i++)
printf("請輸入信息 ");
scanf("%d",&stu[i].num);
scanf("%s",&stu[i].name);
scanf("%c",&stu[i].sex); //在%c之前加一個空格
scanf("%d",&stu[i].age);
for(i=0;i<5;i++)
printf( "*%s*",stu[i].name);
(7)c語言scanf怎麼輸入才正確擴展閱讀:
函數 scanf() 是從標准輸入流stdin[1](標准輸入設備,一般指向鍵盤)中讀內容的通用子程序,可以說明的格式讀入多個字元,並保存在對應地址的變數中。
函數的第一個參數是格式字元串,它指定了輸入的格式,並按照格式說明符解析輸入對應位置的信息並存儲於可變參數列表中對應的指針所指位置。每一個指針要求非空,並且與字元串中的格式符一一順次對應。