几道C语言问题!!!

作者&投稿:歹刻 (若有异议请与网页底部的电邮联系)
问几道C语言的问题~

1 B。
多维数组按顺序赋值时如有剩余以零补足,多维数组的行号可以代表改行第一个元素的地址,即
scanf("%d",x[i]); 相当于
scanf("%d",&x[i][0]);
输入2 4 6后x[0][0],x[1][0],x[2][0]的值分别是2,4,6,其余均为0。

2 B。
ps=s;即将指针ps指向字符数组s的首元素,*ps是a,+4后即e。

3 A。
A 这种用法是不允许的;
B 多维数组可以不指定第一维的个数;
C ss是一个指向字符型的指针数组,ss[1]="right?"; 将其第二个元素指向字符串"right"的首字符r。
D 同样是指向字符型的指针数组,第一维数可以不定。

4 D
A 注意:当x是指针时x[i]相当于*(x+i),x[4]也就是e,数据类型是char,而strcpy函数的第二形参是字符数组中指向字符型的指针,即*char。
B y可以代表字符数组y第一个元素的指针,但不能像通常的指针一样进行++操作。
C 赋值运算也有结果,经赋值运算后,赋值表达式具有赋值后赋值运算符左边变量同样的类型和值,s=y+5的结果即y指向中的第6个元素,但此时y已经放不下x指向的字符串常量,故不能算“正确运用”。
D 正确。

这些乱七八糟的东西大概真的只有在考试时才会出现……


5 B。
注意:宏定义只是在编译之前做简单的字符替换工作,为保证带参数的宏定义替换后的完整性,一般要加括号,例如本题中应写为
#define f(x) ((x)*m)
不加的话有三种可能:
1 有把握不会影响程序功能
2 忘了
3 正在出考试题目
这里替换后的结果为:
i1=f(2)=2*5+1=11 (注意:不是2*6!为处理嵌套的宏定义,编译系统采用多次扫描替换的处理方法,但若新产生的字符序列又出现已被替换过的宏名则不再替换)
同样地,i2=f(1+1)=1+1*5+1=7。

***结束***

A)#define N 10 B)#define n 5A)、int a[N]; B)、int a[2*n]; C)、int a[5+5]; D)、int n = 10, a[n]; // 不能用变量定义数组的维数大小(2)下列能正确定义一维整型数组的是 A)int num[0..2008];// 这不是C/C++定义数组的方法。B)int num.1;//不能这么初始化C)int N = 2008; D)#define N 2008 int num[N]; int num[N];//多次使用标识符num (3)下列定义数组的语句中,正确的是 A)int N = 10; int x[N];B)#define N 10 int x[N]; int x[N];//多次定义数组变量x。C)int x[0..10]; // 这是pascal语言的定义格式,在C/C++中是错误的D)int x[ ]; (4)要定义有5个元素的数组,错误的是AA)int i = 5, a[i];√ B)int b[5] = {0}; ×C)int c[ ] = {0,0,0,0,0};×D)int d[2+3];×

1.A
if (a=0)-->不成立. 因为a=0是赋值,相当于if(0)

