程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c語言-這個題目為什麼我的輸出會變成這樣

c語言-這個題目為什麼我的輸出會變成這樣

編輯:編程解疑
這個題目為什麼我的輸出會變成這樣
#include<string.h>
#include<ctype.h>
int main(){
    char str1[20]={0},str2[20]={0},str3[20]={0},str4[20]={0};
    scanf("%s%s",str1,str2);
    int j=0;


    //task 1
    int i=strcmp(str1,str2);

    if (i>0)
    printf("%s > %s\n",str1,str2);
    if (i==0)
    printf("%s = %s\n",str1,str2);
    if (i<0)
    printf("%s < %s\n",str1,str2);

    //task2
    int n,x,y,len_str2=strlen(str2),len_str1=strlen(str1);
    scanf("%d%d%d",&n,&x,&y);
    for(i=0;i<20;i++){
        str3[i]=str1[i];
    }
    if (n >= len_str2){
        strcat(str3,str2);
        for(i=x;i<=y;i++){
            str3[i]=toupper(str3[i]);
        }
        int len_str3=strlen(str3);
        printf("the length of \"%s\" is %d\n",str3,len_str3);

    }
    else{
        for(i=len_str1,j=0;i<n+len_str1;i++,j++){
            str3[i]=str2[j];

        }
        for(i=x;i<y;i++){
            str3[i]=toupper(str3[i]);
        }
        int len_str3=strlen(str3);
        printf("the length of \"%s\" is %d\n",str3,len_str3);
    }

    //task 3
    for(i=0;i<20;i++){
        str2[i]=str3[i];
        str2[i]=tolower(str2[i]);
    }
     i=strcmp(str3,str2);

    if (i>0)
    printf("%s > %s\n",str3,str2);
    if (i==0)
    printf("%s = %s\n",str3,str2);
    if (i<0)
    printf("%s < %s\n",str3,str2);

    //task4
    int len_str3=strlen(str3);
    if (len_str3/2-10>0)
    printf("%s\n",str3);
    else
    printf("%s\n",str2);

    return 0;
}

圖片說明
圖片說明

最佳回答:


抱歉看錯了 不過我覺得你可以memset先把str2清零再復制過去 還有就是循環感覺不要用20來控制 用strlen來控制

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved