求大神解答一个C语言的简单疑问 求C语言大神回答一个小疑问!!

\u6c42\u5927\u795e\u4e3a\u6211\u89e3\u7b54\u4e00\u4e2a\u5173\u4e8eC++\u7684\u5c0f\u7591\u95ee\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u5728\u7ebf\u7b49

char a[1024]; \u5c31\u662f\u5b9a\u4e49\u540e\u6ca1\u6709\u521d\u59cb\u5316
char a[1024]=""; \u5b9a\u4e49\u540e\u53c8\u521d\u59cb\u5316\u4e86

#includeint main(void){float Fahrenheit,Celsius;//Celsius=(Fahrenheit-32.0f)*(5.0fb/9.0f);//\u8868\u8fbe\u5f0f\u653e\u8fd9\u4e2a\u4f4d\u7f6e\u4e0d\u5bf9printf("Enter Fahrenheit tempereture:");scanf("%f",&Fahrenheit);Celsius=(Fahrenheit-32)*5/9;//\u8868\u8fbe\u5f0f\u8c03\u6574\u5230\u6b64\u884c\uff0c\u8868\u8fbe\u5f0f\u4e2d\u4e71\u4e03\u516b\u7cdf\u7684\u4e1c\u897f\u5df2\u7ecf\u5220\u9664\u3002printf("Celsius equivalent:%.1f\n",Celsius);//\u53bb\u6389&\uff0c\u5982\u679c\u80fd\u6267\u884c\uff0c\u5c31\u662f\u8fd9\u4e2a&\u5bfc\u81f4\u7ed3\u679c\u662f0return 0;}\u4e0d\u77e5\u9053\u4f60\u7528\u7684\u4ec0\u4e48C\u8bed\u8a00\u7f16\u7a0b\u8f6f\u4ef6\uff0c\u4f60\u5199\u7684\u7a0b\u5e8f\u5176\u5b9e\u662f\u4e0d\u80fd\u6267\u884c\u7684\u3002

