编程题思路.docx
- 文档编号:25415071
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:13
- 大小:19.84KB
编程题思路.docx
《编程题思路.docx》由会员分享,可在线阅读,更多相关《编程题思路.docx(13页珍藏版)》请在冰豆网上搜索。
编程题思路
部分二级C上机编程题思路及其主要程序代码精选
2008-04-09 来源:
宏为世纪教育网 浏览次数:
1400
二级C上机编程题思路及其主要程序代码精选
注意:
以下只是编程的思路和主要代码
1、 编写函数fun,它的功能是:
利用以下所示的简单迭代方法求方程:
cos(x)-x=0的一个实根。
xn+1=cos(xn) 迭代步骤如下:
(1)取x1初值为0.0;
(2)x0=x1,把x1的值赋给x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤
(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
doublex1=0.0;
do
{x0=x1;x1=cos(x0);}
while(fabs(x0-x1)>=0.000001);
returnx;
2、 编写函数double fun,它的功能是:
根据以下公式计算s,计算结果通过形参指针sn传回;n通过形参传入。
1 1 1 1 1
S=──-──+──-──+…─────
1 3 5 7 2n+1
inti,j=1;doubles=0;
for(i=0;i<=n;i++)
{s=s+1.0/(2*i+1)*j;j=-j;}
*sn=s;
3、编写函数double fun,它的功能是:
根据以下公式求P的值,结果由函数值带回。
m与n为两个正整数且要求m>n。
m!
P=─────
n!
(m-n)!
doublei=1,x=1,y=1,z=1,p=0;
for(i=1;i<=m;i++)x=x*i;
for(i=1;i<=n;i++)y=y*i;
for(i=1;i<=(m-n);i++)z=z*i;
p=x/(y*z);
returnp;
4、编写函数fun,它的功能是计算:
s=[ln
(1)+ln
(2)+ln(3)+...+ln(m)]0.5
在C语言中可调用log(n)函数求ln(n)。
log函数的引用说明是:
doublelog(doublex);
doublei,s=0;
for(i=1;i<=m;i++)s=s+log(i);
returnsqrt(s);
5、编写函数double fun(doubleh),它的功能是:
四舍五入并保留两位小数
longinti,j=1;
if(h<0){j=-1;h=-h;}
h=h*100+0.5;
i=h;
h=i/100.0;
returnh*j;
6、编写函数fun,它的功能是:
求Fibonacci数列中大于t的最小的一个数,结果由函数返回。
其中Fibonacci数列F(n)的定义为:
F(0)=0,F
(1)=1 F(n)=F(n-1)+F(n-2)
例如:
当t=1000时,函数值为:
1597。
inti,f0=0,f1=1,f2=f0+f1;
while(f2<=t)
{f0=f1;f1=f2;f2=f0+f1;}
returnf2;
7、编写函数fun,它的功能是:
求出1000以内能被7或11整除,但不能同时被7和11整除的数,存放到数组xx中,通过函数名返回个数。
inti,j=0;
for(i=1;i<1000;i++)
if((i%7==0||i%11==0)&&i%77!
=0)xx[j++]=i;
returnj;
8、 fun的功能是:
将s所指字符串中的内容从小到大重新排列
inti,j;chart;
for(i=0;i for(j=i;j if(s[j] 9、 fun(ints[],intn)的功能是: 将s数组中的n个数从大到小重新排列 inti,j,t; for(i=0;i for(j=i;j if(s[j]>s[i]){t=s[i];s[i]=s[j];s[j]=t;} 10、 函数fun的功能是: 将s所指字符串中内容倒序 inti,j=strlen(s);chart; for(i=0;i {t=s[i];s[i]=s[j-1-i];s[j-1-i]=t;} 11、 编写程序,实现矩阵s(N行N列)的转置(即行列互换) inti,j,t; for(i=0;i for(j=0;j {t=s[i][j];s[i][j]=s[j][i];s[j][i]=t;} 12、 请编写一个函数,用来删除字符串s中的所有空格。 inti,j; for(i=0;i if(s[i]==’‘) {for(j=i;j i--;} 13、 函数fun(inta[],int*n,inty)的功能是: 删除数组a中值为y的元素,*n为个数。 inti,j; for(i=0;i<*n;i++) if(a[i]==y) {for(j=i;j<*n;j++)a[j]=a[j+1]; i--;(*n)--;} 14、函数fun的功能是: 把a数组中的n个数,和b数组中逆序的n个数一一对应相乘、求平方,结果存在c数组中。 inti,j=n-1; for(i=0;i c[i]=a[i]*b[j]; 15、函数fun的功能是: 把a数组中的n个数和b数组中逆序的n个数一一对应相加、求平方,结果存放在c数组中。 例如: 若a数组中的值是: 1、3、5、7、8 b数组中的值是: 2、3、4、5、8 调用该函数后,c中存放的数据是81、64、81、100、100 inti,j=n-1; for(i=0;i c[i]=(a[i]+b[j])*(a[i]+b[j]); 16、函数fun的功能是: 对a数组中n种商品价格进行分段统计,商品各段价格的数目存到b数组中;其中: 价格为100元以下的个数存到b[0]中,价格为100元到199元的个数存到b[1],价格为200元到299元的个数存到b[2],价格为300元到399元的个数存到b[3],价格为400元到499元的个数存到b[4],价格为500元以上的个数存到b[5]中。 inti; 或者inti; for(i=0;i<6;i++)b[i]=0; for(i=0;i<6;i++)b[i]=0; for(i=0;i switch(a[i]/100) if(a[i]/100<5)b[a[i]/100]++; {case0: b[0]++;break; elseb[5]++; case1: b[1]++;break; case2: b[2]++;break; case3: b[3]++;break; case4: b[4]++;break; default: b[5]++;} 17、函数fun的功能是: 对指定字符在字符串a中出现的次数进行统计,统计的数据存到b数组中。 其中: 字符'a'出现的次数存放到b[0]中,字符'b'出现的次数存放到b[1]中,字符'c'出现的次数存放到b[2]中,字符'd'出现的次数存放到b[3]中,字符'e'出现的次数存放到b[4]中,其它字符出现的次数存到b[5]中。 inti; 或者inti; for(i=0;i<6;i++)b[i]=0; for(i=0;i<6;i++)b[i]=0; for(i=0;i switch(a[i]) if(a[i]>=’a’&&a[i]<=’z’) {case‘a’: b[0]++;break; b[a[i]-‘a’]++; case‘b’: b[1]++;break; elseb[5]++; case‘c’: b[2]++;break; case‘d’: b[3]++;break; case‘e’: b[4]++;break; default: b[5]++;} 18、程序定义了M×N的二维数组,并在主函数中自动赋值。 请编写函数fun(inta[][N],intn),函数的功能是: ①使数组下半三角元素中的值乘以n;②使数组上半三角元素中的值乘以n ①inti,j; ②inti,j; for(i=0;i for(j=0;j<=i;j++) for(j=i;j a[i][j]=a[i][j]*n; a[i][j]=a[i][j]*n; 19、序定义了M×N的二维数组,并在主函数中自动赋值。 请编写函数fun,函数的功能是: ①给数组周边元素置0值; ②求周边元素之和。 ①inti,j; ②inti,j,s=0; for(i=0;i for(j=0;j if(i==0||j==0||i==M-1||j==N-1) if(i==0||j==0||i==M-1||j==N-1) a[i][j]=0; s=s+a[i][j]; returns; 20、请编写一个函数fun,其首部为: fun(intm,int*k,intxx[]) 该函数的功能是: ①将所有大于1小于整数m的非素数存入数组xx,非素数的个数由k传回; ②将所有大于1小于整数m的素数存入数组xx,素数的个数由k传回。 ①inti,j,l=0; ②inti,j,l=0; for(i=2;i {for(j=2;j if(i%j==0)break; if(i%j==0)break; if(j=i)xx[l++]=i;} *k=l; *k=l; 21、请编写一个函数fun(char*s),函数的功能是把s串中所有的字母改写成该字母的下一个字母,字母z改写成字母a。 大写字母仍为大写字母,小写字母仍为小写字母,其它的字符不变。 inti,j; for(i=0;i if((s[i]>=’a’&&s[i]<’z’)||(s[i]>=’A’&&s[i]<’Z’))s[i]=s[i]+1; elseif(s[i]==’z’||s[i]==’Z’)s[i]=s[i]-25; 22、函数fun的功能是: 将s所指字符串中下标为偶数同时ASCII值也为偶数的字符删除,s中剩余的字符形成一个新串放在t所指的数组中。 inti,j=0; for(i=0;i if(! (i%2==0&&s[i]%2==0))t[j++]=s[i]; t[j]=’\0’; 23、函数fun的功能是: 将s所指字符串中ASCII值为偶数的字符删除,s中剩余的字符形成一个新串放在t所指的数组中。 inti,j=0; for(i=0;i (s[i]%2==0))t[j++]=s[i]; t[j]=’\0’; 24、请编写一个函数voidfun(inttt[M][N],intpp[①M②N]),tt是一个M行N列的二维数组,求出每①行(②列)中最小元素,并依次放入pp数组中。 tt数组中的数由主函数从键盘读入。 ①inti,j; ② inti,j; for(i=0;i {pp[i]=tt[i][0]; {pp[i]=tt[0][i]; for(j=0;j if(pp[i]>tt[i][j])pp[i]=tt[i][j];} if(pp[i]>tt[j][i])pp[i]=tt[j][i];} 25、请编写一个函数 unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,函数求出w的后n-1位的数作为函数值返回。 例如: w值为5923,则函数返回923;w值为923则函数返回23。 unsignedi,j=1,k=w; while(k>=10){k=k/10;j=j*10;} returnw%j; 26、编写一个函数voidfun(charp1[],charp2[]),它的功能是: 实现两个字符串的连接(不使用库函数strcat)。 inti,j=strlen(p1); for(i=0;i p1[i+j]=’\0’; 27、请编写函数intfun(intscore[],intm,intbelow[]),它的功能是: 计算score中m个人的平均成绩aver,将低于aver的成绩放在below中,通过函数名返回人数。 inti,aver,j=0,s=0; for(i=0;i aver=s/m; for(i=0;i if(score(i) returnj; 28、编写一个函数,用该函数可以统计一个长度为2的子字符串sub在另一个字符串str中出现的次数。 inti,j=0; for(i=0;i if(str[i]=sub[0]&&str[i+1]=sub[1])j++; returnj; 29、编写函数fun(ints[],int*k,intn),找出n个数据中最小的一个,通过形参传回。 inti,j=0; for(i=0;i *k=s[j]; 30、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。 请编写函数fun,函数的功能是: 找出成绩最低的学生记录,通过形参返回主函数。 已给出函数的首部fun( STU a[],STU *s ),请完成该函数。 结构体的定义如下: typedef struct ss { char num[10]; int s; }STU; 程序如下: inti,j=0; for(i=0;i if(a[i].s *s=a[j]; 31、程序定义了M×N的二维数组,并在主函数中自动赋值。 请编写函数fun(inta[][N]),函数的功能是: ①数组中第一行与最后一行对调,第二行与倒数第二行对调……②数组中第一列与最后一列对调,第二列与倒数第二列对调…… inti,j,t; ①for(j=0;j ②for(i=0;i 学习C语言常用的几个问题的算法和程序 2008-04-19 来源: 宏为世纪教育网 浏览次数: 1237 C语言常用的几个问题的算法和程序: 1.输入并运行以下判断一个数是否为素数(即质数)的程序: main() { int i,x; printf("EnteraNumber: \n"); scanf("%d",&x); for(i=2;i { if(x%i==0)break; } if(i==x)printf("YES\n"); else printf("NO\n"); } 想想看,如果将for(i=1;i 2.排序函数,要求能熟练掌握: (注: 以下排序算法中,至少要熟练掌握一种) (1)简单选择排序(从小到大): #defineN10 #include"stdlib.h" voidarrsort(inta[],intn); main() {int m[N],i; for(i=0;i for(i=0;i printf("\n"); arrsort(m,N); printf("AfterSorted: \n"); for(i=0;i printf("\n"); } void arrsort(int a[],int n) { int i,j,p,t; for(i=0; i { for(j=i+1;j if(a[j] } } (2)优化的选择排序(从小到大): (以下 (2)-(4)均省略main函数) void arrsort(int a[],int n) { int i,j,p,t; for(i=0; i { p=i; for(j=i+1;j if(a[p]>a[j])p=j; if(p! =i) {t=a[i];a[i]=a[p];a[p]=t;} } } (3)冒泡排序(从小到大): void arrsort(int a[],int n) { int i,j,p,t; for(i=n-1; i>0; i--) { for(j=0;j if(a[j+1] } } (4)插入排序(从小到大): void arrsort(int a[],int n) { inti,j,t; for(i=1;i {t=a[i]; for(j=i-1;j>=0;j--)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 思路
![提示](https://static.bdocx.com/images/bang_tan.gif)