Python123第八章答案

Python123第八章答案(自写,仅供参考) By:肇院伟烨

前言

1、代码自己写的,不是标准答案,仅供参考。

2、建议看懂后自己另外写而不是复制粘贴。

3、点击目录可以转跳

文章目录

第八章

第1题

#include <stdio.h>
#include<string.h>
#define MAX_LEN 100
#define LEN 5
char str[LEN][MAX_LEN];
char* order[LEN] = {0};
int size=0 , end_number;
void insert(int i)
{
	if (i == 0)
	{
		order[i] = str[i];
		size++;
	}
	else
	{
		end_number = size - 1;
		while (end_number >= 0 && strcmp(order[end_number], str[i]) > 0)
		{
			order[end_number + 1] = order[end_number];
			end_number--;
		}
		order[end_number + 1] = str[i];
		size++;
	}
}
int main()
{
	int i, b;
	for (i = 0; i <5; i++)
	{
		scanf("%s", str[i]);
		insert(i);
	}
	printf("After sorted:\n");
	for (i = 0; i <5; i++)
	{
		printf(order[i]);
		if (i != 4)
		{
			putchar('\n');
		}
	}

	return 0;
}

第2题

#include <stdio.h>
#include<stdlib.h>
int main()
{
	float* p;
	int i, n;
	scanf("%d", &n);
	p = (float*)malloc(n * sizeof(float));
	if (p == NULL)
		exit(1);
		
	float sum = 0, average;
	int max = 0, min = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%f", &p[i]);
		sum += p[i];
		if (p[i] > p[max])
			max = i;
		if (p[i] < p[min])
			min = i;
	}
	average = sum / n;
	printf("average = %.2f\nmax = %.2f\nmin = %.2f\n", average, p[max], p[min]);
	free(p);
	p = NULL;
	return 0;
}

第3题

#include <stdio.h>
void sum_diff(float op1, float op2, float* psum, float* pdiff);

int main()
{
    float a, b, sum, diff;

    scanf("%f %f", &a, &b);
    sum_diff(a, b, &sum, &diff);
    printf("The sum is %.2f\nThe diff is %.2f\n", sum, diff);

    return 0;
}
void sum_diff(float op1, float op2, float* psum, float* pdiff)
{
    *psum = op1 + op2;
    *pdiff = op1 - op2;
}

第4题

#include <stdio.h>
#include <string.h>
int main()
{
	int i,n;
    char str[100],a,b,c;
    gets(str);
    a=str[0];
    b=str[1];
    c=str[2];
    for(i=0;str[i+3]!='\0';i++)
    {
        str[i]=str[i+3];
    }
    str[i]=a;
    str[i+1]=b;
    str[i+2]=c;
    str[i+3]='\0';
    puts(str);
	return 0;
}

第5题

#include <stdio.h>

void splitfloat( double x, int *intpart, double *fracpart );

int main()
{
    double x, fracpart;
    int intpart;

    scanf("%lf", &x);
    splitfloat(x, &intpart, &fracpart);
    printf("The integer part is %d\n", intpart);
    printf("The fractional part is %g\n", fracpart);

    return 0;
}

void splitfloat( double x, int *intpart, double *fracpart )
{
    *intpart=x;
    *fracpart=x-*intpart;
}

第6题

#include<stdio.h>
#define MAX 100
int arr[MAX];
int search(int list[], int n, int x);
int main()
{
    int i,n,number, x;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    scanf("%d", &x);
    if (search(arr, n, x) == -1)
        printf("Not found");
    else
        printf("index = %d", search(arr, n, x));
    return 0;
}
int search(int list[], int n, int x)
{
    int i;
    for (i = 0; i < n; i++)
        if (list[i] == x)
        {
            return i;
            break;
        }
    if (i == n)
        return -1;

}

第7题

#include <stdio.h>
#define MAXN 10

int ArrayShift(int a[], int n, int m);

int main()
{
    int a[MAXN], n, m;
    int i;

    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);

    ArrayShift(a, n, m);

    for (i = 0; i < n; i++) 
    {
        if (i != 0) 
            printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");

    return 0;
}
int ArrayShift(int a[], int n, int m)
{
    int swap,i,j;
    for (i = 1; i <= m; i++)
    {
        swap = a[n - 1];
        for (j = n - 1; j > 0; j--)
            a[j] = a[j-1];
        a[0] = swap;
    }
    return 0;
}

第8题

#include <stdio.h>
#define MAXN 20

void CountOff(int n, int m, int out[]);