if(a>0)-->不成立;所以执行y+=y
-->结果:y=20
***********************************************
2.有两个选择
D:有语法错误,因为while(!x)后缺分号.
若不是上面情况则选B.原因是:
x=-1*x--->x=-1
!x-->!(-1)-->!(true)-->false
结果:退出循环.仅循环一次.
***********************************************
3.A
该题关键是判断语句"i=10&&x>0".
i=10&&x>0-->i=(10&&x>0)-->i=(true && ture)-->i=true-->true
因此永远循环.
***********************************************
4.C
第1次:i=0-->判断成立(0<3)-->i=1(i++<3,指先比较i<3,再i加1)
第2次:判断成立(1<3)-->i=2
第3次:判断成立(2<3)-->i=3
第4次:判断不成立(3<3)-->i=4
退出
结果:i=4
***********************************************
5.没有合适答案.
执行后,y=1.原因如下:
第1次:y=1-->判断成立(1<=50)
-->if(x>=0)-->条件成立-->break-->退出循环(并不进行y++操作)
结果:y=1
***********************************************
6.C
a(a(i))-->a(a(10))-->a(9)-->6
数组第1个元素为a(0)=1,a(1)=4,...
***********************************************
7.D
i-->1字节
c-->2字节
a-->4字节
1+2+4=7
结果:字节总数为7字节.
***********************************************
8.B
应该:stu是用户定义的结构类型,而不是struc stu.
***********************************************
9.C
C语言中规定不能进行指针"加"操作.
***********************************************
10.D
第1次循环:
s指向"ABCD"中"A"位置,p指向"ABCD"中"B"位置.
printf输出"B"开始的字符串.
第2次循环:
p加1-->指向"ABCD"中"C"位置,判断成立(s指向"A"位置).
printf输出"C"开始的字符串.
第3次循环:
p加1-->指向"ABCD"中"D"位置,判断成立.
printf输出"D"开始的字符串.
第4次循环:
p加1-->指向"ABCD"中"D"后面,与s相关4个地址位,条件不成立.
退出.
输出结果:
BCD
CD
D

1:C,x=0执行第一个if,y--;程序完后y=9
2:B,先执行do,完后x=-1,为假,while条件不成立,停止循环,只执行一次
3:A,循环条件i=10结果为10,是真,x>0,是真,因此死循环
4:C,i=3时循环条件不成立,但++还要执行一次,所以完了i=4
5:没答案,运行完行y=1;因为break后,y++不执行
6:C,a[a[10]]=a[9]=6
7:没答案,答案是8,内存对齐,int和char的size和为4,float为4,共8
8:B,名字加成员合起来才是完整的自定义结构
9:C,指针不能加
10:D,p从s+1开始,即B开始,每次往后移一格,输出之后的字符串

1.A
if (a=0)-->不成立. 因为a=0是赋值,相当于if(0)

if(a>0)-->不成立;所以执行y+=y
-->结果:y=20

2.B
若不是上面情况则选B.原因是:
x=-1*x-->x=-1
!x-->!(-1)-->!(true)-->false
结果:退出循环.仅循环一次.

3.A
该题关键是判断语句"i=10&&x>0".
i=10&&x>0 i=10恒为真 判断条件只要看x>0,x=1,x>0也恒为真
因此永远循环.

4.C
第1次:i=0-->判断成立(0<3)-->i=1(i++<3,指先比较i<3,再i加1)
第2次:判断成立(1<3)-->i=2
第3次:判断成立(2<3)-->i=3
第4次:判断不成立(3<3)-->i=4
退出
结果:i=4

5.没有答案.
执行后,y=1.原因如下:
第1次:y=1-->判断成立(1<=50)
-->if(x>=0)-->条件成立-->break-->退出循环(并不进行y++操作)
结果:y=1

6.C
a(a(i))-->a(a(10))-->a(9)-->6
数组第1个元素为a(0]=1,a(1)=4,...

7.D
i-->1字节
c-->2字节
a-->4字节
1+2+4=7
结果:字节总数为7字节.

8.B
应该:stu是用户定义的结构类型,而不是struc stu.

9. C
指针相减可得偏移量 可以进行赋值和比较 相加无意义

10。D p=s+1即p存储s第1个元素开始的字符串 bcd 每++一次 指针位置向后移动一次

又复习了一下c语言 题目很有迷惑性
考试嘛,最好的方法还是背题库 考试的时候秒杀

A a=0 赋值运算 值为a a==0 执行 y+=y
B x=-1 非0即为真 !x为假 执行一次
A i=10&&x>0 还是赋值运算符 i=10 为真 x永为1
C i等于3的时候不满足跳出循环 还要执行一次 ++
1 if(x>=0) break; 直接跳出了 y没变
C 从a0开始找 a10=9 a9=6
8 假设内存从0开始 i占用 0 1 c占用 2 a应从3号开始存 但float是最大元素 struct对齐方式应以float为准 即申请内存方式 每次申请4字节
i+a 占了前3字节 需要跳过3号内存 令申请4字节给 a 所以一共占8字节
D stutype 是结构名 他不是变量
C 指针相减可得偏移量 可以进行赋值和比较 相加无意义
D p=s+1即p存储s第1个元素开始的字符串 bcd 每++一次 指针位置向后移动一次

