C语言运行结果后面怎么多了一个问号?如何去掉?菜鸟求助……

作者&投稿:衅肃 (若有异议请与网页底部的电邮联系)
c语言字母大小写转换运行时总是转换结果后自动带个问号,怎么回事?~

给出你的代码,然后帮你解决
你试一下如下代码:
#include
int main()
{
char ch;
ch=getchar();
if ( ch >='A' && ch<='Z' )
printf("%c
", ch+'a'-'A' );
else
printf("%c
", ch );
return 0;
}

1. 我觉得你很奇怪,人家都是 int main(int argc, char* argv[]),你非要倒过来,这个也是书上写的?第一个参数是argc(argument count),第二个是value。
2、程序确实是错误的,fgetc返回的是int,char ch是错误的本源。
int ch;
while ( (ch=fgetc(ch))!=EOF ) {
putchar(ch);
};
对于fgetc,所有的char返回值对应int值0-255,当返回-1(EOF)表示文件结束或者出错。
如果你用char,255和-1是同一个值,无法判断文件结束,然后这个-1只能被写入文件,然后判断出feof,跳出循环,所以多了一个字节EOF(-1)。

你的最后一行 printf("%c\n",X);应该是只有0~100时才可以输出对应的字符X。但是你把它放在if语句的后面,那么不论你输入什么数值,都要输出X,但是当输入数值小于0或者大于100时,X是没有被赋值的。你应该把这条语句放在前面的4个对X赋值的语句之后。

#include<stdio.h>
void main()
{
int grade;
char X;
scanf("%d",&grade);
if(grade>=85&&grade<=100)
X='A';
else if(grade>=69&&grade<=84)
X='B';
else if(grade>=60&&grade<=69)
X='C';
else if(grade<60&&grade>0)
X='D';
else
{
printf("Error. Please input a right number.\n");
return ;
}
printf("%c\n",X);
}

//加个return ;

由于当X不在0~100时,没有将X赋值,这样直接输出X会出现错误
如果想要去掉?
可以在定义变量X时赋初始值,方法是char X=0;这样就不会输出?了

老兄,你的X没有初始化值,定义X变量时,随便给个初始化值0就OK了。打个?号说明X是个未知值。

当输入100一位和0以外是 X是没有值的,而你输出了Error. Please input a right number.后 还有个printf输出X所以有个问号吧


C语言编译器运行结果是什么样的
2、在test.cpp文件中,输入C语言代码:。int a, b, c;scanf("%d%d%d", &a, &b, &c);if ( a + b > c && a + c > b && b + c > a)printf("能");else printf("不能");return 0;3、编译器运行test.cpp文件,此时输入3个边整数,成功输出了能不能构成三角形的判断结果。

c语言程序运行结果为-858993451是怎么回事
可能是越界错误所产生的乱码,或者超出范围所溢出而成的数据,就是不规范的操作引起的。

c语言程序运行结果为什么出现1.#INF00?
是因为运算结果溢出。解决办法,例:chara=126,则a+45=126+45=172-256=-85 uchara=2,则a-100=-98+256=158 a,b基本类型相同时,有符号与无符号数的转换:无符号a-->有符号b if(a<max_count\/2)b=a elseb=a-[max_count]有符号数a-->无符号数b if(a>0)b=a elseb=a+[max_count...

c语言字母大小写转换运行时总是转换结果后自动带个问号,怎么回事?_百...
给出你的代码,然后帮你解决 你试一下如下代码:include <stdio.h> int main(){ char ch;ch=getchar();if ( ch >='A' && ch<='Z' )printf("%c\\n", ch+'a'-'A' );else printf("%c\\n", ch );return 0;}

C语言:写出程序运行结果并解释为什么
\/\/后置++做完之后 c是 1 ,b是2 e=15\/10; \/\/虽然e是浮点数,但是赋值在后,所以e是1.0,不是1.5 f=d\/10; \/\/因为d是浮点数,所以做了实数除法,所以f是 1.5 printf("%d,%d,%d,%f,%f,%f",a,b,c,d,e,f);return 0;} 因此结果是:0,2,1,15.0, 1.0,1.5 ...

c语言程序运行结果
这里需要知道的只有一个,传值调用时对形参的修改不影响实参值 所以main里面一直是a=5,b=8 第一次调用p(5,8),输出 5 13 第二次调用p(13,5)输出 13 18

c语言的运行结果
第一个,十进制 8进制 17进制,以及无符号数打印-1,取决于系统位数。如果是16位,也就是int 占2字节的, 那么是 -1,177777,ffff,65535 如果是32位或者64位,int占4字节的,会是 -1,37777777777,ffffffff,4294967295 具体多少位,看你们教材或者考试系统约定。 如果实际上机运行,一般都是后面一个...

C语言main(){}运行结果
i<10;i++){ scanf("%f",&num[i]);} max=min=num[0];for(i=1;i<10;i++){ if(max<num[i])max=num[i];elseif(min>num[i])min=num[i];} printf("最大为:%f\n最小为:%f\n",max,min);return0;} 运行效果:...

