注册 登录
编程论坛 C语言论坛

break非法破坏怎么办

mm1746886443 发布于 2019-12-04 18:10, 2872 次点击
#include<stdio.h>
main()
{
     char  st[20],*ps;
     int i;
     printf("input a string:\n");
     ps=st;
     scanf("%s",ps);
     for(i=0;ps[i] !='\0';i++);
     if(ps[i]=='k'){
     printf("there is a 'k' in the string\n ");
     break;
     }
if(ps[i]=='\0') printf("There is no 'k' in the string\n");     
}
9 回复
#2
wangxinbozj2019-12-04 19:43
只有本站会员才能查看附件,请 登录
#3
纯蓝之刃2019-12-04 20:10
程序代码:
#include<stdio.h>

int main()
{
    char  st[20],*ps;
    int i;

    printf("input a string:\n");
    ps=st;
    scanf("%s",ps);

    for(i=0;ps[i] !='\0';i++)
    {
        if(ps[i]=='k')
        {
            printf("there is a 'k' in the string\n ");
            break;
        }
        if(ps[i]=='\0')
            printf("There is no 'k' in the string\n");
    }

    return 0;
}

for(i=0;ps[i] !='\0';i++);
你for后面有个;号,导致for循环结束。
后面的
if(ps[i]=='k'){
     printf("there is a 'k' in the string\n ");
     break;
     }
不在循环里,而break是跳出循环的命令,所以会报错。
#4
mm17468864432019-12-04 21:21
回复 3楼 纯蓝之刃
感谢
#5
Jason_2019-12-04 21:25
程序代码:
for(i=0;ps[i] !='\0';i++);
     if(ps[i]=='k'){
     printf("there is a 'k' in the string\n ");
     break;
     

3楼说的对,for后面有一个分号导致循环结束了,所以break相当于放在if里,只要把分号去掉就可以了
另外for里的语句没有大括号的话最好空两格
程序代码:
for(i=0;ps[i] !='\0';i++)
       if(ps[i]=='k'){
     printf("there is a 'k' in the string\n ");
     break;
     }
#6
Jason_2019-12-04 21:26
回复 5楼 Jason_
这里的代码在论坛手动打的,格式有点偏差
#7
bcbbcclbbc2019-12-05 15:49
网站首页有在线编程,可以用于编写代码,调试、运行。
只有本站会员才能查看附件,请 登录
#8
mm17468864432019-12-09 22:15
任务:要求输入5个国名并按字母顺序排列后输出。在以前的例子中采用了普通的排序方法,逐个比较之后交换字符串的位置。总感觉有问题大佬们瞅瞅
#include<stdio.h>
#include<string.h>
main()
{
    void sort (char *name[],int n);
    void print(char *name[],int n);

    static char *name[]={"CHINA","AMERICA","AUSTRALIA",
        "FRANCE","GERMAN"};
    int n=5;
    sort(name,n);
    print(name,n);


}
void sort(char *name[],int n)
{
    char *pt;
    int i,j,k;
    for(j=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
            if(strcmp(name[k],name[j])>0)    k=j;
            if(k!=i)
            {
                pt=name[i];
                name[i]=name[k];
                name[k]=pt;
            }
    }
}
void print(char *name[],int n)
{
    int i;
    for(i=0;i<n;i++)
        printf("%s\n",name[i]);
}
#9
bcbbcclbbc2019-12-10 10:18
for(j=0;i<n-1;i++)

认真写代码,回头再仔细检查
#10
mm17468864432019-12-10 15:37
回复 9楼 bcbbcclbbc
我看不懂
1