1.C
2.B
3.A
4.C
5.正确答案为1,没选项
6.C
7.答案为12
8.B
9.B
10.D


C语言的问题,这道题怎么做?
不做任何操作 \/\/循环至k=8时结束循环 if(k%2==0)\/\/此时k=8,if条件成立,执行if大括号{}内语句,此处没有大括号,故执行if语句后面紧接着的一句代码 printf("%d",k);\/\/输出k=8,故选C return 0;\/\/程序结束}有不懂的可以再问,楼主若觉得回答有所帮助,望采纳,谢谢!

问几个C语言里很多人没注意过的问题
说实话要是这几个问题只要理解了C语言的人,怎么可能不明白。很多人没注意,说明他们还没学懂。当然我也不是在自夸,我也是初学者,可是我还是为楼上几位悲哀。1.你要知道程序在内存中的结构,有栈区、堆区、文字常量区、全局变量区、函数区,使用 char* a = "xxx";这样的语句初始化指针a,"...

C语言中的问题?
这道题目C是错误的。int max(int x,int y); 函数定义后加上了分号(;),表示这是一个函数声明。但是函数声明下面加上{ },又说明这是一个函数体程序,这样语法就不对了,会报错。

某道简单的C语言题目
这个程序有以下几个问题:1、可以改进的地方。for(i=100;i<=999;i++)实际循环的时候,i 最大的可能应该是:987\/3 =329。如果i 大于329肯定重复,而且当i 大于333时,z将超过1000,i 大于500时,y和z都将超出1000。这将导致数组a[]获得的y和z的百位数字为两位数。所以实际使用的时候可以写成...

c语言问题 求解!!谢谢
注意,b-->=0;这里b--是比较之后再自减,比如b=1,先进行b=1>=0判断,后进行b--.程序执行过程中变量变化如下:i=1,b=1,while循环2次,k=2 i=2,b=0,while循环1次,k=3 i=3,b=1,while循环2次,k=5 i=4,b=0,while循环1次,k=6 i=5,b=1,while循环2次,k=8 当b=0时,...

关于c语言的问题?
根据运算符优先级\/结合性 y=(++a)&&(--b)&&(c=b+3)即 y=( (++a)&&( (--b)&&(c=b+3) ) )代入数值后,子表达式 ++a的值为1,且变量a自增为1 --b的值0,且变量b自减为0 由于子表达式--b的值为0(假),所以&&右操作数(c=b+3)不会判断,c还是原值3,而表达式整体值为0 ...

C语言的问题!!!
C语言中用__1___ 表示逻辑值“真”C语言中__非0的数__ 表示逻辑“真”假定所有变量均已正确定义,则下列程序段运行后y的值是 ( A )int a=0,y=10;if(a=0) y--; \/\/这个 a=0 虽然是赋值语句,表达式的值为0;不执行y-- else if(a>0) y++; \/\/因为a 不大于0;不...

C语言的问题,这道题怎么做?
八进制以0开头,后面跟数字0~7。char x = 040;\/\/八进制040,即十进制的32 x = x <<1;\/\/左移一位即数据乘2,即64。本题答案选择64。

c语言小问题
定义函数 int toascii(int c) 函数说明 toascii()会将参数c转换成7位的unsigned char值,第八位则会被清除,此字符即会被转成ASCII码字符。 返回值 将转换成功的ASCII码字符值返回。 范例#include<stdlib.h> main() { int a=217; char b; printf(“before toascii () : a value =%d(%c)\\n”,a,...

C语言问题 求助各位,这道题的答案是10,为什么?是不是答案给错了啊_百度...
结果的确等于10 原因是: k=10*MIN(i,j)被替换成了 k= 10* (i)>(j)?(i):(j);10*(i)的值始终大于j的值,因此返回了i的值,也就是10。

