收藏 分销(赏)

C语言编辑作业二1.doc

上传人:丰**** 文档编号:3066181 上传时间:2024-06-14 格式:DOC 页数:25 大小:63.50KB 下载积分:10 金币
下载 相关 举报
C语言编辑作业二1.doc_第1页
第1页 / 共25页
C语言编辑作业二1.doc_第2页
第2页 / 共25页


点击查看更多>>
资源描述
一 1.      求出10至1000之内能同时被2、3、7整除的数,并输出。 #include<stdio.h> int main() {int n; for(n=10;n<=1000;n++) {if(n%42==0) printf("%d ",n); } printf("\n"); return 0; } 2.      用switch语句编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩,设:90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。 #include<stdio.h> int main() {float score; char grade; 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';break; case 5: case 4: case 3: case 2: case 1: case 0:grade='E';break; default:printf("error\n"); } printf("%c\n",grade); return 0; } 3、 有10个数围成一圈,求相邻三个数之和的最小值。 #include<stdio.h> int main() {float a[10]; float t,b; int i; printf("qing shu ru 10 ge shu:\n"); for(i=0;i<=9;i++) scanf("%f",&a[i]); printf("\n"); t=a[0]+a[1]+a[9]; for(i=1;i<9;i++) {b=a[i-1]+a[i]+a[i+1]; if(t>b) t=b; } printf("The smallest number is:%6.2f\n",t); return 0; } 4.      编程判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes;否则输出no。 #include<stdio.h> int main() {int n; scanf("%d",&n); if(n%5==0&&n%7==0) printf("yes\n"); else printf("no\n"); return 0; } 5.   一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。 #include<stdio.h> int main() { int m,s,i; for(m=2;m<1000;m++) {s=0; for(i=1;i<m;i++) if(m%i==0) s=s+i; if(s==m) {printf("%d ,its factors are",m); for(i=1;i<m;i++) if(m%i==0) printf("%d ",i); printf("\n"); } } return 0; } 法二 #include<stdio.h> int main() { int m,i,s; for(m=2;m<1000;m++) { s=1; for(i=2;i<=m/2;i++) { if(m%i==0) s=s+i; } if(s==m) { printf("%d is 完数 its factors are ",m); for(i=1;i<=m;i++) if(m%i==0) printf("%d ",i); printf("\n"); } } return 0; } 二 1.   把100---200间的不能被3整除的数输出。 #include<stdio.h> int main() { int n; for(n=100;n<=200;n++) if(n%3!=0) printf("%3d\n",n); return 0; } 2. 编写一函数fun,实现矩阵(3行3列)的转置(即行列互换)。 #include<stdio.h> #define N 3 float b[3][3]; float a[3][3]; int main() {void fun(float a[][3]); int i,j; printf("qing shu ru shu zu:\n"); for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%f",&a[i][j]); printf("\nyuan shu zu a:\n"); for (i=0;i<N;i++) {for(j=0;j<N;j++) {printf("%8.2f",a[i][j]); } printf("\n"); } fun(a); printf("zhuan zhi hou shu zu a:\n"); for(i=0;i<N;i++) {for(j=0;j<N;j++) printf("%8.2f",b[i][j]); printf("\n"); } return 0; } void fun(float a[][3]) {int i,j,t; for(i=0;i<N;i++) for(j=0;j<N;j++) b[j][i]=a[i][j]; } 3.      从键盘输入100个整数,统计其中正数、负数及零的个数。 #include<stdio.h> int main() {int i,n,s1,s2,s3; for(i=1,s1=0,s2=0,s3=0;i<=100;i++) {scanf("%d",&n); if(n>0) s1=s1+1; if(n<0) s2=s2+1; if(n==0) s3=s3+1; } printf("s1=%d s2=%d s3=%d\n",s1,s2,s3); return 0; } 4.      求1到100之间的奇数之和及偶数之和,并将二者输出。 #include<stdio.h> int main() {int i,s1=0,s2=0; for(i=1;i<=100;i++) {if(i%2==0) s1=s1+1; else s2=s2+1; } printf("s1=%d\ns2=%d\n",s1,s2); return 0; } 5.      编写一个函数,求6行、6列的二维数组全体元素中负数的个数。 #include <stdio.h> int main() { int i,j,a[6][6],n=0; printf("输入6*6数组:\n"); for(i=0;i<6;i++) for(j=0;j<6;j++) scanf("%d",&a[i][j]); for(i=0;i<6;i++) {for(j=0;j<6;j++) if(a[i][j]<0) n=n+1; } printf("n=%d\n",n); return 0; } 三 1.   编程:输出100~300中的素数及素数的个数 #include<stdio.h> #include<math.h> int main() { int n,k,i,m=0; for(n=101;n<=300;n=n+2) {k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0)break; if(i>=k+1) {printf("%4d",n); m=m+1; if(m%10==0)printf("\n"); } } printf("\n"); printf("m=%3d\n",m); return 0; } 2.   有一数列,包含10个数,已按升序排好。现要求编一程序,从指定位置开始的n个数按逆序重新排列并输出新的完整数列(例:原数列:2,4,6,8,10,12,14,16,18,20,若要求把从第4个数开始的5个数按逆序重新排列,则得到新数列为2,4,6,16,14,12,10,8,18,20)要求在主函数中输入10个数及指定位置m的值,并输出新的数列,在被调函数中从指定位置开始的n个数按逆序重新排列。 #include<stdio.h> int main() { int aa[10]={2,4,6,8,10,12,14,16,18,20},i; void sort(int a[],int n); sort(aa,5); for(i=0;i<10;i++) printf("%d ",aa[i]); printf("\n"); return 0; } void sort(int a[],int n) {int i,j,t; for(i=3;i<n+3-1;i++) for(j=i;j<n+3;j++) if(a[i]<a[j]) {t=a[i];a[i]=a[j];a[j]=t;} } 3.   编程:将一个数组中的数值按逆序重新存放。例如,原来顺序为8, 6, 5, 4, 1。要求改为1, 4, 5, 6, 8。 #include<stdio.h> int main() {int i,a[5]; for(i=0;i<5;i++) scanf("%d",&a[i]); for(i=4;i>=0;i--) printf("%2d",a[i]); printf("\n"); return 0; } l 4、编程:将字符串中的第m个字符开始的全部字符复制到另一个字符串。要求在主函数中输入字符串及m的值并输出复制结果,在被调函数中完成复制。 #include<stdio.h> #include<string.h> char d[80]="0"; int main() {int cpy(char s[],int m); char a[80]; int m; gets(a); scanf("%d",&m); cpy(a,m); puts(d); return 0; } int cpy(char s[],int m) {int i,j=0,t; t=strlen(s); for(i=m-1;i<t;i++,j++) d[j]=s[i]; } 5. 编程:求1到100之间的奇数之和及偶数之和,并将二者输出 #include<stdio.h> int main() { int i,s1=0,s2=0; for(i=1;i<=100;i++) { if(i%2==0) s1=s1+1; else s2=s2+1; } printf("s1=%d\ns2=%d\n",s1,s2); return 0; } 6.   求6行、6列的二维数组全体元素中负数的个数。 #include <stdio.h> int main() { int i,j,a[6][6],n=0; printf("输入6*6数组:\n"); for(i=0;i<6;i++) for(j=0;j<6;j++) scanf("%d",&a[i][j]); for(i=0;i<6;i++) {for(j=0;j<6;j++) if(a[i][j]<0) n=n+1; } printf("n=%d\n",n); return 0; } 四 1. 有4名学生,每个学生考4门课,要求:写2个函数:(1)返回值为总平均分的函数(2)返回值为最低分的函数。在main()函数中输入每个学生4门课的成绩,调用以上2个函数,输出总平均分和最低分 #include<stdio.h> #define N 4 int main() {float aver(float m[4][4]); float low(float n[4][4]); float a[4][4],t,s,k; int i,j; printf("shu chu shu zu a:\n"); for(i=0;i<4;i++) for(j=0;j<4;j++) scanf("%f",&a[i][j]); a[i][j]=k; t=aver(a); s=low(a); printf("aver=%4f",t); printf("main=%4f",s); printf("\n"); return 0; } float aver(float m[4][4]) {int i,j; float sum=0,aver; for(i=0;i<4;i++) for(j=0;j<4;j++) sum=sum+m[i][j]; aver=sum/4; return (aver); } float low(float n[4][4]) {int i,j; float min=n[0][0]; for(i=0;i<4;i++) for(j=0;j<4;j++) {if(min>n[i][j]) min=n[i][j]; } return (min); } 2. 编程:把100---200间的不能被3整除的数输出。 #include<stdio.h> int main() {int m; for(m=100;m<=200;m++) {if(m%3!=0) printf("%4d",m); } printf("\n"); return 0; } 3.   输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求:写3个函数:(1)输入10个数的函数,(2)交换处理的函数,(3)输出10个数的函数。在main()函数中调用以上3个函数。 #include<stdio.h> int main() {int input(int a[]); int f(int a[]); int output(int a[]); int a[10]; input(a); f(a); output(a); return 0; } int input(int a[]) {int i; for(i=0;i<10;i++) scanf("%d",&a[i]); } int f(int a[]) {int i,j,t,max=0,min=0; for(i=1,j=0;i<10;i++,j++) {if(a[max]<a[i]) max=i; if(a[min]>a[j]) min=j; } t=a[max];a[max]=a[9];a[9]=t; t=a[min];a[min]=a[0];a[0]=t; } int output(int a[]) {int i; for(i=0;i<10;i++) printf("%5d",a[i]); printf("\n"); } l 4 、设有10个学生的信息,包括学号、姓名和三门功课的成绩,试编写学生信息输入函数、学生信息输出函数,最后编写主函数,并在主函数中调用这些函数。 #include<stdio.h> #define N 5 struct stu {int num; char name[20]; int score1; int score2; int score3; } stu[N]; int main () {int shuru(); int shuchu(); shuru(); shuchu(); } int shuru() {int i; for(i=0;i<N;i++) {printf("num="); scanf("%d",&stu[i].num); printf("name="); scanf("%s",&stu[i].name); printf("score1="); scanf("%d",&stu[i].score1); printf("score2="); scanf("%d",&stu[i].score2); printf("score="); scanf("%d",&stu[i].score3); } printf("\n"); } int shuchu() {int i; printf("xue sheng de xin xi:\n"); for(i=0;i<N;i++) {printf("%5d%10s%10s%10d%10d%10d\n",stu[i].num,stu[i].name,stu[i].score1, stu[i].score2,stu[i].score3); } printf("\n"); } 五 1.   从键盘输入10个整数,对其进行从小到大排序,将排序后的结果输出并保存到文件“DATA.DAT”中。 #include<stdio.h> int main() {int i,j,t,a[10]; printf("shu ru 10 ge shu;\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;} printf("shu chu xin pai lie:\n"); for(i=0;i<10;i++) printf("%d",a[i]); printf("\n"); return 0; } 2.      从3*4的矩阵中求出最大值及所在的行号、列号,并将结果存入文件“DATA.DAT”中。 #include<stdio.h> int main() {int i,j,max,hang,lie,a[3][4]; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); max=a[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) if(a[i][j]>max) {max=a[i][j]; hang=i; lie=j; } printf("max=%d\nhang=%d\nlie=%d\n",max,hang,lie); return 0; } 3.   编程:从键盘输入一行字符,将其中的大写字母改成小写字母存入磁盘文件“TEXT . TXT”中保存。 #include<stdio.h> #include<string.h> int main() {char a[81],d[81]; int i,j,t=0; gets(a); t=strlen(a); for(i=0,j=0;i<t;i++,j++) {if(a[i]>='A'&&a[i]<='Z') d[j]=a[i]+32; } for(j=0;j<t;j++) printf("%c",d[j]); printf("\n"); return 0; } l 4、编程:从键盘输入N个字符串,按字典顺序排序后输出,并将结果保存入“DATA.DAT”中。 #include<stdio.h> #include<string.h> #define N 3 int main() {char str[N][81],t[81]; int i,j,k; for(i=0;i<N;i++) scanf("%s",str[i]); for(i=0;i<N-1;i++) {k=i; for(j=i+1;j<N;j++) if(strcmp(str[k],str[j])>0) k=j; { strcpy(t,str[k]); strcpy(str[k],str[i]); strcpy(str[i],t); } } for(i=0;i<N;i++) printf("%c",str[i]); printf("\n"); return 0; } 法二 #include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct { char c[105]; }Line; Line a[10]; int cmp(const void *x,const void *y) { char *m = ((Line*)x)->c; char *n = ((Line*)y)->c; return strcmp(m,n); } int main() { int L,M,i,x,y,ans; for(i = 0;i < 10;i ++) scanf("%s",a[i].c); qsort(a,10,sizeof(a[0]),cmp); for(i = 0;i < 10;i ++) printf("%s\n",a[i].c); return 0; } 5. 键盘输入n个整数,统计其中正数、负数及零的个数,结果保存至“data.dat”文件中。 #include<stdio.h> int main() {int i,z=0,f=0,l=0,a[10]; for(i=0;i<10;i++) {scanf("%d",&a[i]); if(a[i]>0) z++; else if(a[i]==0) l++; else f++; } printf("zheng shu=%d\nfu shu=%d\nling=%d\n",z,f,l); return 0; } 6.   输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数,并将统计结果输出到磁盘文件“test”中保存#include<stdio.h> int main() {char c; int z=0,k=0,s=0,q=0; printf("qing shu chu yi hang zi fu:\n"); while((c=getchar())!='\n') {if(c>='a'&&c<='z'||c>='A'&&c<='Z') z++; else if(c==' ') k++; else if(c>='0'&&c<='9') s++; else q++; } printf("zi mu shu=%d\nkong ge shu=%d\nshu zi shu=%d\nqi ta zi fu=%d\n", z,k,s,q); return 0; }。 5.      输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33 #include<stdio.h> int main() {int i,j,k,n; printf("shu chu shui xian huan shu:\n"); for(n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("%4d",n); } printf("\n"); return 0; } 7.  求1+2+3+……+100。 #include<stdio.h> int main() {int n,sum=0; for(n=1;n<=100;n++) {sum=sum+n;} printf("sum=%4d\n",sum); return 0; } 8.  给定一个一维数组a有N个元素,求最大值。 #include<stdio.h> int main() {int i,j,t,a[3]={5,8,3},max; max=a[0]; for(i=0;i<3;i++) {if(max<a[i]) max=a[i];} printf("max=%d\n",max); return 0; } 9.  用选择法对10个数按从小到大的顺序排列。 #include<stdio.h> int main() {int i,j,min,t,a[11]; printf("enter data:\n"); for(i=0;i<10;i++) {printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); for(j=i+1;j<10;j++) printf("%5d",a[i]); printf("\n"); for(i=0;i<=9;i++) {min=i; for(j=i+1;j<=9;j++) if(a[min]>a[j]) min=j; t=a[i]; a[i]=a[min]; a[min]=t; } printf("\nthe sorted numbers:\n"); for(i=0;i<=9;i++) printf("%5d",a[i]); printf("\n"); return 0; } 10. 对10个数依次赋值为0,1,2,3,4,5,6,7,8,9,要 求逆序输出。 #include<stdio.h> int main() {int i,a[10]={0,1,2,3,4,5,6,7,8,9}; printf("shun xu shu chu:\n"); for(i=0;i<10;i++) printf("%4d",a[i]); printf("\n"); printf("ni xu shu chu:\n"); for(i=9;i>=0;i--) printf("%4d",a[i]); printf("\n"); return 0; } 11. 10个学生,每个学生3门课成绩,要求计算出每个同学的平均成绩并输出。 #include<stdio.h> int main() {float aver(float grade_A,float grade_B,float grade_C); int i; float grade_a,grade_b,grade_c,e; for(i=0;i<=9;i++) {scanf("%f%f%f",&grade_a,&grade_b,&grade_c); e=aver(grade_a,grade_b,grade_c); printf("%f\n",e); } return 0; } float aver(float grade_A,float grade_B,float grade_C) {float sum,E; sum=grade_A+grade_B+grade_C; E=sum/3; return (E); } 12.编写函数void  sort(int  a[],int  n),其功能是对a数组中前n个元素从小到大排序。要求:在main中输入a数组的10个元素,调用函数sort实现对a数组的排序。 #include<stdio.h> int main() {void sort(int x[],int n); int a[10],i,*p; p=a; printf("enter array:\n"); for(i=0;i<10;i++) scanf("%d",p++); p=a; sort(p,10); printf("the sorted array:\n"); for(p=a,i=0;i<10;i++) {printf("%d",*p); p++; printf("\n"); return 0; } void sort(int x[],int n) {int i,j,k,t; for(i=0;i<n-1;i++) {k=i; for(j=i+1;j<n;j++) if(x[k]<x[i]) k=j; t=a[i]; a[i]=a[k]; a[k]=t;} } 13.输入一个不多于5位的正整数,将其各位数输出。 #include<stdio.h> #include<math.h> int main() {int n,a,b,c,d,e; printf("shu ru zheng shu:"); scanf("%d",&n); if(n>99999||n<=0) printf("data error\n"); else {a=n/10000; b=(n-a*10000)/1000; c=(n-a*10000-b*1000)/100; d=(n-a*10000-b*1000-c*100)/10; e= n-a*10000-b*1000-c*100-d*10; printf("you gao dao di ge wei shu fen bie shi:%2d%2d%2d%2d%2d",a,b,c,d,e);} printf("\n"); return 0; } 14.输入10个整数,找出其中的最大值、最小值。 #include<stdio.h> int main() {int i,a[10],max,min; printf("shu ru 10 ge shu:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); max=a[0];min=a[0]; for(i=1;i<10;i++) if(a[i]>max) max=a[i]; else if(a[i]<min) min=a[i]; printf("max=%2d\nmin=%2d",max,min); printf("\n"); return 0; } 15.编写一个函数int  prime(int  x),其功能是判断x是否为素数,如是返回1,否则返回0。在main函数中输入一个整数,判断其是否为素数。例如若输入17,则输出“17:yes”,若输入12,则输出“12:no”。 #include<stdio.h> #include<math.h> int main() {int n;int prime(int x); printf("please enter a number:"); scanf("%d",&n); if(prime(n)) printf("\n%d:YES",n); else printf("\n%d:NO",n); printf("\n"); return 0; } int prime(int x) {int p,i,k; k=sqrt(x); for(i=2;i<=k;i++) if(x%i==0) break; if(i>=k+1) p=1; else p=0; return (p); } 16.编程:求3*3的矩阵的主对焦2线之和。 #include<stdio.h> int main() {int i,j,sum=0,a[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) {sum+=a[i][i];} printf("sum=%d\n",sum); return 0; } 19.求分数序列2/1,3/2,5/3,8/5/,13/8,21/13…..的前20项之和。 #include<stdio.h> int main() {float fun(int n); int n=20; float sum; scanf("%d",&n); printf("\n"); sum=fun(n); printf("%f",sum); } float fun (int n) {int i; float t,a=2.0,b=1.0,s=0; for(i=1;i<=n;i++) {s=s+a/b;t=a;a=a+b;b=t;} return (s); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服