ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:83.50KB ,
资源ID:7236328      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7236328.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(上机题总结.doc)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

上机题总结.doc

1、 C语言上机编程题总结 石寅斌 第一部分 前十次上机题汇总 1. 一个较大的偶数可分解为两个质数之和。编程要求:(1)编写函数int guess(int a[][3],int m,int n),其功能是将[m,n]内任一偶数i分解成两个质数k和j之和(得到验证即可,如果有多个答案,只取一个),将i,j,k依次写到a指向的二维数组一行中的三个元素中,函数返回实际写入二维数组中的行数;(2)编写main

2、函数,定义一个行数为100列数为3的二维数组a,用a作为实在参数,调用guess函数求出[6,20]内偶数的分解情况,并按行的形式输出a数组中的元素。 #include #include int prime(int p) {int g,h; h=sqrt(p); for(g=2;g<=h;g++) if(p%g==0) return 0; if(g>h) return 1;} int guess(int a[][3],int m,int n) { int i,k,j,p=0; for(i=m;i<=n;i+=2)

3、{ for(k=3;k<=i/2;k+=2) if(prime(k)) {j=i-k;if(prime(j)) {a[p][0]=i; a[p][1]=k; a[p][2]=j;p++;break;} } } } void main() { int i,j,a[100][3]; guess(a,6,20); for(i=0;i<8;i++) {for(j=0;j<3;j++) printf("%3d",a[i][j]); printf("\n");}

4、 getch(); } 2.请按下列要求编程:(1)请编写函数int fun(int a[]),其功能是:在三位数(100至999)中寻找符合下列条件的整数并按从小到大的顺序存入a指向的数组中,条件为:它是一个完全平方数,且有两位数字相同(例如144、676是满足条件的数),函数返回满足条件的该类数的个数。(2)编写main函数,定义一个长度为100的整型数组a,用a作为实在参数调用函数fun,将满足条件的依次存入a数组中,输出在给定范围内满足条件的数及这类数的个数 #include #include int fun(int a[]) {

5、 int i,d,b,c,m,sum=0,p=0; for(i=101;i<999;i++) {m=sqrt(i); d=i/100;b=i/10%10;c=i%10; if((d==b)+(d==c)+(b==c)>=1&&i==m*m) {sum++;a[p]=i;p++;} return sum; } main() { int a[100],t,i; t=fun(a); printf("%d\n",t); for(i=0;a[i]!='\0';i++) printf("%3d\n",a[i]); getch();} 3.设n0是一个给定的正整数。对于i

6、0,1,2,…,定义:若ni是偶数,则ni+1=ni/2;若ni是奇数,则ni+1=3ni+1;若ni是1,则序列结束。用这种方法产生的数称为冰雹数。请按下列要求编程:(1)编写一个函数int hailstones(int n,int a[]),其功能是将按公式生成的从n到1为止的序列中的数依次存放到a指向的数组中,函数返回符合条件的序列中数据的个数;(2) 编写main函数,定义一个长度为100的一维数组a,从键盘上输入任一种子n,用n和a作为实在参数调用函数hailstones,最后按每行6个数输出数组中的数。 #include int hailstones(i