#include<stdio.h>
void main()
{
 int c;
 while((c=getchar())!='
')//getchar()一次输入一个字符。
 {
  switch(c-'2')//‘2’的ASCII码是50,就相当于是你输入的字符减了50。
  //举个例子,A,也就是65,也就是15。下面做的就是default
  {
  case 0:
  case 1:putchar(c+4);
  case 2:putchar(c+4);break;
  case 3:putchar(c+3);
  default:putchar(c+2);break;//以A为例,输出的是67也就是C
  }
 }
 printf("
");
}

我是以char型为例的:

其实这里考到的知识点也就几个:

getchar() 

从stdio流中读字符,相当于getc(stdin),它从标准输入里读取下一个字符。 http://baike.baidu.com/view/8858246.htm

while() 

 http://baike.baidu.com/view/1455003.htm

switch()

 http://baike.baidu.com/view/600161.htm


以2473为例:

以int型为例,那-‘2’可以就当做是-2吧。那就可以省去中间ASCII码转换的过程了。

#include<stdio.h>
void main()
{
 int c;
 while((c=getchar())!='
')//先接收的是2
 {
  switch(c-'2')//这里就是-2==0
  {
  case 0://做这里没语句就做下面一行
  case 1:putchar(c+4);//2+4=6,又因为没有break所以做下一行,
  case 2:putchar(c+4);break;//这里还是2+4==6,然后进入下一个数,也就是4
  case 3:putchar(c+3);
  default:putchar(c+2);break;
  }
 }
 printf("
");
}

到这里为止实现了 66

然后做4

#include<stdio.h>
void main()
{
 int c;
 while((c=getchar())!='
')
 {
  switch(c-'2')//4-2==2
  {
  case 0:
  case 1:putchar(c+4);
  case 2:putchar(c+4);break;//跳到这一行,4+4==8,然后跳出。
  case 3:putchar(c+3);
  default:putchar(c+2);break;
  }
 }
 printf("
");
}

这里实现了8,然后接下来做7

#include<stdio.h>
void main()
{
 int c;
 while((c=getchar())!='
')
 {
  switch(c-'2')//7-2==5,下面没有就做default
  {
  case 0:
  case 1:putchar(c+4);
  case 2:putchar(c+4);break;
  case 3:putchar(c+3);
  default:putchar(c+2);break;//7+2==9
  }
 }
 printf("
");
}

这里实现打印了一个9,进入下一个3

#include<stdio.h>
void main()
{
 int c;
 while((c=getchar())!='
')
 {
  switch(c-'2')//这里3-2==1,其实和第一次做2一样,因为没有break,所以执行了两次
  {
  case 0:
  case 1:putchar(c+4);//3+4==7
  case 2:putchar(c+4);break;//3+4==7,跳出。
  case 3:putchar(c+3);
  default:putchar(c+2);break;
  }
 }
 printf("
");
}

这里打印了两个7。

最后得出结果:



gtechar()的意思就是从键盘输入字符。c=getchar()就是把输入的每个字符赋给c,包括空格,换行符。这就与scanf不同,scanf会自动跳过空格,换行符,而getchar()则不会。

c=getchar(),由于c为int类型,所以getchar()获得一个char类型的,自动转换为ascall码,存在c中再与‘\n’比较,'\n'自动转换为ascall码大约为13?记不清了,再比较,就是控制while的回车结束输入,swith的话就很简单了如果你不明白可以再问,希望能帮到你

程序运行到第一个getchar卡住,因为标准输入里面没有东西
你输入了一个字符或者多个字符以后点回车,这些字符就进标准输入了!并以一个\n字符结尾
然后这个getchar拿到第一个字符,送到switch里面减掉一个数字2,也就是字符本身就是数字,减掉2是可以的
然后进入case
如果case后面跟了break'
就跳出switch
不跟break就穿越执行下面的case
一直到标准输入的所有字符都被while里面的getchar取完,最后取到\n
程序结束

  • 涓涓狢璇█鐨闂,姹傚ぇ绁炶В绛鍘熷洜!
    绛旓細1銆乻ub1涓殑鍙橀噺a,b鏄叾鎵鍦ㄦ枃浠朵腑瀹氫箟鐨勶紝鍏朵腑a鏄潤鎬佸叏灞鍙橀噺锛宐鏄叏灞鍙橀噺 a浼氶粯璁ゅ垵濮嬪寲涓0锛屽洜姝ょ涓娆℃墽琛宻ub1()鏃惰緭鍑虹粨鏋滀腑a=0+2=2, b=3+3=6銆俿ub2涓殑鍙橀噺a鏄叾鎵鍦ㄦ枃浠朵腑瀹氫箟鐨勯潤鎬佸叏灞鍙橀噺锛屽洜涓轰笌sub1()鎵澶勪笉鍚屾枃浠讹紝鍥犳鍙橀噺a鏄笉鍚岀殑锛涜屽彉閲廱鏄笌鍙涓涓鏂囦欢鍏变韩鐨勫叏灞...
  • 瀵澶х鏉ヨ寰绠鍗曠殑C璇█闂,鎮祻寰堥珮鐨勫摝
    绛旓細sell_ducks(village+1, sold);} }int main() { int ducks = 2; for (int i = 1; i <= 7; i++) { ducks = ducks * 2;} int sold = ducks - 2; printf("sum=%d ", ducks);sell_ducks(1, ducks); return 0;}c include <stdio.h> void sell_ducks(int ...
  • 姹傚ぇ绁炶В绛斾竴涓狢璇█鐨勭畝鍗曠枒闂
    绛旓細='\n')//鍏堟帴鏀剁殑鏄2 { switch(c-'2')//杩欓噷灏辨槸-2==0 { case 0://鍋氳繖閲屾病璇彞灏卞仛涓嬮潰涓琛 case 1:putchar(c+4);//2+4=6锛屽張鍥犱负娌℃湁break鎵浠ュ仛涓嬩竴琛岋紝 case 2:putchar(c+4);break;//杩欓噷杩樻槸2+4==6锛岀劧鍚庤繘鍏ヤ笅涓涓鏁帮紝涔熷氨鏄4 case 3:putchar(c+3);...
  • C璇█鐨闂 ,姹傚ぇ绁炶В绛!
    绛旓細= 1)寰幆鏉′欢锛岄『搴忔墽琛屼笅闈㈢殑璇彞銆
  • C璇█鐨勭畝鍗闂姹傚ぇ绁绠鍗曠瓟妗
    绛旓細杈撳嚭鏃讹紵%.2f 鍗冲彲鎸囧畾杈撳嚭涓や綅灏忔暟 const float 蟺=3.1415926;void main(){ float r=1;areaMethod(r);//闈㈢Н girthMethod(r);//鍛ㄩ暱 } float areaMethod(float inr){ return inr*inr*蟺;} float girthMethod(float inr){ return 2*蟺*inr;} ...
  • 绠鍗昪璇█闂 璺眰澶х瑙f瀽
    绛旓細(涓)绗竴瀹椾唬鐮佹敼濡備笅灏卞彲浠ヨ揪鍒伴鐩姹傦紝浣嗗疄闄呬笂杩樻槸浠f鍒嗘敮鍋氫负濂姐//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"int main(void){ float l,j; printf("璇疯緭鍏ュ綋鏈堝埄娑="); scanf("%f",&l); switch(int(l/100000)){ case 0: ...
  • 鍙戠幇浜涓涓鏈夎叮鐨c璇█闂,璇峰悇浣澶х甯繖瑙i噴涓涓嬨
    绛旓細2.scanf("%d",20000)杩欏彞鍚堟硶骞舵病鏈変粈涔堥毦浠ョ悊瑙g殑鍦版柟锛屽洜涓烘寚閽堝綊鏍瑰埌搴曚篃鍙槸涓涓鍦板潃鍊肩舰浜嗭紝鐩存帴鐢ㄥ湴鍧鍊煎拰鐩存帴鐢ㄦ寚閽堬紝杩欐病鏈変换浣曞尯鍒紝鏈澶氬氨鏄紪璇戝櫒浼氳鍛婁綘涓涓嬨備笉鐭ラ亾浣犺鐨勨溾濊嚜宸卞畾涔変竴涓嚱鏁版瘮濡俧锛*pointer锛夛紱鐒跺悗鍦ㄧ敤杩欑鏂规硶灏变細鎶ラ敊鈥溾濇槸浠涔堟剰鎬 鐪嬩笅闈唬鐮 include <stdio.h...
  • 鍒濆C璇█,鍦ㄥ姣斾袱涓▼搴忔椂,纰板埌鐐圭枒鎯,鐩存帴鐪嬬▼搴忓惂,姹傚ぇ绁瑙i噴涓涓...
    绛旓細int b[20],*pb;b鏈韩鏄涓涓鍦板潃锛宐[0]鐨勫湴鍧 pb鏈鍒濈瓑浜巄锛屽嵆鎸囧悜b鐨勭涓涓厓绱 鍦ㄧ涓涓猣or寰幆鎵ц瀹屽悗锛宲b鑷姞浜嗭紝涓嶅湪鎸囧悜b鐨勭涓涓厓绱 pb鎸囧悜浜嗙幇鍦╞涓殑鏈鍚庝竴涓瓧绗︹榎0'锛屾墍浠b[0]='\0',for寰幆鐩存帴娌℃墽琛 鎵浠ヨ繖閲岃鍐嶅垵濮嬪寲pb锛宲b=b锛岃繖鏍穚b[0]='I',pb[1]=' ' ...
  • C璇█闂姹傚ぇ绁炶В绛
    绛旓細(b=2,n%=b)鍏跺疄灏辨槸涓ゆ潯璇彞锛岀涓鏉¤鍙ュ皢b璧嬪间负2锛岀浜屾潯璇彞灏唍瀵筨鍙栦綑骞跺皢缁撴灉瀛樺埌n涓,锛堜篃灏辨槸5%2鐨勭粨鏋滀负1锛屾妸1璧嬪肩粰n锛夈傜劧鍚庝笂闈㈣繖鏉¤鍙ョ殑杩斿洖鍊煎氨鏄浜屾潯璇彞鐨勮繑鍥炲硷紝涔熷氨鏄1锛屽洜姝%=(b=2,n%=b)+4灏辩浉褰撲簬a%=1+4鍗砤%=5銆傝12%5鐨勫间负2锛屽皢2鐨勭粨鏋滆祴缁...
  • C璇█闂,姹傚ぇ绁瑙e喅,璋㈣阿鍟,鎴戞槸灏忕櫧,鏈濂借兘澶熻В閲婁笅鍘熷洜
    绛旓細绗涓涓i++锛宨 鐨勫煎弬涓庡埌寮忎腑鐨勮繍绠楋紱绗簩涓++i锛宨 = 2鐨勫煎弬涓庡埌寮忎腑鐨勮繍绠楋紱绗笁涓猧++锛宨 = 2鐨勫煎弬涓庡埌寮忎腑鐨勮繍绠椼傚浜庣涓涓猧++锛宨 鐨勫兼槸2锛屽緱鍒発鐨勫兼槸2+2+2 = 6锛沬 鍦ㄥ紡瀛愮粨鏉熷悗锛屽紑濮嬫湭瀹炵幇鐨勮嚜鍔犺繍绠楋紝鍦ㄥ紡涓畬鎴愯嚜鍔犱竴娆$殑鍩虹涓婏紝鍐嶈嚜鍔2娆★紝鍊兼槸4銆
  • 扩展阅读:扫一扫出答案 ... 史上最难智商题 ... 手机扫一扫解题 ... c语言入门自学全套 ... 一秒拍照答题 ... 免费搜题拍照 ... 扫一扫自动答题 ... 童男曾被委派寻找三大神器 ... c#入门基础知识 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网