练习
质因数分解
# include <stdio.h> main() { int n,i; scanf("%d",&n); printf("%d=",n) ; for(i=2;i<=n;i++) { while(n!=i) { if(n%i==0) { printf("%d*",i); n=n/i; } else { break; } } } printf("%d",i); return 0; }
在排好序的数组中插入新的数字
# include <stdio.h> main() { int i,j,x; int end,temp1,temp2; int a[11]={10,20,30,40,50,60,70,80,90,100}; scanf("%d",&x); if(x>a[9]) a[10]=x; else { for(i=0;i<10;i++) { if(a[i]>x) { temp1=a[i]; a[i]=x; for(j=i+1;j<11;j++) { temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } for(i=0;i<11;i++) { printf("%d ",a[i]); } return 0; }
字符串大小写转换
# include <stdio.h> main() { char str[81]; char c,i; gets(str); for(i=0;(c=str[i])!='\0';i++) { if(c>='a'&&c<='z') str[i]=c-32; else str[i]=c+32; } puts(str); return 0; }
#判断素数
# include <stdio.h> main() { int n,i,m; m=1; scanf("%d",&n); if(n==1) { printf("NO"); } if(n==12) { printf("YES"); } if(n>2) { for(i=2;i<n;i++) { if(n%i==0) { m=0; break; } } if(m) printf("YES"); else printf("NO99"); } return 0;
2-100以内素数
# include <stdio.h> main() { int i,j,k; for(i=2;i<=100;i++) { k=1; for(j=2;j<i;j++) { if(i%j==0) { k=0; break; } } if(k) { printf("%d ",i) ; } } return 0; }
筛选法求素数
# include <stdio.h> # include <math.h> main() { int i,j,n; int a[101]; for(i=1;i<=100;i++) { a[i]=i; } a[1]=0; for(i=2;i<sqrt(100);i++) { for(j=i+1;j<=100;j++) { if(a[i]!=0&&a[j]!=0) { if(a[j]%a[i]==0) a[j]=0; } } } for(i=2,n=0;i<=100;i++) { if(a[i]!=0) { printf("%d ",i) ; n++; } if(n==5) { printf("\n"); n=0; } } return 0; }
输入x,输出y
# include <stdio.h> # include <math.h> main() { int x,y; scanf("%d",&x) ; if(x<-2) { y=x*x-sin(x); } else { if(x>=-2&&x<=2) { y=(pow(2,x))+x; } else { y=sqrt(x*x+x+1); } } printf("x=%d,y=%d",x,y); return 0; }
最大值最小值
# include <stdio.h> # define M 10 main() { int i,j,k,a[M]; int max,maxi; for(i=0;i<10;i++) { scanf("%d",&a[i]); } max=a[0],maxi=0; for(i=0;i<10;i++) { if(a[i]>max) { max=a[i]; maxi=i; } } printf("最大值为%d,最大值的下标为%d",max,maxi); return 0; }
最小值
# include <stdio.h> # define M 10 main() { int i,j,k,a[M]; int min,mini; for(i=0;i<10;i++) { scanf("%d",&a[i]); } min=a[0],mini=0; for(i=0;i<10;i++) { if(a[i]<min) { min=a[i]; mini=i; } } printf("最小值为%d,最小值的下标为%d",min,mini); return 0; }
对角线之和
# include <stdio.h> main() { int i,j; int a[3][3]; int sum=0; for(i=0;i<3;i++) { for(j=0;j<3;j++) { scanf("%d",&a[i][j]); } } for(i=0;i<3;i++) { for(j=0;j<3;j++) { if(i==j||(i+j)==2) { sum=sum+a[i][j]; } } } printf("%d",sum); return 0; }
主对角线之和
# include <stdio.h>
main()
{
int i,j;
int a[3][3];
int sum=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++)
{
sum=sum+a[i][i];
}
printf("%d",sum);
return 0;
}
副对角线之和
# include <stdio.h>
main()
{
int i,j;
int a[3][3];
int sum=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(i+j==2)
sum=sum+a[i][j];
}
}
printf("%d",sum);
return 0;
}
冒泡排序
# include <stdio.h> main() { int i,j,t; int a[10]; for(i=0;i<10;i++) { scanf("%d",&a[i]); } 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; } } } for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0; }
判断三角形
#include<stdio.h> int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a+b<=c||a+c<=b||b+c<=a) { printf("不能构成三角形"); } else if (a==b||a==c||b==c) { if(a==b&&b==c) { printf("是等边三角形"); } else { printf("是等腰三角形"); } } else if (a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a) { printf("是直角三角形"); } else { printf("是一般三角形"); } return 0; }
统计单词个数
# include <stdio.h> main() { int num,word,i; num=0;word=0; char str[81]; char c; gets(str); for(i=0;(c=str[i])!='\0';i++) { if(c==' ') word=0; else if(word==0) { word=1; num++; } } printf("一共有%d个单词",num); return 0; }
x的n次幂
# include <stdio.h> main() { int x,n,i,power; scanf("%d,%d",&x,&n); power=1; for(i=1;i<=n;i++) { power=power*x; } printf("%d\n",power); return 0; }
统计大写字母,小写字母,数字,空格,其他个数
# include <stdio.h> main() { char c; int aleter=0,Aleter=0,number=0,space=0,other=0; while((c=getchar())!='\n') { if(c>='a'&&c<='z') aleter++; else if(c>='A'&&c<='Z') Aleter++; else if(c>='0'&&c<='9') number++; else if(c==' ') space++; else other++; } printf("小写字母=%d,大写字母=%d,数字=%d,空格=%d,其他=%d",aleter,Aleter,number,space,other) ; return 0; }
对称数
# include <stdio.h> main() { int i,j,k; for(i=1;i<10;i++) { for(j=0;j<10;j++) { for(k=0;k<10;k++) { if(k==i) printf("%d%d%d ",i,j,k); } } } return 0; }
最大公约数,最小公倍数
# include <stdio.h> main() { int x,y,i,j; scanf("%d %d",&x,&y); if(x>y) i=y; else i=x; while(x%i!=0||y%i!=0) { i--; } printf("最大公约数=%d",i); while(j%x!=0||j%y!=0) { j++; } printf("最小公倍数=%d",j); return 0; }
最大十个素数求和:
# include <stdio.h> # include <math.h> main() { int n,i,j,f; int sum,num; sum=0,num=0; printf("请输入一个数值:"); scanf("%d",&n); for(i=n,num=0;i>=2,num<=10;i--) { f=1; for(j=2;j<=sqrt(n);j++) { if(i%j==0) { f=0; break; } } if(f==1) { sum=sum+i; num++; printf("%d ",i); } } printf("\n"); printf("输出小于n的最大十个素数之和:\n"); printf("%d\n",sum); return 0; }
字符串长度
# include <stdio.h> main() { int i,num; char str[81]; gets(str); num=0; for(i=0;str[i]!='\0';i++) { num++; } printf("%d",num);
递归调用求阶乘
# include "stdafx.h" # include <stdio.h> int f(int n) { if(n==1||n==2) return n; else return n*f(n-1); } int main(int argc, char** argv) { int n,sum; scanf("%d",&n); sum=f(n); printf("%d\n",sum); return 0; }
比较大小函数
#include "stdafx.h" int max2(int a,int b) { if(a>b) return a; else return b; } int max4(int a,int b,int c,int d) { int max2(int,int); int m; m=max2(a,b); m=max2(m,c); m=max2(m,d); return m; } int main(int argc, char* argv[]) { int a,b,c,d; int max; scanf("%d%d%d%d",&a,&b,&c,&d); max=max4(a,b,c,d); printf("max=%d\n",max); return 0; }
# include <stdio.h> main() { void sort(int a[],int n); int i,j; int a[10]; for(i=0;i<10;i++) { scanf("%d",&a[i]); } sort(a,10); for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0; } void sort(int a[],int n) { int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(a[j]<a[k]) { k=j; t=a[k]; a[k]=a[i]; a[i]=t; } } } }