专升本C语言各种程序.doc
- 文档编号:1333249
- 上传时间:2023-04-30
- 格式:DOC
- 页数:13
- 大小:38.50KB
专升本C语言各种程序.doc
《专升本C语言各种程序.doc》由会员分享,可在线阅读,更多相关《专升本C语言各种程序.doc(13页珍藏版)》请在冰点文库上搜索。
1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:
将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
intfun(intscore[],intm,intbelow[])
{inti,k=0,aver=0;
for(i=0;i aver+=score[i]; aver/=m; for(i=0,i if(score[i] {below[k]=score[i]; k++;} returnk;} 2.请编写函数fun,它的功能是: 求出1到100之内能被7或者11整除,但不能同时北7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数。 voidfun(int*a,int*n) {inti,j=0; for(i=2;i<1000;i++) if((i%7==0||i%11==0))&i%77! =0) a[j++]=i; *n=j; } 3请编写一个函数voidfun(char*tt,intpp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。 voidfun(char*tt,intpp[]) {inti; for(i=0;i<26;i++) pp[i]=0; while(*tt){ if(*tt>=’a’&&*tt<=’z’) pp[*tt-97]++; } } 4.编写函数fun,功能是: 根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 s=1+1/(1+2)+1/(1+2+3)+.......+1/(1+2+3+4+......+n) floatfun(intn) {inti; floats=1.0,t=1.0; for(i=2;i<=n;i++) {t=t+i; s=s+1/t;} returns;} 5.编写一个函数fun,它的功能是: 根据以下公式求P的值,结果由函数值带回。 m与n为两个正整数,且要求m>n。 p=m! /n! (m-n)! floatfun(intm,intn) {floatp,t=1.0; inti; for(i=1;i<=m;i++) t=t*i;p=t; for(t=1.0,i=1;i<=n;i++) t=t*i; p=p/t; for(t=1.0,i=1;i t=t*i; p=p/t; returnp;} 6.编写函数fun,它的功能是: 利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。 迭代步骤如下: (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的一个实根,作为函数值返回。 程序将输出Root=0.739085。 folatfun() {floatx1=0.0,x0; do {x0=x1; x1=cos(x0);} while(fabs(x0-x1)>=1e-6); returnx1; } 7.请编写一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。 二维数组中的数已在主函数中赋予。 voidfun(inttt[M][N],intpp[N]) {inti,j,min; for(j=0;j {min=tt[0][j]; for(i=0;i {if(tt[i][j] min=tt[i][j];} pp[j]=min;} } 8.请编写一个函数fun(char*s),该函数的功能使把字符串中的内容逆置。 voidfun(char*s) {charch;inti,m,n;i=0; m=n=strlen(s)-1; while(i<(n+1)/2) {ch=s[i];s[i]=s[m];s[m]=ch;i++;m--;} } 9.编写程序,实现矩阵(3行3列)的转置(即行列互换)。 voidfun(intarray[3][3]) {inti,j,temp; for(i=0;i<3;i++) for(j=0;j<3;j++){temp=array[i][j];array[i][j]=array[j][i];array[j][i]=temp;} } 10.编写函数fun,该函数的功能是: 从字符中删除指定的字符,同一字母的大、小写按不同字符处理。 voidfun(chars[],intc) {inti=0;char*p; p=s; while(*p) {if(*p! =c) {s[i]=*p;i++;} p++; } s[i]='\0'; } 11.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。 请编写函数fun,它的功能是: 找出学生的最高分,由函数值返回。 doublefun(STREC*h) {doublemax; STREC*q=h; max=h->s; do {if(q->s>max) max=q->s; q=q->next;} while(q! =0); returnmax;} 12.请编写函数fun,该函数的功能是: 判断字符串是否为回文? 若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。 回文是指顺读和倒读都是一样的字符串。 intfun(char*str) {inti,n=0,fg=1; char*p=str; while(*p) {j++;p++;} j--; for(i=0;i<=j;i++) {if(str[i]! =str[j]){fg=0;break;} returnfg; } 13.请编写一个函数fun,它的功能是: 将一个字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。 longfun(char*p) {longs=0,t; inti=0,n=strlen(p); if(p[0]=='-') i++; for(;i<=n-1;++) {if(p[i]>=’0’&&p[i]<=’9’) s=s*10+p[i]-'0'; } if(p[0]=='-') return-s; else returns;} 14.请编写一个函数fun,它的功能是: 输出一个字符串的长度。 (不得调用C语言提供的求字符串长度的函数)。 Intfun(char*s) {inti=0; While(*s++)i++; ReturnI; } 15.请编写一个函数fun,它的功能是: 将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 voidfun(char*ss) {inti,n; n=strlen(ss); for(i=1;i if(ss[i]>='a'&&ss[i]<='z') ss[i]=ss[i]-32; } 16.请编写函数fun,其功能是: 将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。 voidfun(char*s,chart[]) {inti,j,n; n=strlen(s); for(i=0;i if(i%2==0&s[i]%2==0) {t[j]=s[j]; j++;} t[j]='\0'; } 17..编写一个函数fun,它的功能是: 实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。 voidfun(charp1[],charp2[]) {inti=0,n=0;char*p=p1,*q=p2; while(*p) {p++;n++;} i=n; while(*p) {p1[i]=*q; q++; i++;} p1[i]='\0';} 18.请编写函数fun,该函数的功能是: 统计字符串中单词的个数,作为函数值返回。 一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。 intfun(char*s) {inti,n=0; for(i=1;i {if(s[i]='a'&s[i]<='z'&s[i-1]==' ') n++;} returnn+1;} 19.请编写一个函数fun,它的功能是: 计算并输出给定整数n的所有因子(不包括1与自身)之和。 规定n的值不大于1000。 .intfun(intn) {ints=0,i; for(i=2;i<=n-1;i++) if(n%i==0) s+=i; returns;} 20.请编写一个函数fun,它的功能时: 求Fibonacci数列中大于t的最小的一个数,结果由函数返回。 其中Fibonacci数列F(n)的定义为: F(0)=0,F (1)=1,F(n)=F(n-1)+F(n-2) intfun(intt) {inta=1,b=1,c=0,i; for(i=4;;i++) {if(c {c=a+b; a=b; b=c;} else break;} returnc;} 21.删除子字符串 voidDelete_SubString(char*source,intstart,intnum) { inti,l; l=strlen(source); if(num>l-start+1||num==-1)num=l-start+1; if(start<1||start>l)return; for(i=start;i source[i-1]=source[i+num-1]; } 22.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? #include"math.h" main() { longinti,x,y,z; for(i=1;i<100000;i++) {x=sqrt(i+100); /*x为加上100后开方后的结果*/ y=sqrt(i+268); /*y为再加上168后开方后的结果*/ if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/ printf("\n%ld\n",i); } } 23.打印出杨辉三角形(要求打印出10行如下图) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 main() {inti,j; inta[10][10]; printf("\n"); for(i=0;i<10;i++) {a[i][0]=1; a[i][i]=1;} for(i=2;i<10;i++) for(j=1;j a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<10;i++) {for(j=0;j<=i;j++) printf("%5d",a[i][j]); printf("\n"); } } 24.判断101-200之间有多少个素数,并输出所有素数。 #include"math.h" main() { intm,i,k,h=0,leap=1; printf("\n"); for(m=101;m<=200;m++) {k=sqrt(m+1); for(i=2;i<=k;i++) if(m%i==0) {leap=0;break;} if(leap){printf("%-4d",m);h++; if(h%10==0) printf("\n"); } leap=1; } printf("\nThetotalis%d",h); } 25.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 例如: 153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 main() { inti,j,k,n; printf("'waterflower'numberis: "); for(n=100;n<1000;n++) { i=n/100;/*分解出百位*/ j=n/10%10;/*分解出十位*/ k=n%10;/*分解出个位*/ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) { printf("%-5d",n); } } printf("\n"); } 26.将一个正整数分解质因数。 例如: 输入90,打印出90=2*3*3*5。 程序分析: 对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 2.程序源代码: /*zhengintisdividedyinshu*/ main() { intn,i; printf("\npleaseinputanumber: \n"); scanf("%d",&n); printf("%d=",n); for(i=2;i<=n;i++) { while(n! =i) { if(n%i==0) {printf("%d*",i); n=n/i; } else break; } } printf("%d",n);} 27.一个数如果恰好等于它的因子之和,这个数就称为“完数”。 例如6=1+2+3.编程 找出1000以内的所有完数。 main() { staticintk[10]; inti,j,n,s; for(j=2;j<1000;j++) { n=-1; s=j; for(i=1;i { if((j%i)==0) { n++; s=s-i; k[n]=i; } } if(s==0) { printf("%disawanshu",j); for(i=0;i printf("%d,",k[i]); printf("%d\n",k[n]); } } } 28.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米? 第10次反弹多高? main() { floatsn=100.0,hn=sn/2; intn; for(n=2;n<=10;n++) { sn=sn+2*hn;/*第n次落地时共经过的米数*/ hn=hn/2;/*第n次反跳高度*/ } printf("thetotalofroadis%f\n",sn); printf("thetenthis%fmeter\n",hn); } 29.猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下 的一半零一个。 到第10天早上想再吃时,见只剩下一个桃子了。 求第一天共摘了多少。 main() { intday,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/ x2=x1; day--; } printf("thetotalis%d\n",x1); } 打印菱形 #include"stdio.h" voidmain() { inti,j,n; printf("Enternumberrows: "); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=n-i;j++) putchar(''); for(j=1;j<=2*i-1;j++) putchar('*'); putchar('\n'); } for(i=n-1;i>=1;i--) { for(j=1;j<=n-i;j++) putchar(''); for(j=1;j<=2*i-1;j++) putchar('*'); putchar('\n'); } } 打印星号 #include"stdio.h" voidmain() {inti,j,n; printf("Entertherows: "); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=n-i;j++) putchar(''); for(j=1;j<=2*i-1;j++) putchar('*'); putchar('\n'); } } 判断素数 #include"stdio.h" voidmain() { intn,i; printf("请输入一个数N: "); scanf("%d",&n); i=2; while((i<=n)&&(n%i! =0)) i++; if(i>=n) printf("Yes,\n"); else printf("No,\n"); } 随机10个数输出最大值 #include"stdio.h" #include"stdlib.h" voidmain() { inti,a[10],max; for(i=0;i<10;i++) a[i]=rand()%200; printf("Thenumarrayis: \n"); for(i=0;i<10;i++) printf("%d\t",a[i]); max=a[0]; for(i=1;i<10;i++) { if(a[i]>max) max=a[i]; } printf("The10numberis: %d.\n",max); } 星号 #include"stdio.h" #include"math.h" voidmain() { introw,col,rowsCount; printf("Entertherows: "); scanf("%d",&rowsCount); for(row=1;row<=rowsCount/2+1;row++) { for(col=1;col<=rowsCount-row;col++) putchar(''); for(col=1;col<=2*row-1;col++) putchar('*'); putchar('\n'); } for(row=rowsCount/2;row>=1;row--) { for(col=1;col<=rowsCount-row;col++) putchar(''); for(col=1;col<=2*row-1;col++) putchar('*'); putchar('\n'); } } 转置 #include"stdio.h" #include"stdlib.h" voidmain() { inta[10][10],i,j,t,m,n; printf("Entertherowsandcols: "); scanf("%d",&m); n=m; //生成 for(i=0;i for(j=0;j a[i][j]=rand()%200; //输出原矩阵 printf("Theyuanjuzhenis: \n"); for(i=0;i { for(j=0;j printf("%d\t",a[i][j]); printf("\n"); } //转置 for(i=0;i for(j=0;j { t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 各种 程序