作业要求一 (20分)
完成下列编程题目,每次上完课都会增加2-3道题目,并将编程过程记录在博客里:
1)C高级第一次PTA作业(1)
1-1 计算两数的和与差
设计思路
第一步:op1与op2相加得psum
第二步:op1与op2相减得pdiff
流程图
略
实验代码
void sum_diff( float op1, float op2, float psum, float pdiff ) { psum = op1+op2; pdiff = op1-op2; return 0; }
本题调试过程碰到问题及解决办法:无
1-2 拆分实数的整数与小数部分
设计思路
第一步:x取整数为整数部分
第二步:用x减去x的整数部分为小数部分
流程图
略
实验代码
void splitfloat( float x, int intpart, float fracpart ) { intpart=(int)x; fracpart=(float)(x-*intpart); return 0; }
本题调试过程碰到问题及解决办法:无
2)C高级第一次PTA作业(2)
2-1 在数组中查找指定元素
设计思路
第一步:设置一个for循环,从0到n,里面判断
第二步:如果数组有元素等于x,返回此元素的下标
第三步:没有则返回-1
流程图
实验代码
int search(int list[], int n, int x) { int i; for (i = 0; i < n; i++) { if (list[i] == x) { return i ; break; } } return -1; }
本题调试过程碰到问题及解决办法:无
2-2 找最大值及其下标
设计思路
第一步:让*a指向max
第二步:设置for循环,0到n,判断,若max小于数组内的下一个元素,则max等于此元素,i为此元素下标
第三步:返回max
流程图
实验代码
int fun(int *a,int *b,int n) { int i; int max = *a; for(i = 0;i < n;i++) { if(max < *(a+i)) { *b = i; max = *(a+i); } } return max; }
本题调试过程碰到问题及解决办法:对*(a+i)运用不熟,一开始是没有写*,后来询问同学后解决了
3)C高级第一次PTA作业(3)
3-1 最小数放前最大数放后
设计思路
第一步:输入数到数组arr中
第二步:设置for循环,0到n,循环条件为加一,逐个比较,如果数组内有更小的数,将此数下标赋予min
第三步:如果数组内有更大的数,将此数下标赋予max
第四步:将最大值移到最后,最小值移到最前(交换)
第五步:输出数组,而且每个元素三个位置
流程图
实验代码
void input(int *arr,int n) { int i; for(i = 0;i < n;i++) { scanf("%d",arr+i); } } void max_min(int *arr,int n) { int i,max = 0,min = 0; for(i = 0;i < n;i++) { if(arr[min]>arr[i]) min=i; if(arr[max]<arr[i]) max=i; } i = *arr; *arr = arr[min]; arr[min] = i; i = arr[max]; arr[max] = arr[n-1]; arr[n-1] = i; } void output(int *arr,int n) { int i; for(i = 0;i < n;i++) { printf("%3d",*(arr+i)); } }
本题调试过程碰到问题及解决办法:输出格式我原本写的是多上两个空是错的所以使用了%3d的方式
3-2 指针选择法排序
设计思路
第一步:设置for循环,设min等于n-1
第二步:比较,如果min是比数组x【i】大,则调换位置
第三步:如果n大于0,则将n-1,重新执行sort函数
流程图
实验代码
void sort(int *x,int n) { int i,t,min = (n-1); for(i = 0;i < n;i++) { if(x[min] > x[i]) { t=x[min]; x[min]=x[i]; x[i]=t; } } if(n > 0) { n--; sort(x,n); } }
本题调试过程碰到问题及解决办法:;没有使用嵌套而是再一次使用sort
3)C高级第一次PTA作业(4)
}
4-1 判断回文字符串
设计思路
第一步:观察主函数,主函数有输入输出部分,主函数需要返回值,返回值为bool型
第二步:定义n用于记录字符串s长度,通过对比s[i]与s[n-i-1]确定字符串s是否为回文;
流程图
实验代码
bool palindrome( char *s ) { int i,n; for(i = 0,n = 0;s[i] != '