1. 已知,连续函数在区间[0, 3]有且只有一个实根,编写完整程序,利用二分法计算并输出该实根的近似值,要求结果精确到
。 二分法的基本思路是:对于区间[a, b]上的连续函数f(x),若f(a)和f(b)的正负号不同,则该区间内至少存在一个实根, 若已经明确只有一个实根,则可以按照近似值精确度的要求检查该区间中点m是否满足,若满足,则m为所求,否则,检查f(m)的正负号,使a和m或者m和b构成一个缩小了的区间,从而进行新一轮次的逼近运算处理,依此方法不断缩小区间,直到找到满足精确度要求的区间中点为止。
#include <stdio.h>double func(int x) {return x*x*x-x*x-1;
}double getkey(double left,double right) {double mid;while(right-left>1e-4) {mid=(left+right)/2;if(func(mid)>0)right=mid;elseleft=mid;}return mid;
}
2.已知一维数组A中已经存放了200个整数,编写代码段,其功能是输出该数组中所有不同的数据值及其在该数组中各自出现的次数,即:对数组中数值不同的数据各自出现的频率进行统计并输出。
#include <stdio.h>
#include <stdlib.h>void getcount(int *arr,int n) {int *hash=(int *)malloc(n*sizeof(int));for(int i=0; i<n; i++)hash[i]=0;for(int i=0; i<n; i++)hash[arr[i]]++;for(int i=0; i<n; i++)if(hash[i]!=0)printf("%d : %d ",i,hash[i]);
}
3.在大于1的自然数中,除了1和自身外,不能被其它自然数整除的自然数称为质数(素数)。编写完整程序,该程序的功能是:输入一个整数n,若n<2,则输出0;若n是质数,则输出n的值,否则,输出n的质因子分解式,例如:
若n=1,则输出0
若n=13,则输出13
若n=6,则输出6=2*3
若n=8,则输出8=2*2*2
#include <stdio.h>
#include <stdlib.h>int isprime(int n) {if(n<=1)return 0;for(int i=0; i<sqrt(n); i++)if(n%i==0)return 0;return 1;
}int getmindata(int *arr,int n) {if(n<2)return 0;else if(isprime(n))return n;elsereturn mindata(arr,n);
}int mindata(int *arr,int n) {int count=0,i=2;while(n!=1)if(n%i==0) {arr[count++]=i;n/=i;} elsei++;return count;
}int main() {int list[10];int n = mindata(list,8);for(int i=0; i<n; i++)printf("%d ",list[i]);
}
4.编写完整程序,其功能是:声明一个10x10二维数组,把包括1和100在内的1到100之间的所有整数,按照下图所示的形式存储在该数组中。存储完毕之后,把数组中数据按行输出到屏幕。编程约束:不允许使用数组初始化语句,各种数据初始化及赋值语句的个数不允许超过15个。
1 | 3 | 6 | 10 | 15 | 21 | 28 | 36 | 45 | 55 |
2 | 5 | 9 | 14 | 20 | 27 | 35 | 44 | 54 | 64 |
4 | 8 | 13 | 19 | 26 | 34 | 43 | 53 | 63 | 72 |
7 | 12 | 18 | 25 | 33 | 42 | 52 | 62 | 71 | 79 |
11 | 17 | 24 | 32 | 41 | 51 | 61 | 70 | 78 | 85 |
16 | 23 | 31 | 40 | 50 | 60 | 69 | 77 | 84 | 90 |
22 | 30 | 39 | 49 | 59 | 68 | 76 | 83 | 89 | 94 |
29 | 38 | 48 | 58 | 67 | 75 | 82 | 88 | 93 | 97 |
37 | 47 | 57 | 66 | 74 | 81 | 87 | 92 | 96 | 99 |
46 | 56 | 65 | 73 | 80 | 86 | 91 | 95 | 98 | 100 |
#include <stdio.h>
#include <stdlib.h>int main() {int A[10][10];int count=1,i,j;int row=0,col=0;while(row<10&&col<10) {i=row;j=col;while(i>=0&&j<=9) {A[i][j]=count++;i--;j++;}if(row<9)row++;elsecol++;}for(int i=0; i<10; i++) {for(int j=0; j<10; j++)printf("%5d",A[i][j]);printf("\n");}
}