c语言,题目如图。
是的答案错了。
float大小4,double大小8,char大小1
那么union成员大小分别为x=4,y=8,c=6。由于联合体大小按最大成员算。
所以union aa的变量大小就是8。
所以struct st结构体成员大小分别为v=8,w=24,ave=8。
考虑struct的对齐,实际对齐单位在windows下默认8字节,在Linux 32位下默认4字节对齐,在Linux 64位下默认8字节。
这里首成员大小是8,根据对齐规则:除第一个成员,偏移量必须为实际对齐单位或自身大小的整数倍(取两者中小的那个)。
所以这里对齐不需要额外浪费内存。
所以结构大小就是v+w+ave=40。
严格来讲A和D选项都是错的,因为
A.在没有说明环境的情况下,int型根本不能确定占几个字节。
D.就算假设int占4个字节,int型和float型其中数据的解释方式是不一样的,同样的4个字节用int型解释是99,用float型解释就完全是另一回事了。
原因分析:
已知:c1=’d’,c2=‘g’
1、先看看c2-’a’是多少:两个字符相减,实质上是两个字符的asc码相减,而我们又知道从a到g,字母到asc码是按照字母表顺序逐个递增的,即:a的asc码+1—>b 的asc码,b的asc码+1—>c的asc码,……所以:
c2-’a’
=‘g’-‘a’
=字母g的asc码-字母a的asc码
=6
这个6,按%d格式打印时,输出6;按%c格式打印时,输出asc为6的字符,而由于asc 为6的字符是控制字符,一般不输出(也有的系统回输出一个乱码)。
2、再看看c2-c1是多少:
c2-c1
=‘g’-‘d’
=3
按%d的格式会打印3。
有什么问题请留言
首先来看下各个字母的ascii码:
a是97
d是100
g是103
c2-'a'=103-97=6
c2-c1=103-100=3
那么printf("%c,%d",c2-'a',c2-c1)中的%c是输出字符,那么这个字符的ascii码是6,这个ascii码字符将在屏幕上不显示,%d是输出数值,屏幕显示3,最终屏幕显示的是:,3
最后说下,这一题出得有毛病,不应该是%c,或者不应该是c2-'a',有疑问可以追问。
输出:口,3
解析: c2-'a',即'g'-'a',g的ASCII码为103,a的ASCII码为97,结果得6,6对应的ASCII码为 ACK,ACK是一个控制字符,不可显示,根据不同的运行平台输出也不同,这个输出结果为是运行在Microsoft Visual C++平台上的;而第二个结果的由来如下:
d的ASCII码为100,103-100=3。
所以最终结果为 口,3。
c语言,题目如图
此应该是为了说明算式k- -,特意设计的一道题目。在C语言中,算式k- -单独使用时,表示k值减1,即k=k-1。而对于将算式k- -做为参数代入到其它语句,当被代入的语句在执行时,是先使用未曾减1的k值来执行操作,在被代入语句执行完成后,再将k值减1。所以在本题目中,whiⅠe(k- -)表示在k非...
c语言问题如图,求分析
strlen(str1) 是指str1的字符串长度,是6个字节(因为是数组赋值,会在结尾自动加'\\0'),sizeof(str2)是指str2的变量大小,str2是一个指针,占4个字节 printf("%d %d\\n", strlen(str2), sizeof(str2));输出结果是 5 4 strlen(str2)是指str2的字符串长度,但是str2不是数组赋值,...
c语言,题目如图第22到27题。求解释不要只说答案,谢谢大家!
22.\\x是转义字符代表转16进制,\\x4a代表ASCII码为16进制的4A的字符;\\\\\\n解释为"\\\\"+"\\n",是消除转义的'\\'符号再加转义字符'\\n';\\102代表ASCII码为102的字符,因此最后字符组成是'm'+'\\x4a'+'\\'+'\\n'+'p'+'\\102'+'q'一共7个字符(字符串长度不含结尾标识'\\0')。23.strlen...
c语言编程,题目如图,使用结构体,麻烦会的亲写一下过程,谢谢
struct student { long number;char name[80];char sex;int math;int English;int Chinese;};void main(){ struct student stu[10];int average[10];for(int i=0;i<10;i++){ scanf("%ld %s %c %d %d %d",&stu[i].number,&stu[i].name,&stu[i].sex,&stu[i].English,&stu[i...
c语言编写三个小程序,题目如图
第一题 第二题 第三题
一道C语言题选择题。如图,这个要怎么做?
答案C 计算字符串的长度 int fun(char *s){ char *t=s;\/\/指针t指向字符串s的第一个元素的地址(首地址)while(*t++);\/\/这里是将指针t移动到字符串s的 最后一个元素的后面;t--;\/\/这里指针t又向前 移动一个位置;这样刚好指向最后一个元素的地址;return (t-s);\/\/t(尾地址);s(首...
求C语言大神 ,,,题目如图所示→_→
这道题的答案是:1 因为C语言中非0数做布尔运算时为真, 即 a||b 的结果为真,而真转换为整数时为 1,所以答案是 1
求解释下如图c语言题目。
第2题选A,定义变量名只能以字母、数字和下划线组成,以字母或下划线开头,且不能定义和C语言关键字一样的变量名。第3题选A,以0开头的是八进制数,由0至7组成,而078有数字8,显然不正确。第4题选B,(x=10)||(y=20),先计算x=10为真,所以(x=10)||(y=20)为真,||逻辑或规定只要...
c语言求三阶行列式,题目如图
include<stdio.h>int main(){int i,j,t,s=0,a[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) {t=1; for(j=0;j<3;j++) t*=a[(i+j)%3][j]; s+=t; t=1; for(j=0;j<3;j++) t*=a...
大一C语言题 如图 123567题请详细解答
第六题,if是判断语句。题目中括号中的值如果e不为0就是真。那么看A,A写的是e==0,那么就是判断e是不是等于0,等于0为真。C同。看B,B中判断的是e如果不等于0就是真。跟题干相同,所以选这个。D看不清。第七题,看z的表达式,这是三目运算符,++在变量后面就是运算完这个式子再自动加1...