C语言
Luke@
这个作者很懒,什么都没留下…
展开
-
插入排序
#include<stdio.h>#define N 10void InsertionSort(int arr[])//插入排序 { int i, j, tmp; for (i = 1; i < N; i++) { if (arr[i] < arr[i-1]) { tmp =...原创 2019-10-09 14:50:06 · 66 阅读 · 0 评论 -
快速排序
#include<stdio.h>void QuickSort(int *arr, int low, int high){ if (low < high) { int i = low; int j = high; int k = arr[low]; while (i < j) ...原创 2019-10-09 14:16:20 · 59 阅读 · 0 评论 -
选择排序
#include<stdio.h>#define N 10 int main(){ int i,j,k,a[N]={2,9,8,0,7,1,31,10,82,78}; int temp; for(i=0;i<N-1;i++) { k=i; for(j=i+1;j<N;j++) { if(a[j]<a[k]) { k=j;...原创 2019-10-09 14:15:10 · 84 阅读 · 0 评论 -
冒泡排序
#include<stdio.h>#define N 10 int main(){ int i,j,a[N]={2,9,8,0,7,1,3,100,67,11}; int temp; for(i=0;i<N-1;i++){ for(j=0;j<N-1-i;j++){ if(a[j+1]<a[j]){ temp=a[j]; a[j]...原创 2019-10-08 21:45:39 · 65 阅读 · 0 评论 -
数组:输入十个数,将这10个数升序输出,奇数在前,偶数在后。
#include<stdio.h>int main(){ int i,j=0,k=0,ii,temp; int a[10],b[10],c[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) { if(a[i]%2!=0) { b[j++]=a[i]; }...原创 2019-10-13 22:25:51 · 8543 阅读 · 0 评论 -
数组:向升序的数组里面插入一个数使得数组仍然有序。
#include<stdio.h>int main(){ int i,x,num=5,flap=0; int a[10]={1,2,4,6,7}; scanf("%d",&x); for(i=0;i<num;i++) { if(a[i]>x){ flap=i; break; } } for(i=num;i>flap;i-...原创 2019-10-13 22:25:17 · 6464 阅读 · 0 评论 -
数组:输入10个数,将最大数与最小数交换后输出整个数组。
#include<stdio.h>int main(){ int i,temp=0,max,min,n=0,m=0;//注意要赋初值 int a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); max=a[0]; min=a[0]; for(i=0;i<10;i++){ if(a[i]>max){...原创 2019-10-13 22:23:37 · 3479 阅读 · 0 评论 -
对数组A中的N个整数从小到大进行连续编号,输出各个元素的编号,不改变数组元素的顺序,相同的整数要具有相同的编号。 例如:数组A=(5,3,4,7,3,5,6),则输出为(3,1,2,5,1,3,4)。
#include<iostream>#include<algorithm>using namespace std;struct Data{ int num,ra,ind;}d[10];bool cmpn(Data a,Data b){ return a.num<b.num;}bool cmpi(Data a,Data b){ return a.in...原创 2019-10-11 16:08:04 · 11292 阅读 · 2 评论 -
数组:已知数组a[2][3]={{1,2,3},{4,5,6}},将其行列互换,存到另一个数组b中。
#include<stdio.h>int main(){ int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2]={0}; int i,j; for(i=0;i<3;i++){ for(j=0;j<2;j++){ b[i][j]=a[j][i]; } } for(i=0;i<3;i++){ for(j=0...原创 2019-10-11 16:02:45 · 3745 阅读 · 0 评论 -
数组:找出二维数组中最大值所在的行中的最小值的数值。
#include<stdio.h>int main(){ int i,j,k,h=0; int n,m,max,min; int a[3][3]={{1,2,8},{4,5,6},{7,8,9}}; max=a[0][0]; for(i=0;i<3;i++) { for(j=0;j<3;j++) { if(a[i][j]>max){...原创 2019-10-10 14:01:45 · 1202 阅读 · 0 评论 -
数组:找出二维数组中既是行中的最大值又是列中的最小值的数值。
#include<stdio.h>int main(){ int i,j,k; int n,m,max,min; int a[3][3]={{1,2,10},{4,5,6},{7,8,9}}; for(i=0;i<3;i++) { max=a[i][0]; for(j=0;j<3;j++) { if(a[i][j]>max){ ...原创 2019-10-10 14:01:14 · 1189 阅读 · 0 评论 -
数组:输入n(n>=2)个整数,找出从小到大的第i个数。
#include<stdio.h>int main(){ int n,i,j,temp,m; int a[10]; printf("输入n个整数,输出第i小的数\n"); scanf("%d %d",&n,&m); printf("请依次输入%d个数\n",n); for(i=0;i<n;i++) { scanf("%d",&a[i]...原创 2019-10-07 18:04:58 · 606 阅读 · 0 评论 -
数组:编写一个函数delet(char s[],char c)。函数功能:删除字符数组s中出现的与变量c相同的字符。
#include<stdio.h>#include<string.h>void delet(char s[],char c){ int i=0,j=0; char a[10]; while(s[i]!='\0') { if(s[i]!=c) { a[j++]=s[i]; } i++; } a[j]='\0'; strcpy(s,a)...原创 2019-10-07 17:36:39 · 3809 阅读 · 0 评论 -
字符串:实现 void insert(char *s, char *t, int pos)。 将字符串 t 插入到字符串 s 中,插入位置为 pos。
#include <stdio.h>/** * 函数 void insert(char *s, char *t, int pos) 将字符串 t 插入到字符串 s 中,插入位置为 pos。请用 C语言实现该函数。假设分配给字符串 s 的空间足够让字符串 t 插入。(说明:不得使用任何库函数。)**///第一种先把s的pos以后的字符串链接到t上,然后在将t插入到s的pos位置...原创 2019-10-17 19:44:14 · 8364 阅读 · 0 评论 -
字符串:设计在顺序存储结构上实现求子串算法。
void substring(char s[ ], long start, long count, char t[ ]){ long i,j,length=strlen(s); if (start<1 || start>length) printf("The copy position is wrong"); else if (start+count-1>lengt...原创 2019-10-16 19:30:46 · 3287 阅读 · 0 评论 -
字符串:实现char *subStr(char *s,int n,int len)。
#include<stdio.h>//char p[20];//设置为全局变量 char *subStr(char *s,int n,int len){ static char p[20];//或者设置为静态变量 int i,j=0; while(n--){ s++;//确定字符串的首位置 } for(i=n;i<n+len;i++){ p[j++]...原创 2019-10-15 19:17:12 · 1021 阅读 · 0 评论 -
字符串:实现int strLen(char str[])。任意输入一个字符串,调用该函数可以计算输入字符串的实际长度。
#include<stdio.h>#define N 10void strCat(char *p,char *q){ while(*p!='\0') { p++; } while(*q!='\0'){ *p=*q; p++; q++; } *p='\0';}int main(){ char p[20],q[20]; gets(p); get...原创 2019-10-15 19:16:12 · 1521 阅读 · 2 评论 -
字符串:实现void strCat(char *p,char *q)。
#include<stdio.h>#define N 10void strCat(char *p,char *q){ while(*p!='\0') { p++; } while(*q!='\0'){ *p=*q; p++; q++; } *p='\0';}int main(){ char p[20],q[20]; gets(p); get...原创 2019-10-13 22:46:12 · 725 阅读 · 0 评论 -
字符串:实现void strlshif(char *s,int n)。即向左移n个字符,移走的放到末尾。
#include<stdio.h>#include<string.h>void strlshif(char *s,int n){ int i; char ch; int len=strlen(s); for(i=0;i<n;i++){ ch=s[0]; strncpy(s,s+1,len-1);//从第二个字符开始的len-1个字符赋值给s数组 ...原创 2019-10-13 22:45:22 · 582 阅读 · 0 评论 -
字符串:实现char *Delete(char *s)。删除字符串中的数字字符。
#include<stdio.h>#include<string.h>char *Delete(char *s){ static char a[20]; int i=0; while(*s!='\0'){ if(*s>='0'&&*s<='9'){ s++; }else{ a[i++]=*s; s++; ...原创 2019-10-13 22:44:53 · 2047 阅读 · 0 评论 -
字符串:实现int Count(char *s,char *sub)。统计第二个字符串在第一个字符串里面出现的次数。
#include<stdio.h>#include<string.h>int Count(char *s,char *sub){ int len1,len2,i=0; int count=0; len1=strlen(s); len2=strlen(sub); while(i<=len1-len2){ if(strncmp(s+i,sub,len2...原创 2019-10-13 22:44:16 · 575 阅读 · 0 评论 -
字符串:实现insert(s1,s2,ch)。将字符串s1中的指定字符ch的位置处插入字符串s2。
#include<stdio.h>void insert(char a[],char b[],char ch){ char *p=a,*q; while(*p!=ch) {//确定字符ch的位置 p++; } while(*b!='\0') { q=p; while(*q!='\0') { //确定a[]的最后的位置 q++; } w...原创 2019-10-13 22:39:10 · 3391 阅读 · 2 评论 -
字符串:实现void strCpy(char dstStr[], char srcStr[])。
#include<stdio.h>#include<string.h>int main(){ int a[26]={0}; int i; char s[100]; gets(s); for(i=0;i<strlen(s);i++){ a[s[i]-'a']++; } for(i=0;i<26;i++) { if(a[i]!=0){...原创 2019-10-11 16:09:14 · 1362 阅读 · 0 评论 -
字符串:求str1在str2中首次出现的位置。
#include<stdio.h>#include<string.h>int StrLoc(char s1[],char s2[]){ int len1,len2,i; len1=strlen(s1); len2=strlen(s2); if(len1>len2) { return -1; } for(i=0;i<=len2-len1;i...原创 2019-10-10 14:21:03 · 1339 阅读 · 0 评论 -
字符串:用指针判断一个字符串是否为回文串。
#include<stdio.h>#include<string.h>int huiWen(char *p){ char *s,*e; int len=strlen(p); s=p;//地址赋值 e=p+len-1; while(*s==*e&&s<e) { s++;//地址移动 e--; } if(s<e){...原创 2019-10-10 14:12:56 · 12339 阅读 · 4 评论 -
字符串:利用指针实现字符串反转。
#include<stdio.h>#include<string.h>void fun(char *a){ char *p,*q; char t; p=a; q=a+strlen(a)-1; while(p<q) { t=*p; *p=*q; *q=t; p++; q--; }}int main(){ char a[10...原创 2019-10-10 14:08:07 · 1465 阅读 · 2 评论 -
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.找出1000以内的所有完数。
#include<stdio.h>void main(){ static int k[10]; int i,j,n,s; for(j=2;j<1000;j++) { n=-1; s=j; for(i=1;i { if((j%i)==0) { n++; s=s-i; k[n]=i; }...原创 2019-10-24 13:41:27 · 280 阅读 · 0 评论 -
计算1-1/2+1/3-1/4+…+1/99-1/100+…,直到最后一项的绝对值小于10-4为止。
#include<stdio.h>main(){ int i; float sum,sign; i=1; sum=0; sign=1.0; while((1.0/i)>=1e-4) { sum += sign / i ; i++; sign = - sign; } p...原创 2019-10-24 12:52:57 · 16435 阅读 · 10 评论 -
输入某年某月某日,判断这一天是这一年的第几天?
#include <stdio.h> int main(){ int day,month,year,sum,leap; printf("\nplease input year,month,day\n"); scanf("%d,%d,%d",year,month,day); switch(month)/*先计算某月以前月份的总天数*/ { case 1:sum=0;br...原创 2019-10-19 15:37:14 · 643 阅读 · 1 评论 -
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, 重复执行第一步。如果n不能被k整除,则用k+1作为k的值,重复执行第一步。#include<stdio.h>void main(...原创 2019-10-16 19:48:43 · 1630 阅读 · 0 评论 -
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
#inlcude<stdio.h>void main(){ long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给...原创 2019-10-16 19:46:19 · 256 阅读 · 0 评论 -
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#include "math.h"#include <stdio.h>void main(){ long int i,x,y,z; for (i=1;i<100000;i++) { x=sqrt(i+100); /*x为加上100后开方后的结果*/ y=sqrt(i+268); /*y为再加上168后开方后的结果*/ if(x*x==i...原创 2019-10-16 19:44:25 · 242 阅读 · 0 评论 -
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。void main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=...原创 2019-10-16 19:41:53 · 186 阅读 · 0 评论 -
给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69为‘D’,60分以下为‘E’。
#include <stdio.h>int main(){ int score; printf("Please enter score:"); scanf("%d",&score); if(score<0||score>100) printf("Input error!\n"); else { mark=score/...原创 2019-10-15 19:34:50 · 4392 阅读 · 0 评论 -
输入一行字符,分别统计求出其中英文字母、空格、数字和其他字符的个数并输出结果。
#include<stdio.h>int main(){ char str[81]; int i ; int letter,space ,num ,other ; char c; printf ("Please enter a string : "); gets(str); letter=space=num=other=0; ...原创 2019-10-15 19:20:11 · 3688 阅读 · 1 评论 -
用结构体实现输出最小成绩的学生的学号和成绩。
#include<stdio.h>#define N 2struct stuMes{ char sno[20]; double score;}a[N];struct stuMes minScore(struct stuMes *a){ int i,k; int min=100; struct stuMes b; for(i=0;i<N;i++){ if(...原创 2019-10-15 19:18:39 · 514 阅读 · 0 评论 -
口袋有5种颜色的球,每次摸3种,求共多少种摸法以及每种的颜色。
#include<stdio.h>int main(){ char a[5][10]={"red","yellow","blue","white","block"}; int i,j,k,m=0; for(i=0;i<5;i++){ for(j=i+1;j<5;j++){ for(k=j+1;k<5;k++){ m++; print...原创 2019-10-15 19:17:55 · 452 阅读 · 0 评论 -
输入一个不超过10000的正整数,以相反的顺序输出该数。例如输入1234 ,输出4321。
#include<stdio.h>int main(){ int n; scanf("%d",&n); do{ printf("%d",n%10); n=n/10; }while(n); return 0;}原创 2019-10-13 22:28:54 · 5314 阅读 · 0 评论 -
输入一个年份和月份,打印出该月份有多少天,考虑闰年。(用switch实现)
#include<stdio.h>int main(){ int y,m; int day; scanf("%d%d",&y,&m); switch(m){ case 1:case 3:case 5:case 7:case 8:case 10:case 12: day=31;break; case 4:case 6:case 9:case 11:da...原创 2019-10-13 22:26:33 · 8881 阅读 · 0 评论 -
将整数转换为字符串。
#include<stdio.h>#include<string.h>void fun(int n){ char s[10]; char i=0,j; char *p,*q,t; while(n){ s[i++]=n%10+'0'; n/=10; } s[i]='\0'; p=s; q=s+strlen(s)-1; while(p<q)...原创 2019-10-10 13:58:33 · 158 阅读 · 0 评论