有关C语言的几道题,求答案及解释
1.浮点数加了之后取整(int)(x+y)=(int)(16.8+18.6)=(int)(35.2)=35
2.a.其中的分号应当用西文的,就像printf句后的那个,用中文分号错误(可能是录入错误?)
b.可能也是分号问题,排除了中文分号则正确
c.逗号不能分隔语句
d.中文分号不是合法语句,若为西文的则为正确的空语句
3.d.超出数组长度
4.s没有赋初值应写作double t,s=0;
t=1/(2n+1);应写做t=1/(2*n+1); n先加第一项就没有了,所以要后加
结束条件要判断t的精度达到一个小数,而t是不断减小的数据,应当写大于精度要求继续循环,一旦小于精度要求停止循环。
5.
[fun(4)]
if ( 4>0 ) fun(4-1)==>fun(3)
[fun(3)]
if ( 3>0 ) fun(2)
[fun(2)]
if ( 2>0 ) fun(1)
[fun(1)]
if ( 1>0 ) fun(0)
[fun(0)]
0不大于0,显示" 0",当前显示" 0",返回
回到fun(1)调用,接着执行printf,当前显示" 0 1"
回到fun(2)调用,接着执行printf,当前显示" 0 1 2"
回到fun(3)调用,接着执行printf,当前显示" 0 1 3"
回到fun(4)调用,接着执行printf,当前显示" 0 1 3 4"
A)p=p+2;
意思是将a[2]的地址赋给p:p=&a[2];
B)a是个指针常量不能赋值
C)如果将*p的星号去掉就是正确的
D)a是个数组名是一个不能改变的左值
2、暂时还不是很明白,C和D都能在win-tc下编译通过,值都存在变量str3,和str4里面,可以通过printf("%s",strX);看,但是没有字符串没有存在指针指向的地址,不懂,指针还待学习……
3、输出为goodgood;
*sp = s表示把s数组的首地址赋予指针sp,
sp = sp + 2让指针sp往前移两个位置,也就是它现在指向了s[2],原来是指向s[0]
sp = “to”我想是把“to”赋予sp,因为sp本身也是个变量,原来存储的是s数组的地址,现在变成了“to”,如果你在后面加上
printf("%s",sp);
你会发现输出的是to,
puts(s)就是输出字符串s;
可以明显发现,后面几条语句根本没有对数组S进行操作,所以输出结果就是s初始化的值
*******************************************************************************
目前的认识就这些了
1 int ch = true(1),
while(ch=getchar()=='A');
等价于while(getchar() == 'A')
ch = 1;
2 选C 原因是在用strcpy的时候要确保有足够的空间去存储要赋值的内容,明显str3它只是一个定义了一个指针,并没有指向具体的内存,因此无法赋值,其它三个在定义的时候就初始化了,指向了具体的内存;
3 goodgood!
原因是在指针指向的时候它的起始地址(也就是s)并没有改变,只是指向它的指针sp发生了变化,sp先是指向了第三个字符o,后来给让它指向了to,所以最后sp指向的内容为to,而puts(s)还是原来的内容goodgood!
还有不懂的继续交流~~
1.若变量已正确定义,在执行以下while语句时,输出字符A后,ch的值是__.
while(ch=getchar()=='A');//是不是输入字符A后啊 值应该是65,就是A的ASCII码,我估计你这ch是整型变量
2.库函数strcpy用以复制字符串。若有定义和语句:
char str1[]="string",str2[8],*str3,*str4="string";
则以下对库函数strcpy的运用错误的是
A)strcpy(str1,"HELLO1"); B)strcpy(str2,"HELLO2");
C)strcpy(str3,"HELLO3"); D)strcpy(str4,"HELLO");//选C,因为犯了指针未初始化就使用并且存储在只读域中,无法写入的错误
3.以下程序运行后的输出结果是__
#include<stdio.h>
#include<string.h>
main()
{char s[20]="goodgood!",*sp=s; sp=sp+2; sp="to"; puts(s);} //输出是:"goodgood"
运行一下就知道了,s字符串没有改变的原因四sp="to";是对指针sp指示位置的改变,不是改变其内容,所以输出结果不变
PS:第一道题5楼正解...
1: 0, 赋值操作的优先级低于==,所以退出while时==表达式值为0,并且这个0被赋值给ch
2: D 这个string存储在只读区域,无法对其执行写操作,否则抛出异常
3: goodgood,两条赋值语句都是在改变sp指针的值,对s无影响
补充:
2: 当然C也是错的,应该选C,D...
1:回车. 它是基于行缓冲,是一个字符接一个字符的读 2:C.因为这个指针可以指向任何位置,可能导致系统崩溃 3:goodgood!. sp是指针,无论它指向哪,s数组不变,故原样输出
计算机二级c语言考试的题型是什么我知道有40道选择题一个一分...
单选题中1~10题为二级公共基础知识,考试内容包括数据结构与算法、程序设计基础、软件工程基础、数据库设计基础四部分。单选题的11~40题是C语言的内容。操作题包括程序填空(18分)、程序改错(18分)和编程题(24分)各一题。程序填空是将一个完整的程序,扣掉两到三处,让考生将它填写完整。由于每位...
三道c语言的程序题要求要步骤全、最好把思路写上 先上200分在线等_百 ...
第一题很简单,没啥好说的,就是输入数字,然后一个简单的 switch case 语句。include <stdio.h> int main(){ int a, b, opr;printf("输入两个数字,如 3 5 (数字用空格分开)\\n");scanf("%d %d", &a, &b);printf("选择计算方式:\\n");printf("1. 加, 2. 减, 3. 乘, ...
关于c语言的几道题
4) B A)、 int a = b = 0; 错误的。C语言规定,每个变量可以先声明后初始化,也可以在声明的同时进行初始化,但初始化值必须是常量或已经定义了的变量。在该句中,声明a时,b尚未声明,也就是说,给a初始化时,b尚未初始化,所以是错误的。正确的写法是 int a = 0,b = 0;B)、char ...
求问几道关于C语言的题目~谢啦!
1B ; n2未定义,f未定义, D中科学计数法 2D ;不好意思,看错题,应该是选错误的表达式。3A ;这个选A的原因是1\/2默认按整数处理了,sin(1\/2)=sin(0)
问几道关于C语言合法字符和数字的问题
1、D \\n是转义字符,表示换行 2、C -10不是八进制或十六进制;0开头的是八进制,数值范围是0~7,所以0abc是错的;0a12同理 3、D、0开头的是八进制,数值范围是0~7,所以0f是错的;-2.5不是1~3位的整数,所以3.9E-2.5是错的,0开头的是八进制,数值范围是0~7,所以0a是错的...
有关C语言试题
C语言试题(10)选择题(50×2=100)1.以下叙述正确的是( )。A)在C程序中,main函数必须位于程序的最前面B)C程序的每行中只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误2.C语言规定:在一个源程序中,main函数的位置( )。A)必须在最开始 B)必须在系统...
C语言的几个题目。请教高手。高分高分100,再追加。
int n;int i, j;char c;scanf("%d", &n);for(i=0; i<n; i++){ for(j=0; j<=i; j++){ c = 'A'+j;printf("%c ", c);} for(j=i; j>0; j--)printf("%c ", c-j);printf("\\n");}
几道C语言的函数程序补全题,求大佬解答
请仔细看:首先看一下程序的逻辑(虽然貌似题主应该不是在这一块有问题:关于ascii码的解释:首先得知道每个字符和数值的对应关系(图不清晰可看戳这里:ascii编码对应表 好了,现在看程序中的第一个if语句,在用大于、小于这些镇绝悔运算比较符比较char的时候,会自动转换为整数比较,也就是说‘0’...
关于二级C语言公共基础知识的几道题~~~急~~~!!
判断,也就是说求的是这么一个i,这个i加1后能被2整除,再加1后 能被3整除,再加1后能被7整除,所以结果i是25和77,x最后等于28和70 第四题 选D (p+1)指向的是一个char,不能用%s打印的,这个题我是这样理解的,不知道对不对 第五题 选C 我觉得就是选C啊 第六题 选C 我觉得他要...
我是学计算机的,有几道C语言的题目,请高手帮忙解答一下(关于指针的...
c语言中,函数形参为指针,则想函数传递的是实参的地址,对 *指针 的操作会反映到实参上 就像 1题中 sub(10,5,&a); 向形参z传递的是 a的 地址,在 函数中对 *z 的操作就是对a的操作 因此 a,b,c分别为-5,-12,-7;2题中 判断p1==&m为假 那么a当然就是0了;...
林乔金蓓: 第一题: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....
饶平县17049696086: c语言常识题求解答1. 以下不正确的C语言标识符是__D_______. A、ABC B、abc C、a - bc D、ab.c为什么求解释 - ?
林乔金蓓:[答案] C 规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线()组成的字符串,并且其第一个字符必须是字母或下划线
饶平县17049696086: 几道C语言的基础题,求解!!! 求讲解!~!!! - ?
林乔金蓓: 1:5 逗号表达式的值是最右边表达式的值. 2:c 3:5 4:10 5:b
饶平县17049696086: 求C语言练习题答案,这几个题我不确定,拜托明白的帮忙看下!急用的,最好能解释一下9. 设int a[10];则对a数组元素的错误引用是( ) A.a[5] B.*(a+1) ... - ?
林乔金蓓:[答案] 9.设int a[10];则对a数组元素的错误引用是( ) A.a[5] B.*(a+1) C.a[10-10] D.a(5) D是错误的,因为a是数组,不是函数. 11.设double * p[6];则( C 这个没法解释 ) A.p是指向double型变量的指针 B.p是double型数组 C.p是指针数组,其元素是指向...
饶平县17049696086: C语言的一道题,求答案及解释? 38、(设有char a[5],*p=a;)下面的选项中正确的赋值语句是(). - ?
林乔金蓓:[选项] A. p=p+2; B. a=a+2; C. *p=“abcd”; D. *a=“abcd”;
饶平县17049696086: 关于C语言的几道题,求解答,高分 - ?
林乔金蓓: 1.题意不明.是整数a的十进制形式循环左移,还是整数a在内存中的二进制形式循环左移? 如果是十进制形式左移,那么当a中某位为0时,循环左移会导致数的位数变小.极端情况下,甚至会出现1000左移变成1,然后就始终是1的这种情况. ...
饶平县17049696086: 几道C语言的基础题,求解!!! 求讲解!~!!! - ?
林乔金蓓: 1、int c;c=a>b?a++:b++;则c=5原因:?:拆开就是if(a>b) c=a++;else c=b++;2、c解释见http://zhidao.baidu.com/question/282749106.html3、3个因为到第3个字符,'\0'时,会当作串尾处理4、输出为125、b是错误的~ad为普通int,c是赋值给一个long型变量
饶平县17049696086: 关于C语言的练习题求详细解答下 以下选项中.与k=n++完全等价的表达式是( ) - ?
林乔金蓓:[选项] A. k=n,n=n+1 B. n=n+1,k=n C. k=++n D. k+=n+1
饶平县17049696086: C语言的几道题求解!!!?
林乔金蓓: 要搞清楚第一个问题,需要对scanf()有一定了解,该函数是个变参函数,由写入的内容和目的内存地址成对存在.题目中最后一个参数表示目的内存地址,数组名代表第一个元素的地址,故A正确._>是成员引用操作符,D引用的是一个成员(而不是一个地址) #define是宏定义命令,它也是一个预处理指令,和#include指令一样,这意味着它结尾不应有分号.#define A B编译后该命令将代码中所有的A用B替换.因此swap将被括号内的内容替换.
饶平县17049696086: 求C语言题并有答案,最好有讲解?
林乔金蓓: 3、编写一个程序,打印乘法“九九表”,即 第一行:1*1=1,1*2=2,…1*9=9. 第二行:2*1=2,2*2=4,…2*9=18. … 第九行:9*1=9,9*=18,…9*9=81. 答案是: main(){int i,t;for(t=1;t<=9;t++){ for(i=1;i<=9;i++)printf(" %d*%d=%2d",t,i,t*i);printf("\n"); } getch(); }