c语言题目求解

作者&投稿:骆待 (若有异议请与网页底部的电邮联系)
C语言题目求解 详细程序~

#include int sumOfFactors(int numA){ int i=1; int numB; for(numB = 0; i<=numA/2; i++) { if(!(numA%i)) numB+= i; } return numB;}void main(){ int numA,numB,numN; printf("显示5000以内的亲密数:
"); for(numA = 1; numA<=5000; numA++) { //计算numA的各个因子,同样循环 numB = sumOfFactors(numA); //计算numB的各个因子,同样循环 numN = sumOfFactors(numB); if(numN==numA&&numA<numB) printf("%d--%d ",numA,numB); }}网页链接

第一个问题:两单引号间夹一个字符意味着把中间的字符转换成ASCII码,对于char类型,其实要用ASCII码赋值,换句话说其实ch = 'a';等价于ch = 97;,所以'a'事实上已经把a转化为ASCII码的数字编号,可以用于数字加减。
第二个问题:用了Dev C++和VisualStudio测试过都是非法的,原因大概是因为\0和空还是有本质上的区别。
'\0'是字符串的结束标志,虽然它的意义上是空,我们也可以当做空来理解,然而对于计算机而言,它并不是空,而是一个确确实实存在的标识符,它告诉编译器字符串在这里结束了。
而'',则是实实在在的空,它里面什么都没有,是真的没有(无论对于你而言还是计算机而言),所以编译器无法读取中间的数据,于是就报错了(我反而觉得如果存在不报错的编译器,是该编译器的一种优化,它就应该报错才对)
另外测试过char ch='\0';是正确的,用转义字符可以成功地录入“空字符”。

这是考查学生对按位与“&”运算符和逻辑判断的理解。在C语言中,按位与“&”运算符的运算规则如下(二进制数):
0&0=0;
0&1=0;
1&1=1;
1&0=0;
逻辑判断“!=”的结果有两种,即真或假;真时值为1;假时值为0。
在代码中的语句:
y=(x&4)!=0;
执行时,先进行 x&4 的计算,所得的结果再与0比较,比较的结果值再给y。

4的二进制数是0100(实际该写00000000000000000000000000000100,这里写4个位就可以了);
7的二进制数是 0111;
8的二进制数是 1000;
所以
输入 7时,7&4=0111&0100=0100=4,
4!=0这是真,所以y=1;
输入 8时,8&4=1000&0100=0000=0,
0!=0这是假,所以y=0。

这样将y输出,也就知道了数x第2位的值了(注意,说位时,一般是从第0位开始的)。
下在在手机上用易历知食软件里的微C程序设计来验证一下结果,手机上的代码如下:

手机上的运行结果如下:



这段代码是求二进制指定位的数据,
第三行代码y=(x&4)!=0;
可以看成:
if( x&4) !=0)
y=1;
else
y=0;
解释:
第一步:x&4 ,即 取二进制的第二位(有效位是0-7)的值,
比如x=5,二进制数据为 0000 0101,
( 0 0 0 0 0 1 0 1
二进制取值按8421码来计算为:128、64、32、16、8、4、2、1,
把包含1的8421码,相加得到: 4+1=5)
即 经过 & (与运算)后,结果为 4,如果不明白,请自行百度:与运算
第二步:判断 4!=0,结果当然是不等于0了,所以返回1,
第三步:把返回值1,赋值给y。

说的有点乱 -_-0,希望你能看明白。

y=(x&4)!=0==>计算逻辑 & 然后!= 然后=;
x&4 即 x值与0100逻辑与;
任何值和0做与运算均为0,故而与后的值一定为0100或者0000;
最终结果这个取决于x的第二位数是1还是0;
如果是1 则结果为(x&4)=*1**&0100=0100(值为1),(x&4)!=0 为真,y=(x&4)!=0=1 ;
如果是0 则结果为(x&4)=*0**&0000=0000(值为0),(x&4)!=0 为假,y=(x&4)!=0=0;


求解c语言题目
1 . x>10 假,所以返回x-10 也就是0,输出0 2. 先返回w的值,然后w= w + 1, 而w是3,非零,所以||右边的不再计算,输出1,此时w为4 3. !w为0, 0 > z假,输出0 4. w&&z两者都是>0的,所以输出1.所以答案是C

C语言题目求解
for(a=1,b=1;b<=20;b++) 循环语句,初始 a=1,b=1;步长 b=b+1; b 达到 20 结束循环。第一次进入: a=1,b=1;满足 (a%2==1) 条件,a+=5; a得6;continue; 回到循环开始处。第二次进入:a=6 b=2; 不满足if(a>10),不满足 (a%2==1),执行 a-=3; a得3...

一道C语言编程题求解
include<stdio.h> void main() { int a,n,s,t,i;scanf("%d%d",&a,&n); s=0; t=0;for ( i=0;i<n;i++ ) { t*=10; t+=a; s-=t;} s+=t; s+=t; printf("%d\\n",s);} 首先这是一个累和的题目,完成方法就是循环n次,向求和变量s上边加n项,一般循环变量i 其次,...

