hunag 发表于 2015-10-4 20:18:25

C语言加法算数的问题

我写了一个程序:
#include "stdio.h"
void main()
{
int a,b,c;
c=a+b;
scanf("%d",&a);
scanf("%d",&b);
printf("%d\n",c);
}
运行结果如下:
d:\1.jpg
但当我改成这样时却正常了?!
#include "stdio.h"
void main()
{
int a,b,c;
scanf("%d",&a);
scanf("%d",&b);
c=a+b;
printf("%d\n",c);
}
d:\2.jpg
请问:这是为什么?

康小泡 发表于 2015-10-4 21:04:12

第一个来说
因为在第一个里面你先是c=a+b,这里我们并没有输入a,b的值,意味着a,b就是任意数。得到的C那也就是不正确的数所以会出错

第二个里面
在第二个里面是先给a,b赋值,在来给c赋值,所以C有明确的值

桃花飞舞 发表于 2015-10-4 22:18:38

不是说C程序有三种结构么    1、顺序结构   语句的执行顺序是至上而下的依次执行.    2、循环结构      while(条件 1)   {循环体2}    for(初值A;范围B;步长C)    do {循环体1} while(条件2);    3、选择即分枝和跳转语句 (1)if (判断条件){分枝体}; (2)if(判断条件){分枝1} else {分枝2}    (3)if(条件1) {分枝1}   elseif(条件2){分枝2}else if (条件3){分枝3}.....else if(条件n) {分枝n }else {分枝n + 1}      switch开关语句:
switch (choice)
   {
    case 1:
    case 2:
    case 3:
    case 4:
    default :
   }该语句也是多分枝选择语句,到底执行哪一块,取决于开关设置,也就是表到时的值与常量表达式相匹配的那一路,如果相匹配,执行其后的块,接着执行第2分支,第3分支.....的块,直到遇到break语句,如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用.最后 是goto 语句goto 和一个标签名称,标签的命名遵循与命名变量相同的约定 ,
goto part2;
part2: printf("Refined analysis: \n");
上述就是所有的c程序的结构了。

hunag 发表于 2015-10-6 18:15:55

谢谢大家!我已经知道了!:big:loveliness:
页: [1]
查看完整版本: C语言加法算数的问题