C语言汇总

  • 计算e的绝对值
  • 计算pi的值
  • 计算sinx
  • 求一元二次方程的根
  • 随机数种子例题
  • 随机猜数游戏
  • 静态变量的应用
  • srand(time(NULL))
  • 数组入门
  • 指针入门
  • 指针与一维数组的关系
  • 数组输出一年各个月份的天数
  • 运用数组计算某班学生的平均分
  • 学生成绩管理1
  • 学生成绩管理2
  • 学生成绩管理系统3
  • 输入学生成绩,输出学生人数,并将成绩排序,并将成绩打印在屏幕上
  • 选择法将成绩排序
  • 学号,成绩排名
  • 斐波那契数列(fibonacci)
  • 打印乘法表
  • 成绩排序,输出最大值,以及学生人数
  • 删掉一个字符串中的空格
  • 矩阵相乘阶公式
  • 判断是否是闰年
  • 二维数组的应用
  • 指针与二维数组
  • 二维动态数组
  • 字符串与二维数组2
  • 求矩阵对角线元素之和
  • 字符串连接函数(返回连接后字符串的首地址)
  • 国家名排序(选择排序法)
  • 指向结构体类型的指针
  • 计算结果存入文件
  • 快速傅里叶变换
  • 折半查找
  • 查找不及格和低于平均分的学生成绩
  • SWITCH结构
  • 指针交换两个数字的值

计算e的绝对值

#include<stdio.h>
#include<math.h>
main()
{int n,count;scanf("%d,%d",&n,&count);printf("please input n,count\n");double e=1.0, term=1.0;do{term=term/n;e=e+term;n++;count++;}while (fabs(term)>=1e-5);printf("e=%f,count=%d\n",e,count);
}

计算pi的值

#include<stdio.h>
#include<math.h>
main()
{double pi,sum=0,term,sign=1.0;int count=0,n=1;do{term=sign/n;sum=sum+term;count++; sign=-sign;n=n+2;}while(fabs(term)>=1e-4);//判断累加项 是否满足循环终止条件// pi=sum*4;printf("pi=%f\n,count=%d\n",pi,count);
}

计算sinx

#include<stdio.h>
#include<math.h>
main()
{int n, count=1;n=1;float x, sign;sign=-1.0;double sum,term;printf("please  input x:\n");scanf("%f",&x);sum=x,term=x; do{term=term*sign*x*x/((n+2)*(n+1));sum=sum+term;n+=2;count++;}while(fabs(term)>=1e-5);printf("sinx=%f\n,count=%d\n",sum,count);
}

求一元二次方程的根

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define EPS 1e-6
main()
{float a,b,c,disc,p,q;printf("please enter the confficients a,b,c;"); scanf("%f,%f,%f",&a,&b,&c);if(fabs(a)<=EPS){printf("IT is not a quadratic equation !\n ");exit(0);} disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(fabs(disc))/(2*a);if(fabs(disc)<=EPS){printf("x1=x2=.2%f\n",p);}else{printf("x1=%.2f+%.2fi,",p,q);printf("x2=%.2f-%.2fi\n",p,q);}}

随机数种子例题

#include<stdio.h>
#include<stdlib.h>
main()
{int magic;int guess;int counter=0;unsigned int seed;printf("pless input seed:");scanf("%u0",&seed);srand(seed);magic=rand() % 100+1;do{printf("please guess a magic number:");scanf("%d",&guess);counter++;if(guess>magic)printf("wrong! too big!\n");else if(guess<magic)printf("wrong! too small\n");elseprintf("right!\n");}while(guess!=magic);printf("counter=%d",counter);
}

随机猜数游戏

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{int magic;int guess;int counter=0;int ret;char reply;srand(time(NULL));do{counter=0;magic=rand()%100 +1;do{printf("please input a maggic number:");ret=scanf("%d",&guess);while(ret != 1){printf("recent char: %c\n", getchar());while (getchar()!='\n')printf("pleaase input  a magic number:"); ret=scanf("%d",&guess);}counter++;if(guess>magic)printf("wrong! too big!\n");else if(guess<magic)printf("wrong! too small!");elseprintf("RIGHT!"); } while(guess!=magic&&counter<10);printf("counter=%d",counter);printf("do you want to continue(Y/N)?");scanf("%c",&reply);} while(reply=='Y'||reply=='N');
}

静态变量的应用

#include<stdio.h>
long func(int n);
main()
{int i,n;printf("input n:");scanf("%d",&n);for(i=1;i<=n;i++){printf("%d!=%ld\n",i,func(i));}return 0;} long func(int n){static long p=1;p=p*n;return p;}

srand(time(NULL))

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{int magic;int guess;int counter=0;unsigned int seed;srand(time(NULL));magic=rand() % 100+1;do{printf("please guess a magic number:");scanf("%d",&guess);counter++;if(guess>magic)printf("wrong! too big!\n");else if(guess<magic)printf("wrong! too small\n");elseprintf("right!\n");}while(guess!=magic&&counter<10);printf("counter=%d",counter);
}

数组入门

#include<stdio.h>
#define size 5
int main()
{int score[size];int sum;int i;printf("input the score of five stduents:\n");for(i=0;i<5;i++){scanf("%d",&score[i]);sum=sum+score[i];} printf("the avrage score is %f\n",sum/5.0);return 0;
}

指针入门

