有以下程序 #include<stdio.h> main() { char c1,c2; scanf("%c",&c1); c2=c1+32; printf("%c,%c\n",c1,c2

}
程序运行输入65回车后,能否输出结果、结束运行?

输入65是不能运行的!
首先你输的6就送给了C1,然后执行while循环语句,
字符6的ASCII码是054,很明显 C1<65成立,
继续执行while里面的语句,而此时又输了个‘5’,
C1被重新赋值,它现在是5了!!而字符'5'依然符合 C1<65,
再次循环执行 scanf("%c",&c1)....
直到输入一个字符不满足条件(c1<65||c1>90),循环才会终止,否则程序将一直循环下去而不会有任何结果。
只要输入一个大写字母,立即就会有输出!!!

楼主明儿就考试了!!我也要考阿!!
加油阿!!!!
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-24
事实上你的printf函数后面少了一个括号和一个分号。。。如果你的程序是下面这样:
#include<stdio.h>
main()
{
char c1,c2;
scanf("%c",&c1);
c2=c1+32;
printf("%c,%c\n",c1,c2);
}
那么它是可以运行的,但也许不是你要的结果。因为%c作为scanf的参数是要求录入一个字符,而65是两个字符,故实际上c1的值为'6'。
输出结果如下:
--------------------------
65
6,V
请按任意键继续. . .
------------------------追问

恩,对的,我少打了。。。但是答案是不能???

追答

你的问题是能否输出结果并结束运行,答案是可以(因为它实际上输出了结果。VC中测试)。
但也许你的本意是测试大小写转换,这种转换由于你的参数为%c,故你应该输入的字符'A',而不是65,它实际上是两个字符'6'与'5'。

输出结果并结束是可以的,但输入“65”测试大小写转换时不行的。

追问

这是09年3月全国二级c 填空第8题。。。就是问能还是不能

追答

没办法,从题干中可以看出来出题者的意图是测试大小写转换,但问的有问题,因为它明明输出了结果(如果你没打错的话,我在VC中测试了的)。。。可能出题者的答案是说该程序(输入'65')实现大小写转换是“不能”的。

第2个回答  2011-03-24
程序规范格式后应该是这样:
#include<stdio.h>
main()
{
char c1,c2;
scanf("%c",&c1);
c2=c1+32;
printf("%c,%c\n",c1,c2);
}
这是传说中的大小写转换啊。
输入65,其对于的ASCII字符为"A"
c2=c1+32即为“a”
那么最后输出结果为:
A,a
第3个回答  2011-03-24
能输出结果,但不是A,a,输出的是6,v。你把 scanf("%c",&c1); 中的%c改成%d就能输出A,a了
第4个回答  2011-03-24
能够输出结果,并且能够结束运行。输出结果为97

...#include<stdio.h> main() { char c1,c2; scanf("%c",&c1); c2=...
首先你输的6就送给了C1,然后执行while循环语句,字符6的ASCII码是054,很明显 C1<65成立,继续执行while里面的语句,而此时又输了个‘5’,C1被重新赋值,它现在是5了!!而字符'5'依然符合 C1<65,再次循环执行 scanf("%c",&c1)...直到输入一个字符不满足条件(c1<65||c1>90),循环才会...

怎样用C++写出 输入一个大写字母。输出时变成小写
C语言的编写如下:include <stdio.h> include <stdlib.h> void main (){ char c1,c2; \/\/ 定义两个字符c1,c2 printf("请输入大写字母的值!\\n"); \/\/输出你输入的那个大写字母以及它的ASCII c1=getchar( ); \/\/从键盘输入一个大写字母,放在c1 c2=c1+32; \/\/将大写的转换成小写...

C语言scanf,输入字符
你把scanf("%c\\n",&c1)里的“\\n”去掉就可以了。换行是根在printf里才可以执行的。scanf用于存储,include "stdio.h"void main(){ char c1,c2;scanf("%c",&c1);printf("%c,%d\\n",c1,c1);c2=c1+32;printf("%c,%d\\n",c2,c2);} ...

从键盘输入3个字符,将它们反向输出,并输出这3个字符ASCII码值之和。
include<stdio.h>int main(){ char c1,c2,c3;scanf("%c %c %c",&c1,&c2,&c3);printf("%c %c %c\\n%d\\n",c3,c2,c1,c1+c2+c3);return 0;}

#include <stdio.h> main( ) { char c; scanf(
include <stdio.h> main( ){ char c;scanf("%3c",&c);\/\/输入c字符,但之前要补两位空格 %3c表示这个字符要占三个字符位 printf("c=%c\\n",c)\/\/输出c=“你输入的c值,%c代表输出为字符,如你输入65,则输出不是65,而是对应的ASCII表中的字符A”} ...

)有以下程序 #include <stdio.h> main() { int a1,a2; char c1,c2...
A。因为scanf第一个参数是%d,所以开始扫描输入中的数字,并且停在第一个不是数字的字符上。第二个参数是%c,所以扫描一个字符。在答案A里,这个字符是a;答案B里是空格;答案C里是逗号;答案D里也是空格。所以只有A是正确的

#include <stdio.h>main() {char ch1,ch2,ch3; scanf("%1c%2c%3c...
定义的char类型,所以你输入的1 22 333中,空格也算char,因此输出三个字符就是1 空格 2这三个了。多输入的不会输出

用c语言中的数组如何编译程序使大小写字母互相转换
include<stdio.h> void main(){ char c1;for(;;)\/\/可以多次对字符进行转换 { printf("请输入一个字符(输入0时退出):");scanf("%c",&c1);if (c1=='0')return; \/\/输入0时退出 if(c1<='z'&&c1>='a')printf("其对应大写字母为%c\\n",c1-('a'-'A'));else if(c1<='Z'&&...

有以下程序 #include<stdio.h> main() { char a,b,c,d; scanf(“%c%...
答案是C。scanf读了两个字符,所以a='1',b='2'。但scanf没有把一行读完,最后还有一个回车。所以c=getchar()读到的是回车。d才读到下一行的3。所以打印结果就是12回车3,是C

用C语言编程:从键盘输入一个英文大写字母,输出其对应的小写字母以及小写...
include<stdio.h> int main() { char ch; scanf("%c",&ch);\/\/输入大写字母 printf("%c,%d",ch-('A'-'a'),ch-('A'-'a')); \/\/输出.('A-'a')是ASC码表上大写与小写字母间的差值 \/\/ch-('A'-'a'):大写转小写。输出ASC码,利用输出格式控制%d就可以自动转...

相似回答