什么';C语言中的这个程序有什么问题?

什么';C语言中的这个程序有什么问题?,c,C,我是C语言编程的初学者,我不明白这个C语言的简单程序有什么问题。我不希望程序停止,然后我创建一个goto语句使它继续。问题是程序从不停止(即使我按2)。这是源代码: #include <stdio.h> int main(){ int i , num , d , times ,a ; float next; printf("Choose a number: "); scanf("%i" , &num); printf("Repeat number ... ti

我是C语言编程的初学者,我不明白这个C语言的简单程序有什么问题。我不希望程序停止,然后我创建一个goto语句使它继续。问题是程序从不停止(即使我按2)。这是源代码:

    #include <stdio.h>

int 
main(){

int i , num , d , times ,a ;
float next;
printf("Choose a number: ");
scanf("%i" , &num);

printf("Repeat number ... times: ");
scanf("%d" , &times);

for(i=0; i<times; i++){
    printf("%i\n" , num);
}

printf("Do you want to continue? (1=Yes   2=No) :");
scanf("%a" , &next);

if(a=1){
    goto jump;
}
else if(a=2){
    return 0;
}
else{
    printf("Invalid value");
    goto error;
}
jump:
    printf("Choose a number: ");
scanf("%i" , &num);

printf("Repeat number ... times: ");
scanf("%d" , &times);

for(i=0; i<times; i++){
    printf("%i\n" , num);
}

printf("Do you want to continue? (1=Yes   2=No) :");
scanf("%a" , &next);

if(a=1){
    goto jump;
}
else if(a=2){
    return 0;
}
else{
    printf("Invalid value");
    goto error;
}

error:
printf("Do you want to continue? (1=Yes   2=No) :");
scanf("%a" , &next);

if(a=1){
    goto jump;
}
else if(a=2){
    return 0;
}
else{
    printf("Invalid value");
    goto error;
}
}
#包括
int
main(){
int i,num,d,乘以a;
然后浮动;
printf(“选择一个数字:”);
scanf(“%i”和&num);
printf(“重复次数:”;
scanf(“%d”,和次);

对于(i=0;i而言,问题在于比较数字的方式。在第21行,您检查了用户是否希望继续使用以下代码:

if(a=1){
    goto jump;
比较运算符是
==
。使用
=
,您将1赋值给变量a。任何非0值都将被求值为true,因此您的代码所做的是将1赋值给a,检查a是否不是0,然后跳转。

scanf(“%a”,&next);
scanf("%a" , &next);
**scanf("%f" , &next);**

scanf("%i" , &num);
**scanf("%d" , &num);**



if(a==1){
    goto jump;
}
else if(a==2){
    return 0;
}

for(i=0; i<times; i++){
    printf("%d\n" , num);
}
**scanf(“%f”和“下一步”)** scanf(“%i”和&num); **scanf(“%d”和&num)** 如果(a==1){ 去跳; } 如果(a==2),则为else{ 返回0; }
对于(i=0;i而言,问题在于您的
scanf
读取了一个字符或字符串,并且该字符串填充在
next
中,但当您尝试控制用户选择时,即在
next
中,您控制
a
的值。尝试使用以下方法更改代码:

scanf("%d", &a);

...

if (a == 1) ...

请记住,一个单等分(=)是赋值,一个双等分(=)是平等性测试。

首先,goto已经过时。拿一本K&R的书仔细阅读,然后回来。学习使用调试器,可以使一半的问题得到解决。请浏览帮助系统,回来时详细描述您对程序的期望,并提供一个最简单的示例你的问题。@Rohithrivastava,请保持一个友好的地方,我发现你这样对初学者吠叫是完全不合适的。
scanf(“%a”,&next);
scanf(“%d”,&a);
如果(a=1){
如果(a==1){
,对每个人(尤其是你的)的理智都有好处,请学习以正统的方式缩进您的C代码。可以使用很多;我建议使用Allman(我使用它)或1TB(许多人喜欢它),并避免使用Pico样式。您还需要学习测试
scanf()
的结果;如果有人键入字母而不是数字,那么您的代码就会表现不好(人们也会犯错误!)用换行符终止非提示输出。与“逗号前无空格,逗号后有空格”保持一致。保持一致很好!请注意,
%i
是一种有效的整数转换格式(不一定是错误的);它接受不以0开头的十进制数、以0开头的八进制数和以0x或0x开头的十六进制数-所有这些都在一个转换说明符中。
%d
%o
%x
%x
转换只接受其指定的基数(十进制、八进制、十六进制、十六进制)。实际上,
printf()
还接受
%i
作为
%d
的同义词,以帮助使
printf()
scanf()
格式更加一致(同样的情况也适用于
%lf
,但是
%f
scanf()
中意味着
浮动
printf()
中的
double
,这是无法帮助的))嘿,我有一个疑问:如果a与一个数字成等号,我必须写一个==数字。但是如果我想说a大于/小于一个数字?a>/<数字是正确的吗?是的,先生