#include<stdio.h>
main()
{int a=0,b=1;char c='A';printf("a is %d,&a is %p\n",a,&a);printf("b is %d,&b is %p\n",b,&b);printf("c is %c,&c is %p\n",c&c);return 0;
}#include<stdio.h>
int main()
{int a=0,b=1;char c='a';//定义指针变量是需要先对其初始化int *pa,*pb;char *pc; pa=&a,pb=&b;pc=&c;printf("a is %d,&a is %p,pa is %p,&pa is%p\n",a,&a,pa,&pa);printf("b is %d,&b is %p,pb is %p,&pc is%p\n",b,&b,pb,&pb);printf("c is %c,&c is %p,pc is %p,&pc is%p\n",c,&c,pc,&pc); return 0;
}

指针与一维数组的关系

#include<stdio.h>
int main()
{int a[5],i;printf("input five numbers");for(i=0;i<5;i++){scanf("%d",&a[i]);//    scanf("%d",a+i);}for(i=0;i<5;i++){//printf("%4d",a[i]);printf("%4d",(a+i) );}printf("\n");return 0;
}

数组输出一年各个月份的天数

#include<stdio.h>
#define months 12
int main ()
{int days[2][months] = {{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};int year,month;do{printf("input year,month:");scanf("%d,%d",&year,&month);}while(month<1 || month>12);if (((year%4 == 0)&&(year%100 != 0))||(year%400 == 0))printf("the nmber of days is %d\n",days[1][month-1]);elseprintf("the nmber of days is %d\n",days[0][month-1]);return 0;
}

运用数组计算某班学生的平均分

//https://blog.csdn.net/u011947630/article/details/81513075#commentBox
//https://blog.csdn.net/yga_airspace/article/details/86688278
#include "stdio.h"
#include "math.h"
#include "kfft.c"#define PI 3.1415926535main()
{float Qs02 = 0.06;float afaem = 1.0/137.0;float ec =18.9, e = sqrt(4*3.14*afaem);float QCD = 0.241;float gama = 1.0;int k=0;double i,j;double pr[1000],pi[1000],fr[1000],fi[10000],t[1000];double max=6.28;for (i=0.01; i<=max; i=i+0.01)  //生成输入信号{t[k] = i*0.001;//pr[k]=exp(-(pow((i*i*Qs02),gama)/4.0)*log(1.0/( i*QCD) + ec*e));pr[k]=sin(i);printf("pr[%d]=%lf\n",k,pr[k]);k++;}kfft(pr,pi,k-1,5,fr,fi);  //调用FFT函数k=0;for (i=0.001; i<10; i=i+0.01){printf("%lf   %lf\n",i,pr[k]); //输出结果k++;}
}

学生成绩管理1

#include<stdio.h>
#define N 40
int readscore(int score[]);
void datasort(int score[],int n);
void printscore(int score[],int n);
int main()
{int score[N],n;n=readscore(score);     //调用函数readscore ()输入成绩,返回学生人数!printf("total stduents are %d\n",n);datasort(score,n);    //调用函数 datasort()进行成绩排序! printf("scored scores:");printscore(score,n);  //调用函数 printscore()输出成绩排序结果! return 0;//函数功能:输入学生某门课的成绩,当输入负值时,结束输入并返回学生人数!
int readscore(int score[])
{ int i= -1;                //i初始化为-1,循环体内增1可保证数组下标从1开始!do{i++;printf("input score:");scanf("%d",&score[i]);}while(score[i]>=0&&i<8);return i;
}//函数功能:按交换法将数组score的元素值从高到低排序!
void datasort(int score[],int n)
{int i,j,temp;for(i=0;i < n-1;i++){for(j=i+1;j<n;j++){if(score[j]>score[i]){temp=score[j];score[j]=score[i];score[i]=temp;}}}} //函数功能:打印学生成绩!void printscore(int score[],int n){int i;for(i=0;i<n;i++){printf("%4d",score[i]);}printf("\n");
} 

学生成绩管理2

        //第八章数组综合运用
/*编程计算每个学生英语,数学,物理的总分和三科成绩的平均分。
并打印出相应的学号以及没门科目的总分和平均分*/
#include<stdio.h>
#define stud_N 40           //最多学生的人数
#define course_N 3           //考试科目数
void readscore(int score[][course_N],long num[],int n);
void averforstud(int score[][course_N],int sum[],float aver[],int n);
void averforcouse(int score[][course_N],int sum[],float aver[],int n);
void print(int score[][course_N],long num[],int sums[],float avers[],int sumc[],float averc[],int n);
int main()
{int score[stud_N][course_N],sums[stud_N],sumc[course_N],n;long num[stud_N];float avers[stud_N],averc[course_N];printf("input the total number of the stduents(n<=40); ");scanf("%d",&n);readscore(score,num,n);                   //读入n个学生的学号和成绩 averforstud(score, sums, avers, n);         //计算每个学生的总分和平均分 averforcouse( score,sumc,averc, n);     //计算每门课程的总分和平均分print(score,num,sums,avers,sumc,averc,n) ;//输出学生的成绩!return 0;
}
//函数功能:输入n个学生的学号以及其三门课的成绩
void readscore(int score[][course_N],long num[],int n)
{int i,j;printf("input stduent's ID and score as:数学 英语  物理:\n");for(i=0;i<n;i++)                         //对每个学生进行循环 {                                          scanf("%ld",&num[i]);                 //以长整形格式输入每个学生的学号 for(j=0;j<course_N;j++)              //对所有课程进行循环 {scanf("%d",&score[i][j]);        //输入每个学生的各门科目的成绩 }}} //函数功能: 计算每个学生的总分和平均分
void averforstud(int score[][course_N],int sum[],float aver[],int n)
{int i,j;for(i=0;i<n;i++){sum[i]=0;for(j=0;j<course_N;j++)             //对所有课程进行循环 {sum[i]=sum[i]+score[i][j];      //计算第i个学生的总分 }aver[i]=(float)sum[i]/course_N;     //计算第i个学生的平均分 }} //函数功能:计算没门课程的总分与平均分 void averforcouse(int score[][course_N],int sum[],float aver[],int n){int i,j;for(j=0;j<course_N;j++){sum[j]=0;for(i=0;i<n;i++)                  //对每个学生进行循环! {sum[j]=sum[j]+score[i][j];  //计算第i门课程的总分 }aver[j]=(float)sum[j]/n;      //计算第i门课程的平均分 }}
//函数功能:打印各个学生的学号,各门课程成绩,总分和平均分,以及每门课程的总分和平均分void print(int score[][course_N],long num[],int sums[],float avers[],int sumc[],float averc[],int n){int i,j;printf ("stduent's ID\t  mt\t  ph\t  sum\t aver\n");for(i=0;i<n;i++){printf("%12ld\t",num[i]);           //以长整形格式打印学生的学号 for(j=0;j<course_N;j++)  {printf("%4d\t",score[i][j]);      //打印学生的每门课程成绩 }printf("%4d\t%5.1f\n",sums[i],avers[i]);   //打印学生的总分和平均分 }printf("sumofcourse\t");for(j=0;j<course_N;j++)               //打印每门课的总分 {   printf("%4d\t",sumc[j]);}printf("\naverofcourse\t");for(j=0;j<course_N;j++)               //打印每门课程的平均分 {printf("%4.1f\t",averc[j]);}printf("\n");}

学生成绩管理系统3

 //      实验题:熟悉一维数组做函数的参数,排序,查找,统计分析等常用算法,模块化程序设计以及增量测试方法
#include<stdio.h>
#include<stdlib.h>
#define stu_num 30
int menu(void);
void readscore(long num[],float score[],int n);
void aversumofscore(float score[],int n);
void desortbyscore(long num[],float score[],int n);
void assortbynum(long num[],float score[],int n);
void searchbynum(long num[],float score[],int n);
void statisticanalysis(float score[],int n);
void printscore(long num[],float score[],int n);
int main()
{char itemselected;int n=0;float score[stu_num];long num[stu_num];printf("input student number(n<%d):",stu_num);scanf("%d",&n);while(1){itemselected = menu();//显示菜单,并读取用户输入!switch (itemselected){case 1:readscore(num,score,n);break;case 2:aversumofscore(score,n);break;case 3:desortbyscore(num,score,n);printf("\n sort in descending order by score:\n");printscore(num,score,n);break;case 4:assortbynum(num,score,n);printf("\n sort in ascend order by number:\n");printscore(num,score,n);break;case 5:searchbynum(num,score,n);break;case 6:statisticnalysis(score,n);break;case 7:printscore(num,score,n);break;case 0:printf("end of program! \n");exit(0);default:printf("input erro!\n"); } } return 0;} //函数功能:显示菜单。并获得用户键盘输入的选项int menu(void){int itemselectend;printf("\nmanagement for student's score\n");printf("1.input record\n");printf("2.caculate total and average score of course\n");printf("3.sort in descengding order by score \n");printf("4.sort in descending order by number \n");     printf("5.search by number  \n");printf("6.statistic analysis \n");printf("7.list record \n");printf("please input your choice :");scanf("%d",&itemselectend);    //读入用户输入 return itemselectend;
} //函数功能:输入n个学生的某门成绩!
void readscore(long num[],float score[],int n)
{int i;printf("input student's id and score :\n");for(i=0;i<n;i++){scanf("%ld %f",&num[i],&score[i]);}
} //函数功能:计算全班总分和平均分!void aversumofscore(float score[],int n){int i;float sum=0;for(i=0;i<n;i++){sum=sum+score[i];} printf("sum=%.0f,aver=%.2f\n",sum,n>0?sum/n:0);} //函数功能:按选择法将数组score的元素按高到低排序!
void desortbyscore(long num[],float score[],int n)
{int i,j,k;float temp1;long  temp2;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){if(score[j]>score[k])k=j;}if(k != i){//交换成绩!temp1=score[k];score[k]=score[i];score[i]=temp1;//交换学号!temp2=num[k];   num[k]=num[i];   num[i]=temp2;}}
}   //数组功能:按选择法将数组num的元素值按从小到大排序!
void assortbynum(long num[],float score[],int n)
{int i,j,k;float temp1;long  temp2;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){if(num[j]<num[k])k=j;}if(k != i){//交换成绩!temp1=score[k];score[k]=score[i];score[i]=temp1;//交换学号!temp2=num[k];   num[k]=num[i];   num[i]=temp2;}}
}//函数功能:按学号查找学生成绩并显示查找结果!
void searchbynum(long num[],float score[],int n)
{long number;int i;printf("inpupt the number you whant to search:");scanf("%ld",&number);for(i=0;i<n;i++){if(num[i] == number){printf("%ld\t%.0f\n",num[i],score[i]);return ;}} printf("\n not found! \n");
}//函数功能:统计个分数段的学生人数及所占的百分比!
void statisticnalysis(float score[],int n)
{int i,total,t[6]={0,0,0,0,0,0};for(i=0;i<n-1;i++){if(score[i]>=0&&score[i]<60)  t[0]++;else if(score[i]<70)          t[1]++;else if(score[i]<80)          t[2]++;else if(score[i]<90)          t[3]++;else if(score[i]<100)         t[4]++;else if(score[i]==100)        t[5]++;   }for(total=0,i=0;i<=5;i++){total=total+t[i];}for(i=0;i<=5;i++){if(i == 0){printf("<60\t%d\t%.2f%%\n",t[i],(float)t[i]/n*100);}else if (i==5){printf("%d\t%d\t%.2f%%\n",(i+5)*10,t[i],(float)t[i]/n*100);}else{printf("%d-%d\t%d\t%.2f%%\n",(i+5)*10,(i+5)*10+9,t[i],(float)t[i]/n*100);}}}//函数功能:打印学生的成绩!void printscore(long num[],float score[],int n)
{int i;for(i=0;i<n;i++){printf("%ld\t%.0f\n",num[i],score[i]);}
}
//    完!!

输入学生成绩,输出学生人数,并将成绩排序,并将成绩打印在屏幕上

#include<stdio.h>
#define N 40
int readscore(int[]);
void datasort(int score[],int n);
void printscore(int score[],int n);
int average(int score[],int n);int main()
{int score[N],n;n=readscore(score);printf("total stduents are %d:\n",n);datasort(score,n);printf("sorted scores:");printscore(score, n);return 0;
}int readscore(int score[])
{int i=(-1);do{i++;printf("input score:");scanf("%d",&score[i]);}while (score[i]>=0);return i;
}void datasort(int score[],int n)
{int i,j,temp;for(i=0;i<n-1;i++){for(j=i+1;j<n;j++){if(score[j]>score[i]){temp=score[j];score[j]=score[i];score[i]=temp;}}}
}void printscore(int score[],int n)
{int i,sum=0;for(i=0;i<n;i++){printf("%4d",score[i]);}printf("\n");
}

选择法将成绩排序


//函数功能:运用选择法将学生成绩进行排序 void datascore(score[],int n)
{int i,j,k,temp;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){if(score[j]>score[i]){k=j; }} if(k!=i){temp=score[k];score[k]=score[i];score[i]=temp;} }}

学号,成绩排名

#include<stdio.h>
#define N 40
int readscore(int score[],long num[]);
void datasort(int score,long num[],int n);
void printscore(int score[],long num[],int n);
int main()
{int score[N],n;long num[N];n=readscore(score,num);printf("total studens is%\d",n);datasort(score,num,n);printf("sorted scores:\n");printscore(score,num,n);return 0;
}
//函数功能;输入学生的某门课的成绩,当输入负值时,结束输入,返回学生人数
int readscore(int score[],long num[])
{int i = -1;//保证循环体内i+1后数组下标从0开始 do{i++;printf("input stduent's id and score;");scanf("%ld%d",&num[i],&score[i]);//以长整形格式输入学号 }while(num[i]>0&&score[i]>=0);//输入负值时结束成绩输入 return i;//返回学生总数
}
//函数功能:用选择法按 score数组元素的降序顺序对score 与 num排序
void datasort(int score[],long num[],int n)
{int i ,j ,k,temp1;long temp2;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){if(score[j]>score[i]){k=j;  //记录最大数的下标位置 }}if(k!=i)  //若最大数不在下标位置i {//交换成绩 temp1=score[k];score[k]=score[i];score[i]=temp1;//交换学号 temp2=num[k];num[k]=num[i];num[i]=temp2;}}
}
//函数功能:打印学生学号与成绩 !
void printscore(int score[],long num[],int n)
{int i;for(i=0;i<n;i++){printf("%10ld%4d\n",num[i],score[i]);//以长整形格式打印学号 ! }
}

斐波那契数列(fibonacci)

//两种方法皆可以
#include<stdio.h>
/*void main()
{long int f1,f2;int i;f1=1;f2=1;for(i=1;i<=20;i++){printf("%ld\n%ld\n",f1,f2); f1=f1+f2;f2=f2+f1;}
}*/int main()
{long f[20];int i;f[0]=1;f[1]=1;printf("%n\t%n\t",f[0],f[1]);for(i=1;i<=20;i++){f[i]=f[i-1]+f[i-2];printf("%ld\n",f[i]); }}

打印乘法表

#include<stdio.h>
int main()
{int n=10,j ,i;for(i=1;i<n;i++){for(j=1;j<n;j++){printf("%d*%d=%-3d\t",i,j,i*j);}printf("\n");}
}

成绩排序,输出最大值,以及学生人数

#include<stdio.h>
#define N 40
int readscore(int score[]);
void datasort(int score[],int n);
void printscore(int score[],int n);
int main()
{int score[N],n;n=readscore(score);     //调用函数readscore ()输入成绩,返回学生人数!printf("total stduents are %d\n",n);datasort(score,n);    //调用函数 datasort()进行成绩排序! printf("scored scores:");printscore(score,n);  //调用函数 printscore()输出成绩排序结果! return 0;//函数功能:输入学生某门课的成绩,当输入负值时,结束输入并返回学生人数!
int readscore(int score[])
{ int i= -1;                //i初始化为-1,循环体内增1可保证数组下标从1开始!do{i++;printf("input score:");scanf("%d",&score[i]);}while(score[i]>=0&&i<8);return i;
}//函数功能:按交换法将数组score的元素值从高到低排序!
void datasort(int score[],int n)
{int i,j,temp;for(i=0;i < n-1;i++){for(j=i+1;j<n;j++){if(score[j]>score[i]){temp=score[j];score[j]=score[i];score[i]=temp;}}}} //函数功能:打印学生成绩!void printscore(int score[],int n){int i;for(i=0;i<n;i++){printf("%4d",score[i]);}printf("\n");
} 

删掉一个字符串中的空格

#include<stdio.h>
#include<string.h>
int main()
{char ch1[50]= "I will try my best to do it!";char ch2[50];char *p=ch1,*q=ch2;int i,leng=strlen(p);for(i=0;i<leng;i++){if(*p != ' '){*q = *p ;q++;}p++;}  printf(" 原始的字符串是:      %s\n",ch1);printf(" 删掉空格后的字符串为:%s\n",ch2); return 0;}

矩阵相乘阶公式

      //利用矩阵相乘公式,编程计算m*n 阶矩阵A和n*m阶矩阵B之积!
#include<stdio.h>
#define row 2
#define col 3
Mlti(int a[row][col],int b[col][row],int c[row][row])
{int i,j,k;for(i=0;i<row;i++){for(j=0;j<row;j++){c[i][j]=0;for(k=0;k<col;k++){c[i][j]=c[i][j]+a[i][k]*b[k][j];}}}
}
void pM(int a[row][col])
{int i,j;for(i=0;i<row;i++){for(j=0;j<row;j++){printf("%6d",a[i][j]);}    printf("\n");}
}
int main()
{int a[row][col],b[col][row],c[row][row],i,j;printf("input 2*3matrix a:\n");for(i=0;i<row;i++){for(j=0;j<col;j++){scanf("%d",&a[i][j]);}}printf("input 3*2matrix b:\n");for(i=0;i<col;i++){for(j=0;j<row;j++){scanf("%d",&b[i][j]);}}Mlti(a,b,c);printf("results :\n");pM(c);return 0;
}

判断是否是闰年

#include<stdio.h>int main(){int n;printf("请输入一个月份n:");scanf("%d",&n);if((n%4==0)&&(n%100 != 0)||(n%400 == 0)   ) printf("这一年是闰年!\n");elseprintf("这一年不是闰年!\n");}

二维数组的应用

#include<stdio.h>
#define student 40
#define course 3
void Readscore(int score[][course],long num[],int n);
void Averforstudent(int score[][course],int sum[],float aver[],int n);
void Averforcourse(int score[][course],int sum[],float aver[],int n);
void print(int score[][course],long num[],int sums[],float avers[],int sumc[],float averc[],int n);
int main()
{int score[student][course],sums[student],sumc[course],n;long num[student];float avers[student],averc[student];printf("输入学生的总人数:   (n<40)\n");scanf("%d",&n);Readscore(score,num,n);Averforstudent(score, sums, avers, n);Averforcourse(score, sumc, averc, n);print(score,num,sums,avers,sumc,averc,n);return 0;
}void Readscore(int score[][course],long num[],int n)
{int i,j;printf("输入学生的学号以及学车的课程成绩:\n");for(i=0;i<n;i++){scanf("%ld",&num[i]);for(j=0;j<course;j++){scanf("%d",&score[i][j]);}}
}void Averforstudent(int score[][course],int sum[],float aver[],int n)
{int i,j;for(i=0;i<n;i++){sum[i]=0;for(j=0;j<course;j++){sum[i]=sum[i]+score[i][j];}aver[i]=(float)sum[i]/n;}
}void Averforcourse(int score[][course],int sum[],float aver[],int n)
{int i,j;for(j=0;j<course;j++){sum[j]=0;for(i=0;i<n;i++){sum[j]=sum[j]=score[i][j];}aver[j]=(float)sum[j]/n;}
}void print(int score[][course],long num[],int sums[],float avers[],int sumc[],float averc[],int n)
{int i,j;printf("       学号\t   MT\t  EN\t  PH\t  SUM\t  AVER\n");for(i=0;i<course;i++){printf("%12ld\t",num[i]);for(j=0;j<course;j++){printf("%4d\t",score[i][j]);}printf("%4d\t%5.1f\n",sums[i],avers[i]);}printf("课程总分\t");for(j=0;j<course;j++){printf("%4d\t",sumc[j]);}printf("\n课程平均分\t");for(j=0;j<course;j++){printf("%4.1d\t",averc[j]);}printf("\n");
}

指针与二维数组

#include<stdio.h>
#define N 4
void inputarray(int *p,int m,int n);
void outputarray(int *p,int m,int n);
int main()
{int a[3][4];printf("Input 3*4 numbers:\n");inputarray(*a,3,4);outputarray(*a,3,4);return 0;
}void inputarray(int *p,int m,int n)
{int i,j;for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&p[i*n+j]);}}
}void outputarray(int *p,int m,int n)
{int i,j;for(i=0;i<m;i++){for(j=0;j<n;j++){printf("%4d",p[i*n+j]);}printf("\n");}
}

二维动态数组

//编程输入m个班,每个班n个学生的某门课的成绩,计算并输出平均分
//及班级数及每班学生数
#include<stdio.h>
#include<stdlib.h>
void InputAeeay(int *p,int m,int n);
double Average(int *p,int m,int n);
int main()
{int *p=NULL,m,n;double aver;printf("How many class?                 ");scanf("%d",&m);printf("How many students in a class?   ");scanf("%d",&n);p=(int *)calloc(m*n,sizeof(int));if(p == NULL){printf("No enough memory! \n");exit(1);}InputAeeay(p, m,n);aver=Average(p,m,n);printf("aver %.1f\n",aver);return 0;
}void InputAeeay(int *p,int m,int n)
{int i,j;for(i=0;i<m;i++){printf("please input scores of class %d:\n",i+1);for(j=0;j<n;j++){scanf("%d",&p[i*n+j]);}}}double Average(int *p,int m,int n )
{int i,j,sum=0;for(i=0;i<m;i++){for(j=0;j<n;j++){sum=sum+p[i*n+j];}}return (double)sum/(m*n);}

字符串与二维数组2

#include  <stdio.h>
#include  <string.h>
#define   N   5
#define   M   10/*void fun(char  (*ss) [M], int  k)
{ int  i=0  ;while(i< N) {ss[i][k]=0;  i++;  }
}*/
main()
{ char  x[][M]={"Create","Modify","Sort","skip","Delete"};int  i;//printf("\nThe original string\n\n");//for(i=0;i<N;i++)puts(x[i]);  printf("\n");puts(x[3]);printf("%c\n",x[1][2]);printf("%s\n",x[1]);printf("%s\n",x[4]);// fun(x,4);// printf("\nThe string after deleted :\n\n");//for(i=0; i<N; i++)  puts(x[i]);  printf("\n");
}

求矩阵对角线元素之和

#include<stdio.h>
#define N 10
void inputmatrix(int a[N][N],int n);
int adddiagonal(int a[N][N],int n);
int main()
{int a[N][N],n,sum;printf("输入n:");scanf("%d",&n);inputmatrix(a,n);sum=adddiagonal( a, n);printf("sum=%d\n",sum);return 0;}
void inputmatrix(int a[N][N],int n)
{int i,j;printf("输入%d*%d矩阵:\n",n,n);for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);}}
}
int adddiagonal(int a[N][N],int n)
{int i,j,sum=0;for(i=0;i<n;i++){for(j=0;j<n;j++){if(i==j||i+j == n-1)sum=sum+a[i][j];}}return sum;}

