C语言程序运行结果是什么

作者&投稿:却峰 (若有异议请与网页底部的电邮联系)
~

你给的C语言程序有一个错误,*P='\0';P应该小写,应该改成*p='\0';

改正后的程序的运行结果是C51

完整的程序和运行过程解析如下

#include <stdio.h>

void main()

{

 int a=28,b;

 char s[10],*p;

 p=s;

 do

 {

  b=a%16;

  if(b<10) *p=b+48;

  else *p=b+55;

  p++;

  a=a/5;

 }while(a>0);

 *p='\0';

 puts(s);

}

运行过程解析

因为a==28,p=s,p指向s[0],进入while循环,b=28%16=12,b>10,*p=12+55=67,所以s[0]=='C'(ascii码67),p++,p指向s[1],a=a/5=5

a==5,a>0,继续while循环,b=5%16=5,b<10,*p=5+48=53,所以s[1]=='5'(ascii码53),p++,p指向s[2],a=5/5=1

a==1,a>0,继续while循环,b=1%16=1,b<10,*p=1+48=49,所以s[2]=='1'(ascii码49),p++,p指向s[3],a=1/5=0

a==0,退出while循环,*p='\0',所以s[3]=='\0'(字符串结束符),输出字符数组s,因此运行结果是C51




C语言:写出程序运行结果并解释为什么
include <stdio.h>#include <stdlib.h>int main(){int a,b,c;float d=15,e,f;a=35%7;\/\/\/0 35除以7 余数是0b=15\/10;\/\/int类型计算结果舍弃小数部分 结果是 1c=b++;\/\/ 先使用b的值b在+1 c=1 b=2e=15\/10;\/\/ 1.000,因为15 和 10 都是int类型 计算结果是int ...

C语言,阅读下列程序,则在执行后,程序的运行结果为 ?
strcpy 这个函数是把后面那个字符串拷贝到前面那个字符串里面。a是字符串"nice to meet you!"的首地址,strlen(a)是计算字符串a的长度结果为17。那么a+strlen(a)\/2就是a + 17 \/ 2就是a + 8,意思是从a后面第8个位置开始接受拷贝。strcpy(a+8,"you"); 就相当于把 "you" 接到a后面...

C语言:下面程序运行后的输出结果是2,为什么?
include<stdio.h> void main(){char s[]={"012xy"};\/\/要统计的字符串 int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>='a'&&s[i]<='z') n++;\/\/此循环在统计字符串s中的小写字母个数,因此为2 printf("%d\\n",n);\/\/输出小写字母个数n } ...

