如何在执行所有 if else 代码后最后打印一个条件
how to print a condition at last after executing all the if else code
如果输入在字符串名称中,我想检查输入然后打印数字
给定的名称。如果给定名称不在 字符串名称 中,则打印“你的名字不在这里”,但每次我 运行 我都得到“你的名字不在这里”代码。
#include<stdio.h>
#include<cs50.h>
#include<string.h>
int main(void)
{
string userinput;
string names [] = {"david", "mark"};
string numbers[] = {"123456789","987654321"};
userinput = get_string("name: ");
for(int i = 0; i<2 ;i++)
{
if(strcmp(names[i], userinput) == 0)
{
printf("your number is %s ", numbers[i]);
}
}
printf("your name is not here\n");
}
**ACTUAL OUTPUT**
name: david
your number is 123456789 your name is not here
一个非常简单的解决方案是创建一个变量来跟踪是否找到了名称:
int found = 0;
for(int i = 0; i<2 ;i++)
{
if(strcmp(names[i], userinput) == 0)
{
printf("your number is %s ", numbers[i]);
found = 1;
// Break so we don't have to iterate over the rest
// of the items if we already found our name.
break;
}
}
if (!found) printf("your name is not here\n");
这自然是很简单的代码,但你应该早早就开始考虑程序设计了。您的代码执行三项不同的独立操作:
- 提示 input/take 用户输入 (I/O)。
- 如果输入与值匹配则搜索(搜索算法)。
- 展示结果(I/O)。
最好将第 2) 部分和第 3) 部分分开,以免 I/O 与算法混淆,因此:
#include <stdbool.h>
...
bool found = false;
for(int i=0; i<2; i++)
{
if(strcmp(names[i], userinput) == 0)
{
found = true;
break;
}
}
if(found)
{
printf("your number is %s \n", numbers[i]);
}
else
{
printf("your name is not here\n");
}
如果愿意,我们可以将这些部分拆分为单独的函数。例如,如果字符串的数量被扩展,我们将希望实现比这种“暴力”循环更好的搜索算法。
如果输入在字符串名称中,我想检查输入然后打印数字 给定的名称。如果给定名称不在 字符串名称 中,则打印“你的名字不在这里”,但每次我 运行 我都得到“你的名字不在这里”代码。
#include<stdio.h>
#include<cs50.h>
#include<string.h>
int main(void)
{
string userinput;
string names [] = {"david", "mark"};
string numbers[] = {"123456789","987654321"};
userinput = get_string("name: ");
for(int i = 0; i<2 ;i++)
{
if(strcmp(names[i], userinput) == 0)
{
printf("your number is %s ", numbers[i]);
}
}
printf("your name is not here\n");
}
**ACTUAL OUTPUT**
name: david
your number is 123456789 your name is not here
一个非常简单的解决方案是创建一个变量来跟踪是否找到了名称:
int found = 0;
for(int i = 0; i<2 ;i++)
{
if(strcmp(names[i], userinput) == 0)
{
printf("your number is %s ", numbers[i]);
found = 1;
// Break so we don't have to iterate over the rest
// of the items if we already found our name.
break;
}
}
if (!found) printf("your name is not here\n");
这自然是很简单的代码,但你应该早早就开始考虑程序设计了。您的代码执行三项不同的独立操作:
- 提示 input/take 用户输入 (I/O)。
- 如果输入与值匹配则搜索(搜索算法)。
- 展示结果(I/O)。
最好将第 2) 部分和第 3) 部分分开,以免 I/O 与算法混淆,因此:
#include <stdbool.h>
...
bool found = false;
for(int i=0; i<2; i++)
{
if(strcmp(names[i], userinput) == 0)
{
found = true;
break;
}
}
if(found)
{
printf("your number is %s \n", numbers[i]);
}
else
{
printf("your name is not here\n");
}
如果愿意,我们可以将这些部分拆分为单独的函数。例如,如果字符串的数量被扩展,我们将希望实现比这种“暴力”循环更好的搜索算法。