⑴ c語言:指針變數的初始化可以從鍵盤輸入一個數,即int *ps; scanf("%d", ps);這句話為什麼錯
首先這句話是錯的,原因是如題中的語句
scanf("%d", ps);表示的是從鍵盤輸入一個整數,這個整數存放到ps所指向的內存空間,這里並不是要給ps本身進行初始化。
此語句之前如果ps沒有初始化,那執行此語句程序可能會崩潰,所以指針使用前一定要記得先初始化。
如果想要靠輸入給指針初始化,那對應語句應該是scanf("%d", &ps);不過這樣做實際沒啥意義,這樣做也挺危險。如果後面用這個指針往裡面寫內容可能會程序崩潰,甚至你的系統會崩潰。
⑵ C語言中如何鍵盤輸入一個正整數a,輸出a的約數個數
#include <stdio.h>
int main()
{
int n,cnt,i;
scanf("%d",&n);
for(i=1,cnt=0;i<=n;++i)
if(n%i==0)
cnt++;
printf("%d ",cnt);
return 0;
}
⑶ c語言中定義了一個int,為何我輸入了一個字母或者其他字元,會認為它是數字呢
這是因為在輸入了一個字母或者其他字元的時候,電腦會自動識別轉換為對應的ASCII碼輸入程序。
ASCII 碼使用指定的7 位或8 位二進制數組合來表示128 或256 種可能的字元。標准ASCII 碼也叫基礎ASCII碼,使用7 位二進制數(剩下的1位二進制為0)來表示所有的大寫和小寫字母,數字0 到9、標點符號,以及在美式英語中使用的特殊控制字元。
在標准ASCII中,其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在代碼傳送過程中用來檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。
奇校驗規定:正確的代碼一個位元組中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規定:正確的代碼一個位元組中1的個數必須是偶數,若非偶數,則在最高位b7添1。
(3)c語言鍵盤輸入int擴展閱讀
在一般的電腦中,int佔用4位元組,32比特,數據范圍為-2147483648~2147483647[-2^31~2^31-]
在之前的微型機中,int佔用2位元組,16比特,數據范圍為-32768~32767[-2^15~2^15-1]
使用printf輸出int佔用位元組數量:
printf("%d",sizeof(int));
除了int類型之外,還有short、long、long long類型可以表示整數。
unsigned int 表示無符號整數,數據范圍為[0~2^32-1]
short、int、long、char、float、double 這六個關鍵字代表C 語言里的六種基本數據類型。
變數的命名規則
1、命名應當直觀且可以拼讀,可望文知意,便於記憶和閱讀。
標識符最好採用英文單詞或其組合,不允許使用拼音。程序中的英文單詞一般不要太復雜,用詞應當准確。
2、命名的長度應當符合「min-length && max-information」原則。
C 是一種簡潔的語言, 命名也應該是簡潔的。例如變數名MaxVal 就比MaxValueUntilOverflow 好用。標識符的長度一般不要過長,較長的單詞可通過去掉「母音」形成縮寫。
另外,英文詞盡量不縮寫,特別是非常用專業名詞,如果有縮寫,在同一系統中對同一單詞必須使用相同的表示法,並且註明其意思。
⑷ C語言中int n卻不能輸入整數,只能輸入字母
您好,很高興回答您的問題。
對於您給出的程序,我想應該是沒有語法錯誤,也就是程序能夠運行,但是得不出正確結果,也就是說出現了邏輯錯誤,這個是系統檢測不出來的,只能通過錯誤的結果表現出來的。
出現邏輯錯誤的地方就是while循環語句這個地方。我們知道c語言中分號是語句結束的標志,也就是一句完整的話運行完了之後才結束。對於同屬於某個語句中的多條語句,可以用花括弧括起來,作為復合語句。對於while語言而言,其結構為while(條件)語句;只有當while後面的條件不成立時,才能結束整個循環。所以while(條件)後不能直接用分號,這樣就把程序想表達的含義進行了改變。
綜上所述,只要把while(條件)後面的分號去掉即可。
⑸ C語言 從鍵盤上輸入2個int型數 比較大小,並且顯示最小數
#include<stdio.h>
void main()
{
int a,b;
printf("請輸入a,b:");
scanf("%d%d\n",&a&b);
if(a>b)
printf("min=%d\n",b);
else
printf("min=%d\n",a);
}
很簡單嗎。
⑹ C語言 定義一個10個元素的int類型數組,從鍵盤上輸入任意10個int類型的數存放到數組中
#include<iostream>
using namespace std;
int main(){
int [] arr=new int[10];
int max=0,min=0,sum=0,average=0;
int a3=0,a5=0,a7=0;
int i,j,k;
for(int i=0;i<10;i++)
{
cin>>arr[i];
}
max=arr[0];
min=arr[0];
for(int j=0;j<10;j++)
{
if(arr[j]>max)
max=arr[j];
if(arr[j]<min)
min=arr[j];
sum=sum+arr[j];
if(arr[j]%3==0) a3++;
if(arr[j]%5==0) a5++;
if(arr[j]%7==0) a7++;
}
for(int k=0;k<10;k++)
{
cout<<arr[k]<<" ";
}
cout<<endl;
cout<<"max:"<<max<<endl;
cout<<"min:"<<min<<endl;
cout<<"average:"<<sum/10.0<<endl;
cout<<"a3:"<<a3<<endl;
cout<<"a5:"<<a5<<endl;
cout<<"a7:"<<a7<<endl;
return 0;
}
⑺ C語言 從鍵盤上輸入2個int型數 比較大小,並且顯示最小數
你這個代碼錯誤好多
int
x[3],i,p,*q;//你要輸入4個數,但數組卻只申請了3個應該改為int
x[4]
*q=x[3];//你的指針之前沒有初始化,這里卻引用指針指向的地址,運行會出錯,改為q
=
x;
p=min(*q);//min函數的參數是指針類型,這里卻把int類型傳給了函數,改為p=min(q);
b=0;//這里你把0賦值給了b,再用0和數組里的值比較,如果數組里的值都是正數,就變成了0最小,顯然不是你要的,b應該賦值為數組的第一個元素,再依次和數組里的其他元素比較,這句改為b
=
x[0]
for(a=0;a<3;a++){//這里從數組的第二個元素開始比較,a要初始化為1,改為for(a=1;a<4;a++)
if(b>x[a])
b=x[a];
}
⑻ 【急求】c語言程序輸入一個整數(int),要求輸出其二進制形式的值。
我也發一個自編的,已驗證通過。
#include <stdio.h>
main()
{
char binOut[17];
short int i, j; /* 16bit的整數,要用short int型 */
scanf("%d", &i);
for(j=15;j>=0;j--)
{
if(i&(1<<j))
binOut[15-j] = '1';
else
binOut[15-j] = '0';
}
binOut[16] = 0;
printf("DEC(%d)=BIN(%s)\n",i,binOut);
}
⑼ c語言怎麼對整形數組部分輸入
首先你得讓程序知道,什麼時候該結束,例如我想就輸入5個數,那麼我提前告訴它,我就只有5個數
#include <stdio.h>
int main()
{
int a[10];
int cnt = 0;
while (1)
{
scanf("%d", &a[cnt]);
if (a[cnt] == 0)
{
break;
}
cnt++;
}
printf("input = : ");
for (int i = 0; i < cnt; i++)
printf("%d ", a[i]);
printf(" ");
}
不論是第一種方法,還是第二種方法,你定義的數組都必須大於你輸入的數據數
「啊,我不知道他可能輸幾個」
對於這種情況,你可以提前告訴他,你最多輸入幾個,然後再做個限制,比如說你判斷當前數量,如果大於10000000,直接break,從循環里退出,然後處理事務
答題不易如無疑問煩請採納
⑽ 求教C語言,從鍵盤輸入一個整型數據(int型),編寫程序判斷該整數共有幾位,並輸出包含各個數字的個數。
這個用數組的方式來實現比較好,包括後面的輸出
#include<stdio.h>
#include<stdlib.h>
main()
{
intN,n,b,i,c[]={1,2,3,4,5,6,7,8,9},d[9]={0};
intr=0;
printf("Pleaseenterthenumber: ");
scanf("%d",&n);
N=n;
n=abs(n);
while(n>0){
b=n%10;
for(i=0;i<9;i++){
if(b==c[i])
d[i]++;
}
n=n/10;
r++;
}
printf("%d:%dbits ",N,r);
for(i=0;i<9;i++){
if(d[i]!=0)
printf("%d:%d ",c[i],d[i]);
}
system("pause");
}