c语言问题,帮我编程.

2025-05-20 10:17:53
推荐回答(4个)
回答1:

三楼的思路很好,不过程序中有些不规范的地方,
我修改和注释如下:
---------------------------------
#include
#include
#include

int main(void)
{
char string[100]; /*使用char string[100]={0}并不能达到初始化所有元素的效果*/
unsigned char myCase;
char ch;
int i;

/*scanf("%s", string); 对字符串的输入,不建议使用这种方法,因为可能会溢出*/
/*使用下面的循环方法输入字符串*/
memset(string,0x0,sizeof(string)); /*初始化数组*/
for(i=0;i<=98;i++)/*用98是为了防止输入时溢出*/
{
ch=getchar();
if('\n'==ch)
{
break;
}
string[i]=ch;
}

if(strcmp(string, "0421331546") == 0)
myCase = 1;
else if(strcmp(string, "0421331547") == 0)
myCase = 2;
else if(strcmp(string, "0421331600") == 0)
myCase = 3;
else
myCase = 4;

switch(myCase)
{
case 1:
printf("正确!\n");
break;
case 2:
printf("优秀!\n");
break;
case 3:
printf("优秀!\n");
break;
case 4:
default:
printf("错误!\n");
break;
}

return 0;
}

回答2:

输入的是字符串,但switch只能操作整形,所以要做点变化。

#include
#include

int main()
{
char string[100] = {0};
unsigned char myCase;

scanf("%s", string);

if(strcmp(string, "0421331546") == 0)
myCase = 1;
else if(strcmp(string, "0421331547") == 0)
myCase = 2;
else if(strcmp(string, "0421331600") == 0)
myCase = 3;
else
myCase = 4;

switch(myCase)
{
case 1:
printf("正确!\n");
break;
case 2:
printf("优秀!\n");
break;
case 3:
printf("优秀!\n");
break;
case 4:
default:
printf("错误!\n");
break;
}

getchar();
getchar();
}

回答3:

memset(string,0x0,sizeof(string));
for(i=0;i<=100;i++)
{ch=getchar();
if('\n'==ch)
{break;
string[i]=ch;
}
if(strcmp(string,"0421331546")==0)
num=1;
else if(strcmp(string,"0421331547")==0)
num = 2;
else if(strcmp(string,"0421331600")==0)
num = 3;
else
num = 4;
switch(myCase)
{ case 1:
printf("正确!\n");
break;
case 2:
printf("优秀!\n");
break;
case 3:
printf("优秀!\n");
break;
case 4:
default:
printf("错误!\n");
break;
}
return 0;
}

回答4:

void main()
{
int number;
scanf("请输入数据:%d", number);
switch(number)
{
case 0421331546:
printf("正确");
break;
case 0421331547:
printf("优秀");
break;
case 0421331600:
printf("优秀");
break;
default:
break;
}

}