字符串连接函数(返回连接后字符串的首地址)

#include<stdio.h>
#define N 80
char *MyStrcat(char *c1,char *c2);
int main()
{char first[2*N];char second[N];printf("Input the first string :");gets(first);printf("Input the second string :");gets(second);printf("The result is :%s\n",MyStrcat(first,second));return 0;
}
char *MyStrcat(char *c1,char *c2)
{char *pstr = c1;while(*c1 != '\0'){c1++;}for(;*c2 != '\0';c1++,c2++){*c1 = *c2;}*c1='\0';return pstr;
}

国家名排序(选择排序法)

#include<stdio.h>
#include<string.h>
#define Max_LEN 10
#define N       150void SortString(char str[][Max_LEN],int n);int main()
{int i,n;char name[N][Max_LEN];printf("How many countries ?  ");scanf("%d",&n);getchar();printf("Input their names:\n");for(i=0;i<n;i++){gets(name[i]);//输入n个字符串}SortString(name,n);printf("Sorted results :\n");for(i=0;i<n;i++){puts(name[i]);}return 0;
}void SortString(char str[][Max_LEN],int n)
{int i,j,k;char temp[Max_LEN];for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){if(strcmp(str[j],str[k])<0){k=j;}}if(k != i){strcpy(temp,str[i]);strcpy(str[i],str[j]);strcpy(str[j],temp);}}
}