阿坝藏族羌族自治州18243604849: 几道C语言的题? 不会做!麻烦帮做一下 感激涕零!1)写一个函数,求两个float型变量中居于较大值的变量的地址写一个函数,求两个int型变量中居于较小... -
乘泄乐疾:[答案] 第一题(1):(后面的题库函数引用就省略了) #include void main() { float a,b; int c,d; printf("Please enter a b c and d:"); scanf("%f %f %d %d",&a,&b,&c,&d); if(a>b) printf("%lu\n",&a); else printf("%lu\n",&b); if(c>d) printf("%lu\n",&c); else ...

阿坝藏族羌族自治州18243604849: C语言几道简单的题目 -
乘泄乐疾: 第一题: #include<stdio.h> int main() { int i,a=0,b=0;char s[100];scanf("%s",s);for(i=0;s[i]!='\0';i++){ if((s[i]<='Z'&&s[i]>='A')||(s[i]<='z'&&s[i]>='a')) a++;if(s[i]<='9'&&s[i]>='0') b++;}printf("字母:%d,数字:%d\n",a,b); } 第二题: #...

阿坝藏族羌族自治州18243604849: 几道C语言题 -
乘泄乐疾: 第一题 if(a=1) 这里a=1是赋值 不是a==1 所以选C 第二题 if(i++==1&&(++j==3||k++==3)) 这里 i++ j++之后是个或条件 程序直接认为if条件为真就不继续计算了 所以i=2 j=3 k=3 第四题 if(b<ac)t=...

阿坝藏族羌族自治州18243604849: 有关c语言的几道题~ -
乘泄乐疾: 一 如果有定义语句char str1[10],str2[10]={"books"};则能将字符串 books赋给数组str1的正确语句是___B_____.A) str1="books"; B) strcpy(str1,str2); C) str1=str2; D) strcpy(str2,str1); 请选择-> A B C D 2、 下面程序的输出是______C__. ...

阿坝藏族羌族自治州18243604849: 求解几道C语言题目 -
乘泄乐疾: 第一题A,初始化默认k值为0 第二题 012是八进制数,对应10,你说答案是10,说明乘法*运算优先级大于自加++ 第三题C,A是1十六进制,BD是八进制,C的话不加d也是十进制,加了的话表示强制为整型 谢谢,耗时做题,望采纳

阿坝藏族羌族自治州18243604849: 几道简单的C语言题 反正自己做不来 -
乘泄乐疾: 1) #include void main() { int n,a,i; long int an=0,Sn=0; printf("n= "); scanf("%d", printf("a= "); scanf(...

阿坝藏族羌族自治州18243604849: C语言的几道习题1、设a、b、c均匀int型的变量,且a=3,b=4,c=5,则下列表达式中值为0的是_____.选择一个答案 A.a>2的值是_____.选择一个答案 A.... -
乘泄乐疾:[答案] 1)C A.a>2 为0 然后2^0==2 即D 6)(m/10)%10 7)A 8)7 a++为真 ,跳过b++ 直接执行a+=1 9)15>=a&&a

阿坝藏族羌族自治州18243604849: 几道C语言问题!!! -
乘泄乐疾: 1.A if (a=0)-->不成立. 因为a=0是赋值,相当于if(0) if(a>0)-->不成立;所以执行y+=y-->结果:y=202.B 若不是上面情况则选B.原因是:x=-1*x-->x=-1!x-->!(-1)-->!(true)-->false 结果:退出循环.仅循环一次.3.A 该题关键是判断语句"i=10&&x>0".i=10...

阿坝藏族羌族自治州18243604849: 求教几道C语言选择题(详细解答)! -
乘泄乐疾: 第一题:A. 解析:首先得到一个静态数组a[],指针p指向a[0], *(p+3)+=4可写为*(p+3)=*(p+3)+4, p+3的意思是指针移动至a[3]所在单元,*(p+3)是取值,即为9,那么运算*(p+3)+=4得*(p+3)的最终值为13,p由于指向数组初位置则*p为1....

阿坝藏族羌族自治州18243604849: 各位大侠~~~~悬赏做几道c语言题目~~~谢谢~ -
乘泄乐疾: 第一个: #include "stdio.h" main() { long int a,b; printf("enter a number:\n"); scanf("%ld",...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网