第八週做業

第八週做業:
數組

(1)函數實現字符串逆序:
本題要求實現一個字符串逆序的簡單函數。
函數接口定義:函數

void f( char *p );

函數f對p指向的字符串進行逆序操做。要求函數f中不能定義任何數組,不能調用任何字符串處理函數。
裁判測試程序樣例:學習

#include <stdio.h>
#define MAXS 20
void f( char *p );
void ReadString( char *s ); /* 由裁判實現,略去不表 */

int main()
{
    char s[MAXS];

    ReadString(s);
    f(s);
    printf("%s\n", s);

    return 0;
}
/* 你的代碼將被嵌在這裏 */

輸入樣例:測試

Hello World!

輸出樣例:設計

!dlroW olleH

1.實驗代碼:3d

void f( char *p )
{
    int i,n=0,j,t;
    while(p[i]!='\0')      //測量字符串的長度//
    i++; 
    j=i-1;
    while(n<=j)
{
    t=p[n];                //進行首位交換//
    p[n]=p[j];
    p[j]=t;
    n++;
    j--;
    }
    return;
}

2.設計思路:
流程圖下週做業補上。code

3.問題及解決方法:
本題主要問題是對於字符串測量有點小問題,不過還行,就是首位交換的時候須要注意一下。blog

4.運行結果截圖:
排序

(2)字符串的鏈接:
本題要求實現一個函數,將兩個字符串鏈接起來。
函數接口定義:接口

char *str_cat( char *s, char *t );

函數str_cat應將字符串t複製到字符串s的末端,而且返回字符串s的首地址。
裁判測試程序樣例:

#include <stdio.h>
#include <string.h>

#define MAXS 10

char *str_cat( char *s, char *t );

int main()
{
    char *p;
    char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'};

    scanf("%s%s", str1, str2);
    p = str_cat(str1, str2);
    printf("%s\n%s\n", p, str1);

    return 0;
}

/* 你的代碼將被嵌在這裏 */

輸入樣例:

abc
def

輸出樣例:

abcdef
abcdef

1.實驗代碼:

char *str_cat( char *s, char *t )
{
    char *p;
    p=strcat(s,t);
    return p;
}

2.設計思路:
流程圖下週做業補上。

3.問題及解決方法:
首先的問題是測量str字符串長度,可是看下書仍是能夠解決,而後對於字符串t複製到字符串s的末端有點不太懂。本題本身只會一點點,參照了百度資料。

4.運行結果截圖:

(3)輸出學生成績 :
本題要求編寫程序,根據輸入學生的成績,統計並輸出學生的平均成績、最高成績和最低成績。建議使用動態內存分配來實現。
輸入格式:

輸入第一行首先給出一個正整數N,表示學生的個數。接下來一行給出N個學生的成績,數字間以空格分隔。
輸出格式:

按照如下格式輸出:

average = 平均成績
max = 最高成績
min = 最低成績

結果均保留兩位小數。
輸入樣例:

3
85 90 95

輸出樣例:

average = 90.00
max = 95.00
min = 85.00

1.實驗代碼:

#include <stdio.h>
int main()
{
    int n, a[9999];
    double average, max = 0, min = 1000, sum = 0;     //根據題目要求保留兩位小數//
    scanf("%d", &n);
    for (int i = 0; i < n; i++)        //利用for循環進行累加//
    {
        scanf("%d", &a[i]);
        sum += a[i];
    }
    average = sum / n;
    for (int i = 0; i < n; i++)       //經過冒泡排序法尋找最值//
    {
        if (a[i] > max)
            max = a[i];
        if (a[i] < min)
            min = a[i];
    }
    printf("average = %.2f\n", average);    //依次輸出平均成績和最大值和最小值//
    printf("max = %.2f\n",max);
    printf("min = %.2f\n",min);
    return 0;
}

2.設計思路:
流程圖下週做業補上。

3.問題及解決方法:
題目前面還行,利用for循環累加等等,本題涉及到冒泡排序法,可是本身對於冒泡排序仍是有點不理解,而後主要仍是不知道怎麼使用動態內存分配來實現。
對於這種題目仍是有點不理解的,經過百度能夠找到一點方法。

4.運行結果截圖:

(4)本題能力有限。

學習進度條:

學習感悟: 仍是那句老話,隨着課程的進行,知識越來多,題目也愈來愈難,困惑也愈來愈多。上課也跟不上。感悟就是 難!

相關文章
相關標籤/搜索