指向结构体类型的指针

#include<stdio.h>
#include<string.h>
void main()
{struct student{long num;char name[20];char sex;float score;};struct student stu_1;struct student *p;p=&stu_1;stu_1.num=201801;strcpy(stu_1.name,"wang er");stu_1.sex='M';stu_1.score=98.5;printf("No:%d\n name:%s\n sex:%c\n score:%f\n ",stu_1.num,stu_1.name,stu_1.sex,stu_1.score);printf("\n");printf("No:%d\n name:%s\n sex:%c\n score:%f\n ",(*p).num,(*p).name,(*p).sex,(*p).score);}

计算结果存入文件

#include <stdio.h>
#include <stdlib.h>int main()
{FILE *fp;
int a[10],i=0;
fp=fopen("E:\\test.txt","w");
if(fp==NULL)
{printf("create file failed\n");
return -1;
}
for(i=0;i<10;i++)
{a[i]=i*4;fprintf(fp,"%d\n",a[i]);
}fclose(fp);
return 0;
}

快速傅里叶变换

#include "math.h"void kfft(pr,pi,n,k,fr,fi)int n,k;double pr[],pi[],fr[],fi[];{int it,m,is,i,j,nv,l0;double p,q,s,vr,vi,poddr,poddi;for (it=0; it<=n-1; it++)  //将pr[0]和pi[0]循环赋值给fr[]和fi[]{m=it;is=0;for(i=0; i<=k-1; i++){j=m/2;is=2*is+(m-2*j);m=j;}fr[it]=pr[is];fi[it]=pi[is];}pr[0]=1.0;pi[0]=0.0;p=6.283185306/(1.0*n);pr[1]=cos(p); //将w=e^-j2pi/n用欧拉公式表示pi[1]=-sin(p);for (i=2; i<=n-1; i++)  //计算pr[]{p=pr[i-1]*pr[1];q=pi[i-1]*pi[1];s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);pr[i]=p-q; pi[i]=s-p-q;}for (it=0; it<=n-2; it=it+2){vr=fr[it];vi=fi[it];fr[it]=vr+fr[it+1];fi[it]=vi+fi[it+1];fr[it+1]=vr-fr[it+1];fi[it+1]=vi-fi[it+1];}m=n/2;nv=2;for (l0=k-2; l0>=0; l0--) //蝴蝶操作{m=m/2;nv=2*nv;for (it=0; it<=(m-1)*nv; it=it+nv)for (j=0; j<=(nv/2)-1; j++){p=pr[m*j]*fr[it+j+nv/2];q=pi[m*j]*fi[it+j+nv/2];s=pr[m*j]+pi[m*j];s=s*(fr[it+j+nv/2]+fi[it+j+nv/2]);poddr=p-q;poddi=s-p-q;fr[it+j+nv/2]=fr[it+j]-poddr;fi[it+j+nv/2]=fi[it+j]-poddi;fr[it+j]=fr[it+j]+poddr;fi[it+j]=fi[it+j]+poddi;}}for (i=0; i<=n-1; i++){pr[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]);  //幅值计算}return;}
//  g++ FFT.c  -o test; ./test >LOG; vi LOG
//https://blog.csdn.net/yga_airspace/article/details/86688278
//https://blog.csdn.net/u011947630/article/details/81513075#commentBox#include "stdio.h"
#include "math.h"
#define PI 3.1415926535void kfft(double pr[], double pi[], int n, int k, double fr[], double fi[]);int main()
{float Qs02 = 0.06;float afaem = 1.0/137.0;float ec =18.9, e = sqrt(4*3.14*afaem);float QCD = 0.241;float gama = 1.0;int i=0;const int n_point = 512;double pr[n_point], pi[n_point], fr[n_point], fi[n_point], t[n_point];for (i=0; i<n_point; i++)  //生成输入信号{t[i] = (i+1) *0.01;pr[i]=exp(-(pow((t[i]*t[i]*Qs02),gama)/4.0)*log(1.0/( t[i]*QCD) + ec*e));
//      pr[i]= sin( t[i] );printf("%.6f\t%e\n",t[i], pr[i]);}kfft(pr,pi, n_point, 9, fr, fi);  //调用FFT函数for (i=0; i<n_point; i++){printf("%d\t%e\n",i, sqrt(fi[i]*fi[i]+fr[i]*fr[i] )); //输出结果}
}void kfft(double pr[], double pi[], int n, int k, double fr[], double fi[])
{int it,m,is,i,j,nv,l0;double p,q,s,vr,vi,poddr,poddi;for (it=0; it<=n-1; it++)  //将pr[0]和pi[0]循环赋值给fr[]和fi[]{m=it;is=0;for(i=0; i<=k-1; i++){j=m/2;is=2*is+(m-2*j);m=j;}fr[it]=pr[is];fi[it]=pi[is];}pr[0]=1.0;pi[0]=0.0;p=6.283185306/(1.0*n);pr[1]=cos(p); //将w=e^-j2pi/n用欧拉公式表示pi[1]=-sin(p);for (i=2; i<=n-1; i++)  //计算pr[]{p=pr[i-1]*pr[1];q=pi[i-1]*pi[1];s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);pr[i]=p-q; pi[i]=s-p-q;}for (it=0; it<=n-2; it=it+2){vr=fr[it];vi=fi[it];fr[it]=vr+fr[it+1];fi[it]=vi+fi[it+1];fr[it+1]=vr-fr[it+1];fi[it+1]=vi-fi[it+1];}m=n/2;nv=2;for (l0=k-2; l0>=0; l0--) //蝴蝶操作{m=m/2;nv=2*nv;for (it=0; it<=(m-1)*nv; it=it+nv)for (j=0; j<=(nv/2)-1; j++){p=pr[m*j]*fr[it+j+nv/2];q=pi[m*j]*fi[it+j+nv/2];s=pr[m*j]+pi[m*j];s=s*(fr[it+j+nv/2]+fi[it+j+nv/2]);poddr=p-q;poddi=s-p-q;fr[it+j+nv/2]=fr[it+j]-poddr;fi[it+j+nv/2]=fi[it+j]-poddi;fr[it+j]=fr[it+j]+poddr;fi[it+j]=fi[it+j]+poddi;}}return;
}

