关于C语言的6个问题


关于C语言的6个问题

文章插图
事实上,您问的问题比较泛,如果结合使用的编译器类型和具体例子来问会比较好些 。下面也只是泛泛而谈 。
1、域宽小于实际宽度时 , 通常输出结果以实际宽度为准,如果需要以域宽来输出,那么实际结果需要截断 。比如将结果以实际宽度输出到某个字符数组中 , 再截断 。
2、默认的域宽为8位,精度为6位 。
3、精度说明大于实际精度时 , 输出补余;小于实际精度时,输出截断 。
4、FLOAT的最大精度是10的负44次方;DOUBLE的最大精度是10的负323次方 。
5、整型数据的符号位出现在最高字节的最高位;浮点型数据则出现在字节中间的某个位上 。不明白什么叫如何处理符号位?
6、多余的小数位是截断和舍入取决于不同的编译环境 。应当结合自己使用的编译环境做一下测试即可明白 。
一、C语言中,如果你给定的宽度小于数据实际宽度时,会按实际宽度输出!
二、对于字符串操作,可以采用s方式控制输出宽度,如:
printf("%66s",str ); 这时的输出会保证为6个字符!
printf("%00s",str );这时 , 输出内容为空
其他的不支持这种写法 。
如果符点数想不输出小数点后面的数 , 可以使用%0f或%0lf方式输出,输出的数据会自动将小数部分四舍五入 。
#include<stdioh>
#defineN10
inti;
voidsum(inta[])
{
intsum_num=0;
for(i=0;i<N;i++)
{
sum_num+=a[i];
}
printf("和=%d\n",sum_num);
}
voidcheck(inta[])
{
intone=0,two=0;
printf("奇数:");
for(i=0;i<N;i++)
{
if(a[i]%2==0)
two++;
else
{
printf("%d",a[i]);
one++;
}
}
printf("\n奇数个数=%d\n偶数个数=%d",one,two);
}
intmain()
{
intnum[N]={0};
for(i=0;i<N;i++)
scanf("%d",&num[i]);
sum(num);
check(num);
}
扩展资料
C语言统计英文字母、空格、数字和其它字符的个数
#include"stdioh"
voidmain()
{
charc;
intletters=0,space=0,digit=0,others=0;
printf("pleaseinputsomecharacters\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
elseif(c=='')
space++;
elseif(c>='0'&&c<='9')
digit++;
else
others++;
}
printf("allinall:char=%dspace=%ddigit=%dothers=%d\n",letters,
space,digit,others);
}
输出宽度大于你所设置的 , 则按实际的输出;
小于你所设置的,则用空格补齐,比如: