我是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
答案 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);
}
}
希望它会有所帮助!!