程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c語言初學者-今天做的期中考試題,有答案,但是完全不懂,求注釋

c語言初學者-今天做的期中考試題,有答案,但是完全不懂,求注釋

編輯:編程解疑
今天做的期中考試題,有答案,但是完全不懂,求注釋

#include

#include //字符串處理函數的頭文件

#define N 2

typedef struct BLOCK{/*在編程中使用typedef目的一般有兩個,
一個是給變量一個易記且意義明確的新名字,
另一個是簡化一些比較復雜的類型聲明。*/
int n;
char name[50][20];
}Block;

void sort(char array[][20],int n);

int main(void)

{

Block num[N];

int i,j;

for(i=0;i<N;i++)
{
    num[i].n=0;
}
for(j=0;j<N;j++)
{
    scanf("%d",&num[j].n);
    for(i=0; i<=num[j].n; i++)

    {
        gets(num[j].name[i]);

    }
}

for(j=0;j<N;j++)
{
    sort(num[j].name,num[j].n);
}


for(j=0;j<N;j++)
{
    printf("=== sorted names ===\n");
    for(i=1; i<=num[j].n; i++)

    {
        puts(num[j].name[i]);
    }

}
return 0;

}

void sort(char array[][20],int n)
{

char temp[20];

int i,j,k;

for(i=1; i<=n-1; i++)

{

    k=i;

    for(j=i+1; j<=n; j++)
    {
        if(strcmp(array[k],array[j])>0)

            k=j;
    }
    if(i!=k)
    {
        strcpy(temp,array[i]);

        strcpy(array[i],array[k]);

        strcpy(array[k],temp);
    }

}

}

圖片說明圖片說明圖片圖片圖片

最佳回答:


代碼功能歸根結底不是別人幫自己看或講解或注釋出來的;而是被自己靜下心來花足夠長的時間和精力親自動手單步或設斷點或對執行到某步獲得的中間結果顯示或寫到日志文件中一步一步分析出來的。
提醒:再牛×的老師也無法代替學生自己領悟和上廁所!
單步調試和設斷點調試(VS IDE中編譯連接通過以後,按F10或F11鍵單步執行,按Shift+F11退出當前函數;在某行按F9設斷點後按F5執行停在該斷點處。)是程序員必須掌握的技能之一。

 #include <stdio.h>

#include <string.h>//字符串處理函數的頭文件 

#define N 2

typedef struct BLOCK{/*在編程中使用typedef目的一般有兩個,
                    一個是給變量一個易記且意義明確的新名字,
                    另一個是簡化一些比較復雜的類型聲明。*/
    int n;
    char name[50][20]; //定義一個二維數組
}Block;

void sort(char array[][20],int n);//函數聲明

int main(void)

{

    Block num[N];//定義2個結構體變量

    int i,j;

    for(i=0;i<N;i++)
    {
        num[i].n=0;//將每個變量的n置為0
    }
    for(j=0;j<N;j++)
    {
        scanf("%d",&num[j].n);//輸入每個變量中的字符串個數
        for(i=0; i<=num[j].n; i++)

        {
            gets(num[j].name[i]);//分別輸入每個變量中的多個字符串

        }
    }

    for(j=0;j<N;j++)
    {
        sort(num[j].name,num[j].n);//對每個結構體變量中的多個字符串進行排序
    }


    for(j=0;j<N;j++)
    {
        printf("=== sorted names ===\n");
        for(i=1; i<=num[j].n; i++)

        {
            puts(num[j].name[i]);//輸出排好序的字符串
        }

    }
    return 0;
}

void sort(char array[][20],int n)
{

    char temp[20];

    int i,j,k;

    for(i=1; i<=n-1; i++)//循環,典型的冒泡排序,兩個for循環

    {

        k=i;

        for(j=i+1; j<=n; j++)
        {
            if(strcmp(array[k],array[j])>0)//比較字符串大小

                k=j;
        }
        if(i!=k)//需要交換兩個字符串
        {
            strcpy(temp,array[i]);

            strcpy(array[i],array[k]);

            strcpy(array[k],temp);
        }

    }

}

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