折半查找

int Binsearch(long num[],long x,int n)
{int low=0,high=n-1,mid;while(low<=high){mid=(low+high)/2;if(x>num[mid])low=mid+1;else if(x<num[mid])high=mid-1;elsereturn mid;}return -1;
}

查找不及格和低于平均分的学生成绩

/*输入学生某门课程的成绩(最多不超过40人),当输入负值时,表示输入结束*/
/*用函数编程统计成绩高于平均分的学生人数*/
#include<stdio.h>
#define N 40
int Average(int score[],int n );
int Readscore(int score[]);
int GetAboveAver(int score[],int n);
int Failnum(int score[],int n);
int main()
{int score[N],m,n,fail;n=Readscore(score);        //输入成绩,返回学生人数printf("Total students are %d\n",n);m=GetAboveAver(score, n);  //统计成绩在平均分及以上的学生人数if(m != -1)printf("Students of above average is %d\n",m);fail= Failnum(score, n);printf("不及格的学生人数:%d",fail);return 0;
}
/*函数功能:若n>0,计算并返回n个学生的平均成绩,否则返回-1*/
int Average(int score[],int n )
{int i,sum=0;for(i=0;i<n;i++){sum=sum+score[i];}return n>0 ? sum/n:  -1;
}
/*函数功能:输入学生成绩,当输入负值时结束程序的输入*/
int Readscore(int score[])
{int i=-1;do{i++;printf("输入第%d个成绩:\n",i+1);scanf("%d",&score[i]);}while(score[i]>=0);return i;
}
/*函数功能:统计并返回成绩在平均分及以上平均分以上的学生人数*/
int GetAboveAver(int score[],int n)
{int i,count=0,aver;aver=Average(score,n );if(aver == -1)return -1;printf("平均成绩是:%d\n",aver);for(i=0;i<n;i++){if(score[i]>=aver)count++;}return count;}int Failnum(int score[],int n)
{int i,count=0;for(i=0;i<n;i++){if(score[i]<60)count++;}return count;
}

