为什么此代码不起作用?

时间:2015-10-24 02:07:05

标签: c

这是在C中,我正在使用Dev-C ++(但保存在c扩展名中),并使用Dev-C ++中的编译器进行编译。编译日志中没有显示错误或警告。此程序是“数组” “,”for“,”do-while“运动。

对于任何短语错误,我的母语不是英语,这是我在本网站的第一个问题... 如果您需要任何进一步的信息,请询问(但我可能不会快速回答)。

#include <stdio.h>
#include <stdlib.h>
main(){
    int num[10];
    int cont=0;  
    for (cont=0;cont==9;cont++){
        num[cont]=(cont+1)*3;
        }
    printf("\nThis programs show the multiplication table of the number 3\n Digit the number you want \n To exit input -9... \n");
    do{
       cont=0;
       scanf("%d",&cont);
       if (cont>10 || cont<1){
            if(cont!= -9){
                printf("You digitted a not valid number");
            }
        }
        printf("The number 3 multiplied by %d is equal to: %d \n\n",cont,num[cont-1]);
    }while(cont!=(-9));
    getch();
}
ps:请不要太复杂的答案,我是非常非常新手。再次抱歉我的语言错误。

3 个答案:

答案 0 :(得分:2)

for (cont=0;cont==9;cont++){

for循环的第二部分是持续条件,而不是结束条件。基本上,循环继续,而第二部分为真。

所以,因为cont从0开始,它只在cont == 9时才会继续...它从未真正运行过。请尝试改为cont <= 9,当它小于或等于9时,它会移动。

答案 1 :(得分:2)

您的问题似乎出现在以下代码行中:

for (cont=0;cont==9;cont++){

for()的语法是:for(starting_with; while_true; do_each_loop) 因此,当你说cont == 9时,这意味着只有当cont等于9时,循环才会运行。你可能需要像cont&lt; = 9这样的东西。

答案 2 :(得分:0)

一些问题

  1. for循环的测试和限制是错误的。

    int num[10];
    for (cont=0; cont<10; cont++) {
    
    // or even better
    #define N 10
    int num[N];
    for (cont=0; cont<N; cont++) {
    ... 
      if (cont> N || cont<1){
    
  2. 代码使用无效索引访问数组,添加else

    if (cont>10 || cont<1) {
      if(cont!= -9){
        printf("You digitted a not valid number");
      }
    }
    else { 
      printf("The number 3 multiplied by %d is equal to: %d \n\n",cont,num[cont-1]);
    }
    
  3. 代码应检查scanf()的返回值。

    if (scanf("%d",&cont) != 1) break;
    
  4. 次要:非便携式main()签名

    // main(){
    int main(void) {