⑴ 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");
}