PTA函数答案
- 格式:doc
- 大小:62.50 KB
- 文档页数:25
pta实验——《一般线性表的应用》答案6-1 顺序表的删除操作 (8分)本题要求实现一个函数,要求将顺序表的第i个元素删掉,成功删除返回1,否则返回0;函数接口定义:int ListDelete(SqList &L,int i);其中SqList结构定义如下:typedef struct{ElemType *elem;int length;}SqList;裁判测试程序样例:#include#include#define MAXSIZE 5typedef int ElemType;typedef struct{ElemType *elem;int length;}SqList;void InitList(SqList &L);/*细节在此不表*/int ListDelete(SqList &L,int i);int main(){SqList L;InitList(L);int i;scanf("%d",&i);int result=ListDelete(L,i);if(result==0){printf("Delete Error.The value of i is illegal!");}else if(result==1){printf("Delete Success.The elements of the SequenceList L are:");for(int j=0;j<l.length;j++){< bdsfid="95" p=""></l.length;j++){<>printf(" %d",L.elem[j]);}}return0;}/* 请在这里填写答案 */输入格式:输入数据有1行,首先给出以-1结束的顺序表元素值(不超过100个,-1不属于顺序表元素),然后是删除位置。
第二章作业 1①.本题要求编写程序,输出一个短句“Welcome to You!”#include<stdio.h>int main(){printf("Welcome to You!\n");return 0;}②.本题要求编写程序,计算华氏温度100°F对应的摄氏温度。
计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
fahr = 100, celsius = 计算所得摄氏温度的整数值#include<stdio.h>int main(){int fahr = 100;int celsius = 5*(fahr-32)/9;printf("fahr = 100,celsius = %d\n",celsius);return 0;}第二章作业2①求整数均值本题要求编写程序,计算4个整数的和与平均值。
题目保证输入与输出均在整型范围内。
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位#include<stdio.h>int main(){int a,b,c,d,Sum;double Average;scanf("%d %d %d %d",&a,&b,&c,&d);Sum = a + b + c + d;Average = (a + b + c + d)/4.0;printf("Sum = %d,Average = %.1f\n",Sum,Average);return 0;}②整数四则运算本题要求编写程序,计算2个正整数的和、差、积、商并输出。
题目保证输入和输出全部在整型范围内输入在一行中给出2个正整数A和B。
在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。
c语言基础题库及详解答案pta C语言基础题库及详解答案PTA1. 以下哪个是C语言的关键字?A. intB. floatC. doubleD. real答案:A2. 在C语言中,一个整型变量可以存储的最大值是多少?A. 32767B. 65535C. 2147483647D. 以上都不是答案:C3. 以下哪个是正确的C语言变量声明?A. int a, b, c;B. int a = 10, b = 20, c;C. int a = 10, b, c = 20;D. 所有选项都是正确的答案:A4. C语言中,哪个运算符用于计算两个数的乘积?A. *B. /C. +D. -答案:A5. 以下哪个是C语言中的逻辑运算符?A. &&B. ||C. !D. 所有选项都是逻辑运算符答案:D6. 在C语言中,哪个函数用于计算一个数的平方根?A. sqrt()B. square()C. root()D. pow()答案:A7. 以下哪个是C语言中的控制流语句?A. ifB. forC. whileD. 所有选项都是控制流语句答案:D8. 在C语言中,哪个关键字用于定义函数?A. functionB. defineC. defD. None of the above答案:D9. C语言中,数组的索引从哪个数字开始?A. 0B. 1C. -1D. 随机数答案:A10. 以下哪个是C语言中字符串的常用库?A. stdio.hB. string.hC. math.hD. None of the above答案:B11. 在C语言中,哪个函数用于将整数转换为字符串?A. itoa()B. atoi()C. toupper()D. tolower()答案:A12. C语言中,哪个关键字用于定义一个结构体?A. structB. classC. unionD. enum答案:A13. 在C语言中,哪个函数用于打印输出?A. printf()B. scanf()C. getchar()D. getc()答案:A14. 以下哪个是C语言中的位运算符?A. &B. |C. ^D. 所有选项都是位运算符答案:D15. 在C语言中,哪个关键字用于创建指针?A. pointerB. ptrC. *D. None of the above答案:C16. C语言中,哪个函数用于计算两个数的和?A. add()B. sum()C. +D. None of the above答案:C17. 以下哪个是C语言中的预处理指令?A. #includeB. #defineC. #ifD. 所有选项都是预处理指令答案:D18. 在C语言中,哪个关键字用于定义枚举类型?A. enumB. typeC. enumtypeD. None of the above答案:A19. C语言中,哪个函数用于计算两个数的最大值?A. max()B. min()C. greater()D. None of the above答案:A20. 以下哪个是C语言中的条件运算符?A. ? :B. &&C. ||D. !答案:A。
第二章作业1①.本题要求编写程序,输出一个短句“Welcome to You!”#include<stdio.h>int main(){printf("Welcome to You!\n");return 0;}②.本题要求编写程序,计算华氏温度100°F对应的摄氏温度。
计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
fahr = 100, celsius = 计算所得摄氏温度的整数值#include<stdio.h>int main(){int fahr = 100;int celsius = 5*(fahr-32)/9;printf("fahr = 100,celsius = %d\n",celsius);return 0;}第二章作业2①求整数均值本题要求编写程序,计算4个整数的和与平均值。
题目保证输入与输出均在整型范围内。
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位#include<stdio.h>int main(){int a,b,c,d,Sum;double Average;scanf("%d %d %d %d",&a,&b,&c,&d);Sum = a + b + c + d;Average = (a + b + c + d)/4.0;printf("Sum = %d,Average = %.1f\n",Sum,Average);return 0;}②整数四则运算本题要求编写程序,计算2个正整数的和、差、积、商并输出。
题目保证输入和输出全部在整型范围内输入在一行中给出2个正整数A和B。
在4行中按照格式“A 运算符B = 结果”顺序输出和、差、积、商。
pta使用函数求圆台体积-回复如何使用函数来计算圆台的体积圆台是由一个底面为圆形的平面和一个垂直于底面的侧面构成的。
计算圆台的体积是一个常见的几何问题,可以通过应用数学的函数来解决。
在本文中,我将一步一步地解释如何使用函数来计算圆台的体积。
首先,让我们定义一些关键术语,以便更好地理解问题。
假设圆台的高度为h,底面半径为r1,顶面半径为r2。
第一步是定义函数。
在这个问题中,我们需要定义一个函数来计算圆台的体积。
我们可以把这个函数命名为“calculate_volume”,它将带有三个参数:高度h,底面半径r1和顶面半径r2。
函数的定义如下:def calculate_volume(h, r1, r2):volume = (1 / 3) * 3.14 * h * (r12 + r22 + r1 * r2)return volume在这个函数中,我们使用了数学公式来计算圆台的体积。
公式是1/3乘以π(pi)乘以高度h乘以底面半径r1平方加上顶面半径r2平方再加上底面半径r1乘以顶面半径r2的乘积。
定义好函数之后,我们可以调用它来计算圆台的体积。
例如,如果我们想要计算高度为10,底面半径为5,顶面半径为3的圆台的体积,我们可以这样调用函数:volume = calculate_volume(10, 5, 3)这将返回计算出的圆台体积,并将其赋值给变量volume。
本文的主题是如何使用函数来计算圆台的体积。
我们在前面的几步中已经完成了这个目标,定义了一个名为“calculate_volume”的函数,并通过调用这个函数来计算圆台的体积。
接下来,让我们看一些使用函数来计算圆台体积的具体例子。
假设我们有以下几个圆台的参数:圆台1:高度为12,底面半径为6,顶面半径为4圆台2:高度为8,底面半径为3,顶面半径为2圆台3:高度为15,底面半径为7,顶面半径为5我们可以使用函数来计算这些圆台的体积,如下所示:volume1 = calculate_volume(12, 6, 4)volume2 = calculate_volume(8, 3, 2)volume3 = calculate_volume(15, 7, 5)这样,我们可以得到圆台1的体积是261.3333,圆台2的体积是28.0,圆台3的体积是383.3333。
第二章作业1①.本题要求编写程序,输出一个短句“Welcome to You!”#include<stdio.h>int main(){printf("Welcome to You!\n");return 0;}②.本题要求编写程序,计算华氏温度100°F对应的摄氏温度。
计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
fahr = 100, celsius = 计算所得摄氏温度的整数值#include<stdio.h>int main(){int fahr = 100;int celsius = 5*(fahr-32)/9;printf("fahr = 100,celsius = %d\n",celsius);return 0;}第二章作业2①求整数均值本题要求编写程序,计算4个整数的和与平均值。
题目保证输入与输出均在整型范围内。
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位#include<stdio.h>int main(){int a,b,c,d,Sum;double Average;scanf("%d %d %d %d",&a,&b,&c,&d);Sum = a + b + c + d;Average = (a + b + c + d)/4.0;printf("Sum = %d,Average = %.1f\n",Sum,Average);return 0;}②整数四则运算本题要求编写程序,计算2个正整数的和、差、积、商并输出。
题目保证输入和输出全部在整型范围内输入在一行中给出2个正整数A和B。
在4行中按照格式“A 运算符B = 结果”顺序输出和、差、积、商。
PTA——6-1单链表逆转(20分)本题要求实现⼀个函数,将给定的单链表逆转。
函数接⼝定义:List Reverse( List L );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node {ElementType Data; /* 存储结点数据 */PtrToNode Next; /* 指向下⼀个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */L是给定单链表,函数Reverse要返回被逆转后的链表。
裁判测试程序样例:#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct Node *PtrToNode;struct Node {ElementType Data;PtrToNode Next;};typedef PtrToNode List;List Read(); /* 细节在此不表 */void Print( List L ); /* 细节在此不表 */题⽬由两种思路,⼀是从前往后遍历,同时采⽤头插⼊法创建⼀个新的链表;⽅法⼆,从前往后遍历,同时修改 List->Next 的指向第⼀种后续补充【第⼆种思路】List Reverse(List L){List p1 = NULL,p2 = NULL;while(L){p2 = L->Next;L->Next = p1;p1 = L;L = p2;}return p1;}第⼀次就是将 p1 【 NULL】赋值给原链表的头结点的Next,然后让 p1 指向当前 L 结点。
下⼀次就是令当前结点 L' 的 Next 指向上⼀个结点 L,从⽽修改原链表 List->Next 的指向。
6-1 顺序表的删除操作 (8分)本题要求实现一个函数,要求将顺序表的第i个元素删掉,成功删除返回1,否则返回0;函数接口定义:int ListDelete(SqList &L,int i);其中SqList结构定义如下:typedef struct{ElemType *elem;int length;}SqList;裁判测试程序样例:#include <stdio.h>#include <stdlib.h>#define MAXSIZE 5typedef int ElemType;typedef struct{ElemType *elem;int length;}SqList;void InitList(SqList &L);/*细节在此不表*/int ListDelete(SqList &L,int i);int main(){SqList L;InitList(L);int i;scanf("%d",&i);int result=ListDelete(L,i);if(result==0){printf("Delete Error.The value of i is illegal!");}else if(result==1){printf("Delete Success.The elements of the SequenceList L are:");for(int j=0;j<L.length;j++){printf(" %d",L.elem[j]);}}return0;}/* 请在这里填写答案 */输入格式:输入数据有1行,首先给出以-1结束的顺序表元素值(不超过100个,-1不属于顺序表元素),然后是删除位置。
所有数据之间用空格分隔。
输入样例:2 6 4 -1 1输出样例:Delete Success.The elements of the SequenceList L are: 6 4作者DS课程组单位临沂大学代码长度限制16 KB时间限制400 ms内存限制64 MB答案:int ListDelete(SqList &L,int i){if(i<1||i>L.length) return0;for(int j=i-1;j<L.length;j++) L.elem[j]=L.elem[j+1];L.length--;return1;}6-2 顺序表的查找操作 (7分)本题要求实现一个函数,要求从顺序表中查找指定元素,并返回第一个查找成功的元素在表中的位置序号,若查找失败,则返回0;函数接口定义:int LocateElem(SqList L,ElemType e);其中SqList结构定义如下:typedef struct{ElemType *elem;int length;}SqList;裁判测试程序样例:#include <stdio.h>#include <stdlib.h>#define MAXSIZE 5typedef int ElemType;typedef struct{ElemType *elem;int length;}SqList;void InitList(SqList &L);/*细节在此不表*/int LocateElem(SqList L,ElemType e);int main(){SqList L;InitList(L);ElemType e;int p;scanf("%d",&e);p=LocateElem(L,e);printf("The position of %d in SequenceList L is %d.",e,p);return0;}/* 请在这里填写答案 */输入格式:输入数据有1行,首先给出以-1结束的顺序表元素值(不超过100个,-1不属于顺序表元素),然后是待查找的元素值。
PTA所有答案工业gc1601学习小组一、判断题二、选择题三、函数题4-3 求m到n之和 (10分)答案:int sum(int m, int n){int s=0,i;for(i=m;i<=n;i++)s+=i;return s;}4-34 简单输出整数 (10分)答案:void PrintN ( int N ){int i;for(i=1;i<=N;i++)printf("%d\n",i); }4-36 简单求和 (10分)答案:int Sum ( int List[], int N ){ int i,s=0;for(i=0;i<N;i++)s+=List[i];return s;}4-40 简单阶乘计算 (10分)答案:int Factorial( const int N ){ int i, s=1;if( N < 0 )return 0;else if( N == 0)return 1;else {for(i=1; i<=N; i++)s*=i;return s;}}4-43 找两个数中最大者 (10分)答案:int max( int a, int b ){ int max;if(a >= b)max = a;elsemax = b;return max;}4-44 数字金字塔 (15分)答案:void pyramid(int n){int i, j, space;for(i=1; i <= n; i++){space = n - i;for(j=0; j < space; j++)printf(" ");for(j=0; j < i; j++)printf("%-2d", i);printf("\n");}}4-45 判断奇偶性 (10分)答案:int even( int n ){if( n%2==0 )return 1;elsereturn 0;}4-46 使用函数求奇数和 (15分)答案:int even( int n ){if( n%2==0 )return 1;elsereturn 0;}int OddSum( int List[], int N ){int i;int oddsum = 0;for(i=0; i<N; i++)if(even(List[i])==0)oddsum += List[i];return oddsum;}4-47 使用函数计算两点间的距离 (10分)答案:double dist(double x1, double y1, double x2, double y2){ double d;d = sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));return d;}4-48 使用函数求素数和 (20分)答案:int prime( int p ){int i,j,count =0;for(j=2;j<p;j++)if(p%j==0)4-20 使用函数输出水仙花数 (20分)答案:int narcissistic(int number){int i, j, digit, power, powerSum, integer, count, flag; count = 0;integer = number;while (integer > 0){integer = integer / 10;count++;}4-21 使用函数求余弦函数的近似值 (15分)答案:double funcos( double e, double x ) { double sum=0,d=100;int i=0,j;double cj;int count=0;while(d>e){count++;if(count%2!=0) {cj=1;for(j=1; j<=i; j++)cj=cj*j;d=pow(x,i)/cj;4-49 分类统计字符个数 (15分)答案:void StringCount( char s[] ){int i;int n1 = 0, n2 = 0, n3 = 0, n4 = 0;for (i = 0; s[i] != '\0'; i++){if ((s[i] >= 'a'&&s[i] <= 'z') || (s[i] >= 'A'&&s[i] <= 'Z')) n1++;else if (s[i] == ' ' ||s[i] == '\n')n2++;else if (s[i] >= '0'&&s[i] <= '9')n3++;else n4++;}printf("letter = %d, blank = %d, digit = %d, other = %d",n1,n2,n3,n4);}4-7 使用函数求特殊a串数列和 (20分)答案:int fn( int a, int n ){int x,p=0,i;for(i=0; i<n; i++){x= a * pow(10,i);p = p + x;}return p;}int SumA( int a, int n ){int k;int sum=0;for(k=0; k<n+1; k++)sum = sum + fn( a , k );return sum;}4-22 使用函数输出指定围的完数 (20分)。