C語言是面向過程的,而C++是面向對象的
C和C++的區別:
C是一個結構化語言,它的重點在於算法和數據結構。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。
C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為「 設計這個概念已經被融入到C++之中 」。

在寫代碼時總是不小心在這裡犯錯,所以特意查了一下這個函數,並且做以整理,現分享給大家。
scanf()函數的參數輸入類型不匹配問題
這是我在百度時見到的問題,還沒遇到。拿來整理,以備日後需要。
#include<stdio.h>
main()
{
int a=123;
char c=’t’;
printf(“input “);
scanf(“%d%c”,&a,&c);
scanf(“%d%c”,&a,&c);
scanf(“%d%c”,&a,&c);
printf(“%d %c “,a,c);
return 0;
}
當輸入a 回車 後,會直接跳過下面2個scanf語句,直接輸出為
123
t
原因:對於scanf(“%d%c”,&a,&c),scanf語句執行時,其中有一個參數不匹配,那就從這個地方跳出,忽略這個scanf後面所有的參數,而去執行下一條語句。
解決方法:scanf()函數執行成功時的返回值是成功讀取的變量數,也就是說,你這個scanf()函數有幾個變量,如果scanf()函數全部正常讀取,它就返回幾。但這裡還要注意另一個問題,如果輸入了非法數據,鍵盤緩衝區就可能還個有殘餘信息問題。

比如:
#include <stdio.h>
main()
{
int a=123,b;
while(scanf(“%d%d”,&a,&b)!=2)
fflush(stdin);
printf(“%d %d “,a,b);
return 0;
}
還有個辦法:只要用scanf(“%[^ ]”,strings); 就可以了。很神奇吧。還要注意方括號兩側都不能加空格。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/284426.html