7、nt n,int a[]) { int p=0,sum=0; while(n!=1) { a[p]=n; if(n%2==0) n=n/2; else n=3*n+1; sum++;p++; } a[p]=1; return sum+1; } void main() { int a[100],n,t,i,m=0; scanf("%d",&n); t=hailstones(n,a); printf("%d\n",t); for(i=0;a[i]!='\0';i++) {printf("%5d",a[i]); m++;if(m%6==0) printf("\n

8、");} getch(); }  4.找出满足如下条件的整数m:(1)该数在[11,999]之内;(2) m、m2、m3均为回文数。例如m=11,m2=121,m3=1331,11、121、1331皆为回文数,故m=11是满足条件的一个数。请按下列要求编程:(1)请编写函数int plalindrome (long a[][3],int m,int n),其功能是将[m,n]内符合条件的数i,i2,i3依次写到a指向的二维数组的一行中,函数返回满足条件数的个数(即为所写二维数组的有效行数);(2) 编写main函数,声明一个行数为100列数为3的二维数组a,从键盘上输入区间[m,n]的端

9、点值,用a、m和n作为实在参数调用函数plalindrome,并按行的形式输出所有满足条件的数及其平方数和立方数。 #include int value(long m) { long t=0,b; int a;b=m; while(m) {a=m%10;m=m/10;t=t*10+a;} if(t==b) return 1; else return 0; } int plalindrome(long a[][3],int m,int n) {long i,sum=0; for(i=m;i<=n;i++) if(value(i)+value(i

10、i)+value(i*i*i)==3) { a[sum][0]=i;a[sum][1]=i*i;a[sum][2]=i*i*i; sum++; } return sum;} main() {int t,i,j; long a[100][3];  t=plalindrome(a,11,999);  printf("%d",t);  for(i=0;i

11、primecount(int a[],int m,int n),其功能是:找出[m,n]内的所有质数并依次将它们存储到a指向的数组中,函数返回[m,n]内质数的个数。(2)编写main函数,声明一个长度为100的一维数组a,从键盘上输入m和n,用a、m、n作为实在参数调用函数primecount,将结果数组输出到屏幕,并输出[m,n]内质数的个数。调试程序时可在main函数中输入m、n的值分别为100和200。 #include  #include  int primecount(int a[],int m,int n)  {int i,g,sum

12、0,p=0;  for(i=m;i<=n;i++)  {for(g=2;gsqrt(i))  {sum++;a[p]=i;p++;}  }  return sum; }  main()  {  int m,n,t,i,a[100];scanf("%d %d",&m,&n);  t=primecount(a,m,n);  printf("%d\n",t);  for(i=0;a[i]!='\0';i++)  printf("%5d",a[i]);  getch();  }  6.

13、已知整型数组中的元素值在0~9范围内,编程统计每个整数的个数。 #include #include void getdata(int *s) { int i; for(i=0;i<50;i++) s[i]=rand()%10; } void stat(int *a,int *c) { int i; for(i=0;i<50;i++) c[a[i]]+=1; } main() {int i,a[50],c[10]={0}; getdata(a); stat(a,c); for(i=0;i<10;i++) printf(

14、" c[%d]=%2d\n",i,c[i]); getch(); } 7.下列程序的功能是将字符串中的数字字符删除后输出。 #include void delnum(char s[80]) { int i,j; for(i=0,j=0;s[i]!='\0';i++) if(s[i]<'0'||s[i]>'9') { s[j]=s[i],j++;} s[j]='\0'; } void main() { char item[80]; gets(item); delnum(item); puts(item); getch(); }

15、 8将一字符串做压缩处理。函数int compress(char s[])的功能是将s中连续出现的多个相同字符压缩为一个字符,统计被删除的字符个数,返回被删除的字符个数。 #include int compress(char s[]) { int i,j,sum=0,n=0; for(i=j=0;s[i];i++) { while(s[i]==s[i+1]) {i++;n++;} sum+=n;n=0; s[j++]=s[i];} s[j]='\0'; return sum; } main() { int n;

16、char str[100]; gets(str); n=compress(str); printf("%d %s\n",n,str); getch(); } 9.编写函数void fun(char x[]),其功能是在x指向的字符串中所有的数字字符之前分别插入一个字符$。 #include void fun(char x[]) { int i,j; char b[40]; for(i=0,j=0;x[i]!='\0';i++,j++) { if(x[i]>='0'&&x[i]<='9') { b[j]='$';j++;} b[j]=x[i

17、]; } b[j+1]='\0'; puts(b); } main() { char a[100]; gets(a); fun(a); getch(); }  10.在m行n列的二维数组找出最小的元素,然后将该元素所在行与最后一行交换,将该元素所在列与最后一列交换。 #include #define M 3 #define N 4 main() {int x,k,j,com,col,t; int a[M][N]={12,1,56,34,10,2,45,3,9,7,4,65}; for(k=0;k

18、0;ja[k][j]) {com=k;col=j;x=a[k][j];} for(k=0;k

19、a[M-1][k]=t;} for(k=0;k void main() {  int i,j;  int a[6][6];  for(i=0;i<6;i++)  {a[i][0]=1 ;a[i][i]=1;}  for(i=2;i<6;i++)   for(j=1;j<=i-1;j++)   a[i][j]=(a[i-

20、1][j-1]+a[i-1][j]); for(i=0;i<6;i++)  {for(j=0;j<=i;j++)  printf("%3d",a[i][j]);  printf("\n");}  getch(); }   12.编写函数void find odd(int odd[],int n),其功能是找到n个连续奇数,满足n的立方等于这些连续奇数之和。并将这些奇数存放到数组odd中。 #include"stdio.h" void find_odd(int odd[],int n) {int b; odd[0]=n*n-n+1; for (b=1;b

21、) odd[b]=odd[b-1]+2; } main() { int n,i; int a[100]; scanf("%d",&n); find_odd(a,n); printf("%d",n); printf("^3="); for (i=0;i< n-1;i++) {printf("%d",a[i] ); printf("+"); } printf("%d",a[n-1]); getch(); } 13.调用selsort函数实现将数组中的3~8个元素案升序排列。

