C语言程序设计经典例题
发布时间:2024-11-21
发布时间:2024-11-21
数组中找最大最小数及其位置 #include <stdio.h> #define N 10 void main() { int i,max,min, a[N]; printf("请输入10个整数:"); for(i=0;i<N;i++) scanf("%d",&a[i]); max=0; min=0; for(i=1;i<N;i++) { if(a[i]>a[max]) max=i; }
for(i=1;i<N;i++) { if(a[i]<a[min]) min=i; } printf("最小数=%d,在数组中的下标是:%d\n",a[min],min); printf("最大数=%d,在数组中的下标是:%d\n",a[max],max); }
冒泡法排序
#include <stdio.h> #define N 10 void main() {
int i,j,t,a[N]; printf("请输入10个整数:"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<N-1;i++) { for(j=0;j<N-i-1;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } }
for(i= 0;i<10;i++) printf("%d ",a[i]); printf("\n"); }
选择法排序
#include <stdio.h> #define N 10 void main() {
int i,j,t,a[N]; printf("请输入10个整数:"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0; i<N-1; i++) for(j=i+1; j<N; j++) if(a[i] > a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } for(i= 0;i<10;i++) printf("%d ",a[i]); printf("\n"); }
插入法排序
#include <stdio.h> #define N 10 void main(void) {
int i,j,t,k,a[N]; printf("请输入10个整数:"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=1;i<=N-1;i++) { t=a[i]; if(a[i]<a[0]) k=0; else for(j=0;j<=i-1;j++) if(a[i]>a[j])
k=j+1; for(j=i-1;j>=k;j--) a[j+1]=a[j]; a[k]=t; } for(i= 0;i<10;i++) printf("%d ",a[i]); printf("\n"); }
统计数据中不同数字个数 #include <stdio.h> void main(void) { int a[10]={0}; int i; char c; printf("请输入一个数据,以回车结束:\n"); while((c=getchar())!='\n') { if(c>='0' && c<='9') a[c-'0']++; } for(i=0;i<10;i++) if(a[i]!=0) printf("%c:%d个\n",'0'+i,a[i]); }
统计单词中个字母的次数 #include <stdio.h> void main(void) { int a[26]={0}; int i; char c; printf("请输入一串英文,以回车结束:\n"); while((c=getchar())!='\n') { if(c>='a' && c<='z') a[c-'a']++; else if(c>='A' && c<='Z') a[c-'A']++; }
for(i=0;i<26;i++) if(a[i]!=0) printf("%c:%d个\n",'A'+i,a[i]); }
找100以内的素数,并以10个一行输出 #include <stdio.h> #include <math.h> void main(void) {
int i,j,c; int a[100];
for(i=0;i<100;i++) a[i]=i+1;
a[0]=0;
for(i=0;i<sqrt(100);i++) if(a[i]!=0)
for(j=i+1;j<100;j++)
if(a[j]%a[i]==0) a[j]=0;
c=0;
for(i=0;i<100;i++) if(a[i]!=0) { printf("%5d",a[i]); c++; if(c%10==0) printf("\n"); } }
矩阵转置
#include <stdio.h> #define M 3 void main() {
int i,j,t,a[M][M]; for(i=0;i<M;i++) for(j=0;j<M;j++) scanf("%d",&a[i][j]); for(i=0;i<M;i++)
{ t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t; } for(i=0;i<M;i++) { for(j=0;j<M;j++) printf("%4d",a[i][j]); printf("\n"); } }
5行5列矩阵 #include<stdio.h> #define N 5 void main() { int i,j,a[N][N]; int s1=0,s2=0,s3=0,s4=0,min,max,row=0,col=0; printf("输入5行5列矩阵:\n"); for(i=0;i<5;i++) for(j=0;j<5;j++) scanf("%d",&a[N][N]); for(i=0;i<5;i++) for(j=0;j<5;j++) s1+=a[i][j]; printf("所有元素的和为%d\n",s1); for(i=0;i<5;i++) s2+=a[i][i]+a[4][0]+a[3][1]+a[1][3]+a[0][4]; printf("主副对角线之和为%d\n",s2); for(i=0;i<5;i++) s3+=(a[i][0]+a[i][4]); for(j=0;j<5;j++) s3+=(a[0][j]+a[4][j]); s3=s3-a[0][0]-a[0][4]-a[4][0]-a[4][4]; printf("所有靠边元素和为%d\n",s3); s4=s1-s3;
printf("所有内部元素的和为%d\n",s4); max=a[0][0]; min=a[0][0]; for(i=0;i<5;i++)
{ if(a[i][j]>max) { max=a[i][j]; row=i; col=j; } } printf("最大值为%d,行号为%d,列号为%d\n",max,row,col); for(i=0;i<5;i++) for(j=0;j<5;j++) { if(a[i][j]<min) { min=a[i][j]; row=i; col=j; } } printf("最小值为%d,行号为%d,列号为%d\n",min,row,col); }
最大行最小行交换 #include <stdio.h> int main(void) { int arr[5][5],sum[5]; int i,j; int t,max=0,min=0,p,q; printf("请输入5*5的矩阵数据:\n"); for(i=0;i<5;i++) { sum[i]=0; for (j=0;j<5;j++) { scanf("%d",&arr[i][j]); sum[i]+=arr[i][j]; } } max=sum[0]; p=0; min=sum[0];
q=0; for (i=1;i<5;i++) { if (max<sum[i]) { t=max;max=sum[i];p=i; } if (min>sum[i]) { t=min;min=sum[i];q=i; } } if (p!=q) { for (i=0;i<5;i++) { t=arr[p][i];arr[p][i]=arr[q][i];arr[q][i]=t; } } printf("交换后为:\n"); for (i=0;i<5;i++) { for (j=0;j<5;j++) { printf("%d ",arr[i][j]); } printf("\n"); } return 0; }
字符串复制
#include <stdio.h> #include<string.h> void main() { char st1[30]="My name is",str2[]="John."; puts(str1); puts(str2); strcpy(str1,str2); puts(str1); puts(str2); }
字符串 判断是否回文 #include<stdio.h> void main() { char string[80]; int i,j,n; gets(string); n=strlen(string); j=n-1; for(i=0;i<j;i++,j--) if(string[i]!=string[j])break; if(i==j) printf("Yes\n"); else printf("No\n"); }
函数 判断闰年 #include<stdio.h> int f(int x) {
if((x%4==0)&&(x%100!=0)||(x%400==0)) return 1; else return 0; }
void main() {
int a,b;
scanf("%d",&a); b=f(a); if(b)
printf("%d是闰年",a); else printf("%d不是闰年",a); }
三角形面积
#include <stdio.h> #include <math.h>
float area(float a,float b,float c) {
float s,p;
p=(a+b+c)/(2.0);
s=sqrt(p*(p-a)*(p-b)*(p-c)); return s; }
main() {
float a,b,c,s;
scanf("%f%f%f",&a,&b,&c);
printf("%f",area(a,b,c)); }
素数,孪生素数 #include<stdio.h> int f1(int n) { int i; for(i=2;i<n;i++) if(n%i==0)break; if(i==n) return 1; else return 0; }
void main() { int i,c=0; printf("-*素数为\n"); for(i=2;i<=100;i++) { if(f1(i)==1) { printf("%5d",i); c++; if(c%5==0) printf("\n"); } } printf("\n孪生素数有\n"); for(i=2;i<=98;i++) { if(f1(i)==1&&f1(i+2)==1) printf("%d,%d\n",i,i+2);
} }
函数 回文数 #include<stdio.h> #include <string.h> int main() {
char str[100]; int i,len;
printf("输入字符串:"); scanf("%s",str); len = strlen(str);
for(i=0; i<len/2; i++) {
if(str[i]!=str[len-i-1]) {
break; } }
if(i==len/2) {
printf("%s是回文\n",str); } else {
printf("%s不是回文\n",str); } }
函数 完全数 #include<stdio.h> int fun(int n) { int i,s=0; for(i=1;i<n;i++) { if(n%i==0) s=s+i; } if(s==n) return 1; else
return 0; }
void main() { int n; scanf("%d",&n); if(fun(n)) printf("%d是完全数\n",n); else printf("%d不是完全数\n",n); }
函数 水仙花数 #include<stdio.h> int f(int n) {
int a=0,m=n; while (n>0) {
a=a+(n%10)*(n%10)*(n%10); n=n/10; }
if(a==m) return 1; else return 0; }
void main() {
int n;
scanf("%d",&n); if(f(n)==1) printf("%d是水仙花数\n",n); else
printf("%d不是水仙花数\n",n); }
函数 最大公约数,最小公倍数 #include<math.h> #include<stdio.h> int fmax(int m,int n) {
int r; r=m%n;
while(r!=0) {
m=n; n=r; r=m%n; }
return n; }
int fmin(int m,int n) {
return m*n/fmax(m,n); }
main() {
int a,b;
scanf("%d,%d",&a,&b);
printf("fmax is:%d\n",fmax(a,b)); printf("fmin is:%d\n",fmin(a,b)); }
上一篇:第三章 确保工期的技术组织措施