int main()
{
    int out[MAXN], n, m;
    int i;

    scanf("%d %d", &n, &m);
    CountOff(n, m, out);
    for (i = 0; i < n; i++)
        printf("%d ", out[i]);
    printf("\n");

    return 0;
}
void CountOff(int n, int m, int out[])
{
    int i = 0, j = 1, count = 0;
    for (i = 0; i < n; i++)
    {
        out[i] = 0;
    }
    i = 0;
    while (j <= n)
    {
        for (i = 1; i <= n; i++)
        {
            if (out[i - 1] == 0)
            {
                count++;
            }
            if (out[i - 1] == 0 && count == m)
            {
                out[i - 1] = j;
                j++;
                count = 0;
            }
        }
    }
}

第9题

#include <stdio.h>
#define MAXN 100

void strmcpy( char *t, int m, char *s );
void ReadString( char s[] );

int main()
{
    char t[MAXN], s[MAXN];
    int m;

    scanf("%d\n", &m);
    ReadString(t);
    strmcpy( t, m, s );
    printf("%s\n", s);

    return 0;
}
void ReadString( char s[] )
{
    gets(s);
}
void strmcpy( char *t, int m, char *s )
{
    int i,len=0,j=0;
    for(i=0;t[i]!='\0';i++)
    {
        len++;
    }
    if(m>len)
    {
        s[0]='\0';
    }
    else
    {
        for(i=m-1;i<len;i++)
        {
            s[j]=t[i];
            j++;
        }
        s[j]='\0';
    }
    
}

第10题

#include <stdio.h>
#include <string.h>
#define MAXN 20

void delchar( char *str, char c );
void ReadString( char s[] );

int main()
{
    char str[MAXN], c;

    scanf("%c\n", &c);
    ReadString(str);
    delchar(str, c);
    printf("%s\n", str);

    return 0;
}
void ReadString( char s[] )
{gets(s);}

void delchar( char *str, char c )
{
    int i,j=0;
    char str1[MAXN];
    for(i=0;str[i]!='\0';i++)
    {
        if(str[i]!=c)
        {
            str1[j]=str[i];
            j++;
        }
        
    }
    str1[j]='\0';
    strcpy(str,str1);
}

第11题

#include <stdio.h>
#include <string.h>
#define MAXN 20
typedef enum {
false, true}
bool;
bool palindrome( char *s );
int main()
{
    char s[MAXN];
    scanf("%s", s);
    if ( palindrome(s)==true )
    printf("Yes\n");
    else
    printf("No\n");
    printf("%s\n", s);
    return 0;
}
bool palindrome( char *s )
{
    int end,star=0;
    end=strlen(s)-1;
    while(1)
    {
        if(s[star]!=s[end])
        return false;
        else
        star++;
        end--;
        if(star>end)
        return true;
    }
}

第12题

#include <stdio.h>
#include<ctype.h>
#define MAXS 15
void StringCount(char* s);
void ReadString(char* s);
int main()
{
    char s[MAXS];
    ReadString(s);
    StringCount(s);
    return 0;
}
void ReadString(char* s)
{
    int i = 0;
    while (scanf("%c", s + i) && s[i] != '~')
    {
        i++;
    }
    s[i] = '~';
    s[i + 1] = '\0';
}
void StringCount(char* s)
{
    int i = 0,upper=0,lower=0,blank=0,digit=0,other=0;
    while (s[i] != '\0')
    {
        if (isupper(s[i]))
            upper++;
        else if (islower(s[i]))
            lower++;
        else if (s[i]==' ')
            blank++;
        else if (isdigit(s[i]))
            digit++;
        else
            other++;
        i++;
    }
    printf("%d %d %d %d %d", upper,lower, blank, digit, other);
}

第13题

#include <stdio.h>
#define MAXN 10

int ArrayShift(int a[], int n, int m);

int main()
{
    int a[MAXN], n, m;
    int i;

    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);

    ArrayShift(a, n, m);

    for (i = 0; i < n; i++) 
    {
        if (i != 0) 
            printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");

    return 0;
}
int ArrayShift(int a[], int n, int m)
{
    int swap,i,j;
    for (i = 1; i <= m; i++)
    {
        swap = a[n - 1];
        for (j = n - 1; j > 0; j--)
            a[j] = a[j-1];
        a[0] = swap;
    }
    return 0;
}

第14题

#include <stdio.h>
#include <string.h>
#define MAXN 20
int palindrome( char *s );
int main()
{
    char s[MAXN];
    scanf("%s", s);
    if ( palindrome(s)==1 )
    printf("Yes\n");
    else
    printf("No\n");
    printf("%s\n", s);
    return 0;
}
int palindrome( char *s )
{
    int end,star=0;
    end=strlen(s)-1;
    while(1)
    {
        if(s[star]!=s[end])
            return 0;
        star++;
        end--;
        if(star>end)
            return 1;
    }
}

上一篇:java – Jms消息仅在消息确认之前确认


下一篇:水仙花数(Python123)