SWITCH结构

#include<stdio.h>
main()
{int date,date2;char op;printf("Please input an expession:");scanf("%d%c%d",&date,&op,&date2);switch(op){case '+':printf("%d+%d=%d",date,date2,date+date2);break;case'-':printf("%d-%d=%d",date,date2,date+date2);break;case'*':printf("%d*%d=%d",date,date2,date*date2);break;case'/':if(date2==0)printf("division by zero!\n");elseprintf("%d/%d=%d\n",date,date2,date/date2);break;default:printf("invalid operator!\n");}}

指针交换两个数字的值

 #include<stdio.h>void swap(int *x,int *y);int main(){int a,b;printf("please input a,b:");scanf("%d,%d",&a,&b);printf("before swap :a=%d,b=%d\n",a,b);swap (&a,&b);   //模拟按值引用调用函数swap() printf("aefter swap :a=%d,b=%d\n",a,b);} /*函数的功能:交换两个整数的值*/ void swap(int *x,int *y){int temp;temp = *x;*x = *y;*y = temp;}

学习阶段C语言程序汇总相关推荐

  1. IOS学习笔记05---C语言程序的开发运行过程

    IOS学习笔记05---C语言程序的开发运行过程 0 5.C语言3-C语言程序的开发运行过程 ----------------------------------------------------- ...

  2. c语言学习进阶-C语言程序产生正态分布随机数

    C语言程序产生正态分布随机数 目录 C语言程序产生正态分布随机数 **中心极限定理(大数定理)** **Hasiting有理逼近法:** **反函数产生给定分布的随机数法:** **Box-Mulle ...

  3. c语言学习进阶-C语言程序出错处理

    C语言程序出错处理 命令行参数实现C语言程序出错处理 (1)执行d:>p.exe myinput.txt myoutput.txt 时,如果指定的文件名myinput.txt 不存在,那么程序应 ...

  4. c语言学习进阶-C语言程序性能优化

    标题C语言程序性能优化 (1)进一步提升程序的计算能力.使之能计算任意实数的任意次方的输出结果,我们 将计算的次方数也放在命令行参数中,作为第3 个命令行参数,例如:d:>p.exe input ...

  5. c语言学习进阶-C语言程序稳定性测试

    C语言程序程序稳定性测试 (1)设计一个自动数据生成程序,能自动生成指定行数的随机整数并写入到一个文件当中,随机整数的范围可以被控制,例如控制在0 到100 间,这个程序的操作命令行参数如:d:> ...

  6. c语言学习进阶-C语言程序实现生成指定区间指定个数随机数

    ##C语言程序实现生成指定区间指定个数随机数 设计一个自动数据生成程序,能自动生成指定行数的随机整数并写入到一个文件当中,随机整数的范围可以被控制,例如控制在0 到100 间,这个程序的操作命令行参数 ...

  7. c语言程序汇总,C语言程序设计经典题目大汇总

    1.C语言程序设计经典题目大汇总第一章 1main() printf("*"n"); printf(" welcome you n"); printf ...

  8. c语言幼儿园管理系统,【资源学习】c语言程序代码,登录幼儿园200个小朋友的数据...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 编写程序,登录幼儿园200个小朋友的数据:姓名.性别.年龄.身高.体重.出生日期,分别按年龄排序后输出. 要求: (1)登录数据用函数input() (2 ...

  9. 幼儿园 c语言,【资源学习】c语言程序代码,登录幼儿园200个小朋友的数据

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 编写程序,登录幼儿园200个小朋友的数据:姓名.性别.年龄.身高.体重.出生日期,分别按年龄排序后输出. 要求: (1)登录数据用函数input() (2 ...

最新文章

  1. BC28、BC95通过LWM2M连接电信AEP(ctwing)
  2. 我已经把servlet-api.jar加到classpath中了,可还是无法编译servlet
  3. 排查链接是否失效_Linux服务器入侵检测排查方法
  4. 聚焦2020年财报:进击的恒大汽车,“变态”的智能汽车
  5. Redis 教程基于win10:1介绍
  6. 方立勋_30天掌握JavaWeb_JavaBean、mvc开发模式、el表达式、jstl标签
  7. HIPS 自定义框架
  8. [优先队列][堆] Luogu P4505 组合子逻辑
  9. Snipaste的安装及快捷键的设置
  10. 4. 星际争霸之php设计模式--工厂方法模式
  11. 实战 Comet 应用程序开发
  12. VC6.0建立控制台程序实现PDA应用
  13. [转载] 【numpy】numpy.ones()函数
  14. ionic3 修改打包时 android sdk 路径
  15. 用PHP ping 一个 IP
  16. 免费解析成pdf下载 -原创力文档
  17. 归并算法(java的简单实现)
  18. 简单好用的ImageAI编程库!选择最适合你的!
  19. Silverlight 动态加载XAP文件
  20. 楼兰古城如何变成了沙漠戈壁的

热门文章

  1. UDA_TP阅读笔记
  2. AI人工智能 容智RPA银行机器人的优势
  3. 培训中经常用到的经典小故事(转)
  4. 【C语言】文件管理<2>
  5. ubuntu 13.10 无法连接wifi问题歪解
  6. FastReport .NET2022.2x,完整的源代码可用
  7. Kotlin Android (从零开始一个项目)
  8. 三百六十行对比(旧社会)
  9. 关于测绘专业软件时的一些感悟
  10. 对比Hadoop,Spark受多方追捧的原因