c语言程序运行结果
答案是0,12。因为判断那里是一个逗号表达式,判断结果取决于后面y=10时循环结束,根据循环体看,每次循环x=x\/2-1,y=y+3,一直推可以得到答案

帮忙看下C语言程序运行结果
所以a+=5之后a=8, 因8%2=0,故跳出if(a%2==1),执行a-=3后a=5,b++ b=3再一次执行for循环,因a<8,不执行if(a>=8),因5%2==1所以a+=5之后a=10, 再一次执行for语句b++,b=4 判断知a=10>8 执行break语句跳出for循环,所以最后结果为b=4;break和continue语句的区别如下:执行...

奈曼旗13461762365: c语言字母大小写转换运行时总是转换结果后自动带个问号,怎么回事? -
全诗麦道: 给出你的代码,然后帮你解决 你试一下如下代码:#include <stdio.h> int main() { char ch; ch=getchar(); if ( ch >='A' && ch<='Z' ) printf("%c\n", ch+'a'-'A' ); else printf("%c\n", ch ); return 0; }

奈曼旗13461762365: C语言复制文件内容时候最后多了个问号
全诗麦道: 您好,取文件终止符(即,EOF)之后的字符时,返回非0值.因此,当其读取EOF字符时,并不会退出while循环,从而将EOF写入到“2.txt”中而出现“?”现象.可以通过如下修改来避免:...while(!feof(in) && (ch = fgetc(in)) != EOF) { putchar(ch); fputc(ch, out); }...

奈曼旗13461762365: 请看这段C语言代码的最后一句(当然不是花括号啦),去掉结果莫名地多了几个空格和一个问号,why? -
全诗麦道: '\0'是字符串的结束符.因为你前面的for是j++,所以,在for循环完了以后,j是自+1的,即此时的string[i+j]是串的最后一位.所以这一位要写上结束符.如果不写,原先申请string字符串的时候又没有初始化,那么,原先申请的string空间里存着的是垃圾信息,这些信息也会被当作string字串给打印出来. 当然,如果你初始化string,也不会现乱码.即你在定义char s1[100],s2[100],s[100];时,改成 char s1[100],s2[100],s[100]={0}; 也可以

奈曼旗13461762365: c语言这个程序怎么输出结果是一个问号,这是个连接字符串程序 #include "stdafx.h" -
全诗麦道: char s1,s2;只是字符,不是字符串.改一下就可以了.char s1[128],s2[128]; char *s,*ct; s = s1; ct = s2;

奈曼旗13461762365: C语言 输出 问号 -
全诗麦道: 空格的原因是printf("the reverse line is:\n %s", rev);这句里面有一个空格(你的格式是换行后空格输出 所以有一个空格)至于烫的原因 是 for (i = 0; i <= len; ++i)rev[len - i] = ori[i - 1]; 是当i=0的时候引用了ori[-1]是位置的内存,所以出现的 改为 for (i = 1; i <= len; ++i)rev[len - i] = ori[i - 1]; 就行了ps:你用的是Windows编译器 谢谢采纳

奈曼旗13461762365: C语言编程题 下面俩个代码为什么运行结果不一样 就多了一个, -
全诗麦道: if ( a > c );后面加了分号就表示这个条件语句结束了,但没有执行任何操作,接着执行后面b = a;a = c;c = b;结果就为311 if ( a > c )后面没加分号,因为a=1,c=3不满足条件a>c;所以就不执行B=A的操作,也就是跳过B=A后执行后面的语句,如果就为322

奈曼旗13461762365: 为什么我编写的c语言程序运行时后面多了个0.000002? -
全诗麦道: 我运行了,正常.printf("%.2f \n %.2f",l,s); (.2) 表示显示到小数点2位.

奈曼旗13461762365: C语言截取字符串最后一位多了个问号 -
全诗麦道: b[7]='\0'; 改为b[6]='\0'; 数组是从0开始计数,数组b第一个元素为b[0],所以截取前6位之后,结束符应放到 b[6] 而不是 b[7].

奈曼旗13461762365: c语言fp输出文件名最后自动带问号 -
全诗麦道: 没全部看完,也懒得看完了,仅看了一部分就已发现一个问题:concat函数里,这一句: tmp=malloc(strlen(szFileName)+strlen(fileID));少分配了一个字节,串长和串实际占用的空间并不全等,以'\0'为结束符的中计算串长时不会数这个结束符,而分配空间时必需为它预留空间,否则写出界了,运行结果就难以预料了

奈曼旗13461762365: C语言运行结果为什么会这样,为什么后面会多字母 -
全诗麦道: 你在读取a、b、c的值之前写了语句:d=b*b-4*a*c 由于a、b、c并没有赋值,因此执行此语句时,程序随机取数计算,而不是你输入的a、b、c的值,因为还没有读取到你的数值.

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