第八週做業總結

第八週做業

此次做業屬於哪一個課程 C語言程序設計
此次做業要求在哪 要求
我在這個課程的目標是 學會運用字符排序
這個做業在那個具體方面幫助我實現目標 字符串的計數和排序
參考文獻 c語言教科書和大佬博客

第一題

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

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

代碼

![](https://img2018.cnblogs.com/blog/1580673/201904/1580673-20190419165419649-1061845468.png)

流程圖

第二題

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

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

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

#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

輸出樣例:code

abcdef
abcdef

代碼

char *str_cat( char *s, char *t )
{ 
    int len;
    len=strlen(s);
    strcat(s+len,t);
    return s;
    
}

截圖
blog

第三題

本題要求編寫程序,根據輸入學生的成績,統計並輸出學生的平均成績、最高成績和最低成績。建議使用動態內存分配來實現。
輸入格式:
輸入第一行首先給出一個正整數N,表示學生的個數。接下來一行給出N個學生的成績,數字間以空格分隔。
輸出格式:
按照如下格式輸出:排序

average = 平均成績
max = 最高成績
min = 最低成績
結果均保留兩位小數。

輸入樣例:

3
85 90 95

輸出樣例:

average = 90.00
max = 95.00
min = 85.00

代碼

#include <stdio.h>
#include <stdlib.h>
int main ()
{
	int  n,i;
	double average,max,min,sum;
	double *p;
	scanf("%d",&n);
	if ((p=(double*)calloc(n,sizeof (int)))==NULL) {
		printf("Not able to allocate memory.\n");
		exit(1);
	}
	for (i=0;i<n;i++) {
		scanf("%lf",p+i);
	}
	max=*(p+0);
	min=*(p+0);
	for(i=1;i<n;i++) {
		if(max<*(p+i)){
			max=*(p+i);
		}
		if(min>*(p+i)) {
			min=*(p+i);
		}
	}
	sum=0;
	for(i=0;i<n;i++) {
		sum=+*(p+i);
	}
	average=sum/n;
	printf("average = %.2f\n",average);
	printf("max = %.2f\n",max);
	printf("min = %.2f\n",min);
	free(p);
	return 0;
}

截圖

流程圖

本題要求編寫程序,讀入5個字符串,按由小到大的順序輸出。
輸入格式:
輸入爲由空格分隔的5個非空字符串,每一個字符串不包括空格、製表符、換行符等空白字符,長度小於80。
輸出格式:
按照如下格式輸出排序後的結果:

After sorted:
每行一個字符串

輸入樣例:

red yellow blue green white

輸出樣例:

After sorted:
blue
green
red
white
yellow

代碼

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

int main()
{
    int i, g;
    char a[5][80],b[80];
    
    for(i = 0;i < 5;i++)
        scanf("%s", &a[i]);
    }
    
    for(i = 1;i < 5;i++)
    {
        for(jg= 0;g < 5-i;g++)
        {
            if(strcmp(a[g],a[g+1])>0)
            {
                strcpy(b,a[g]);
    printf("After sorted:\n");
    
    for(i = 0;i < 5;i++)
    {
        printf("%s\n", a[i]);
    }
    
    return 0;
}

截圖

學習總結

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較困惑的問題
3/9-3/15 3d 100 文件創建及其文件的利用
3/15-3/18 4d 150 二位數組和暴力解法 最大子數組最優的解法是什麼,如何下降時間複雜度
3/18-3/19 5d 250 選擇排序法 我沒有徹底消化選擇排序法的思路
3/25-3/29 5d 250 冒泡排序不會 指針也不會
3/29-4/5 5d 300 指針的具體用法 函數和指針的結合
4/5-4/12 6d 350 字符數組和指針的結合 綜合運用的方法
4/12-419 6d 400 指針函數和數組函數 拓展函數
相關文章
相關標籤/搜索