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;
    }
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 斐波那契数列是一种数列,其中每个数字都是前两个数字的和。例如,斐波那契数列的前几个数字是 0、1、1、2、3、5、8、13、21等等。而在题目中的 "python123斐波纳契数列 Ⅱ" 中,应该是指在Python语言中实现斐波那契数列的相关代码问题。 要实现斐波那契数列,可以使用迭代或递归的方法。以下是一个简单的例子,用Python代码实现斐波那契数列的求解过程: ```python def fibonacci(n): fib_list = [0, 1] # 定义一个列表,存储斐波那契数列的前两个数字 while len(fib_list) < n+1: # 循环计算并添加新数字到列表中 next_num = fib_list[-1] + fib_list[-2] # 计算下一个斐波那契数 fib_list.append(next_num) # 添加下一个斐波那契数到列表 return fib_list[n] # 返回第n个斐波那契数 n = 10 # 想要得到的斐波那契数列的第n个数字 result = fibonacci(n) print(result) ``` 在上述代码中,我们定义了一个`fibonacci(n)`函数,它接受一个整数参数`n`,表示斐波那契数列的第n个数字。在函数内部,我们使用一个迭代循环来计算斐波那契数列的前n个数字,并将它们存储在一个列表中。最后,我们返回列表中的第n个数字。 通过运行这段代码,我们可以得到斐波那契数列中第10个数字的值。如果想得到其他位置的数字,只需修改`n`的值即可。 以上就是关于"python123斐波纳契数列 ii答案"的回答,希望能对你有所帮助! ### 回答2: 根据题目,Python123斐波纳契数列ii的答案如下: 斐波纳契数列是由0和1开始,之后的每一项都是前两项的和。而斐波纳契数列ii是在斐波纳契数列的基础上进行了一些变化。 要求的是给定一个正整数n,计算斐波纳契数列中第n项的值,但要求在结果中只包含能被3整除的数字。 下面是解决这个问题的Python代码: def fib(n): if n < 0: return -1 elif n == 0: return 0 elif n == 1: return 1 else: a, b = 0, 1 for _ in range(n-1): a, b = b, a+b if b % 3 == 0: return b else: return 0 n = int(input("请输入正整数n:")) result = fib(n) print("斐波纳契数列中第", n, "项能被3整除的结果是:", result) 这段代码通过循环计算斐波纳契数列中第n项的值,并通过取余操作判断是否能被3整除。如果可以整除,则返回该项的值,否则返回0。 输入一个正整数n,程序会计算斐波纳契数列中第n项能被3整除的结果,并将结果打印出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值