欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    C语言程序设计上机题目与参考答案.doc

    • 资源ID:8851358       资源大小:58.50KB        全文页数:18页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言程序设计上机题目与参考答案.doc

    C语言程序设计题目与参考答案(19章)1.(课本第84页第7题)设圆半径r=1.5,圆柱的高h=3,求圆周长.圆面积.圆球表面积.圆球体积.圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。请编程序:#include <stdio.h>int main()#define p 3.1416int main()double r,h,l,s,S,v,V;scanf("%lf %lf",&r,&h);l=2*p*r;s=p*r*r;S=4*p*r*r;v=4/3*p*r*r*r;V=p*r*r*h;printf("l=%7.2fns=%7.2fnS=%7.2fnv=%7.2fnV=%7.2fn",l,s,S,v,V);return 0;2.把560分钟化成小时和分钟。#include<stdio.h>main()int t,h,m;t=560;h=t/60;m=t%60;printf("560分钟等于%d小时%d分钟n",h,m);3.第112页第6题)有一个函数y=x(x<1),y=2x-1(1<=x<10),y=3x-11(x>=1写程序,输入x的值,输出y相应的值。#include<stdio.h>int main()float x,y;scanf("%f",&x);if(x<1) y=x;else if(x<10) y=2*x-1; else y=3*x-11;printf("%fn",y);4.(第113页第11题)输出4个整数,要求按由小到大的顺序输出。#include<stdio.h>int main()float a,b,c,d,t;scanf("%f,%f,%f,%f",&a,&b,&c,&d);if(a>b) t=a;a=b;b=t;if(a>c) t=a;a=c;c=t;if(a>d) t=a;a=d;d=t;if(b>c) t=b;b=c;c=t;if(b>d) t=b;b=d;d=t;if(c>d) t=c;c=d;d=t;printf("%f,%f,%f,%f",a,b,c,d);5.(第113页第12题)有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1,这四个塔的高度为10米,塔以外无建筑物。今输入任 一点的坐标,求该点的建筑高度(塔外的高度为零)。# include<stdio.h>main()float x,y,t;scanf("%f,%f",&x,&y);if(x-2)*(x-2)+(y-2)*(y-2)<=1) t=10.0;else if(x+2)*(x+2)+(y-2)*(y-2)<=1) t=10.0; else if(x-2)*(x-2)+(y+2)*(y+2)<=1) t=10.0; else if(x+2)*(x+2)+(y+2)*(y+2)<=1) t=10.0; else t=0.0; printf("%fn",t);6.第140页第5题)求Sn=a+aa+aaa+aaa之值,其中a是一个数字,n表示a的位数,例如:2+22+222+2222+22222(此时n=5)n由键盘输入。#include<stdio.h>main()int n,i;long int a=2,sum=0;scanf("%d",&n);for(i=1;i<=n;i+)sum=sum+a; a=10*a+2;printf("sum=%dn",sum);7.(第140页第8题)输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=1*1*1+5*5*5+3*3*3.#include<stdio.h>main() int n,a,b,c; for(n=100;n<=999;n+) a=n/100; b=n/10-10*a; c=n%10; if(n=a*a*a+b*b*b+c*c*c)&&(n=100*a+10*b+c) printf("%6d",n); printf("n");8. 有2个同学3门课的成绩,求平均值。#include<stdio.h>main()int i,j,score;float sum,average;for(i=1;i<=2;i+) sum=0; for(j=1;j<=3;j+) scanf("%d",&score);sum=sum+score; average=sum/3; printf("%d:average is %7.2fn",i,average);9. 将一个数组中的10个数据从大到小顺序排列好,并从键盘输入一个数,要求按原来的排序规律将此数插入原数据中。 方法1:#include<stdio.h>main() int i,j,t;int a11;for(i=0;i<10;i+)scanf("%d",&ai);printf("n");for(j=0;j<10;j+)for(i=0;i<10-j;i+)if(ai<ai+1)t=ai;ai=ai+1;ai+1=t;for(i=0;i<10;i+)printf("%dt",ai);printf("n");scanf("%d",&a10);for(i=9;i>=0;i-)if(ai<a10)t=ai;ai=a10;a10=t; break;for(i=0;i<11;i+)printf("%dt",ai);printf("n"); 方法2:#include<stdio.h>main() int a11,i,j,t,m; for(i=0;i<10;i+) scanf(“%d”,&ai); for(j=0;j<9;j+) for(i=0;i<9-j;i+) if(ai<ai+1)t=ai;ai=ai+1;ai+1=t; scanf(“%d”,%m); a10=m; for(i=0;i<11;i+) if(a10>ai) t=ai;ai=a10;a10=t; for(i=0;i<11;i+) printf(“%3d”,ai);10. 已知五个半径求面积。#include<stdio.h>#include<math.h>#define PI 3.1416main() int a; float r,s;for(a=1;a<=11;a=a+2)r=a+0.5;s=PI*pow(r,2);printf("r=%7.1f,ts=%7.3fn",r,s);11.找出10个数中的最大值和最小值。#include<stdio.h>main() int i,max,min; int a10=;max=a0; min=a0;for(i=0;i<=9;i+) if(ai>max) max=ai; if(ai<min) min=ai;printf(“max=%dn,min=%d”,max,min);12. 求一个数组(10个数)中所有元素的和的平均值。#include<stdio.h>main()int a10,i,sum=0;float aver;for(i=0;i<10;i+)scanf("%d",&ai);sum+=ai;aver=sum/10.0;printf("%7.2fn",aver);13. 统计20个数中正数.负数及零的个数。#include<stdio.h>main()int a20,i,x=0,y=0,z=0;for(i=0;i<20;i+)scanf("%d",ai);for(i=0;i<20;i+)if(ai>0) x=x+1; else if(ai<0) y=y+1;else z=z+1;printf(“x=%dny=%dnz=%dn”,x,y,z);14.找出3*3矩阵中每行的最大元素。 方法1:#include<stdio.h>Main() int a33=0,1,2,3,4,5,6,7,8; int max1,max2,max3,j; max1=a00; max2=a10; max3=a20; for(j=0;j<=2;j+) if(a0j>max1) max1=a0j; if(a1j>max2) max2=a1j; if(a2j>max3) max3=a2j;printf(“max1=%d,max2=%d,max3=%d”,max1,max2,max3); 方法2:#include<stdio.h>main() int a33=, int I,j,max; for(i=0;i<3;i+) max=ai0; for(j=0;j<3;j+) if(max<aij) max=aij; printf(“max=%dn”,i+1,max);15.A为【3】【4】矩阵B为【4】【5】矩阵,求矩阵C=AB。#include<stdio.h>main()int a34,b45,c35,i,j;for(i=0;i<3;i+)for(j=0;j<4;j+) scanf("%d",&aij); printf("n");for(i=0;i<4;i+)for(j=0;j<5;j+) scanf("%d",&bij); printf("n");for(i=0;i<3;i+)for(j=0;j<5;j+) cij=ai0*b0j+ai1*b1j+ai2*b2j+ai3*b3j; printf("%dt",cij);printf("n");16.(第169页第12题)有一行电文,已按下面规律译成密码:A-Z,a-z,B-Y,b-y,C-X,c-x,即第一个字母变成第26个字母,第i个字母变成(26-i+1)个字母,非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。#include<stdio.h>main()char c; while(c=getchar()!=n) if(c>=a&&c<=z) c=219-c; if(c>=A&&c<=Z) c=155-c; printf("%c",c); printf("n");17.输入6名学生5门课程的成绩,分别统计出每个学生的平均分和每门课程的平均分。#include<stdio.h>main()int a65,i,j,sum16=0,sum25=0;float aver1,aver2;for(i=0;i<6;i+)for(j=0;j<5;j+) scanf("%d",&aij);for(i=0;i<6;i+)for(j=0;j<5;j+) sum1i=sum1i+aij;aver1=sum1i/5.0;printf("aver1=%fn",aver1);for(i=0;i<5;i+)for(j=0;j<6;j+)sum2i=sum2i+aji;aver2=sum2i/6.0;printf("aver2=%ft",aver2);printf("n");18.从键盘输入两个字符串,进行比较,结果为两字符第一个不同字母的ASCII码之差。#include<stdio.h>main()char str110="erhrgdftrb",str210="vbgfghdhfm"printf("%dn",strcmp(str1,str2);19.(第168页第6题)输出以下的杨辉三角形(要求输出10行)。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1#include<stdio.h>main() int i,j,a10,t,b11;for(i=0;i<10;i+)scanf("%d",&ai);printf("n");for(j=0;j<10;j+)for(i=0;i<10-j;i+)if(ai<ai+1)t=ai;ai=ai+1;ai+1=t;for(i=0;i<10;i+)printf("%d ",ai);printf("n");scanf("%d",&t);for(i=0;i<10;i+)bi=ai;b10=t;for(j=0;j<11;j+)for(i=0;i<11-j;i+)if(bi<bi+1)t=bi;bi=bi+1;bi+1=t;for(i=0;i<11;i+)printf("%d ",bi);printf("n");20.编写函数(float a)#include<stdio.h>,用来求a的小数部分。#include<stdio.h>float mydecical (float a)int b;float c;b=a;c=a-b;return c;main()float mydecical (float a);float a,b;scanf("%f",&a);b=mydecical (a);printf("%fn",b);21.显示1至10的平方#include <stdio.h>main()int i,t;i=1;t=1;while(i<=10)t=i*i;printf("%d,%dn",i,i,t);i+;22.数组的转置#include<stdio.h>void fun (int a33)int i,j,b33; for(i=0;i<3;i+) for(j=0;j<3;j+) bij=aji; printf("%d ",bij); printf("n");main()int a33,i,j;for(i=0;i<3;i+)for(j=0;j<3;j+)scanf("%d",&aij);printf("n");fun(a);printf("n");23.用冒泡法对十个字符按由小到大的顺序排列。#include<stdio.h>void fun (char a10)int i,j,t;for(i=0;i<9;i+)for(j=0;j<9-i;j+)if(aj>aj+1)t=aj; aj=aj+1; aj+1=t;for(i=0;i<10;i+)printf("%c ",ai);main()char a10;int i;for(i=0;i<10;i+)scanf("%c",&ai);fun (a);printf("n");24.输入5个学生3门课的成绩,用函数实现以下功能:1).每个学生的均分,2).没门课的均分,3).找出最高的分数对应的学生和课程,4)计算平均分方差。#include<stdio.h>void stuaver (int a53)int i,j,sum;float aver;for(i=0;i<5;i+)sum=0;for(j=0;j<3;j+)sum+=aij;aver=sum/3.0;printf("%fn",aver);printf("n");void subaver (int a53)int i,j,sum;float aver;for(i=0;i<3;i+)sum=0;for(j=0;j<5;j+)sum+=aji;aver=sum/5.0;printf("%fn",aver);printf("n");void max(int a53)int i,j,r,c, m=a00;for(i=0;i<5;i+)for(j=0;j<3;j+)if(aij>m)m=aij;r=i+1;c=j+1;printf("最高分是:%dt 学生是:%dt 课程是:%dn",m,r,c);void fun (int a53)int sum5,i,j;float sum1=0,sum2=0,aver5,t;for(i=0;i<5;i+)sumi=0;for(j=0;j<3;j+)sumi+=aij;averi=sumi/5.0;for(i=0;i<5;i+)sum1+=averi;sum2+=averi*averi;t=(sum2/5.0)-(sum1/5.0)*(sum1/5.0);printf("n");printf("平均方差为:%fn",t);main()int a53,i,j;for(i=0;i<5;i+)for(j=0;j<3;j+)scanf("%d",&aij);printf("n");printf("学生平均分为:n");stuaver (a);printf("课程平均分是:n");subaver (a);max(a);fun (a);printf("n");25.现有三个指针p1,p2,p3分别指向三个变量i,j,k,要求通过指针变量交换三个数据,最后输出原值和新值。#include<stdio.h>main()int*p1,*p2,*p3,*p,i,j,k;scanf("%d%d%d",&i,&j,&k);p1=&i;p2=&j;p3=&k;printf("原值为:%d %d %dn",*p1,*p2,*p3);p=p1;p1=p2;p2=p3;p3=p;printf("新值为:%d %d %dn",*p1,*p2,*p3);26.矩阵转置,要求用指针。#include<stdio.h> main() int a33,(*p)3,i,j; void fun(int a33); for(i=0;i<3;i+) for(j=0;j<3;j+) scanf("%d",&aij); p=a; fun(p); void fun(int a33)int i,j,b33; for(i=0;i<3;i+) for(j=0;j<3;j+) bij=aji; printf("%d ",bij); printf("n");27.十个数排序,用指针。#include<stdio.h>main()int a10,i,j,t,*p;p=a;for(i=0;i<10;i+)scanf("%d",p+);for(i=0;i<9;i+)for(j=0;j<9-i;j+)if(aj<aj+1)t=aj;aj=aj+1;aj+1=t;for(i=0;i<10;i+)printf("%d ",ai);printf("n");28.把一字符串连接到另一字符串后面#include <stdio.h>#include <math.h>#include <string.h>void fun(char *a,char *b,char,int t)for(;*b!=0;a+,b+)*(a+t)=*b;*(a+t)=0;main()int n;char str1100,str2100;gets(str1);gets(str2);n=strlen(str1);fun(str1,str2,n);printf("%s",strcat(str1,str2);return 0;29.用结构体数组变量类型编程,有2个学生,4门成绩(输出:学号,姓名,4门课的成绩,平均成绩及名次。#include<stdio.h>struct studentint num;char name20;int score4;float aver;stu2;main()int i,j;struct student temp;float sum=0.0;for(i=0;i<2;i+)scanf("%d%s",&stui.num,stui.name);for(j=0;j<4;j+)scanf("%d",&stui.scorej);sum+=stui.scorej;stui.aver=sum/4.0;for(i=0;i<1;i+)for(j=0;j<1-i;j+)if(stuj.aver<stuj+1.aver)temp=stuj;stuj=stuj+1;stuj+1=temp;for(i=0;i<2;i+)printf("%6d%8s",stui.num,stui.name);for(j=0;j<4;j+)printf("%3d",stui.scorej);printf("%6fn",stui.aver);30.求1!+2!+。+10!#include <stdio.h>main()int i;long t,sum;t=1;sum=0;for(i=1;i<=10;i+)t=t*i;sum=sum+t;printf("%ld",sum);5.6 给一个百分制成绩,要求输出等级A、B、C、D、E。90分以上为A,8090分为B,7079分为C,60分以下为D。 解: 程序如下: #include <stdio.h> main() float score; char grade; printf("请输入学生成绩:"); scanf("%f",&score); while(score>100|(score<0) printf("n输入有误,请重新输入:"); scanf("%f",&score); switch(int)(score/10) case 10: case 9: grade=A;break; case 8: grade=B;break; case 7: grade=C;break; case 6: grade=D;bre ak; case 5: case 4: case 3: case 2: case 1: case 0: grade=E; printf("成绩是%5.1f,相应的等级是%c。n",score,grade); 说明:对输入的数据进行检查,如小于0或大于100,要求重新输入。(int)(score/10)的作用是将 (score/10) 的值进行强制类型转换,得到一个整型值。6.1输入两个正整数m和n,求其最大公约数和最小公倍数。 main() long m,n,i=1,j,s; scanf("%ld,%ld",&m,&n); for(;i<=m&&i<=n;i+) if(m%i=0&&n%i=0) s=i; if(m>=n) j=m; else j=n; for(;!(j%m=0&&j%n=0);j+); printf("s=%ld,j=%ldn",s,j); 6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 #include"stdio.h" main() char c;int i=0,j=0,k=0,l=0; while(c=getchar()!=n) if(c>=65&&c<=90|c>=97&&c<=122) i+; else if(c>=48&&c<=57) j+; else if(c=32) k+; else l+; printf("i=%d,j=%d,k=%d,l=%dn",i,j,k,l); 6.5 求k(0-100)+k2(0-50)+1/k(0-10)的和 main() double i=1,j=1,k=1,s1=0,s2=0,s3=0,sum; for(;i<=100;i+) s1=s1+i; for(;j<=50;j+) s2=s2+j*j; for(;k<=10;k+) s3=s3+1/k; sum=s1+s2+s3; printf("sum=%fn",sum); 6.7一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。编程序找出1000之内的所有完数,并按下面格式输出其因子: 6itsfactorsare1、2、3 main() int m,i,j,s; for(m=6;m<10000;m+) s=1; for(i=2;i<m;i+) if(m%i=0) s=s+i; if(m-s=0) printf("%5d its fastors are 1 ",m);for(j=2;j<m;j+) if(m%j=0) printf("%d ",j);printf("n"); 或 main() int m,i,j,s; for(m=6;m<1000;m+) s=m-1; for(i=2;i<m;i+) if(m%i=0) s=s-i; if(s=0) printf("%5d its fastors are 1 ",m);for(j=2;j<m;j+) if(m%j=0) printf("%d ",j);printf("n"); 6.14打印以下图案 * * * * * * * * * * * * * * * * * * * * * * * * * #include"math.h" main() int i,j,k; for(i=0;i<=3;i+) for(j=0;j<=2-i;j+) printf(" "); for(k=0;k<=2*i;k+) printf("*"); printf("n"); for(i=0;i<=2;i+) for(j=0;j<=i;j+) printf(" "); for(k=0;k<=4-2*i;k+) printf("*"); printf("n"); 7.3求一个33矩阵对角线元素之和。 main() int i=0,j=0,a33,s1,s2; for(i=0;i<3;i+) for(j=0;j<3;j+) scanf("%d",&aij); s1=a00+a11+a22; s2=a02+a11+a20; printf("s1=%d,s2=%dn",s1,s2); 或 main() static int i,j,s1,s2,a33; for(i=1;i<=3;i+) for(j=1;j<=3;j+) scanf("%d",&aij); s1=a11+a22+a33; s2=a13+a22+a31; printf("%d,%dn",s1,s2); 7.6打印出以下杨辉三角形(要求打印出10行)。 1 11 121 1331 14641 15101051 main() static int m,n,k,b1515; b01=1; for(m=1;m<15;m+) for(n=1;n<=m;n+) bmn=bm-1n-1+bm-1n; printf("%-5d",bmn);printf("n"); 或 main() int i,j,n,k,a1010; static a1=1,1,1,1,1,1,1,1,1,1; a11=1; for(k=2,k<11;k+) for(i=2;i<=k;i+) for(j=2;j<=i;j+) aij=ai-1j-1+ai-1j; for(k=1;k<11;k+) for(i=1;i<=k;i+) for(j=1;j<=i;j+) printf("%d",aij); 7.13编一程序,将两个字符串连接起来,不要strcat函数。 main() int i,j;char str1100,str2100,str3201; gets(str1); gets(str2); for(i=0;str1i!=0;i+) str3i=str1i; for(j=0;str2j!=0;j+) str3j+i=str2j; printf("%sn%sn%sn",str1,str2,str3); 7.15 编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不用strcpy函数。拷贝时,0也要拷贝过去,0后面的字符不拷贝。 解: #include "stdio.h" main() char s180,s280; int i; printf("Input s2:"); scanf("%s",s2); for(i=0;i<strlen(s2);i+) s1i=s2i; printf("s1:%sn",s1); 8.6写一函数,将两个字符串连接。 lianjie(a,b) char a100,b100; strcat(a,b); main() char str1100,str2100; gets(str1);gets(str2); lianjie(str1,str2); puts(str1); 8.7写一

    注意事项

    本文(C语言程序设计上机题目与参考答案.doc)为本站会员(rrsccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开