22、include void selsort(int a[],int n) {int i,j,k,t; for(i=2;ia[j]) k=j; t=a[i]; a[i]=a[k]; a[k]=t; }     } void main() { int a[10]={6,8,9,12,16,-3,90,-9,10,1},i; selsort(a,10); for(i=0;i<10;i++) printf

23、"%5d",a[i]); getch(); } 14.归并排序。 #include void main() { int a[10]={1,2,5,8,9,10},an=5; int b[10]={1,3,4,8,12,18},bn=5; int i,j,k,c[20],max=9999; a[an+1]=b[bn+1]=max; i=j=k=0; while((a[i]!=max)||(b[j]!=max)) if(a[i]

24、i=0;i   #include   float f(float x)   { return (log(x)+x*x);     } void main() {     float m=1/2.72,n=1,r;     r=(m+n)/2.0;     while(1)     {         if(fabs(f(r))<1e

25、5) break;         if(f(m)*f(r)<0) n=r;         else m=r;         r=(m+n)/2.0;     }     printf("The result is %6.3f\n",r);     getch(); } 16.如1,1,2,3,5,8,13,21、、、的数列,设计程序输出大于n的最小的数,如n=9,应输出13. #include int Fibonacci(int n) { int f1=1,f2=1,f3,m;    f3=f1+f2; while(f3

26、 f1=f2; f2=f3; f3=f2+f1; } m=f3; return(m);} void main () {     int t,m;     scanf("%d",&t);    m=Fibonacci(t);     printf("%d",m);     getch(); }  17,利用公式求pai的值。 #include  double fun(double  e) {  int i,k;    double  s, t, x;    s=0;  k=1;  i=2;    x=3.0/4;    whi

27、le(x>e )    {   s=s+k*x;        k=-k;        t=2*i;        x=(2*i+1)/(t*t);        i++;     }     return  (s); } main() { double  e=(1e-3);   printf("\nThe result is: %lf\n",fun(e));   getch(); } 第二部分 改编题 1. 编写函数,统计给定字符串中各个字母出现的次数,不区分大小写。比如对hello,Tom 进行统计。 void c

28、ount_chars(char s[],int cnt[]) { int i; for(i=0;s[i]!='\0';i++) { if(s[i]>='a'&&s[i]<='z') cnt[s[i]-'a']++; if(s[i]>='A'&&s[i]<='Z') cnt[s[i]-'A']++; } } main() { char s[]="hello,Tom"; int cnts[26]={0}; int i; count_chars(s,cnts); for(i=0;i<26;i++) { printf("字母%c(或者%c)的出现次数为%d\n",'a'

29、i,i+'a'-32,cnts[i]); } } 注:类似的问题还有统计0~9每个数字出现的次数; 50个人对食堂饭菜的打分,如1,2,3,4分,统计四种分数出现的次数。 以上三种问题都是一种类型的 都要用到a[表达式]++这个重要式子。请同学们复习时把上面两道也编程出来。 2.删除类题目 ² 删除字符串中的所有空格。 int i=0;char *p=str; while(*p) {if(*p!=’ ’) str[i++]=*p;p++;} str[i]=’\0’ ² 从字符串中删除指定的字符。 Int i=0;char *p=s; while(*p){if(*p

30、c) s[i++]=*p;p++;} s[i]=’\0’; ² 删除一个字符串中指定下标的字符。 Int I,j=0; for(i=0;i

31、不胜”。 3.在1到2000000寻找如145这样每位数字的阶乘之和等于本身的数。 #include fac(int m) { long t=1; int i; for(i=0,i<=m;i++) t=t*i; return t; } facsum(long n) { long x,t=0; while(n) { t=fac(n%10)+t; n/=10;} if(x==t) return 1; else return 0;} main() {long i; for(i=1;i<2000000;i++) if(facsum(i)) p

32、rintf("%12ld",i); getch(); } 4.含有特征值的类型。 在a数组中查找与x值相同的元素的所在位置。 #include void main() {     int a[11],x,i;     printf("Enter 10 Integers:\n");     for(i=1;i<=10;i++)     scanf("%d",&a[i]);     printf("Enter x:");     scanf("%d",&x);     a[0]=x;i=10;     while(x!=a[i]) i--;  

33、   if (i!=0)     printf("%5d 's position is %4d\n",x,i);     else     printf("%d is not found!\n",x);     getch();} ; 注:本题中的a[0]是设置的特征值,为了不无下限找下去。课本p43 最后day==-1也是设置的特征值。总之,在c编程中,有时候有些值不好表达,或者值不影响函数最终结果的输出,可以设置特征值方便表达。掌握特征值的运用在c编程还是很重要的。 5.输入十位之内的整数,要求设计程序重组出最小的数。如输入6352410,则应输出1023456.

34、include  regroup(int a[],long n) { int k,i=-1,t,j,p,m; while(n) { a[++i]=n%10; n=n/10;} m=i+1; for(i=0;i<=m-2;i++) {k=i; for(j=k+1;ja[j]) k=j;   t=a[i];a[i]=a[k];a[k]=t;   }   if(a[0]==0)   {for(i=0;i

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服