我是编程新手,我正在网上尝试不同的活动来掌握它。 我遇到了一个特定问题的问题,我想创建一个程序,用户输入一个值并打印一个特定的字符串。 例如,当用户输入0时,它将打印字符串'black',输入1将打印字符串'brown',如下图所示:
我的问题是我希望用户输入一个像012这样的值,然后用空格打印“黑色,棕色,红色”。我开始做以下事情:
#include <stdio.h>
#include <stdlib.h>
int colours(int t){
if(t == 0){
printf("black");
}
else if(t == 1) {
printf("brown");
}
else if (t == 2) {
printf("red");
}
else if(t == 3) {
printf("orange");
}
else if(t == 4) {
printf("yellow");
}
else{
printf("incorrect colour number");
}
return;
}
int main()
{
int n;
printf("Enter n: ");
scanf("%d", &n);
printf("colour code"", colours(n));
return 0;
}
如何一次打印多种颜色?我不是要求代码我只需要提示使用什么,我不确定使用IF语句对于这个问题是否正确?
答案 0 :(得分:0)
要“分解”用户输入,您可以尝试将其作为字符串,一个字符表接收。
char* input = ( char* ) malloc( sizeof( char ) * maxlength + 1 ); // allocate a char table to store user input, maxlength being the maximum length you expect.
scanf("%s", input);
注意1:您必须将1加到您希望从用户输入接收的最大长度,因为scanf需要多一个char
来添加字符\0
以终止该字符串。 />
注意2:\0
字符也称为NULL-terminator
。
然后你会看到如下字符串:
for( int i = 0 ; i < strlen( input ) ; i++ )
{
colours( input[ i ] );
}
注1:您必须#include <string.h>
才能使用strlen
注意2:您可能必须使用:colours
将您的char转换为int以将其传递给colours( ( int ) input[ i ] );
。
注3:将char
转换为int
可以获得char的ASCII值。
使用每个char
的{{3}}(查找数字)来识别和打印它们。因此,您可以使用以下两种方法之一进行测试:
void colours( int t ) // as mentioned in the comments, you do not have to return something.
{
switch( t )
{
case 49: // ASCII code of 1
printf("brown\n");
break;
// ... other cases
default: // Don't forget the default statement
printf("incorrect colour number\n");
break;
}
}
或:
switch( t - (int) '0' ) // (ASCII code of t - ASCII code of '0') gives you the number given by the user, as an int
{
case 1: //
printf("brown\n");
break;
// ... other cases
default:
printf("incorrect colour number\n");
break;
}
正如其他人在评论中所说的那样,当你必须连续两次else if
时,最好使用switch case语句。
最后,不要忘记释放手动分配的内存,这样就不会有内存泄漏:
free( input );
答案 1 :(得分:0)
首先,我建议你宣布你的颜色&#34;作为一个void类型,因为它不需要返回任何东西(void colours(int t){
)。
这是我解决这个问题的方法:
初始化一个数组,该数组将存储来自用户输入的字符串(例如123 )。然后将数组传递给函数( google this,因为它不像传递整数那么简单)。然后创建一个循环,循环遍历数组,直到它到达它的末尾,并为每次传递打印一个给定的颜色。 (例如。array[0]
为1,因此打印棕色,array[1]
为2,因此打印红色,array[2]
为3,所以打印橙色)。