-
C语言例题
2019-06-17 14:54:23C语言例题1.用指针交换两个或三个数的值,按大小顺序输出2.同构数3.判断n的位数,按数的正序和逆序输出4.杨辉三角5.最大公约数最小公倍数6.将数字转换成字符串输出7.n以内能被3和7同时除的个数的平方8.1到20阶乘的和...C语言例题
- 1.用指针交换两个或三个数的值,按大小顺序输出
- 2.同构数
- 3.判断n的位数,按数的正序和逆序输出
- 4.杨辉三角
- 5.最大公约数最小公倍数
- 6.将数字转换成字符串输出
- 7.n以内能被3和7同时除的个数的平方
- 8.1到20阶乘的和
- 9.n!的计算
- 10.判断其中的空格,数字,大写字母,小写字母的个数
- 判断偶数
- 11.将数组a中的的元素按相反顺序存放2
- 12.用指针的方法输出二维数组的值
- 13.编一个函数调用求不能同时被7和11整除的个数
- 14.将数组a中的的元素按相反顺序存放1
- 15.将两个字符串连接起来
- 16.素数判定
- 17.输入一个字符串,将小写换为大写
- 18.99乘法表
- 19.冒泡排序法
- 20.哥德巴赫猜想
- 21.素数
- 22.函数关系
- 23.成绩转换
- 24.三角形判断
- 25.存款
- 26.工资
- 26.火车运行时间
- 27.圆
1.用指针交换两个或三个数的值,按大小顺序输出
//三个整数a,b,c,按大小顺序的输出 #include<stdio.h> int main() { void exchange(int *q1,int *q2,int *q3); int a,b,c,*p1,*p2,*p3; printf("输入三个数:"); scanf("%d%d%d",&a,&b,&c); p1=&a; p2=&b; p3=&c; exchange(p1,p2,p3); printf("%d %d %d\n",a,b,c); return 0; } void exchange(int *q1,int *q2,int *q3) { void s(int *t1,int *t2); if(*q1<*q2) s(q1,q2); if(*q1<*q3) s(q1,q3); if(*q2<*q3) s(q2,q3); } void s(int *t1,int *t2) { int t; t=*t1;*t1=*t2;*t2=t; } //2个 #include<stdio.h> int main() { int a,b,*p1,*p2,*p; printf("输入2个数:"); scanf("%d%d",&a,&b); p1=&a; p2=&b; if(a<b) { p=p1; p1=p2; p2=p; } printf("%d %d\n",a,b); printf("%d %d\n",*p1,*p2); }
2.同构数
//同构数是比如5的平方25,其尾数与5相同 #include <stdio.h> #include <math.h> int main() { int n=0,x,m,t,g,y; scanf("%d",&x); m=x*x; t=m; do//数位数的判断 { n++; m=m/10; } while (m>0); printf("%d的平方%d是%d位数\n",x,t,n); y=(int)pow(10,n-1);//double g=t%y; if(g==x) { printf("%d是同构数\n",x); } else { printf("%d不是同构数\n",x); } return 0; }
3.判断n的位数,按数的正序和逆序输出
#include <stdio.h> int main() { int n,x1,x2,x3,i; scanf("%d",&n); if(n<9) { i=1; x1=n; printf("位数%d,n=%d,逆序 %d",i,x1,x1); } else if(n<99) { i=2; x1=n%10; x2=n/10; printf("位数%d,n=%d%d,逆序 %d%d",i,x2,x1,x1,x2); } else if(n<999) { i=3; x1=n%10; x2=n/10%10; x3=n/100; printf("位数%d,n=%d%d%d,逆序 %d%d%d",i,x3,x2,x1,x1,x2,x3); } printf("\n"); return 0; } /*#include<stdio.h> int main() { int i,n=0,m; scanf("%d",&i); m=i; do{ n++; m=m/10; } while(m>0); printf("%d的位数为%d\n",i,n); switch(n) { case 1:printf(""); case 2: case 3: return 0; }*/
4.杨辉三角
#include <stdio.h> int main() { int i,j,n,a[10][10]; scanf("%d",&n);//n控制行数 for(i=0;i<n;i++) { a[i][0]=a[i][i]=1; } for(i=0;i<n;i++) { for(j=1;j<i;j++) { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } printf("\n"); for(i=0;i<n;i++) { for(j=0;j<n-1-i;j++)printf(" ");//控制空格 for(j=0;j<=i;j++) { printf("%6d",a[i][j]);//2d=一个空格 } printf("\n"); } return 0; }
5.最大公约数最小公倍数
#include <stdio.h>//函数方法 int gcd(int x,int y);//函数调用 int icm(int x,int y); int main() { int n,m; scanf("%d%d",&n,&m); printf("最大公约数:%d\n最小公倍数:%d\n",gcd(n,m),icm(n,m)); return 0; } int gcd(int x,int y) { int s,t; if(x<y)//将最大的值存入x { t=x; x=y; y=t; } while(y!=0) { s=x%y; x=y; y=s; } return x; } int icm(int x,int y) { int k=gcd(x,y); return x*y/k;//最小公倍数=两个数相乘/两数的最大公约数 } //方法一 #include <stdio.h> int main() { int x,y; int s,t; scanf("%d%d",&x,&y); if(x<y) { t=x; x=y; y=t; } while(y!=0) { s=x%y; x=y; y=s; } printf("最大公约数=%d",x); return 0; }
6.将数字转换成字符串输出
#include <stdio.h> int convert(int n); int main() { int n; scanf("%d",&n); if(n<0) { putchar('-'); n=-n; } convert(n); printf("\n"); return 0; } int convert(int n)//函数调用 { int i; if((i=n/10)!=0) //{45/10=4,con(4),{4/10=0,con(0)结束,4%10=4,put(4)},45%10=5,put(5)} { convert(i); } putchar(n%10+'0'); return i; }
7.n以内能被3和7同时除的个数的平方
#include <stdio.h> #include <math.h> int main() { int n,i; double s,t=0; scanf("%d",&n); for(i=0;i<n;i++) { if(i%3==0&&i%7==0)//n以内能被3和7同时除 { t+=i; } } s=pow(t,2);//pow(x,y),计算x的y次方,double类型 printf("s=%5lf\n",s); return 0; }
8.1到20阶乘的和
#include <stdio.h>//1+2!+3!+4!....+20!的和 int main() { double n,s=0,t=1; for(n=1;n<=20;n++) { t*=n; s+=t; } printf("s=%lf\n",s); return 0; } /* #include <stdio.h> int main() { double fun(int n); int i; double sum=0; for(i=1;i<=20;i++) sum+=fun(i); printf("%lf\n",sum); return 0; } double fun(int n) { double f; if(n<0) { printf("无效"); } else if(n==0||n==1) { f=1; } else { f=fun(n-1)*n; } return (f); } */
9.n!的计算
//调用函数,函数的递归 #include <stdio.h> int main() { double fun(int n); int n; double sum; printf("输入n:"); scanf("%d",&n); sum=fun(n); printf("n!=%.2lf\n",sum); return 0; } double fun(int n) { double f; if(n<0) { printf("无效"); } else if(n==0||n==1) { f=1; } else { f=fun(n-1)*n; } return (f); } /*#include <stdio.h> int main() { int i,n; double sum=1; scanf("%d",&n); for(i=1;i<=n;i++) { sum=sum*i; } printf("%d!=%lf",n,sum); printf("\n"); return 0; }*/
10.判断其中的空格,数字,大写字母,小写字母的个数
//输入一段字符串,判断其中的空格,数字,大写字母,小写字母的个数 #include <stdio.h> int main() { int i,a=0,b=0,c=0,d=0; char x[10]; for(i=0;i<10;i++) { scanf("%c",&x[i]); if(x[i]==' ') { a=++a; } else if(x[i]>='a'&&x[i]<='z') { b=++b; } else if(x[i]>='A'&&x[i]<='Z') { b=++b; } else if(x[i]>='0'&&x[i]<='9') { c=++c; } else { d=++d; } } printf("空格%d个\n英文%d个\n数字%d个\n其他%d个\n",a,b,c,d); return 0; }
判断偶数
#include <stdio.h> int main() { int n; while(n){ scanf("%d",&n); if(n%2==0) { printf("是\n"); } else { printf("否\n"); } } return 0; }
11.将数组a中的的元素按相反顺序存放2
#include <stdio.h> int main() { void f(int *x,int n); int i,a[10]={1,2,3,4,5,6,7,8,9,10}; printf("The original array:\n"); for(i=0;i<10;i++) { printf("%d, ",a[i]); } printf("\n"); f(a,10); printf("The inverted array:\n"); for(i=0;i<10;i++) { printf("%d, ",a[i]); } printf("\n"); return 0; } void f(int *x,int n) { int *p,t,*i,*j,m=(n-1)/2; i=x; j=x+n-1;//9 p=x+m; for(i=x;i<=p;i++,j--) { t=*i; *i=*j; *j=t; } return; }
12.用指针的方法输出二维数组的值
//编程,用指针的方法输出二维数组的值 /*#include <stdio.h> int main() { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a[0];p<a[0]+12;p++) { if((p-a[0])%4==0) printf("\n");//p移动四次后换行 printf("%4d",*p); } printf("\n"); return 0; }*/ #include<stdio.h> int main() { int a[3][3]={1,2,3,4,5,6,7,8,9}; int *p,i,j; p=a[0]; for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%d ",*(p+i*3+j));//是二维数组还是顺序存储的特点来直接计算a[i][j]的存储位置 //*(p+i*3+j)就是a[i][j],因为p是指向首元素的元素指针,a每行有3个元素, //这样a[i][j]按行优先存储时,和a[0][0]差了这么多个元素:i*3+j } printf("\n"); } return 0; } //计算a[i][j]的在数组中的计算公式为i*m+j
13.编一个函数调用求不能同时被7和11整除的个数
/*#include <stdio.h> int main() { void count(int n); int n; scanf("%d",&n); count(n); printf("\n"); return 0; } void count(int a) { int i,j=0,k; int num=0; for(i=1;i<=n;i++) { if(i%7==0||i%11==0) { printf("%d ",i); num++; if(num%6==0) { printf("\n"); } } } }*/ //编写函数,求出1~1000之间能被7或11,但不能同时被7和11整除的数存入数组,挑用主函数讲数组输出 #include <stdio.h> int f(int a[]) { int i=0,n; for(n=1;n<=1000;n++) { if(n%7==0||n%11==0) { if(n%77!=0) { a[i]=n; i++;//i用于求出数组的大小 } } } return i;//返回i的长度 } int main() { int a[300],length,i; length=f(a);//函数的调用 for(i=0;i<length;i++) { printf("%-4d",a[i]);//将数组调用出来 if((i+1)%5==0) { printf("\n"); } } printf("\n不能同时被7和11整除的个数\n%d\n",length); }
14.将数组a中的的元素按相反顺序存放1
#include <stdio.h> int main() { void f(int *x,int n); int i,a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("The original array:\n"); for(i=0;i<10;i++) { printf("%d, ",a[i]); } printf("\n"); f(p,10); printf("The inverted array:\n"); for(p=a;p<a+10;p++) { printf("%d, ",*p); } printf("\n"); return 0; } void f(int *x,int n) { int *p,t,*i,*j,m=(n-1)/2; i=x; j=x+n-1;//9 p=x+m; for(i=x;i<=p;i++,j--) { t=*i; *i=*j; *j=t; } }
15.将两个字符串连接起来
#include <stdio.h> #include <string.h> int main() /*{ char str1[20]={"hello"}; char str2[20]={" world!"}; strcat(str1,str2); printf("%s\n",str1); return 0; }*/ { char str1[20]={"hello"}; char str2[20]={" world!"}; char str3[40]; int i=0,j=0,k; while(str1[i]!='\0') { i++; } while(str2[j]!='\0') { j++; } for(k=0;k<i;k++) { str3[k]=str1[k]; } for(k=0;k<j;k++) { str3[k+i]=str2[k]; } str3[i+j]='\0'; printf("%s",str3); return 0; }
16.素数判定
#include <stdio.h> int main() { int n,i=3; scanf("%d",&n); t=sqrt(n)+1; while(i<=t) { if(n%i==0) { break; } i=i+2; printf("") }
17.输入一个字符串,将小写换为大写
//输入一个字符串,将小写换为大写 #include <stdio.h> int main() { char ch[10]; int i; scanf("%s",ch); for(i=0;ch[i]!='\0';i++) { if('a'<=ch[i]&&ch[i]<='z') { printf("%c",ch[i]-32); } else { printf("%c",ch[i]); } } return 0; }
18.99乘法表
//*#include <stdio.h> int main() { int i,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { printf("%d*%d=%d\t",i,j,i*j); } printf("\n"); } return 0; }*/ #include <stdio.h> int main() { int i,j; for(i=1;i<=9;i++) { for(j=i;j<=9;j++) { printf("%d*%d=%d\t",i,j,i*j); } printf("\n"); } return 0; }
19.冒泡排序法
//冒泡排序法 第一个 #include<stdio.h> int main() { int a[8]={55,67,45,30,20,70,88,11}; int i,j,t; for(j=0;j<8;j++) { for(i=0;i<8-j;i++) { if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } } printf("change:"); for(i=0;i<8;i++) { printf(" %d",a[i]); } printf("\n"); } return 0; } 第二个 #include<stdio.h> int main() { int a[8]={55,67,45,30,20,70,88,11}; int i,j,t; for(j=0;j<8;j++) { for(i=0;i<8-j;i++) { if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } } } printf("change:"); for(i=0;i<8;i++) { printf(" %d",a[i]); } printf("\n"); return 0; }
第一个
第二个
20.哥德巴赫猜想
#include <stdio.h> #include <math.h> int main() { long n,p1,p2,e,i; scanf("%ld",&n); for(p1=3;p1<=n/2;p1+=2) { e=(long)sqrt((double)p1); for(i=2;i<=e;i++) { if(p1%i==0) break; } if(i>e) { p2=n-p1; } else { continue; } e=(long)sqrt((double)p2); for(i=2;i<=e;i++) { if(p2%i==0) break; } if(i>e) { printf("%ld=%ld+%ld\n",n,p1,p2); break; } } if(p1>n/2) printf("偶数%ld不符合哥德巴赫猜想",n); return 0; }
21.素数
#include <stdio.h> #include <math.h> int main() { int n,k,i,m=0; for(n=1;n<=200;n++) { k=sqrt(n); for(i=2;i<=k;i++) { if(n%i==0) break; } if(i>k) { printf(" %d",n); m+=1; } if(m%10==0) printf("\n"); } printf("\n"); return 0; }
22.函数关系
#include <stdio.h> int main() { float x,Y; scanf("%f",&x); if(x<0) Y=0; else if(x<10) Y=x; else if(x<=20) Y=10; else Y=-0.5*x+20; printf("%.2f",Y); return 0; }
23.成绩转换
//大于等于90为A #include<stdio.h> int main() { int grade; char result; scanf("%d",&grade); switch(grade/10) { case 10: case 9:result='A';break; case 8:result='B';break; case 7:result='C';break; case 6:result='D';break; case 5: case 4: case 3: case 2: case 1:result='E';break; default:printf("enter date error!"); } printf("%c\n",result); return 0; } //.>=85为A #include<stdio.h> int main() { int grade; char result; scanf("%d",&grade); switch((grade+5)/10) { case 10: case 9:result='A';break; case 8:result='B';break; case 7:result='C';break; case 6:result='D';break; default:result='E'; } printf("%c\n",result); return 0; }
24.三角形判断
#include <stdio.h> #include <math.h> int main() { double x1,x2,x3,y1,y2,y3; double d1,d2,d3; double s,area,perimeter; printf("输入坐标:"); scanf("%lf,%lf,%lf,%lf,%lf,%lf",&x1,&y1,&x2,&y2,&x3,&y3); d1=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); d2=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)); d3=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); if(d1+d2>d3&&d1+d3>d2&&d2+d3>d1) { s=(d1+d2+d3)/2; area=sqrt((s-d1)*(s-d2)*(s-d3)*s); perimeter=2*s; printf("组成三角形的周长=%.2lf,面积=%.2lf\n",perimeter,area); } else printf("这3个点不能组成三角形\n"); return 0; }
25.存款
#include <stdio.h> #include <math.h> int main() { float n,deposit; float rate=0.0295; float capital=100000; scanf("%f",&n); deposit=capital*pow(1+rate,n); printf("deposit=%f\n",&deposit); return 0; }
26.工资
#include <stdio.h> int main() { float time,year,salary; scanf("%f,%f",&time,&year); if(year<5) { if(time<=40) salary=30*time; else salary=40*30+(time-40)*(1.5*30); } else { if(time<=40) salary=50*time; else salary=40*50+(time-40)*(1.5*50); } printf("salary=%.1f",salary); return 0; }
26.火车运行时间
#include <stdio.h> int main() { int depart,arrive,h,m1,m2,am,dm; scanf("%d%d",&depart,&arrive); h=arrive/100-depart/100; dm=depart%100; am=arrive%100; if(am>=dm) { m1=am-dm; printf("traval time is %d hour(s) %d minute(s)",h,m1); } if(am<dm) { m2=am+60-dm; h=h-1; printf("traval time is %d hour(s) %d minute(s)",h,m2); } return 0; }
27.圆
#include <stdio.h> #define PI 3.1415926 int main() { double r,pertimrter,area; scanf("%lf",&r); pertimrter=2*PI*r; area=PI*r*r; printf("pertimrter=%lf\tarea=%lf\t",pertimrter,area); }
-
c语言 例题
2013-01-05 18:32:34C程序设计例题源码(谭浩强第3版)
收藏数
3,990
精华内容
1,596