c语言编程题目求解
题目1:使用if多分支结构:c include<stdio.h> int main(){ int score;printf("请输入学生的成绩:\\n");scanf("%d", &score);if(score>=90 && score<=99){ printf("学生的成绩等级为A\\n");}else if(score>=80 && score<=89){ printf("学生的成绩等级为B\\n");}else if(score>=...

c语言一道题目,求解,若a是int型变量,且a的初值为6,则执行表达式a+=a-=...
从右往左依次计算 a-=a*a得到a=a-a*a=6-6*6=-30 a+=a得到a=a+a=-60 所以最后a的值为-60

求解一道C语言题目
include <stdio.h> include <stdlib.h> include int GetPrime(int a[], int b[], int n) { int C = 0;for(int i = 0; i < n; i++) { int j;if(a[i] == 1 || a[i] % 2 == 0)continue;for(j = 2; j * j <= a[i]; j++)if(a[i] % j == 0)break;...

汇编语言题目 求解
MOV AL,DA1 ;56H→AL,AF=0,CF=0 ADD AL,DA1+2 ;56H+67H=BDH→AL,AF=0,CF=0 DAA ;BDH→23H→AL,AF=1,CF=1 MOV DA2,AL ;AL→DA2,AF=1,CF=1 MOV AL,DA1+1 ;78H→AL,AF=1,CF=1 ADC AL,DA1+3 ;78H+78H+CF=F1H→AL,AF=1,CF=0 DAA ;F1H→57H...

一道基础C语言题,求解,最好附上这部分的知识点(通俗易懂点)。_百度知...
一道基础C语言题,求解,最好附上这部分的知识点(通俗易懂点)。 C老师语言老师补充的一个知识点,没注意听,现在求高手教导。题目如下:产生动态数组。动态分配了10个整型存储区域,然后进行赋值并打印。拜托帮我写出这个题的答案,顺便再讲讲分配存... C老师语言老师补充的一个知识点,没注意听,现在求高手教导。题目...

C语言简单题目求解
外层循环总共执行了4次,分析下i取不同值的时候,内层循环执行的次数:i =1 0次 i =2, 1次 i=3, 2次 i=4,3次 所以结果是6个#的输出。

几题C语言题目 求解~~
第一题:x=0117,是八进制117=十进制1*8^2+1*8^1+7=79.x=%3d,x=%6d,x=%6o,x=%6x,x=%6u分别表示整型输出占3位,整型输出占6位,整型八进制输出占6位,整型十六进制输出占6位,无符号整型输出占6位。以上输出结果都是右对齐,位数不够,前面用空格补。结果应该是 x= 79,x= 7...

利辛县15745643205: c语言题目求解
戏磊复方: 第一道:b 因为字符串的变量名即为其首地址 第二道:c 在vc++下运行的结果 第三道:b 在vc++下运行的结果,注意i是从1开始 第四道:d 第五道:d

利辛县15745643205: 求解一道简单的C语言题 -
戏磊复方: 一:输入十进制,输出八、十、十六进制.#include <stdio.h> int main(void) { int n;scanf("%d", &n);printf("八进制:%o\n", n); printf("十进制:%d\n", n); printf("十六进制:%x\n", n); return 0; } 例子:16 八进制:20 十进制...

利辛县15745643205: C语言题目,求解...急.. -
戏磊复方: #include main() { int a[5],b[8]; int i,j,max1=a[0],max2=b[0]...

利辛县15745643205: 求解C语言编程题. -
戏磊复方: 1.#include "stdio.h"#include "stdlib.h"#include "math.h" double func(double *content,int n) { double ave=0,s=0; int i; for(i=0;i<n;i++) ave+=*(content+i); ave/=n; for(i=0;i<n;i++) s+=pow(ave-*(content+i),2); s/=n; return s; } int main() { int n,i; ...

利辛县15745643205: C语言题目求解 -
戏磊复方: 我就说要点了..1) double x,y; x=1; y=x+3/2; y的值为什么是2.0?3/2两个整型相除得整型1.2)main() { int x=0.5;char z='a'; printf("%d\n",(x'z...

利辛县15745643205: C语言题目求解. -
戏磊复方: 程序1:#include#include void main() { double f,max=-999999; int x; for(x=1;x { f=x*x-5*x+sin(x); if(f>max)max=f; } printf("Max=%lf\n",max); } 程序2:#include#include void main() { int i,j,k=0,s; for(i=1999;i { j=i; s=0; while(j>0) {if(j%10==9)s++; j/=10; } ...

利辛县15745643205: 关于C语言的题,求解 -
戏磊复方: #include int main(){int n,time,sum,csum;char ch;while(~scanf("%d",/n件事情{sum=csum=0;getchar();//清空缓存while(n--){scanf("%c%d...

利辛县15745643205: 求解c语言题目: -
戏磊复方: #include <stdio.h> main() { int m, n, i, j, count; count = 0; for ( m = 90, i = 1; m > 0; ++i, m-= 10) for ( n = m - 5, j = 1; n > 0; ++j, n -= 5 ) printf("第%4d种: 共%2d张 : %2d 张10元, %2d 张5元, %2d 张1元\n", ++count, i+j+n, i, j, n); return 0; } ...

利辛县15745643205: 求解一个C语言编程题 -
戏磊复方: #include#include int main(){ int a,b; char ch; printf("输入表达式:"); scanf("%d%c%d", printf("结果...

利辛县15745643205: C语言编程题求解!!!!!!!!!!!!!!!!!!!!!!!!!! -
戏磊复方: #include#include int main() { int i, j, k, l, m, n; char xingshi[20], mingzi[20]; puts("你的名字\n"); scanf("%s", mingzi); puts("你的姓氏\n"); scanf("%s", xingshi); printf("你的姓名是\n%s %s\n", mingzi,xingshi); k=strlen(mingzi); l=...

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