版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、10个人的成绩存放在score数组中,编写函数fun,求出平均分,并作为函数值返回,且输出不及格人数。#include<stdio.h>floatfun(inta[10]){ inti,aver,sum=0; for(i=0;i<10;i++) sum=sum+a[i]; aver=sum/10; returnaver;}voidmain(){ inti,j=0,a[10]={10,20,30,40,50,60,70,80,90,100}; floataver;for(i=0;i<10;i++) if(a[i]<60) j++; aver=fun(a); printf("10个人的成绩平均分为:%5.2f\n",aver); printf("\n"); printf("不及格人数:%d\n",j);}求出1到100之内能被7或者11整除,但不能同时被7和11整除的所有整数,并将他们放在指定的数组a中。#include<stdio.h>voidmain() {inti,n,a[500];n=fun(a);for(i=0;i<n;i++) printf("%8d",a[i]); }intfun(inta[]) {inti=7,j=0; for(;i<=100;i++) if((i%7==0||i%11==0)&&(!(i%7==0&&i%11==0))) a[j++]=i; returnj;}3、求方程的解。#include<stdio.h>#include<math.h>voidmain(){ floata,b,c,d,x1,x2,m,n;printf("请输入方程的3个系数,a,b,c:");scanf("%f,%f,%f",&a,&b,&c);printf("该方程\n");if(fabs(a)<=1e-6){ if(fabs(b)<=1e-6){ if(fabs(c)<=1e-6) printf("有无穷多个解\n");else printf("无解\n"); }else printf("有一个根:%8.4f\n",-c/b);}else{ d=b*b-4*a*c;if(fabs(d)<=1e-6) printf("有两个相等的实根:%8.4f\n",-b/(2*a));else if(d>1e-6) { x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); printf("有两个不等的实根:%8.4f和%8.4f\n",x1,x2); }else { m=-b/(2*a); n=sqrt(-d)/(2*a); printf("有两个复根:\n"); printf("%8.4f+%8.4fi\n",m,n); printf("%8.4f-%8.4fi\n",m,n); }}}4、给出一个百分制成绩,规定输出成绩等级A、B、C、D、E,90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。规定:当输入分数为负值,或大于100时,告知用户“输入数据错误,重新输入”。#include<stdio.h>voidmain(){ floatx; chary; printf("输入学生成绩:x="); scanf("%f",&x); while(x>100||x<0) { printf("输入错误,请重新输入学生成绩:x=");scanf("%f",&x); } if(x>=90) y='A'; else if(x>=80) y='B'; else if(x>=70) y='C'; else if(x>=60) y='D'; else y='E'; printf("\n学生的等级为:y=%c\n",y);}求数组中最大元素在数组中的下标并存放在指针k所指的储存单元中。#include<stdio.h> voidfun(int*s,intt,int*k) { inti,max; max=s[0]; for(i=0;i<t;i++) if(s[i]>max){ max=s[i]; *k=i;} }voidmain() {inta[10]={876,675,896,101,301,401,980,431,451,777},k; fun(a,10,&k); printf("最大值在a中的位置为:i=%d\n最大值为:%d\n",k,a[k]); }6、编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+……+1/(1+2+3+4+……+n)。#include<stdio.h> floatfun(intn) { inti; floats=1.0,t=1.0; for(i=2;i<=n;i++) { t=t+i; s=s+1/t; } returns; }voidmain(){ floaty; intn; printf("输入n的值:\n"); scanf("%d",&n); y=fun(n); printf("y=%f\n",y);}7、定义了7×7的二维数组,并在主函数中自动赋值。编写函数fun(inta[][7]),该函数的功能是:使数组左下半三角元素中的值所有置成0。#include<stdio.h>intfun(inta[][7]) { inti,j; for(i=0;i<7;i++) for(j=0;j<7;j++) { if(i>j) a[i][j]=0; }} voidmain() { inta[7][7],i,j; for(i=0;i<7;i++) { for(j=0;j<7;j++) { a[i][j]=i+j+1; printf("%3d",a[i][j]); } printf("\n"); } fun(a); printf("输出解决后的数组a:\n");for(i=0;i<7;i++) { for(j=0;j<7;j++) { printf("%3d",a[i][j]); } printf("\n"); } }编写一个函数voidfun(inttt[5][6],intpp[6]),tt指向一个5行6列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中初始化。#include<stdio.h>voidfun(inttt[5][6],intpp[6]){inti,j,min;for(j=0;j<6;j++){min=tt[0][j];for(i=0;i<5;i++){if(tt[i][j]<min)min=tt[i][j];}pp[j]=min;}}voidmain(){ intt[5][6]={{68,56,32,44,54,12},{14,56,24,47,88,58},{42,85,22,75,44,56},{45,12,3,5,78,45},{45,65,25,75,85,41}};intp[6],i,j,k;printf("Theriginaldatais:\n");for(i=0;i<5;i++){for(j=0;j<6;j++)printf("%6d",t[i][j]);printf("\n");}fun(t,p);printf("\n二维函数组每列中最小元素为:\n");for(k=0;k<6;k++)printf("%4d",p[k]);printf("\n");}9、求出4行5列的二维数组周边元素之和。#include<stdio.h>voidmain() { inta[4][5],i,j,sum=0,sum1=0,sum2=0; printf("请输入4*5矩阵数据:"); for(i=0;i<4;i++) for(j=0;j<5;j++)scanf("%d",&a[i][j]); { for(i=0;i<4;i++) sum1=sum1+a[i][0]+a[i][4]; } { for(j=0;j<5;j++) sum2=sum2+a[0][j]+a[3][j]; } sum=sum1+sum2-a[0][0]-a[0][4]-a[3][0]-a[3][4];printf("矩阵周边元素之和为:%d\n",sum);}编写程序,把字符串中的内容逆置(不准使用多个字符数组)。#include<stdio.h>voidmain(){ chara[80];chart;inti,n;printf("输入一行字符串:\n"); gets(a);n=strlen(a);for(i=0;i<=n/2;i++){ t=a[i];a[i]=a[n-i-1];a[n-i-1]=t;}printf("字符串中的内容逆置为:\n");puts(a);}编写程序,从字符串中删除指定的字符,同一字母的大、小写按不同字符解决。并把删除好的字符以字符串的形式输出(不准使用多个字符数组)。#include<stdio.h>#include<string.h>voidmain(){charch,str[100];inti,j=0;printf("输入字符串:\n");gets(str);\\无上限读取字符 printf("输入要删除的字符:"); ch=getchar();for(i=0;i<strlen(str);i++)if(str[i]!=ch) str[j++]=str[i];str[j]='\0';printf("\n字符串str为:%s\n",str);}#include<stdio.h>#include<string.h>voidmain(){ chara[80]; charch; inti,j; intn;printf("输入一串字符字符:\n"); gets(a);printf("输入要删除的字符:"); ch=getchar(); i=0;while(a[i]!='\0'){ while(a[i]!='\0'&&a[i]!=ch)i++;n=strlen(a);for(j=i;j<n-1;j++)a[j]=a[j+1];a[j]='\0';}printf("删除后的字符串:");puts(a);}编写程序,对长度为7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。#include<stdio.h>voidmain() { charc[8]; chari,j,temp; printf("长度为7个字符的c字符串:");gets(c); for(i=1;i<=5;i++) { for(j=i+1;j<=5;j++) { if(c[i]<c[j]) { temp=c[i]; c[i]=c[j]; c[j]=temp; } } }printf("首尾字符外,将其余5个字符按ascii码降序排列为:%s\n",c); }编写函数fun,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。#include<stdio.h>#include<string.h>char*fun(char*a,char*b) {inti,j;for(i=0;*(a+i);i++);for(j=0;*(b+j);j++);if(i>=j)returna;elsereturnb; }voidmain() {chara[100],b[100],*c;printf("输入a字符串:");gets(a);printf("输入b字符串:");gets(b);c=fun(a,b);printf("输出较长的c字符串:");puts(c); }14、给一个不多于5位的正整数,规定求出它是几位数,打印出每一位数字,并按逆序打印出各位数字。#include<stdio.h>voidmain() { longintnum; inta,b,c,d,f,place;printf("输入num的数值:"); scanf("%d",&num); if(num>9999) place=5; else if(num>999) place=4; else if(num>99) place=3; else if(num>9) place=2; else place=1; printf("place=%d\n",place);f=num/10000; d=num/1000%10; c=num/100%10; b=num/10%10; a=num%10; switch(place) { case5:printf("%d,%d,%d,%d,%d",f,d,c,b,a); printf("\n反序数为:"); printf("%d,%d,%d,%d,%d\n",a,b,c,d,f);break;case4:printf("%d,%d,%d,%d",d,c,b,a); printf("\n反序数为:"); printf("%d,%d,%d,%d\n",a,b,c,d);break;case3:printf("%d,%d,%d",c,b,a); printf("\n反序数为:"); printf("%d,%d,%d\n",a,b,c);break;case2:printf("%d,%d",b,a); printf("\n反序数为:"); printf("%d,%d\n",a,b);break;case1:printf("%d",a); printf("\n反序数为:"); printf("%d\n",a);break; } }编写一个函数fun,它的功能是:求出一个6×8的整型二维数组中最大元素的值,并将此值返回调用函数。数组在主函数中初始化,并最终输出结果。#include<stdio.h>intfun(inta[6][8]){inti,j,max=a[0][0];for(i=0;i<6;i++) for(j=0;j<8;j++) if(max<a[i][j]) max=a[i][j];returnmax;}voidmain(){intarr[6][8]={{1,8,7,4,6,1,2,3},{65,75,12,45,62,18,65,24},{32,1,5,4,6,7,8,9},{5,5,5,9,9,9,8,8,},{9,5,2,4,7,81,2,5},{3,2,1,4,5,6,9,8}};inti,j,max;printf("arraya:\n");for(i=0;i<6;i++) { for(j=0;j<8;j++) { printf("%4d",arr[i][j]); } printf("\n"); } max=fun(arr); printf("max=%d\n",max); }16、将字符数组s中的字符串,除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在新的字符数组t中。#include<stdio.h>#include<string.h>voidmain(){chars[100],t[100]; inti,j=0,n;printf("\n输入字符串S:");gets(s);//scanf("%s",s);n=strlen(s);for(i=0;i<n;i++)if(i%2==0&&s[i]%2==0) {t[j]=s[i];j++; }t[j]='\0';printf("\nTheresultis:%s\n",t); }#include<stdio.h>#include<string.h>voidfun(char*s,chart[]) {inti,j=0,n;n=strlen(s);for(i=0;i<n;i++)if(i%2==0&&s[i]%2==0) {t[j]=s[i];j++; }t[j]='\0'; }voidmain(){chars[100],t[100];printf("\nPleaseenterstringS:");gets(s);//scanf("%s",s);fun(s,t);printf("\nTheresultis:%s\n",t); }假定输入的字符串中只包含字母和*号。则使字符串中的*号不得多于3个;若多于3个,则删除多于的*号;若少于或等于3个,则什么也不做。#include<stdio.h>#include<string.h>voidmain(){ charstr[50],c[50],b; inti,j,n,a[50]={0},k,l; gets(str); n=strlen(str); for(l=0,j=0,i=0;i<n;i++) { if(str[i]=='*') { l++; if(l<=3) { a[j]=i; j++; } } else { a[j]=i; j++; } } for(i=0;i<j;i++) { k=a[i]; b=str[k]; str[i]=b; } for(i=j;i<n;i++) str[i]='\0'; puts(str);}18、编程计算1!+2!+3!+……n!的值,其中,n值由键盘输入。#include<stdio.h>voidmain(){ intn; inti=1,t=1,sum=0; printf("输入n的数值:"); scanf("%d",&n); do { t=t*i; sum=sum+t; i++; } while(i<=n); printf("sum=%d\n",sum);}编写程序,删除字符串中的所有空格。#include<stdio.h>#include<string.h>voidmain(){charstr[100];inti,j=0;printf("输入字符串:\n");gets(str);for(i=0;i<strlen(str);i++)if(str[i]!='')str[j++]=str[i];str[j]='\0';printf("\n新字符串str为:%s\n",str);}求出字符数组ss中存储的字符串中指定字符的个数。#include<stdio.h>voidmain(){ intfun(chara[],charch); chara[100],ch; printf("\nPleaseenterastring:"); gets(a); printf("\nPleaseenterachar:"); ch=getchar(); printf("Thenumberis:%d\n",fun(a,ch));}intfun(chara[],charch) { inti,j=0; for(i=0;a[i]!='\0';i++) if(a[i]==ch) j++; returnj; }#include<stdio.h>voidmain(){ chara[100],ch; inti,j=0; printf("输入字符串:"); gets(a); printf("\n"); printf("输入要查找的字符:"); ch=getchar(); for(i=0;a[i]!='\0';i++) if(a[i]==ch) j++; printf("\n"); printf("字符串a中指定字符的个数:%d\n",j);}21、输入一行字符,分别记录出其中的大小写字母、空格、数字和其他字符的个数。#include<stdio.h>voidmain(){ inti=0,j=0,k=0,l=0; charc; printf("输入一行字符:\n"); while((c=getchar())!='\n') { if((c>='A'&&c<='Z')||(c>='a'&&c<='z')) i++; else if(c>='0'&&c<='9') j++; else if(c=='') k++; else l++; }printf("大小写字母数:i=%3d\n数字数:j=%3d\n空格数:k=%3d\n其他符号数:l=%3d\n",i,j,k,l);}将5行6列的二维数组中的数据,按列的顺序依次放到一个一维数组中。#include<stdio.h>voidmain(){inta[5][6]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,1,2,3,4,5,6,7,8,9,10};intb[30];inti,j,k=0;for(j=0;j<6;j++){for(i=0;i<5;i++){b[k++]=a[i][j];}}printf("二维数组:\n");for(i=0;i<5;i++){for(j=0;j<6;j++){printf("%3d",a[i][j]);}printf("\n");} printf("\n");printf("一维数组:\n");for(i=0;i<k;i++){printf("%3d",b[i]);} printf("\n");}#include<stdio.h>voidfun(int(*s)[4],int*b){inti,j,k=0;for(j=0;j<4;j++)for(i=0;i<3;i++){b[k]=*(*(s+i)+j);k++;}b[k]='\0';}main(){inta[30],w[3][4]={{1,2,3,4},{4,5,6,7},{6,7,8,9}};inti,j;printf("输出数组w:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",w[i][j]);printf("\n");}fun(w,a); printf("按列的顺序依次放到一个一维数组b:\n");for(i=0;i<12;i++)printf("%3d",a[i]);printf("\n\n");}23、求两个2×3和3×2的矩阵之积,并把结果显示出来。#include<stdio.h>voidmain(){ inta[2][3],b[3][2],c[2][2]={0},i,j,x; printf("输入一个2行3列的矩阵a:\n"); for(i=0;i<2;i++) {for(j=0;j<3;j++) { scanf("%d",&a[i][j]); printf("%5d",a[i][j]); } printf("\n"); }printf("输入一个3行2列的矩阵b:\n"); for(i=0;i<3;i++) {for(j=0;j<2;j++) { scanf("%d",&b[i][j]); printf("%5d",b[i][j]); }printf("\n"); }printf("a*b=:\n"); for(i=0;i<2;i++) {for(j=0;j<2;j++) { for(x=0;x<3;x++) c[i][j]+=a[i][x]*b[x][j]; printf("%5d",c[i][j]); }printf("\n"); }}定义了一个6×6的二维数组,并进行初始化。将数组右上半三角元素中的值乘以10。#include<stdio.h>voidfun(inta[][6]);voidmain(){ inti,j; inta[6][6]; printf("arraya:\n"); for(i=0;i<6;i++) { for(j=0;j<6;j++) { a[i][j]=i+j+1; printf("%3d",a[i][j]); }printf("\n"); } fun(a); printf("通过解决后的数组元素arraya:\n"); for(i=0;i<6;i++) { for(j=0;j<6;j++) { printf("%5d",a[i][j]);} printf("\n");}}voidfun(inta[][6]){ inti,j; for(i=0;i<6;i++) for(j=0;j<6;j++) { if(i<j) a[i][j]=10*a[i][j]; }}#include<stdio.h>voidmain(){ inti,j; inta[6][6]; printf("arraya:\n"); for(i=0;i<6;i++) { for(j=0;j<6;j++) { a[i][j]=i+j+1; printf("%3d",a[i][j]); } printf("\n"); } printf("通过解决后的数组元素arraya:\n"); for(i=0;i<6;i++) { for(j=0;j<6;j++) { if(i<j) a[i][j]=10*a[i][j]; printf("%4d",a[i][j]);} printf("\n");}}25、编写程序,实现矩阵(5行6列)的转置(即行列互换)。#include<stdio.h>voidmain() { inti,j; inta[5][6]={{4,5,7,8,1,6},{8,4,6,5,1,5},{7,8,9,4,5,6},{1,2,3,4,5,6},{1,2,3,6,5,2}}; intb[6][5]; printf("arraya:\n"); for(i=0;i<5;i++) { for(j=0;j<6;j++) { printf("%3d",a[i][j]); b[j][i]=a[i][j]; } printf("\n"); } printf("a的转置矩阵arrayb:\n");for(i=0;i<6;i++) { for(j=0;j<5;j++) { printf("%3d",b[i][j]); } printf("\n"); } }26、将两个两位数的正整数a,b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。#include<stdio.h>voidmain() {inta,b,c,i,j,k,l; printf("输入a,b的值:");scanf("%d%d",&a,&b);i=a/10;j=a%10;k=b/10;l=b%10;c=1000*i+k*100+j*10+l;printf("两个两位数的正整数a,b合并成一个整数为:c=%d\n",c);}编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。主函数中仅仅输入和输出。#include<stdio.h>#include<math.h>intfun(chara[],charb[]){ inti=0,j=0; while(a[i++]!='\0'); i--; while((a[i++]=b[j++])!='\0'); return(a[i]);}intmain(){ chara[100],b[100]; printf("请输入一串字符a:"); gets(a); printf("\n"); printf("请再输入一串字符b:"); gets(b); printf("\n"); fun(a,b); printf("新字符串为:"); puts(a); printf("\n");}28、请编写函数fun,该函数的功能是:实现b=a+aT,即把矩阵a加上a的转置,存放在矩阵b中。计算结果在main函数中输出(a为一个3行3列的整型数组)。#include<stdio.h> voidfun(inta[3][3],intb[3][3]) { inti,j,at[3][3]; for(i=0;i<=2;i++) for(j=0;j<=2;j++) at[i][j]=a[j][i]; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[i][j]+at[i][j]; } main() { inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; inti,j,at[3][3];printf("输出一个3*3的矩阵a:\n"); for(i=0;i<3;i++) {for(j=0;j<3;j++) { printf("%5d",a[i][j]); at[i][j]=a[j][i]; } printf("\n"); }printf("输出a的转置矩阵at:\n"); for(i=0;i<3;i++) {for(j=0;j<3;j++) { printf("%5d",at[i][j]); } printf("\n"); }printf("\na+at=\n"); fun(a,t); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%7d",t[i][j]); printf("\n"); } }29、依次输出200以内(包含200)能被5整除但不能被15整除的自然数。#include<stdio.h>voidmain(){ inti; for(i=1;i<=200;i++) { if(i%5==0&&i%15!=0) printf("i=%d\n",i); }}编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。#include<stdio.h>intfun(inta[],intn){ inti,j; for(i=1,j=0;i<n;i++) if(a[i]!=a[j]) a[++j]=a[i]; returnj+1;}voidmain(){inti,n,a[100];printf("输入数组大小:");scanf("%d",&n);printf("输入%d个从小到大的顺序排列的数\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]); printf("删除后数组中数据:");n=fun(a,n);for(i=0;i<n;i++) printf("%5d",a[i]); printf("\n"); printf("删除后数组中数据的个数%5d\n",n);}31、记录各年龄段的人数。30个年龄通过scanf函数获得,并放在age数组中。规定把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁的人数放在d[2]中,其余以此类推,把100岁(含100以上年龄的人数都放在d[10]中。#include<stdio.h> voidfun(inta[],intb[]) { inti,j; for(j=0;j<11;j++) b[j]=0; for(i=0;i<30;i++) if(a[i]>=0&&a[i]<=9) b[0]+=1; else if(a[i]>=10&&a[i]<=19) b[1]+=1; else if(a[i]>=20&&a[i]<=29) b[2]+=1; else if(a[i]>=30&&a[i]<=39) b[3]+=1; else if(a[i]>=40&&a[i]<=49) b[4]+=1; else if(a[i]>=50&&a[i]<=59) b[5]+=1; else if(a[i]>=60&&a[i]<=69) b[6]+=1; else if(a[i]>=70&&a[i]<=79) b[7]+=1; else if(a[i]>=80&&a[i]<=89) b[8]+=1; else if(a[i]>=90&&a[i]<=99) b[9]+=1; else b[10]+=1; } voidmain() { inti,d[11]; intage[30]={1,2,56,78,10,25,87,96,31,110,45,65,42,73,23, 118,90,1,10,23,34,45,56,67,68,78,89,91,46,97}; printf("输出30个年龄数:\n"); for(i=0;i<30;i++) printf("%4d",age[i]); printf("\n\n"); printf("各年龄段的人数为:\n"); fun(age,d); for(i=0;i<10;i++) printf("%3d--%3d:%2d\n",i*10,i*10+9,d[i]); printf("Over100:%2d\n",d[10]); }#include<stdio.h>voidmain() { intage[30],i,d[11]={0}; printf("输入30个数据:"); for(i=0;i<30;i++) scanf("%d",&age[i]);for(i=0;i<30;i++) { if(age[i]>99) d[10]++; else d[age[i]/10]++; } printf("额度按人数:\n"); for(i=0;i<11;i++) printf("%3d",d[i]); }编写函数fun,该函数的功能是:记录一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。#include<stdio.h>#include<string.h>intfun(char*s) {inti=1,c=0;while(s[i]) {if(s[i]==''&&s[i-1]!='')c++;i++; }returnc;}main(){charb[100];intnum=0;printf("Enterastring:\n");gets(b);num=fun(b);printf("Thenumberofwordis:%d\n\n",num);}33、计算并输出给定整数n的所有因子(不涉及1与自身)之和。规定n的值不大于1000(n由键盘输入)。#include<stdio.h>voidmain(){ inti,n,sum=0; printf("请输入:n="); scanf("%d",&n); while(n>1000) { printf("输入错误,请重新输入:n=");scanf("%d",&n); } for(i=2;i<n;i++) { if(n%i==0) sum=sum+i; } printf("sum=%d\n",sum);}34、计算并输出下列级数和:s=1/1*2+1/2*3+…+1/n(n+1)。#include<stdio.h>voidmain(){ floati,n,t,s=0; printf("输入n的数值:\n"); scanf("%f",&n); for(i=1;i<=n;) { t=1/(i*(i+1)); s=s+t; i++; } printf("s=%f\n",s);}将字符数组s中字符串中下标为偶数的字符删除,并用字符串的形式输出结果。#include<stdio.h>#include<string.h>voidmain(){charstr[100];inti,j=0;printf("输入字符串:\n");gets(str);for(i=0;i<strlen(str);i++)if(i%2==1) str[j++]=str[i];str[j]='\0';printf("\n新字符串str为:%s\n",str);}#include<stdio.h>#include<string.h>voidfun(char*s,chart[]) {inti,j=0,n;n=strlen(s);for(i=0;i<n;i++)if(i%2==1) {t[j]=s[i];j++; }t[j]='\0'; }voidmain(){chars[100],t[100];printf("\nPleaseenterstringS:");gets(s);//scanf("%s",s);fun(s,t);printf("\nTheresultis:%s\n",t); }编程序:通过一个函数判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是同样的字符串。#include<stdio.h>voidmain(){ chara[100]; printf("请输入字符串:\n");scanf("%s",a); if(fun(a)==1) printf("Yes\n"); else printf("No\n");}intfun(charstr[]){inti,n;n=strlen(str);//n表达字符串中字符的个数for(i=0;i<=n/2;i++) {if(str[i]!=str[n-i-1])//比较字符串中相对称的字符是否相同 return0;} return1;}37、编程实现由主函数输入m,n并输出最终结果,按下述公式计算的值:,其中函数f的功能是计算阶乘,函数g的功能是求的值。#include<stdio.h> voidmain() { intg(intm,intn); intm,n,c; printf("输入m,n的值:\n"); scanf("%d%d",&m,&n); c=g(m,n); printf("c=%d\n",c); } intg(m,n) { intf(n); intb; b=f(m)/f(n)/f(m-n); returnb; }intf(n){ inta=1,i; for(i=1;i<=n;i++) a*=i; returna;}编写一个函数fun,它的功能是:将字符串a中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。主函数只能用来输入输出字符串。#include<stdio.h>#include<string.h>voidfun(char*a){inti,n;n=strlen(a);for(i=1;i<n;i+=2)if(a[i]>='a'&&a[i]<='z')a[i]=a[i]-32;}voidmain(){charb[81];printf("\n输入一行字符串a:\n");gets(b);fun(b);printf("\n将字符串a中所有下标为奇数位置上的字母转换为大写:\n%s\n",b);}39、计算并输出给定数组(长度为5)中每相邻两个元素之平均值的平方根之和。#include<stdio.h>#include<math.h>voidmain() {inti;doubles;doublea[5]={1,7,11,21,29};for(i=0,s=0;i<4;i++) {s+=sqrt((a[i]+a[i+1])/2); }printf("每相邻两个元素之平均值的平方根之和为:s=%f\n",s); }用指针方法编写程序,输入3个整数,将它们按由小到大的顺序排列输出。#include<stdio.h>voidmain(){ voidfun(int*q1,int*q2,int*q3); inta,b,c,*p1,*p2,*p3; printf("请输入a,b,c的数值:"); scanf("%d%d%d",&a,&b,&c); p1=&a; p2=&b; p3=&c; fun(p1,p2,p3); printf("\n"); printf("由小到大的顺序排列为:%5d%5d%5d\n",a,b,c);}voidfun(int*q1,int*q2,int*q3) { voidswap(int*pt1,int*pt2); if(*q1>*q2) swap(q1,q2); if(*q1>*q3) swap(q1,q3); if(*q2>*q3) swap(q2,q3); } voidswap(int*pt1,int*pt2) { intt; t=*pt1; *pt1=*pt2; *pt2=t; }41、计算并输出100(涉及100)以内能被3或4整除的所有自然数之和。#include<stdio.h>voidmain(){ inti,n=0,sum=0; for(i=1;i<=100;i++) { if((i%3==0)||(i%4==0)) { printf("i=%d",i); n=n+1; sum=sum+i; } if(n%10==0) printf("\n"); } printf("\n100以内所有可以整除'3'或'4'的自然数之和为:sum=%d\n",sum);}42、有一函数用scanf函数输入x的值,求y值。#include<stdio.h>voidmain(){ floatx,y; printf("请输入x的数值:"); scanf("%f",&x); if(x<1) y=x; else if(x>=10) y=3*x-11; else y=2*x-1; printf("y=%f\n",y);}输入两个正整数m和n,求它们的最大公约数和最小公倍数。#include<stdio.h>voidmain() { intm,n,i,s,j;printf("请输入m,n的数值:"); scanf("%d%d",&m,&n); for(i=1;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("\n最大公约数为:s=%4d\n最小公倍数为:j=%4d\n",s,j); }44、求s=a+aa+aaa+…+aa…a之值,其中a是一个数字,n表达a的位数。#include<stdio.h>#include<math.h>voidmain(){ intn,a,i=1,s,sum=0; printf("输入n,a的数值:"); scanf("%d,%d",&n,&a); s=a; while(i<=n){ sum=sum+s; s=s+a*pow(10,i);i++; }printf("sum=%d\n",sum);}输出杨辉三角(规定输出10行)。#include<stdio.h>voidmain() { inta[10][10],i,j; for(i=0;i<10;i++) { for(j=0;j<=i;j++) { if(i==j||j==0) a[i][j]=1; else a[i][j]=a[i-1][j]+a[i-1][j-1]; printf("%5d",a[i][j]); if(i==j) printf("\n"); } }}46、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数自身。例如:153是一水仙花数,由于153=13+53+33。#include<stdio.h>#include<math.h>voidmain() { intx,a,b,c;//x为水仙花数 for(x=100;x<=999;x++) { a=0.01*x; b=10*(0.01*x-a); c=x-100*a-10*b; if(x==(pow(a,3)+pow(b,3)+pow(c,3))) printf("x=%5d\n",x); }}求一个3×3的整型矩阵主对角线元素之和。#include<stdio.h>voidmain() { inta[3][3],i,j,sum=0; printf("请输入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("矩阵对角线元素之和为:%d\n",sum); }#include<stdio.h>voidmain() { inta[3][3],i,j,sum1=0,sum2=0; printf("请输入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++)sum1+=a[i][i];for(j=0;j<3;j++)sum2+=a[j][j];printf("矩阵两条对角线元素之和分别为为:%d%d\n",sum1,sum2); }有一行电文,按下面规律译成密码。第i个字幕变成第(26-i+1)个字母(i=1,2…26)。非字母字符不变。规定原文输出一行,密码输出一行。#include<stdio.h>voidmain(){ inti; chara[81],b[81]; printf("输入一行字符:"); gets(a); printf("输出原文:"); puts(a); for(i=0;a[i];i++) { if(a[i]>='A'&&a[i]<='Z') b[i]=155-a[i]; elseif(a[i]>='a'&&a[i]<='z') b[i]=219-a[i]; else b[i]=a[i]; } b[i]='\0'; printf("输出密码:"); puts(b);}或#include<stdio.h>voidmain(){ inti; charstr1[100],str2[100];gets(str1);for(i=0;str1[i]!='\0';i++)if(str1[i]>=65&&str1[i]<=90)str2[i]=155-str1[i];elseif(str1[i]>=97&&str1[i]<=122)str2[i]=219-str1[i];elsestr2[i]=str1[i]; str2[i]='\0';printf("%s\n%s\n",str1,str2);}输入一个4位数字,规定输出这4个数字字符,但每两个数字之间空一个空格。比如输入1990,应输出“1990”。#include<stdio.h>voidmain(){ inti;charstr[80];printf("请输入具有四个数字的字符串:\n");scanf("%s",str);for(i=strlen(str);i>0;i--){ str[2*i]=str[i];str[2*i-1]='';}printf("\n结果是:\n%s\n",str);}50、对于给定的一个正整数,判断其是否为素数。#include<stdio.h>#include<math.h>voidmain(){inti,k,m;printf("输入m的数值:");scanf("%d",&m);k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>k)printf("\n%d是一个素数。\n",m);elseprintf("\n%d不是一个素数。\n",m);}将一个数字字符串转化为整数输出(不得调用c语言提供的将字符串转换为整数的函数)。#include<stdio.h>#include<string.h>longfun(char*p){longs=0,t;inti=0,j,n=strlen(p),k,s1;if(p[0]=='-')i++;for(j=i;j<=n-1;j++){t=p[j]-'0';s1=10;for(k=j;k<n-1;k++)t*=s1;s+=t;}if(p[0]=='-')return-s;elsereturns;}main(){chars[80];longn;printf("输入一行字符串::\n");gets(s);n=fun(s);printf("%ld\n",n);}#include<stdio.h>voidmain(){ chars[100],*p; inti,m=1,n=0; p=s; printf("请输入数字字符串:"); gets(s); if(*p=='-') { m=-1; p++; } while(*p!='\0') { n=n*10+(*p-'0'); p++; } n=m*n; printf("转换后为:%d\n",n);}52、求出一个4×5的矩阵中数值最小的元素的行号和列号。#include<stdio.h>voidmain() { inta[4][5],i,j,min,colum=0,row=0; printf("请输入4*5矩阵数据:"); for(i=0;i<4;i++) for(j=0;j<5;j++)scanf("%d",&a[i][j]);min=a[0][0];for(i=0;i<4;i++) for(j=0;j<5;j++) if(min>a[i][j]) { min=a[i][j]; row=i; colum=j; } printf("min=%d\nrow=%d\ncolum=%d\n",min,row,colum); }编写函数fun,它的功能是:实现两个字符串的比较,即实现strcmp的功能(不得调用c语言提供的求字符串比较的函数),函数返回最终的比较值。主函数里输出哪个字符串大。#include<stdio.h>intfun(chara[],charb[]){ inti=0;while((a[i]==b[i])&&(a[i]!='\0'))i++;printf("a,b字符串中比较大的为:");if(a[i]=='\0'&&b[i]=='\0')returna;elseif(a[i]>b[i]) returna; else returnb;}voidmain() {chara[100],b[100],*c;printf("输入字符串a:\n");gets(a);printf("输入字符串b:\n");gets(b);c=fun(a,b); puts(c); }54、编写一个函数voidfun(inttt[5][6],intpp[6]),tt指向一个5行6列的二维函数组,求出二维函数组每行中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中初始化。#include<stdio.h>voidfun(inttt[5][6],intpp[6]){inti,j,min;for(i=0;i<5;i++){min=tt[i][0];for(j=0;j<6;j++){ if(tt[i][j]<min) min=tt[i][j];}pp[i]=min;}}voidmain(){ intt[5][6]={{68,56,32,44,54,12},{14,56,24,47,88,58},{42,85,22,75,44,56},{45,12,3,5,78,45},{4,6,2,7,8,41}};intp[6],i,j,k;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省曲靖市麒麟区第十中学2025-2026学年初三九月摸底考试文综试题含解析
- (正式版)DB22∕T 2782-2017 《犬瘟热病毒检测 荧光定量R∕T-PCR方法》
- 高等职业技术教育汽车检测与维修技术专业人才培养方案
- 2026年新护士职业规划与专业发展路径
- 2026年疾控中心传染病应急处置技术方案
- 庸懒散浮拖问题专项整治工作实施方案旅游管理局
- 《圆锥的认识》教学
- 公司孵化室承包协议书模板
- 学生团体联合会对外联络部重组为外联部与文艺部方案模板
- 石雕施工方案案例(3篇)
- (2025)儿童支气管哮喘诊断与防治指南解读课件
- SL-T 609-2025 水利水电工程鱼道设计导则
- 纸箱行业奖惩制度
- 职工食堂垃圾管理制度
- 2026年及未来5年市场数据中国铍矿石行业市场全景评估及发展前景预测报告
- 工程项目部质量责任制度
- 2025-2026学年八年级下册语文教学计划及进度表
- 2026年内蒙古公务员录用考试《行测》题(含答案)
- 2026及未来5年中国公安行业信息安全市场运行格局及发展趋向研判报告
- 2026年南京城市职业学院单招职业适应性考试题库及一套完整答案详解
- GB/T 23786-2026速冻饺子质量通则
评论
0/150
提交评论