求下列C语言程序的正确运行结果
include<stdio.h> define MAX 10 \/\/预定义,在编译前编译 遇到MAX先转变成10在执行编译 int a[MAX],i; \/\/定义全局变量 void sub2(); \/\/必须先声明函数 void sub1();void sub3(int a[]);void main(){ printf("\\n"); \/\/换行 sub1(); \/\/执行函数sub1()sub3(a); \/...

C语言:下面程序段的运行结果是()
1、第一行是声明变量,整型数组x[3]和整型变量ijk 2、第二行和第三行for循环对数组x[]进行初始化,数组元素全都为0 3、第四行给整形变量k赋值2 4、第五行第六行第八行这样看 for(i=0;i<2;i++){\/\/第一层循,当i=0时和i=1可以循环,i=2就不循环了 for(j=0;j<2;j++){\/\/...

C语言,关于程序运行结果的解释
这个程序的意思是,从键盘输入一行字符,照原样显示出来。当输入!后,程序执行结束。执行的原理关键在这一行:while(putchar(c=getchar())!='!')首先:c=getchar(),字符变量c从缓冲区获得一个字符 然后:putchar(c=getchar()),将字符打印出来 最后:putchar(c=getchar())!='!',判断字符是...

求C语言程序运行结果
我想这个结果应该是10×11=110吧。为什么会出现这样的结果呢?因为你定的是整数型类型,如果你定义成的事,其他的类型,可能它的小数点位数就会算出来,因为的话2加上21 12 13 23÷2的话是有一个小数点的,所以说小数点的数字不是整数类型,所以说你要改成其他的类,定义成其他的类型就会有不同的...

C语言 39. 填空题 以下程序的运行结果是___。
MAIN: x= 5 y= 1 n= 1 FUNC: x= 6 y=21 n=11 MAIN: x= 5 y= 1 n=11 FUNC: x= 8 y=31 n=21

C语言,以下程序运行的结果是什么,麻烦详细解释一下
int main(){ union b { int k;char c[2];}a;a.k=-7;printf("%d,%d\\n",a.c[0],a.c[1]);return 0;} 解释 :联合体共用存储空间。int型占4个字节,char型占一个字节,因此a的内存分布如下图 整型数-7的十六进制表示为0xfffffff9 char[0] = 0xf9 \/\/转为十进制-7 char[1]...

C语言程序运行结果及方法
for 循环中 指针p开始指向字符数组的首地址 退出条件为p所指向的内容为'\\0'(意为遍历到字符串的结尾)每次迭代使p自增 在循环体内 每次计算s乘以10加上p所指的内容减字符'0'数字字符减'0'字符 结果就是真正的数字 比如'1' - '0' 为 49 - 48 == 1 ...

资中县17134592087: C语言这个程序的运行结果是什么? -
镡佩泮立: 选C n=4; 相当于是这样 int n=0; while(n++<=2) //先进行n<=2判断,再进行n++自增运算.n=3的时候,n>2,但还是会进行++自增运算,所以为4 { ; //这个分号是while的循环体 } printf("%d",n);

资中县17134592087: c语言中,下面程序运行的结果是什么? -
镡佩泮立: 输入2时,输出66 输入3时,输出77 输入4时,输出8 输入5时,输出88 输入6时,输出9 输入其他数字或字母时,无输出,键入时,结束程序./*2345666778889 Press any key to continue*/

资中县17134592087: c语言程序运行结果 -
镡佩泮立: 一楼正解,程序运行结果是x=0 ,y=12(实际运行结果)

资中县17134592087: C语言:下面程序的运行结果是() -
镡佩泮立: 因为i=3;进入switch(i)后,执行a+=3;后a的值是3;因为没有break语句,它并没退出switch()语句,所以又执行到a+=2.a值变成了5.接着,执行break语句,退出switch(),执行printf().所以选B

资中县17134592087: 下面程序c语言中运行的结果是什么 -
镡佩泮立: 都是5.5 因为++在后面 所以先输出原有的值 然后再进行++

资中县17134592087: c语言中一个程序的运行结果 -
镡佩泮立: i=1时,n%2=1执行printf("*");,然后执行printf("#");(输出内容:*#) i=2时,执行else{}里面的continue;返回到for(...) i=3时,n%2=1执行printf("*");,然后执行printf("#");(输出内容:*#*#) i=4时,时执行else{}里面的continue;返回到for(...) i=5时,n%2=1执行printf("*");,然后执行printf("#");(输出内容:*#*#*#) 跳出循环执行printf("$");(输出内容:*#*#*#$)

资中县17134592087: 谁知道c语言程序的执行结果是什么啊??给给出正确答案,谢谢啦 -
镡佩泮立: 输入一行字符,去掉其中的'c'方法是使用 p 和 str 的2个指针移动,如果不等于'c' 就拷贝,否则跳过.执行:输入 aabbccdd 输出 aabbdd经 VC6 验证OK.有一个Warning. 最好写成 void main()...

资中县17134592087: C语言,下面程序运行的结果是 -
镡佩泮立: a<b<c你理解错了,在c语言里不能这样用的,只能写成a<b && b<c,a<b<c在c语言里的真正意思是(a<b)<c,而(a<b)给出的结果是真(1)或假(0),所以其实a<b<c就是1或者0跟c比较.第一次比较,a<b得1(也就是说a<b是真),1比c(=2)小,执行程序,使得a=2,b=1,c=1 第二次比较,a<b得0(也就是说a<b是假),0比c(=1)小,执行程序,使得a=1,b=2,c=0 第三次比较,a<b得1(也就是说a<b是真),1比c(=0)大,不执行程序,所以最后的结果还是a=1,b=2,c=0

资中县17134592087: 在C语言中,下列程序运行后输出的结果是什么,怎么运算的? -
镡佩泮立: 如果for(c1='0',c2='9';c1<c2;c1++,c2 - -);后面的;去掉: 09 //调整c1和c2,这时候判断1<8成立 18 //调整c1和c2,这时候判断2<7成立 27 //调整c1和c2,这时候判断3<6成立 36 //调整c1和c2,这时候判断4<5成立 45 //调整c1和c2,这时候判断5<4不成立成立,打印一个回车最终屏幕输出为: 0918273645如果for(c1='0',c2='9';c1<c2;c1++,c2 - -);的;不去掉,那么printf语句会等for循环结束才打印, 这个时候经过如上所述的调整,c1和c2分别变为了5和4, 所以屏幕上会打印出: 54

资中县17134592087: c语言程序运行后的输出结果是 -
镡佩泮立: 答案确实是3的,你在编译器中运行看结果就知道了. 这里,你要理解好ASCII码和转译字符“\”! 先看s[]字符串,"012xy\08s34f4w2",在这字符串中的"\0”是结束符,代表字符串结束的标记.那么s字符串其实就是"". 再看for(i=0;s[i]!=0;i++),其中的s[i]!=0其实就是s[i]!='\0',这个循环的意思其实就是,逐个判定字符串中的字符,当字符是数字(s[i]>='0'&&s[i]<='9')时候,n++. 字符串其实是"012xy",数字只有3个,所以n当然就是3了. 以上信息希望对你有帮助..^^

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