如果有条件的话,坚持无效功能

时间:2016-10-17 09:43:03

标签: c

我是C的新手。我坚持使用此代码。关于代码和我的代码的问题如下。

问题:写一个c程序输入一个数字(整数),如果输入的数字是奇数:打印“(数字)是一个奇数”,
如果输入的数字是偶数,则 如果插入的数字是20或10到20之间,则乘以2 如果插入的数字是40或30到40之间,则乘以3 如果插入的数字是50或40到50之间,则乘以4 最后显示相乘的答案
我的代码

 Sheets("Stream").Range("F103:J103").Copy
 Sheets("General").Range("F2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

2 个答案:

答案 0 :(得分:0)

以下是我给你的一些提示:

#include <stdio.h>
#include <stdlib.h>

int main(){
    int i;
    printf("Enter Number:"); // What were /t and i doing here?
    scanf("%d",&i);
    if (i%2) // "!=0" Can be replace by nothing
        printf("%d is an odd number",i); //If you got only one line after a statement, you don't need braces
    else{ // Your function isn't needed since its only called once
        if (i>10 || i<=20)
            i *= 2; // Same as i = i * 2
        if (i>30 || i<=40)// You don't need an else since i doesn't change its value
            i *= 3;
        if (i>40 || i<=50)
            i *= 4;
        printf("%d", i);
    }
    return 0; 
}

如果您仍想使用函数,然后向其添加参数,则无法从主函数访问i变量:

void todo1(int i);

呼叫:

todo1(i);

答案 1 :(得分:0)

你没有传递变量&#39; i&#39;到你的todo1()函数。所以,todo1()函数没有意识到变量&#39; i&#39;这就是你坚持这个功能的原因。

进行以下更改:

#include <stdio.h>
#include <stdlib.h>

void todo1 (int);  // declare parameter type,too

int main(){
int i;
printf("Enter Number:\t",i);
scanf("%d",&i);
if (i%2!=0){
printf("%d is an odd number",i);
}
else
{
todo1(i);    // pass value of i to todo1()
}
return 0; 
}


void todo1(int i){   //copy value of variable i
    if (i>40 || i<=50)
    {
         i=i*4;
         printf("%d", i);
    }
         else  if (i>30 || i<=40)
             {
               i=i*3;
               printf("%d", i);
             }
              else if (i>10 || i<=20)
                 {
                     i=i*2;
                     printf("%d", i);
                }
             }

作为替代方案,如果您不想传递i的价值而不是宣布&#39; i&#39;作为全球变量&#39;。这只需要对当前程序进行一次修改:

#include <stdio.h>
#include <stdlib.h>

int i;   //declare i here, globally

void todo1 ();

int main(){

printf("Enter Number:\t",i);
scanf("%d",&i);
if (i%2!=0){
printf("%d is an odd number",i);
}
else
{
todo1();
}
return 0; 
}


void todo1(){
    if (i>40 || i<=50)
    {
         i=i*4;
         printf("%d", i);
    }
         else  if (i>30 || i<=40)
             {
               i=i*3;
               printf("%d", i);
             }
              else if (i>10 || i<=20)
                 {
                     i=i*2;
                     printf("%d", i);
                }
             }

希望它会有所帮助!!