(整理)C语言入门经典案例及源代码.
- 格式:doc
- 大小:43.00 KB
- 文档页数:18
#include 〈stdio.h〉void print_star(void){printf("*****************\n"); }void print_welcome(void){printf(”C language,welcome!\n");}void main(){print_star();print_welcome();print_star();getchar();}演示2#include "stdio。
h"int sum(int i,int j){return(i + j);}void main(){int n1,n2;printf("input 2 numbers:\n”);scanf("%d%d”,&n1,&n2);printf("the sum = %d\n",sum(n1,n2));getchar();}演示3#include "stdio。
h"int maxnum(int,int,int);main(){int a,b,c;printf("Please enter 3 numbers:\n");scanf(”%d,%d,%d”,&a,&b,&c);printf(”Maxnum is %d\n",maxnum(a,b,c));}int maxnum(int x,int y,int z){int max=x;if(y>max)max = y;if(z>max)max = z;return max;}演示4#include 〈stdio。
h〉int s1(int n){int j,s;s=0;for(j=1;j<=n;j++)s=s+j;return s;}int sum(int n){int i,s=0;for(i=1;i<=n;i++)s=s+s1(i);return s;}void main(){int n;printf(”n:”);scanf(”%d",&n);printf("s=%d\n”,sum(n));}演示5#include <stdio.h〉void func(int n){int i;for(i=n-1;i〉=1;i--)n=n+i;printf("n=%d\n",n);}void main(){int n;printf("Input n:");scanf("%d”,&n);func(n);printf(”n=%d\n",n);}演示6#include <stdio。
#include <iostream.h> //包含iostream.h头文件main(){//声明变量,并初始化int a=010,b=10,c=0X10;//以十进制形式显示数据cout<<"DEC:";cout<<" a="<<a;cout<<" b="<<b;cout<<" c="<<c<<endl;//以八进制形式显示数据cout<<"OCT:";cout<<oct; //指定八进制输出cout<<" a="<<a;cout<<" b="<<b;cout<<" c="<<c<<endl;//以十六进制形式显示数据cout<<"HEX:";cout<<hex; //指定十六进制输出cout<<" a="<<a;cout<<" b="<<b;cout<<" c="<<c<<endl;//八、十和十六进制数混合运算并输出cout<<"a+b+c=";cout<<dec; //恢复十进制输出cout<<a+b+c<<endl;//测试八、十和十六进制输入cout<<"DEC:a="; cin>>a;cout<<"OCT:b="; cin>>b;cout<<"HEX:a="; cin>>c;cout<<"DEC:"<<dec<<endl; //指定十进制输出cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;cout<<"c="<<c<<endl;}cin>>dx;cout<<"dy=";cin>>dy;cout<<dx<<"+"<<dy<<"="<<dx+dy<<endl; cout<<dx<<"-"<<dy<<"="<<dx-dy<<endl; cout<<dx<<"*"<<dy<<"="<<dx*dy<<endl;cout<<dx<<"/"<<dy<<"="<<dx/dy<<endl<< endl;//cout<<fx<<"%"<<fy<<"="<<fx%fy<<endl; Error!//测试float和double类型数据的有效位fx=10.0;fy=6.0;float fz=fx/fy;dx=10.0;dy=6.0; double dz=dx/dy;cout<<"fz=";cout<<setprecision(20)<<fx<<"/"<<fy<< "="<<fz<<endl;cout<<"dz=";cout<<setprecision(20)<<dx<<"/"<<dy<< "="<<dz<<endl<<endl;;//float型溢出float x=3.5e14;cout<<"x="<<x<<endl;cout<<"x*x="<<x*x<<endl;cout<<"x*x*x="<<x*x*x<<endl;}#include <iostream.h>main(){//x,y 为操作数,c为运算符int x,y,z;char c1;cin>>x>>c1>>y; //c1//多路选择语句选择不同表达式计算语句switch(c1) {case'+':cout<<x<<"+"<<y<<"="<<x+y<<endl; break;case'-':cout<<x<<"-"<<y<<"="<<x-y<<endl; break;case'*':cout<<x<<"*"<<y<<"="<<x*y<<endl; break;case'/':cout<<x<<"/"<<y<<"="<<x/y<<endl; break;case'%':cout<<x<<"%"<<y<<"="<<x%y<<endl; break;default :cout<<"Wrong !"<<endl; //当不符合上述情况时执行本子句}}#include<iostream.h>float x=365.5; //声明全局变量main() {int x=1,y=2;double w=x+y;{double x=1.414,y=1.732,z=3.14; cout<<"inner:x="<<x<<endl;cout<<"inner:y="<<y<<endl;cout<<"inner:z="<<z<<endl;cout<<"outer:w="<<w<<endl;cout<<"::x="<<::x<<endl; //访问重名的全局变量}cout<<"outer:x="<<x<<endl;cout<<"outer:y="<<y<<endl;cout<<"outer:w="<<w<<endl;//cout<<"inner:z="<<z<<endl;无效 cout<<"::x="<<::x<<endl; //访问重名的全局变量}#include<iostream.h>main() {//显示1,2,3 (10)for(int i=1;i<=10;i++)cout<<i<<" ";cout<<endl;//显示10,9,8 (1)for(int j=10;j>=1;j--)cout<<j<<" ";cout<<endl;//显示1,3,5 (9)for(int k=1;k<=10;k=k+2)cout<<k<<" ";cout<<endl;//显示ABC...Zfor(char c='A';c<='Z';c++)cout<<c;cout<<endl;//显示0,0.1,0.2...1.0for(float x=0;x<=1.0;x=x+0.1)cout<<x<<" ";cout<<endl;//显示0,0.1,0.2...1.0for(floatx1=0;x1<=1.0+0.1/2;x1=x1+0.1)cout<<x1<<" ";cout<<endl;//计算s=1+2+3...+100int s=0;for(int n=1;n<=100;n++)s=s+n;cout<<"s="<<s<<endl;}#include<iostream.h>main(){//计算s=1+2+3...+100int s=0,n=1;while(n<=100) {s=s+n;n++;}cout<<"s="<<s<<endl;//累加键盘输入的数据double x,sum=0.0;cout<<"x=";cin>>x;while(x!=0) {sum+=x;cout<<"x=";cin>>x;}cout<<"sum="<<sum<<endl;}#include<iostream.h>main(){//计算s=1+2+3...+100int s=0,n=0;do {n++;s+=n;}while(n<100);cout<<"s="<<s<<endl;//累加键盘输入的数据double x,sum=0.0;do {cout<<"x=";cin>>x;sum+=x;} while(x!=0);cout<<"sum="<<sum<<endl;}#include<iostream.h>main(){//计算和打印打印乘法九九表for (int i=1;i<=9;i++) {cout<<i;for (int j=1;j<=9;j++)cout<<'\t'<<i<<"*"<<j<<"="<<i*j;cout<<endl;}}#include<iostream.h>main(){int x,sum=0;//定义标号L1L1: cout<<"x=";cin>>x;if (x==-1)goto L2; //无条件转移语句,转到L2语句处elsesum+=x;goto L1; //无条件转移语句,转到L1语句处//定义标号L2L2: cout<<"sum="<<sum<<endl;}#include<iostream.h>main(){//累加键盘输入的数据double x,sum=0.0;while(1) {cout<<"x=";cin>>x;if (x<=0) break;sum+=x;}cout<<"sum="<<sum<<endl;}#include<iostream.h>main(){int i;for (i=1;i<=20;i++){if (i%3==0) //能被 3 整除的整数,返回进行下次循环continue;cout<<i<<" ";}cout<<endl;}#include<iostream.h>main(){//声明数组和变量int a[5],i,sum;double avg;//从键盘上循环为数组赋值for (i=0;i<5;i++) {cout<<"a["<<i<<"]=";cin>>a[i];}//直接显示数组元素cout<<a[0]<<a[1]<<a[2]<<a[3]<<a[4]<<e ndl;//利用for循环显示数组各元素的值 for (i=0;i<5;i++)cout<<a[i]<<" ";cout<<endl;//计算数组元素之和,并显示计算结果 sum=a[0]+a[1]+a[2]+a[3]+a[4];cout<<"sum="<<sum<<endl;//利用循环计算数组的累加和for (sum=0,i=0;i<5;i++)sum+=a[i];//显示累加和及平均值cout<<"sum="<<sum<<endl;avg=sum/5.0;cout<<"avg="<<avg<<endl;}#include<iostream.h>main(){int i,max,index,a[5];//从键盘上为数组赋值for (i=0;i<=4;i++){cout<<"a["<<i<<"]=";cin>>a[i];}// 利用循环遍历数组,找出最大值的元素及其下标max=a[0];for (i=0;i<=4;i++){if (max<a[i]) {max=a[i];index=i;}}cout<<"\nMax="<<max<<"index="<<index;}#include<iostream.h>#define size 5main(){//声明变量int i,j;float t,a[size];//从键盘上为数组赋值for (i=0;i<size;i++){cout<<"a["<<i<<"]=";cin>>a[i];}//对数组按从小到大顺序排序for (i=0;i<size-1;i++)for (j=i+1;j<size;j++)if (a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}//显示排序结果for (i=0;i<size;i++)cout<<a[i]<<" ";cout<<endl;//输入要查找的数据int value;int found; //找到为1,否则为0int low,high,mid;for (i=1;i<=3;i++) {cout<<"value=";cin>>value;//二分法查找数组afound=0;low=0;high=size-1;while(low<=high){mid=(high+low)/2;if (a[mid]==value){found=1;break;}if (a[mid]<value)low=mid+1;elsehigh=mid-1;}if (found)cout<<"The valu foundat:a["<<mid<<"]="<<a[mid]<<endl;elsecout<<"The "<<value<<" is not found!"<<endl;}}#include<iostream.h>main(){//声明变量int i,j;float t,a[5];//从键盘上为数组赋值for (i=0;i<=4;i++){cout<<"a["<<i<<"]=";cin>>a[i];}//对数组按从大到小顺序排序for (i=0;i<=3;i++)for (j=i+1;j<=4;j++)if (a[i]<=a[j]){t=a[i];a[i]=a[j];a[j]=t;}//显示排序结果for (i=0;i<=4;i++)cout<<a[i]<<" ";}#include<iostream.h>main(){//声明二维数组及变量int a[2][3],i,j;//从键盘上为数组a赋值for (i=0;i<2;i++)for (j=0;j<3;j++){cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];}//显示数组afor (i=0;i<2;i++) {for (j=0;j<3;j++){cout<<a[i][j]<<" ";}cout<<endl;}//找出该数组的最大元素及其下标int h,l,Max=a[0][0];for (i=0;i<2;i++) {for (j=0;j<3;j++){if (Max<a[i][j]) {Max=a[i][j];h=i; l=j;}}}cout<<"Max:"<<"a["<<h<<"]["<<l<<"]="< <a[h][l]<<endl;}#include<iostream.h>main(){//声明字符数组和变量char str[6];int i;//从键盘上输入字符串cout<<"str=";cin>>str;cout<<str<<endl;//按数组和下标变量两种方式显示字符数组cout<<str<<endl;for (i=0;i<6;i++)cout<<str[i];cout<<endl;//字符串反向输出for (i=5;i>=0;i--)cout<<str[i];cout<<endl;//将字符数组变成大写字母后输出for (i=0;i<=5;i++)str[i]-=32; //小写字母转换成大写字母cout<<str<<endl; //显示字符串}#include<iostream.h>main(){//声明变量和指针变量int a,b,c,*ip;//指针变量ip指向变量aa=100;ip=&a; //使指针变量 ip 指向变量acout<<"a="<<a<<endl;cout<<"*ip="<<*ip<<endl;cout<<"ip="<<ip<<endl;//指针变量ip指向变量bip=&b; //使指针变量 ip 指向变量bb=200;cout<<"b="<<b<<endl;cout<<"*ip="<<*ip<<endl;cout<<"ip="<<ip<<endl;//指针变量ip指向变量cip=&c; //使指针变量 ip 指向变量b*ip=a+b;cout<<"c="<<c<<endl;cout<<"*ip="<<*ip<<endl;cout<<"ip="<<ip<<endl;}#include<iostream.h>main(){//声明数组、变量和指针变量int a[2][3],i,j;int* ip;//从键盘上为数组a赋值for (i=0;i<2;i++) //为数组a赋值 for (j=0;j<3;j++){cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];}//利用下标变量显示数组afor (i=0;i<2;i++) {for (j=0;j<3;j++){cout<<a[i][j]<<" ";}cout<<endl;}//利用指针变量显示数组aip=&a[0][0];for (i=0;i<2;i++) {for (j=0;j<3;j++){cout<<"a["<<i<<"]["<<j<<"]=";cout<<ip<<" ";cout<<*ip<<endl;ip++;}}}#include<iostream.h>main(){//声明数组、变量和指针变量int a[]={1,2,3,4,5,6};int *ip1,*ip2;//测试指针的赋值运算ip1=a;ip2=ip1;cout<<"*ip1="<<(*ip1)<<endl;cout<<"*ip2="<<(*ip2)<<endl;//测试指针的自增自减运算和组合运算ip1++;ip2+=4;cout<<"*ip1="<<(*ip1)<<endl;cout<<"*ip2="<<(*ip2)<<endl;//测试指针变量之间的关系运算int n=ip2>ip1;cout<<"ip2>ip1="<<n<<endl;cout<<"ip2!=NULL="<<(ip2!=NULL)<<endl ; //指针变量之间的减法n=ip2-ip1;cout<<"ip2-ip1="<<n<<endl;}#include<iostream.h>main(){//声明字符型数组和指针变量char str[10];char *strip=str;//输入输出cout<<"str=";cin>>str; //用字符数组输入字符串cout<<"str="<<str<<endl;cout<<"strip="<<strip<<endl;cout<<"strip=";cin>>strip; //用字符指针变量输入字符串cout<<"str="<<str<<endl;cout<<"strip="<<strip<<endl;//利用指针变量改变其指向字符串的内容*(strip+2)='l';cout<<"str="<<str<<endl;cout<<"strip="<<strip<<endl;//动态为字符型指针变量分配内存strip=new char(100);cout<<"strip=";cin>>strip; //用字符指针变量输入字符串cout<<"str="<<str<<endl;cout<<"strip="<<strip<<endl;}#include<iostream.h>main(){// 声明用于存放运动员号码的数组int h[]={1001,1002,1003,1004};// 声明用于存放运动员成绩的数组float x[]={12.3,13.1,11.9,12.1}; //声明用于存放运动姓名的字符型指针数组char *p[]={"Wang hua","Zhang jian","Li wei","Hua ming"};//i,j,it是用做循环控制变量和临时变量int i,j,it;//ft 用做暂存变量float ft;//pt为字符型指针变量用做暂存指针变量char *pt;//用选择法对数组x进行排序,并相应调整数组h和p中的数据for (i=0;i<=3;i++)for (j=i+1;j<=3;j++)if (x[i]>=x[j]) {ft=x[i],x[i]=x[j],x[j]=ft;it=h[i],h[i]=h[j],h[j]=it;pt=p[i],p[i]=p[j],p[j]=pt;}//以下打印排序结果for (i=0;i<=3;i++)cout<<h[i]<<" ,"<<p[i]<<" ,"<<x[i]<<e ndl;}#include<iostream.h>main(){//声明指针数组char*colors[]={"Red","Blue","Yellow","Gre en"};//指向指针的指针变量char **pt;//通过指向指针的变量访问其指向的内容pt=colors;for (int i=0;i<=3;i++) {cout<<"pt="<<pt<<endl;cout<<"*pt="<<*pt<<endl;cout<<"**pt="<<**pt<<endl;pt++;}}#include<iostream.h>main(){//定义结构类型struct books{char title[20];char author[15];int pages;float price;} ;//声明结构变量struct books Zbk={"VC++ ","Zhang",295,35.5};books Wbk;//对结构变量的输出cout<<"Zbk:"<<endl;cout<<Zbk.title <<endl;cout<<Zbk.author<<endl;cout<<Zbk.pages<<endl;cout<<Zbk.price<<endl;cout<<"--------------------"<<endl;//对结构成员的运算Zbk.pages+=10;Zbk.price+=0.5;cout<<"Zbk.pages="<<Zbk.pages<<endl; cout<<"Zbk.price="<<Zbk.price<<endl;cout<<"--------------------"<<endl;//对结构变量的输入输出cout<<"Wbk.title =";cin>>Wbk.title;cout<<"Wbk.author=";cin>>Wbk.author;cout<<"Wbk.pages=";cin>>Wbk.pages;cout<<"Wbk.price=";cin>>Wbk.price;cout<<"Wbk:"<<endl;cout<<Wbk.title <<endl;cout<<Wbk.author<<endl;cout<<Wbk.pages<<endl;cout<<Wbk.price<<endl;cout<<"--------------------"<<endl;//结构变量之间的相互赋值books temp;temp=Wbk;cout<<"temp:"<<endl;cout<<temp.title<<endl;cout<<temp.author<<endl;cout<<temp.pages<<endl;cout<<temp.price<<endl;}#include<iostream.h>main(){int i;//定义结构类型struct student {int num;char name[10];float maths;float physics;float chemistry;double total;};//声明结构数组ststudent st[3];//从键盘上为结构数组输入值cout<<" num name maths physics chemistry "<<endl;for (i=0;i<3;i++){cout<<i+1<<" ";cin>>st[i].num;cin>>st[i].name;cin>>st[i].maths;cin>>st[i].physics;cin>>st[i].chemistry;}//计算每个学生的总成绩for (i=0;i<3;i++)st[i].total=st[i].maths+st[i].physics +st[i].chemistry;//输出结构数组各元素的值for (i=0;i<3;i++){cout<<"st["<<i<<"]: ";cout<<st[i].num<<'\t';cout<<st[i].name<<'\t';cout<<st[i].maths<<'\t';cout<<st[i].physics<<'\t';cout<<st[i].chemistry<<'\t';cout<<st[i].total<<endl;}}#include<iostream.h>main(){//定义结构类型struct human {char name[10];int sex;int age;};//声明结构变量和结构指针变量,并初始化struct human x={"WangPing",1,30},*p=NULL;//结构指针变量指向对象p=&x;//显示结构变量的值cout<<"="<<<<endl;cout<<"x.sex="<<x.sex<<endl;cout<<"x.age="<<x.age<<endl;//利用结构指针显示结构对象中的数据cout<<"(*p).name="<<(*p).name<<endl;cout<<"(*p).sex="<<(*p).sex<<endl;cout<<"(*p).age="<<(*p).age<<endl;cout<<"p->name="<<p->name<<endl;cout<<"p->sex="<<p->sex<<endl;cout<<"p->age="<<p->age<<endl;//通过结构指针为结构对象输入数据cout<<"name:";cin>>(*p).name;cout<<"sex:";cin>>(*p).sex;cout<<"age:";cin>>(*p).age;//显示结构变量的值cout<<"="<<<<endl;cout<<"x.sex="<<x.sex<<endl;cout<<"x.age="<<x.age<<endl;}include<iostream.h>main(){//定义结构类型struct human {char name[10];int sex; int age;};//声明结构变量和结构指针,并初始化 struct human x={"WangPing",1,30},*p=&x;//利用结构指针显示结构中的数据cout<<"(*p).name="<<(*p).name<<endl; cout<<"(*p).sex="<<(*p).sex<<endl;cout<<"(*p).age="<<(*p).age<<endl;cout<<"-------------------------"<<en dl;//利用new运算符为p分配内存p=new human;//从键盘上为p指向的结构对象赋值cout<<"p->name=";cin>>p->name;cout<<"p->sex=";cin>>p->sex;cout<<"p->age=";cin>>p->age;cout<<"-------------------------"<<en dl;//显示p所指结构对象的值cout<<"p->name="<<p->name<<endl;cout<<"p->sex="<<p->sex<<endl;cout<<"p->age="<<p->age<<endl;cout<<"-------------------------"<<en dl;//显示结构变量的值cout<<"="<<<<endl;cout<<"x.sex="<<x.sex<<endl;cout<<"x.age="<<x.age<<endl;//释放p指向的内存delete p;}#include<iostream.h>main(){//定义结构类型struct human {char name[10];int sex;int age;};//声明结构数组和结构指针变量,并初始化humanx[]={{"WeiPing",1,30},{"LiHua",1,25}, {"LiuMin",0,23}},*p=NULL;//用下标变量的输出结构数组的元素for (int i=0;i<3;i++){cout<<x[i].name<<'\t';cout<<x[i].sex<<'\t';cout<<x[i].age<<endl;}cout<<"----------------"<<endl;//用结构指针输出结构数组的元素for (p=x;p<=&x[2];p++){cout<<p->name<<'\t';cout<<p->sex<<'\t';cout<<p->age<<endl;}}#include<iostream.h>main(){//定义一个包含指针成员的结构类型 struct test {char *str;int *ip;} x;//使用结构变量x中的整型指针ipx.ip=new int; //分配1个单元*(x.ip)=100;cout<<"x.ip:"<<x.ip<<'\t'<<*(x.ip)<<e ndl;cout<<"---------------"<<endl;delete x.ip;x.ip=new int[5]; //分配5个单元 for(int i=0;i<5;i++)*(x.ip+i)=100+i;cout<<"x.ip:"<<endl;for(i=0;i<5;i++)cout<<x.ip+i<<'\t'<<(*(x.ip+i))<<endl ;delete x.ip;cout<<"---------------"<<endl;//使用结构变量x中的字符型指针str x.str=new char('A'); //分配1个单元cout<<"x.str:"<<(*x.str)<<endl;cout<<"---------------"<<endl;delete x.str;x.str=new char[5]; //分配多个单元*x.str='G';*(x.str+1)='o';*(x.str+2)='o';*(x.str+3)='d';*(x.str+4)='\0';cout<<"x.str:"<<x.str<<endl;delete x.str;cout<<"---------------"<<endl;//在声明结构变量时初始化test y={"Very Good!",NULL};cout<<"y.str:"<<y.str<<endl;cout<<"y.ip:"<<y.ip<<endl;}#include<iostream.h>main(){//定义date结构struct date{int year;int month;int day;};//定义baby结构struct baby {int num;float weight;date birthday; // date为结构类型};//声明baby结构变量并初始化baby b1={10001,10,{2002,12,25}}; //下列是baby结构变量b1的引用。
//1.成绩判断#include <stdio.h>int main(){//成绩int score;printf("请输入你的成绩:\n");scanf("%d", &score);//判断if(score >=0 && score < 60){printf("不及格\n");}else if(60 <= score && score < 80){printf("中等\n");}else if(80 <= score && score < 100){printf("优秀\n");}else{printf("输入错误!\n");}}//2.计算1到100的和#include <stdio.h>int main(){int sum = 0;//存结果变量int i;for(i=1;i <= 100;i++){sum = sum + i;}printf("sum=%d\n", sum);}//3.最大公约数#include <stdio.h>//求m,n的最大公约数int main(){int m, n;int i, k;printf("请输入两个数:");scanf("%d %d", &m, &n);//三元运算符找较小的那个k = m < n ? m : n;//从较小的那个数倒着往前找for(i=k; i>=1; i--){//这是公约数if((m % i == 0) && (n % i ==0)){printf("最大公约数是%d\n", i);break;//跳出for循环}}}//4.最小公倍数#include <stdio.h>//求m,n的最小公倍数int main(){int m, n;int max, min;//m,n中较大,较小的那个int k;//max, 2*max, 3*max, .....printf("请输入两个数:");scanf("%d %d", &m, &n);//也可以交换m,n,保证m小n大max = m > n ? m : n;min = m < n ? m : n;k = max;//从max开始while(k % min != 0){k += max;//每次倍增}printf("最小公倍数是%d\n", k); }//5.金字塔#include <stdio.h>//金字塔int main(){int i;//外层int j;//内层for(i=1;i<=10;i++){//当前是在第i行//先补空格10-i个for(j=1;j<=10-i;j++){printf(" ");}//再打2i-1个*for(j=1;j<=2*i-1;j++){printf("*");}printf("\n");}}//6.九九乘法表#include <stdio.h>//打印九九乘法表int main(){int i,j;for(i=1;i<=9;i++)//外层一定是9行{for(j=1; j<=i; j++)//内层第几行走几遍{printf("%d*%d=%d ", i, j, i*j);}printf("\n");}}//7.百钱买百鸡#include <stdio.h>/**百钱买百鸡,类似1,2,5凑100银币问题*/int main2(){int i,j;//公鸡,母鸡个数for(i=0; i<=20; i++)//公鸡{for(j=0; j<=33; j++)//母鸡{if( (15*i + 9*j + (100-i-j)) == 300){printf("公鸡%d,母鸡%d,小鸡%d\n", i, j, 100-i-j);}}}}//1,2,5凑100银币问题int main3(){int count = 0;//情况数int i,j;//5分个数,2分个数for(i=0; i<=20; i++)//5分个数{for(j=0; j<=50; j++)//2分个数{if( ( 5*i + 2*j ) <= 100 ){count++;printf("%d: 5分%d个,2分%d 个,1分%d个\n", count, i, j, 100-5*i-2*j);}}}}//8.一维数组的最大值、最小值、平均值#include <stdio.h>#define N 10//宏定义常量int main(){int i;//下标索引int max, min;double sum = 0;//累加和int a[N] = {58, 58, 96, 100, 25, 55, 66, 88, 99, 77};max = a[0];//假设第一个最大min = a[0];//假设第一个最小for(i=1; i<N; i++){if(a[i] > max)//比最大值还大max = a[i];//你才是最大if(a[i] < min)//比最小值还小min = a[i];//你才是最小sum += a[i];}printf("max=%d, min=%d\n", max, min);printf("average = %.2lf\n", sum/N);}//9.二维数组的最大值、最小值、平均值#include <stdio.h>int main(){int i; //第几行int j; //第几列int a[3][4] = { {1,2,3,4}, {5,-6,7,8}, {9,19,39,0}};int max = a[0][0];//假设你最大int min = a[0][0];//假设你最小double average;//平均值double sum = 0; //总和for(i=0; i<3; i++)//必定3行{for(j=0; j<4; j++)//必定4列{printf("%5d ", a[i][j]);sum += a[i][j];if(a[i][j] > max)max = a[i][j];if(a[i][j] < min)min = a[i][j];}printf("\n");}average = sum / (3*4);printf("max=%d, min=%d, avg=%.2lf\n", max, min, average);}//10.二维数组转置#include <stdio.h>//二维数组转置:行变列,列变行int main(){int i; //第几行int j; //第几列int a[3][4] = { {1,2,3,4}, {5,-6,7,8}, {9,19,39,0}};int b[4][3];for(i=0; i<3; i++){for(j=0; j<4; j++){printf("%5d", a[i][j]);}printf("\n");}//矩阵转置for(i=0; i<3; i++){for(j=0; j<4; j++){b[j][i] = a[i][j];}}for(i=0; i<4; i++){for(j=0; j<3; j++){printf("%5d", b[i][j]);}printf("\n");}}//11.冒泡排序#include <stdio.h>#define N 10//宏定义常量int main(){int i;//下标索引int j;int tmp;//临时交换用int a[N] = {58, 58, 96, 100, 25, 55, 66, 88, 99, 77};//外层循环一定是N-1for(i=0; i<N-1; i++){//两两交换,大的往后走for(j=0; j<N-i-1; j++){//交换if(a[j] > a[j+1]){tmp = a[j];a[j] = a[j+1];a[j+1] = tmp;}}}for(i=0; i<N; i++){printf("%d ", a[i]);;}printf("\n");}//12.结构冒泡排序#include <stdio.h>//结构定义,用户自定义类型typedef struct student{char sno[20];//学号char name[20];//姓名int age;//年龄char gender;//性别char tel[20];//电话};int main(){int i;int j;double sum = 0;struct student tmp;//两两交换临时用;//结构数组struct student team[5];for(i=0; i<5; i++){printf("请输入第%d个队员的信息:\n", i+1);scanf("%s %s %d %c %s", team[i].sno, team[i].name, &team[i].age, &team[i].gender, team[i].tel);}//按年龄冒泡排序for(i=0; i<5; i++){for(j=0; j<5-i-1; j++){//两两交换if(team[j].age > team[j+1].age){tmp = team[j];team[j] = team[j+1];team[j+1] = tmp;}}}//取值printf("%-12s %-10s %-5s %-5s %-15s\n", "学号", "姓名", "年龄", "性别", "电话");for(i=0; i<5; i++){printf("%-12s %-10s %-5d %-5c %-15s\n", team[i].sno, team[i].name, team[i].age, team[i].gender, team[i].tel);}}//13.结构数组找年龄最大值#include <stdio.h>//结构定义,用户自定义类型typedef struct student{char sno[20];//学号char name[20];//姓名int age;//年龄char gender;//性别char tel[20];//电话};int main(){int i;struct student tmp;//找最大临时用//结构数组struct student team[5];for(i=0; i<5; i++){printf("请输入第%d个队员的信息:\n", i+1);scanf("%s %s %d %c %s", team[i].sno, team[i].name, &team[i].age, &team[i].gender, team[i].tel);}//取值printf("%-12s %-10s %-5s %-5s %-15s\n ", "学号", "姓名", "年龄", "性别", "电话");for(i=0; i<5; i++){printf("%-12s %-10s %-5d %-5c %-15s\ n", team[i].sno, team[i].name, team[i].age, team[i].gender, team[i].tel);}//找学号最大的那一个tmp = team[0];for(i=1; i<5; i++){if(strcmp(team[i].sno,tmp.sno) >0 ){tmp = team[i];}}printf("学号最大的队员如下:\n");printf("%-12s %-10s %-5d %-5c %-15s\ n", tmp.sno, , tmp.age, tmp.gender, tmp.tel);}//14.文件读写#include <stdio.h>#include <stdlib.h>//结构定义,用户自定义类型typedef struct student{char sno[20];//学号char name[20];//姓名int age;//年龄char gender;//性别char tel[20];//电话};//文件读写int main(){struct student * s, * p1;//个数未知FILE * fp;int i, n = 0;char buf[1024];//fgets缓冲区//打开文件fp = fopen("e:\\test.txt", "r");while(fgets(buf, 1024, fp) != NULL)n++;fclose(fp);//指向一个可以存储n个student结构的内存空间s = (struct student *)malloc(sizeof(struct student) * n);p1 = s;//不要动头位置s的值//打开文件fp = fopen("e:\\test.txt", "r");for(i=0; i<n; i++){//从文件中读入一行fscanf(fp, "%s %s %d %c %s", p1->sno, p1->name, &p1->age, &p1->gender, p1->tel);p1++;}fclose(fp);p1 = s;for(i=0; i<3; i++){printf("%s %s %d %c %s\n", p1->sno, p1->name, p1->age, p1->gender, p1->tel);}free(s);}//15.输入三角形三边长计算周长和面积#include<stdio.h>#include<math.h>int main(){double area,perimeter,s,a,b,c;printf("请输入三边长a b c:");scanf("%lf%lf%lf",&a,&b,&c);if((a+b>c) && (a+c>b) && (b+c>a)){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));perimeter=a+b+c;printf("area=%.2f,perimeter=%.2f\ n",area,perimeter);}else{printf("三边长无法构成三角形。
C语言入门基础代码(20条案例)下面是20条基础案例:1. 输出Hello, World!#include <stdio.h> // 使用标准输入输出库int main() {printf("Hello, World!\n"); // 输出字符串return 0; // 返回程序执行成功}2. 判断一个数是否为偶数#include <stdio.h> // 使用标准输入输出库int main() {int num; // 定义变量printf("请输入一个整数:");scanf("%d", &num); // 从控制台输入一个整数if(num % 2 == 0) { // 如果余数为0说明是偶数printf("%d 是偶数\n", num);} else {printf("%d 是奇数\n", num);}return 0;}3. 计算两个数的和#include <stdio.h> // 使用标准输入输出库int main() {int a, b; // 定义变量int sum; // 定义变量printf("请输入两个整数:");scanf("%d%d", &a, &b); // 从控制台输入两个整数sum = a + b; // 求和printf("%d + %d = %d\n", a, b, sum); // 输出结果return 0;}4. 求一个数的平方#include <stdio.h> // 使用标准输入输出库int main() {int num; // 定义变量int square; // 定义变量printf("请输入一个整数:");scanf("%d", &num); // 从控制台输入一个整数square = num * num; // 求平方printf("%d 的平方是%d\n", num, square); // 输出结果return 0;}5. 判断一个字符是否为数字#include <stdio.h> // 使用标准输入输出库#include <ctype.h> // 使用字符函数库int main() {char ch; // 定义变量printf("请输入一个字符:");scanf("%c", &ch); // 从控制台输入一个字符if(isdigit(ch)) { // 判断是否为数字printf("%c 是数字\n", ch);} else {printf("%c 不是数字\n", ch);}return 0;}6. 计算数组元素的平均值#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度int sum = 0; // 定义变量int avg; // 定义变量for(int i = 0; i < len; i++) { // 遍历数组sum += arr[i]; // 累加求和}avg = sum / len; // 求平均值printf("数组的平均值是%d\n", avg); // 输出结果return 0;}7. 按照下标访问数组元素#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度for(int i = 0; i < len; i++) { // 遍历数组printf("arr[%d] = %d\n", i, arr[i]); // 输出每个元素}return 0;}8. 使用指针访问数组元素#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度int *p = arr; // 把数组首地址赋给指针变量for(int i = 0; i < len; i++) { // 遍历数组printf("arr[%d] = %d\n", i, *(p + i)); // 输出每个元素}return 0;}9. 求Fibonacci 数列的第n 项#include <stdio.h> // 使用标准输入输出库int main() {int n; // 定义变量int a = 0, b = 1, c; // 定义变量printf("请输入一个正整数:");scanf("%d", &n); // 从控制台输入一个整数for(int i = 1; i <= n; i++) { // 求Fibonacci 数列的第n 项c = a + b;a = b;b = c;}printf("Fibonacci 数列的第%d 项是%d\n", n, a); // 输出结果return 0;}10. 使用递归计算阶乘#include <stdio.h> // 使用标准输入输出库int factorial(int n) { // 定义递归函数if(n == 0 || n == 1) {return 1;} else {return n * factorial(n - 1);}}int main() {int n; // 定义变量printf("请输入一个非负整数:");scanf("%d", &n); // 从控制台输入一个整数int result = factorial(n); // 调用递归函数计算阶乘printf("%d 的阶乘是%d\n", n, result); // 输出结果return 0;}11. 判断一个数是否是质数#include <stdio.h>#include <stdbool.h>bool isPrime(int num) {if(num <= 1) {return false; // 小于等于1的数都不是质数}for(int i = 2; i * i <= num; i++) { // 只要从2到根号num遍历就可以了if(num % i == 0) {return false; // 如果存在因子,则不是质数}}return true;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);bool result = isPrime(num); // 调用isPrime函数if(result) {printf("%d 是质数\n", num);} else {printf("%d 不是质数\n", num);}return 0;}12. 计算圆的面积和周长#include <stdio.h>const double PI = 3.1415926;int main() {double r, area, perimeter;printf("请输入圆的半径:");scanf("%lf", &r);area = PI * r * r; // 计算面积perimeter = 2 * PI * r; // 计算周长printf("圆的面积是%.2f,周长是%.2f\n", area, perimeter);return 0;}13. 计算斐波那契数列的前n 项#include <stdio.h>int main() {int n;printf("请输入要输出的斐波那契数列项数:");scanf("%d", &n);int a = 0, b = 1, c; // 定义三个变量for(int i = 1; i <= n; i++) { // 输出前n项斐波那契数列printf("%d ", a);c = a + b;a = b;b = c;}printf("\n"); // 换行return 0;}14. 嵌套循环输出九九乘法表#include <stdio.h>int main() {for(int i = 1; i <= 9; i++) { // 控制行数for(int j = 1; j <= i; j++) { // 控制列数printf("%d*%d=%-2d ", j, i, i * j); // 左对齐输出}printf("\n"); // 换行}return 0;}15. 获得数组的最大值和最小值#include <stdio.h>int main() {int arr[] = {3, 5, 8, 1, 4, 9, 6, 2, 7};int len = sizeof(arr) / sizeof(int);int max = arr[0], min = arr[0]; // 假设第一个元素既是最大值也是最小值for(int i = 1; i < len; i++) {if(arr[i] > max) { // 更新最大值max = arr[i];}if(arr[i] < min) { // 更新最小值min = arr[i];}}printf("数组的最大值是%d,最小值是%d\n", max, min);return 0;}16. 判断一个数是否为回文数```c#include <stdio.h>#include <stdbool.h>bool isPalindrome(int num) {if(num < 0) { // 负数不是回文数return false;}int temp = num, reversed = 0; // 定义需要用到的变量while(temp != 0) { // 反转整数reversed = reversed * 10 + temp % 10;temp /= 10;}return (num == reversed); // 如果反转后等于原来的数,则为回文数}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);bool result = isPalindrome(num);if(result) {printf("%d 是回文数\n", num);} else {printf("%d 不是回文数\n", num);}return 0;}17. 将字符串反转输出#include <stdio.h>#include <string.h>int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);int len = strlen(str);for(int i = len - 1; i >= 0; i--) { // 倒序输出printf("%c", str[i]);}printf("\n"); // 换行return 0;}18. 将一个二维数组按列排序#include <stdio.h>void sortCols(int arr[][3], int rows) {for(int j = 0; j < 3; j++) { // 按列排序for(int i = 0; i < rows - 1; i++) {for(int k = i + 1; k < rows; k++) {if(arr[i][j] > arr[k][j]) { // 比较大小并交换int temp = arr[i][j];arr[i][j] = arr[k][j];arr[k][j] = temp;}}}}}int main() {int arr[][3] = {{2, 5, 9}, {7, 6, 1}, {4, 3, 8}};int rows = sizeof(arr) / sizeof(arr[0]); // 计算数组的行数sortCols(arr, rows); // 调用函数排序for(int i = 0; i < rows; i++) { // 输出排序后的数组for(int j = 0; j < 3; j++) {printf("%d ", arr[i][j]);}printf("\n"); // 换行}return 0;}19. 判断一个字符串是否为回文串#include <stdio.h>#include <string.h>#include <stdbool.h>bool isPalindrome(char str[]) {int len = strlen(str);for(int i = 0; i < len / 2; i++) { // 判断左右字符是否一样if(str[i] != str[len - i - 1]) {return false;}}return true;}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);bool result = isPalindrome(str); // 调用函数判断是否为回文串if(result) {printf("%s 是回文串\n", str);} else {printf("%s 不是回文串\n", str);}return 0;}20. 将一个整数转换成二进制数并输出#include <stdio.h>void decToBin(int num) {if(num > 1) { // 递归调用decToBin(num / 2);}printf("%d", num % 2); // 每次输出余数}int main() {int num;printf("请输入一个十进制数:");scanf("%d", &num);printf("%d 的二进制数为", num);decToBin(num); // 调用函数输出二进制数printf("\n"); // 换行return 0;}。
------------------------------------------------------------------------摘自宋鲁生程序设计大赛乘法口诀表#include <stdio.h>#include <conio.h>void main(void){int i,j,x,y;clrscr();printf("\n\n * * * 乘法口诀表* * * \n\n");x=9;y=5;for(i=1;i<=9;i++){gotoxy(x,y);printf("%2d ",i);x+=3;}x=7;y=6;for(i=1;i<=9;i++){gotoxy(x,y);printf("%2d ",i);y++;}x=9;y= 6;for(i=1;i<=9;i++){for(j=1;j<=9;j++){gotoxy(x,y);printf("%2d ",i*j);y++;}y-=9;x+=3;}printf("\n\n");}用一维数组统计学生成绩#include <stdio.h>void main(){char SelectKey,CreditMoney,DebitMoney;while(1){do{clrscr();puts("=========================");puts("| Please select key: |");puts("| 1. Quary |");puts("| 2. Credit |");puts("| 3. Debit |");puts("| 4. Return |");puts("=========================");SelectKey = getch();}while( SelectKey!='1' && SelectKey!='2' && SelectKey!='3' &&SelectKey!='4' );switch(SelectKey){case '1':clrscr();puts("================================");puts("| Your balance is $1000. |");puts("| Press any key to return... |");puts("================================");getch();break;case '2':do{clrscr();puts("==================================");puts("| Please select Credit money: |");puts("| 1. $50 |");puts("| 2. $100 |");puts("| 3. Return |");puts("==================================");CreditMoney = getch();}while( CreditMoney!='1' && CreditMoney!='2' && CreditMoney!='3' );switch(CreditMoney){case '1':clrscr();puts("=========================================");puts("| Your Credit money is $50,Thank you! |");puts("| Press any key to return... |");puts("=========================================");getch();break;case '2':clrscr();puts("==========================================");puts("| Your Credit money is $100,Thank you! |");puts("| Press any key to return... |");puts("==========================================");getch();break;case '3':break;}break;case '3':do{clrscr();puts("====================================");puts("| Please select Debit money: |");puts("| 1. $50 |");puts("| 2. $100 |");puts("| 3. $500 |");puts("| 4. $1000 |");puts("| 5. Return |");puts("====================================");DebitMoney = getch();}while( DebitMoney!='1' && DebitMoney!='2' && DebitMoney!='3' &&DebitMoney!='4' && DebitMoney!='5' );switch(DebitMoney){case '1':clrscr();puts("===========================================");puts("| Your Debit money is $50,Thank you! |");puts("| Press any key to return... |");puts("===========================================");getch();break;case '2':clrscr();puts("===========================================");puts("| Your Debit money is $100,Thank you! |");puts("| Press any key to return... |");puts("===========================================");getch();break;case '3':clrscr();puts("===========================================");puts("| Your Debit money is $500,Thank you! |");puts("| Press any key to return... |");puts("===========================================");getch();break;case '4':clrscr();puts("===========================================");puts("| Your Debit money is $1000,Thank you! |");puts("| Press any key to return... |");puts("===========================================");getch();break;case '5':break;}break;case '4':clrscr();puts("================================");puts("| Thank you for your using! |");puts("| Good bye! |");puts("================================");return;}}模拟ATM(自动柜员机)界面#include <stdio.h> void main(){int Password=0,Number=0,price=58,i=0;while( Password != 1234 ){if( i >= 3 )return;i++;puts("Please input Password: ");scanf("%d",&Password);}i=0;while( Number!=price ){do{puts("Please input a number between 1 and 100: ");scanf("%d",&Number);printf("Your input number is %d\n",Number);}while( !(Number>=1 && Number<=100) );if( Number >= 90 ){printf("Too Bigger! Press any key to try again!\n");}else if( Number >= 70 && Number < 90 ){printf("Bigger!\n");}else if( Number >= 1 && Number <= 30 ){printf("Too Small! Press any key to try again!\n");}else if( Number > 30 && Number <= 50 ){printf("Small! Press any key to try again!\n");}else{if( Number == price ){printf("OK! You are right! Bye Bye!\n");}else if( Number < price ){printf("Sorry,Only a little smaller! Press any key to try again!\n");}else if( Number > price ){printf(" Sorry, Only a little bigger! Press any key to try again!\n");}getch();}}用二维数组实现矩阵转置/* 用二维数组实现矩阵的转置*/#include <stdio.h>#define ROW 3#define COL 4main(){int matrixA[ROW][COL],matrixB[COL][ROW];int i,j; clrscr();printf("Enter elements of the matrixA,");printf("%d*%d:\n",ROW,COL);for( i=0; i<ROW; i++ ){for( j=0; j<COL; j++ ){scanf("%d",&matrixA[i][j]);}}for( i=0; i<ROW; i++ ){for( j=0; j<COL; j++ ){matrixB[j][i] = matrixA[i][j];}}printf("MatrixB,");printf("%d*%d:\n",COL,ROW);for( i=0; i<COL; i++ ){for( j=0; j<ROW; j++ ){printf("%8d",matrixB[i][j]);}printf("\n");}printf("\n Press Any Key to Quit... \n");getch();}求解二维数组的最大/最小元素#define MAXN 20int a[MAXN][MAXN];main(){int min, /* 存储最小值*/max; /* 存储最大值*/int row,col,n;clrscr();printf("Please input the order of the matrix:\n");/* 输入方阵的阶次*/ scanf("%d",&n);printf("Please input the elements of the matrix,\n from a[0][0] to a[%d][%d]:\n",n-1,n-1);for(row=0;row<n;row++)for(col=0;col<n;col++)scanf("%d",&a[row][col]);for(min=a[0][0],row=0;row<n;row++){/* 从每行选出最大数*/for(max=a[row][0],col=1;col<n;col++)/*从row行选出最大数*/if(max<a[row][col])max=a[row][col];if(min>max)/* 保存至row行的最小数*/min=max;}printf("The minimum of maximum number is %d\n",min);for(max=a[0][0],row=0;row<n;row++){/* 每行选出最小数*/for(min=a[row][0],col=1;col<n;col++)/* 从row行选出最小数*/ if(min>a[row][col])min=a[row][col];if(max<min)/*保存至row行的最大数*/max=min;}printf("The maximum of minimum numbers is %d\n",max);printf("\nPress any key to quit...\n");getch();}利用数组求前n个质数#define N 50main(){int primes[N];int pc,m,k; clrscr();printf("\n The first %d prime numbers are:\n",N);primes[0]=2;/*2是第一个质数*/pc =1;/*已有第一个质数*/m =3;/*被测试的数从3开始*/while(pc<N){/*调整m使它为下一个质数*/k=0;while(primes[k]*primes[k]<=m)if(m%primes[k]==0){/*m是合数*/m+=2;/*让m取下一个奇数*/k=1;/*不必用primes[0]=2去测试m,所以k从一开始*/}elsek++;/*继续用下一个质数去测试*/primes[pc++]=m;m+=2;/*除2外,其余质数均是奇数*/}/*输出primes[0]至primes[pc-1]*/for(k=0;k<pc;k++)printf("%4d",primes[k]);printf("\n\n Press any key to quit...\n ");getch();}编制万年历#include "stdio.h"long int f(int year,int month){/*f(年,月)=年-1,如月<3;否则,f(年,月)=年*/if(month<3) return year-1;else return year;} long int g(int month){/*g(月)=月+13,如月<3;否则,g(月)=月+1*/if(month<3) return month+13;else return month+1;} long int n(int year,int month,int day){/*N=1461*f(年、月)/4+153*g(月)/5+日*/return 1461L*f(year,month)/4+153L*g(month)/5+day;} int w(int year,int month,int day){/*w=(N-621049)%7(0<=w<7)*/return(int)((n(year,month,day)%7-621049L%7+7)%7);} int date[12][6][7];int day_tbl[ ][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};main(){int sw,leap,i,j,k,wd,day;int year;/*年*/char title[]="SUN MON TUE WED THU FRI SAT";clrscr();printf("Please input the year whose calendar you want to know: ");/*输入年*/scanf("%d%*c",&year);/*输入年份值和掠过值后的回车*/sw=w(year,1,1);leap=year%4==0&&year%100||year%400==0;/*判闰年*/for(i=0;i<12;i++)for(j=0;j<6;j++)for(k=0;k<7;k++)date[i][j][k]=0;/*日期表置0*/for(i=0;i<12;i++)/*一年十二个月*/for(wd=0,day=1;day<=day_tbl[leap][i];day++){/*将第i+1月的日期填入日期表*/date[i][wd][sw]=day;sw=++sw%7;/*每星期七天,以0至6计数*/if(sw==0) wd++;/*日期表每七天一行,星期天开始新的一行*/} printf("\n|==================The Calendar of Year %d=====================|\n|",year);for(i=0;i<6;i++){/*先测算第i+1月和第i+7月的最大星期数*/for(wd=0,k=0;k<7;k++)/*日期表的第六行有日期,则wd!=0*/wd+=date[i][5][k]+date[i+6][5][k];wd=wd?6:5;printf("%2d %s %2d %s |\n|",i+1,title,i+7,title);for(j=0;j<wd;j++){printf(" ");/*输出四个空白符*//*左栏为第i+1月,右栏为第i+7月*/for(k=0;k<7;k++)if(date[i][j][k])printf("%4d",date[i][j][k]);else printf(" ");printf(" ");/*输出十个空白符*/for(k=0;k<7;k++)if(date[i+6][j][k])printf("%4d",date[i+6][j][k]);else printf(" ");printf(" |\n|");}/*scanf("%*c");/*键入回车输出下一个月的日历*/}puts("=================================================================|") ;puts("\n Press any key to quit...");getch();}对数组元素排序rest(int a[], int n){int i,low,high,t; for(i=0,low=0,high=n-1;i<=high;) {if(a[i]>0){/*a[i]与a[high]交换,随之high减1*/t=a[i];a[i]=a[high];a[high]=t;high--;}else if(a[i]==0)i++; /* 掠过该元素*/else{/*a[i]与a[low]交换,随之low增1, i增1*/t=a[i];a[i]=a[low];a[low]=t;low++;i++;}}}int s[]={8,4,0,-1,6,0,-5};main(){int i;clrscr();printf("\n The arry before rest is:\n");for(i=0;i<sizeof(s)/sizeof(s[0]);i++)printf("%4d",s[i]);rest(s,sizeof(s)/sizeof(s[0]));printf("\n The arry after rest is:\n");for(i=0;i<sizeof(s)/sizeof(s[0]);i++)printf("%4d",s[i]);printf("\n Press any key to quit...\n");getch();}任意进制数的转换/* 函数trans将无符号整数n翻译成d(2<=d<=16)进制表示的字符串s */ #define M sizeof(unsigned int)*8int trans(unsigned n, int d, char s[]){static char digits[] ="0123456789ABCDEF"; /* 十六进制数字的字符*/char buf[M+1];int j, i = M;if(d<2||d>16){s[0]='\0'; /* 不合理的进制,置s为空字符串*/return 0; /* 不合理的进制,函数返回0 */}buf[i]='\0';do{buf[--i]=digits[n%d]; /*译出最低位,对应字符存入对应工作数组中*/n/=d;}while(n);/* 将译出在工作数组中的字符串复制到s */for(j=0;(s[j]=buf[i])!='\0';j++,i++);/* 其中控制条件可简写成s[j]=buf[i] */return j;}/* 主函数用于测试函数trans() */main(){unsigned int num = 253;int scale[]={2,3,10,16,1};char str[33];int i;clrscr();for(i=0;i<sizeof(scale)/sizeof(scale[0]);i++){if(trans(num,scale[i],str))printf("%5d = %s(%d)\n",num,str,scale[i]);elseprintf("%5d => (%d) Error! \n",num,scale[i]);}printf("\n Press any key to quit...\n");getch();}判断回文数/* 函数circle用于判断正整数n的d进制数表示形式是否是回文数*/ int circle(int n, int d){int s=0,m=n;while(m){s=s*d+m%d;m/=d;}return s==n;}/* main函数用于测试circle函数*/int num[]={232,27,851};int scale[]={2,10,16};main(){int i,j;clrscr();for(i=0;i<sizeof(num)/sizeof(num[0]);i++)for(j=0;j<sizeof(scale)/sizeof(scale[0]);j++)if(circle(num[i],scale[j]))printf("%d -> (%d) is a Circle Number!\n",num[i],scale[j]);elseprintf("%d -> (%d) is not a Circle Number!\n",num[i],scale[j]);printf("\n Press any key to quit...\n");getch();}求解钢材切割的最佳订单#include <stdio.h>#define N 20#define DELTA 2int bestlen;int bestsele[N];int sele[N];int n;int orderlen[N];int total;main(){int i;clrscr();printf("\n Please enter total length of the steel:\n");/* 输入钢材总长*/scanf("%d",&total);printf("\n Please enter number of order:\n"); /* 输入定单数*/ scanf("%d",&n);printf("\n Please enter the orders:\n"); /* 输入各定单*/for(i=0;i<n;i++)scanf("%d",&orderlen[i]);bestlen=0; /*最佳解用料的初值*/for(i=0;i<n;i++)sele[i]=bestsele[i]=0; /*置当前选择和最佳选择初值*/try(); /* 调用函数求解*/for(i=0;i<n;i++) /* 输出结果*/if(bestsele[i])printf("order %d length = %d\n",i+1,orderlen[i]);printf("\n Press any key to quit...");getch();}try(){int i,len;for(len=i=0;i<n;i++) /* 求当前选中的用料量*/if(sele[i])len+=orderlen[i]+DELTA;if(len-DELTA<=total) /* 注意最后一段可能不需要切割*/{if(bestlen < len){/* 找到一个更好的解*/bestlen = len;for(i=0;i<n;i++)bestsele[i]=sele[i];}for(i=0;i<n;i++) /* 对所有未选定单逐一作选中尝试循环*/if(!sele[i]){sele[i]=1; /* 做选中尝试*/try();sele[i]=0;}}}指向数组的指针main(){int x,y,z; /* 定义三个int型变量*/int *xp = &x, /* 定义指针变量xp,并赋值为x的地址,使xp指向x */ *yp = &y, /* 定义指针变量yp,并赋值为y的地址,使yp指向y */*zp = &z; /* 定义指针变量zp,并赋值为z的地址,使zp指向z */int t;printf("\nPlease input x,y,z:\n");scanf("%d%d%d",xp,yp,zp); /* 通过变量的指针,为变量输入值*/ if(*xp>*yp) /* 通过指向变量的指针引用变量的值*/{t=*xp; /* 通过指向变量的指针引用变量的值*/*xp=*yp;/* 通过指向变量x的指针xp,引用变量x的值*/*yp=t; /* 通过指向变量y的指针yp,引用变量y的值*/}if(*xp>*zp) /* 通过指向变量的指针,引用变量的值*/{t=*xp; /* 通过指向变量x的指针xp,引用变量x的值*/*xp=*zp;/* 通过指向变量x的指针xp,引用变量x的值*/*zp=t; /* 通过指向变量z的指针zp,引用变量z的值*/}if(*yp>*zp) /* 通过指向变量的指针,引用变量的值*/{t=*yp; /* 通过指向变量的指针,引用变量的值*/*yp=*zp;/* 通过指向变量y的指针yp,引用变量y的值*/*zp=t;/* 通过指向变量z的指针zp,引用变量z的值*/}printf("x = %d\ty = %d\tz = %d\n",x,y,z);printf("\nPress any key to quit...\n");getch();}阿拉伯数字转换为罗马数字#include <stdio.h>#define ROWS 4#define COLS 4int nums[ROWS][COLS]={{1000,1000,1000,1000},{900,500,400,100},{90,50,40,10},{9,5,4,1}};char *roms[ROWS][COLS]={{"m","m","m","m"}, {"cm","d","cd","c"},{"xc","l","xl","x"},{"ix","v","iv","i"}}; main(int argc,char *argv[ ]){int low,high;char roman[25]; if(argc<2){ printf("Usage:roman decimal_number\n");/*运行程序需带整数参数*/}high=low=atoi(argv[1]);/*将第一个参数转换成整数*/checknum(low);if(argc>2){/*带两个参数*/high=atoi(argv[2]);checknum(high);if(low>high){low=high;high=atoi(argv[1]);}}elselow=1;for(;low<=high;low++){to_roman(low,roman);printf("%d\t%s\n",low,roman);}} checknum(int val)/*检查参数合理性*/{if(val<1||val>9999){printf("The number must be in range 1..9999.\n");exit(0);}}to_roman(int decimal,char roman[ ])/*将整数转换成罗马数字表示*/ {int power,index;roman[0]='\0';for(power=0;power<ROWS;power++)for(index=0;index<COLS;index++)while(decimal>=nums[power][index]){strcat(roman,roms[power][index]);decimal-=nums[power][index];}}通讯录的输入输出#include <stdio.h>#define ZIPLEN 10#define PHONLEN 15/*struct addr类型定义*/ struct addr{char *name;/*姓名*/char *address;/*地址*/char zip[ZIPLEN];/*邮政编码*/char phone[PHONLEN];/*电话号码*/}; main()/*本主函数示意上述输入输出函数的用法*/{struct addr p[100];int i,j;clrscr();for(i=0;readaddr(p+i);i++);for(j=0;j<i;j++) writeaddr(p+j);puts("\n Press any key to quit...");getch();} /* 函数readaddr用于输入一个通信录函数*/int readaddr(struct addr *dpt){int len;char buf[120];/*输入字符串的缓冲区*/ printf("\nPlease input theName:\n");/*输入姓名*/if(scanf("%s",buf)==1){len=strlen(buf);dpt->name=(char *)malloc(len+1);/*申请存贮姓名的空间*/ strcpy(dpt->name,buf);}else return 0;/*Ctrl+Z结束输入*/printf("Please input the Address:\n");/*输入地址*/if(scanf("%s",buf)==1){len=strlen(buf);dpt->address=(char *)malloc(len+1);/*申请存贮地址的空间*/ strcpy(dpt->address,buf);}else{/*Ctrl+Z结束输入*/free(dpt->name);/*释放存贮姓名的空间*/return 0;}printf("Please input the Zip code:\n");/*输入邮编*/if(scanf("%s",buf)==1)strncpy(dpt->zip,buf,ZIPLEN-1);else{free(dpt->name);/*释放存贮姓名的空间*/free(dpt->address);/*释放存贮地址的空间*/return 0;/*Ctrl+Z结束输入*/}printf("Please input the Phone number:\n");/*输入电话号码*/ if(scanf("%s",buf)==1)strncpy(dpt->phone,buf,PHONLEN-1);else{free(dpt->name);free(dpt->address);return 0;/*Ctrl+Z结束输入*/}return 1;} /* 函数writeaddr用于输出通讯录*/int writeaddr(struct addr*dpt){printf("Name : %s\n", dpt->name);/*输出姓名*/printf("Address : %s\n", dpt->address);/*输出地址*/printf("Zip : %s\n", dpt->zip);/*输出邮编*/printf("Phone : %s\n\n", dpt->phone);/*输出电话号码*/}扑克牌的结构表示enum suits{CLUBS,DIAMONDS,HEARTS,SPADES}; struct card{enum suits suit;char value[3];};struct card deck[52];char cardval[][3]= {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};char suitsname[][9]={"CLUBS","DIAMONDS","HEARTS","SPADES"}; main() {int i,j;enum suits s;clrscr();for(i=0;i<=12;i++)for(s=CLUBS;s<=SPADES;s++){j=i*4+s;deck[j].suit=s;strcpy(deck[j].value,cardval[i]);}for(j=0;j<52;j++)printf("(%s%3s)%c",suitsname[deck[j].suit],deck[j].value,j%4==3?'\n':'\t');puts("\nPress any key to quit...");getch();}用“结构”统计学生成绩#include <stdio.h>#define N 200#define SCORES 5#define NUMLEN 10struct std_type{char no[NUMLEN];/*学号*/char *name;/*名字符串指针*/int scores[SCORES];/*五门功课的成绩*/};struct std_type students[N];int order[N];int total[N]; /*[函数]输入一个学生信息函数*/int readastu(struct std_type *spt){int len,j;char buf[120];/*输入字符串的缓冲区*/ printf("\nNumber : ");/*输入学号*/if(scanf("%s",buf)==1)strncpy(spt->no,buf,NUMLEN-1);elsereturn 0;/*Ctrl+Z结束输入*/printf("Name : ");/*输入姓名*/if(scanf("%s",buf)==1){len=strlen(buf);spt->name=(char *)malloc(len+1);/*申请存贮姓名的空间*/ strcpy(spt->name,buf);}else return 0;/*Ctrl+Z结束输入*/printf("Scores : ");/*输入成绩*/for(j=0;j<SCORES;j++)if(scanf("%d",spt->scores+j)!=1)break;if(j==0)/*一个成绩也未输入*/{free(spt->name);/*释放存贮姓名的空间*/return 0;}for(;j<SCORES;j++)/*少数未输入的成绩用0分代之*/ spt->scores[j]=0;return 1;} /*[函数]输出一个学生信息的函数*/int writeastu(struct std_type *spt){int i; printf("Number : %s\n",spt->no);/*输出学号*/printf("Name : %s\n",spt->name);/*输出姓名*/printf("Scores : ");/*输出成绩*/for(i=0;i<SCORES;i++)printf("%4d",spt->scores[i]);printf("\n\n");} main(){int n,i,j,t; clrscr();for(n=0;readastu(students+n);n++);/*采用冒泡法对学生信息数组排序*/for(i=0;i<n;i++){order[i]=i;/*预置第i个输入的学生*/for(t=0,j=0;j<SCORES;j++)/*求第i个学生的总分*/t+=students[i].scores[j];total[i]=t;}/*冒泡排序*/for(i=0;i<n-1;i++)/*共扫视n-1遍*/for(j=0;j<n-1-i;j++)if(total[order[j]]<total[order[j+1]]){/*交换名次*/t=order[j];order[j]=order[j+1];order[j+1]=t;}for(j=0;j<n;j++)/*输出*/writeastu(students+order[j]);printf("\n Press any key to quit...\n");getch();}报数游戏#include <stdio.h>struct ele{int no;struct ele *link;}main(){int n,m,i;struct ele *h,*u,*p;clrscr();printf("Please input n&m:\n");scanf("%d%d",&n,&m);/*输入n和m*/h=u=(struct ele *)malloc(sizeof(struct ele));/*形成首表元*/ h->no=1;for(i=2;i<=n;i++)/*形成其余的n-1个表元*/{u->link=(struct ele *)malloc(sizeof(struct ele));u=u->link;u->no=i;/*第i个表元置编号i*/}u->link=h;/*末表元后继首表元,形成环*/puts("\nThe numbers of who will quit the cycle in turn are:"); while(n){for(i=1;i<m;i++)/*掠过m-1个表元*/u=u->link;p=u->link;/*p指向第m个表元*/u->link=p->link;/*第m个表元从环中脱钩*/printf("%4d",p->no);free(p);/*释放第m个表元占用的空间*/n--;}printf("\n\n Press any key to quit...\n");getch();}学生成绩管理程序/*学生成绩管理程序编制一个统计学生考试分数的管理程序。
摘自宋鲁生程序设计大赛乘法口诀表#include <stdio.h>#include <conio.h>void main(void){int i,j,x,y;clrscr();printf("\n\n * * * 乘法口诀表* * * \n\n");x=9;y=5;for(i=1;i<=9;i++){gotoxy(x,y);printf("%2d ",i);x+=3;}x=7;y=6;for(i=1;i<=9;i++){gotoxy(x,y);printf("%2d ",i);y++;}x=9;y= 6;for(i=1;i<=9;i++){for(j=1;j<=9;j++){gotoxy(x,y);printf("%2d ",i*j);y++;}y-=9;x+=3;}printf("\n\n");}用一维数组统计学生成绩#include <stdio.h>void main(){char SelectKey,CreditMoney,DebitMoney;while(1){do{clrscr();puts("=========================");puts("| Please select key: |");puts("| 1. Quary |");puts("| 2. Credit |");puts("| 3. Debit |");puts("| 4. Return |");puts("=========================");SelectKey = getch();}while( SelectKey!='1' && SelectKey!='2' && SelectKey!='3' &&SelectKey!='4' );switch(SelectKey){case '1':clrscr();puts("================================");puts("| Your balance is $1000. |");puts("| Press any key to return... |");puts("================================");getch();break;case '2':do{clrscr();puts("==================================");puts("| Please select Credit money: |");puts("| 1. $50 |");puts("| 2. $100 |");puts("| 3. Return |");puts("==================================");CreditMoney = getch();}while( CreditMoney!='1' && CreditMoney!='2' && CreditMoney!='3' );switch(CreditMoney){}break; case '3':do{ case '1':clrscr();puts("=========================================");puts("| Your Credit money is $50,Thank you! |");puts("| Press any key to return... |");puts("=========================================");getch();break;case '2':clrscr();puts("==========================================");puts("| Your Credit money is $100,Thank you! |");puts("| Press any key to return... |");puts("==========================================");getch();break;case '3':break;clrscr();puts("====================================");puts("| Please select Debit money: |");puts("| 1. $50 |");puts("| 2. $100 |");puts("| 3. $500 |");puts("| 4. $1000 |");puts("| 5. Return |");puts("====================================");DebitMoney = getch();}while( DebitMoney!='1' && DebitMoney!='2' && DebitMoney!='3' &&DebitMoney!='4' && DebitMoney!='5' );switch(DebitMoney){case '1':clrscr();puts("===========================================");puts("| Your Debit money is $50,Thank you! |");puts("| Press any key to return... |");puts("===========================================");getch();break;case '2':clrscr();puts("===========================================");puts("| Your Debit money is $100,Thank you! |");puts("| Press any key to return... |");puts("===========================================");getch();break;case '3':clrscr();puts("===========================================");puts("| Your Debit money is $500,Thank you! |");puts("| Press any key to return... |");puts("===========================================");getch();break;case '4':clrscr();puts("===========================================");puts("| Your Debit money is $1000,Thank you! |");puts("| Press any key to return... |");puts("===========================================");getch();break;case '5':break;}break;case '4':clrscr();puts("================================");puts("| Thank you for your using! |");puts("| Good bye! |");puts("================================");return;}}模拟ATM(自动柜员机)界面#include <stdio.h> void main(){int Password=0,Number=0,price=58,i=0;while( Password != 1234 ){if( i >= 3 )return;}i=0; i++;puts("Please input Password: "); scanf("%d",&Password);while( Number!=price ){do{puts("Please input a number between 1 and 100: ");scanf("%d",&Number);printf("Your input number is %d\n",Number);}while( !(Number>=1 && Number<=100) );if( Number >= 90 ){printf("Too Bigger! Press any key to try again!\n");}else if( Number >= 70 && Number < 90 ){printf("Bigger!\n");}else if( Number >= 1 && Number <= 30 ){printf("Too Small! Press any key to try again!\n");}else if( Number > 30 && Number <= 50 ){}else{printf("Small! Press any key to try again!\n");if( Number == price ){printf("OK! You are right! Bye Bye!\n");}else if( Number < price ){printf("Sorry,Only a little smaller! Press any key to try again!\n");}else if( Number > price ){printf(" Sorry, Only a little bigger! Press any key to try again!\n");}getch();}}用二维数组实现矩阵转置/* 用二维数组实现矩阵的转置*/#include <stdio.h>#define ROW 3#define COL 4main(){int matrixA[ROW][COL],matrixB[COL][ROW];int i,j; clrscr();printf("Enter elements of the matrixA,");printf("%d*%d:\n",ROW,COL);for( i=0; i<ROW; i++ ){for( j=0; j<COL; j++ ){scanf("%d",&matrixA[i][j]);}}for( i=0; i<ROW; i++ ){for( j=0; j<COL; j++ ){matrixB[j][i] = matrixA[i][j];}}printf("MatrixB,");printf("%d*%d:\n",COL,ROW);for( i=0; i<COL; i++ ){for( j=0; j<ROW; j++ ){printf("%8d",matrixB[i][j]);}printf("\n");}printf("\n Press Any Key to Quit... \n");getch();}求解二维数组的最大/最小元素#define MAXN 20int a[MAXN][MAXN];main(){int min, /* 存储最小值*/max; /* 存储最大值*/int row,col,n;clrscr();printf("Please input the order of the matrix:\n");/* 输入方阵的阶次*/ scanf("%d",&n);printf("Please input the elements of the matrix,\n from a[0][0] to a[%d][%d]:\n",n-1,n-1);for(row=0;row<n;row++)for(col=0;col<n;col++)scanf("%d",&a[row][col]);for(min=a[0][0],row=0;row<n;row++){/* 从每行选出最大数*/for(max=a[row][0],col=1;col<n;col++)/*从row 行选出最大数*/if(max<a[row][col])max=a[row][col];if(min>max)/* 保存至row 行的最小数*/min=max;}printf("The minimum of maximum number is %d\n",min);for(max=a[0][0],row=0;row<n;row++){/* 每行选出最小数*/for(min=a[row][0],col=1;col<n;col++)/* 从row 行选出最小数*/ if(min>a[row][col])min=a[row][col];if(max<min)/*保存至row 行的最大数*/max=min;}printf("The maximum of minimum numbers is %d\n",max);printf("\nPress any key to quit...\n");getch();}利用数组求前n 个质数#define N 50main(){int primes[N];int pc,m,k; clrscr();printf("\n The first %d prime numbers are:\n",N);primes[0]=2;/*2 是第一个质数*/pc =1;/*已有第一个质数*/m =3;/*被测试的数从3 开始*/while(pc<N){/*调整m 使它为下一个质数*/k=0;while(primes[k]*primes[k]<=m)if(m%primes[k]==0){/*m 是合数*/m+=2;/*让m 取下一个奇数*/k=1;/*不必用primes[0]=2 去测试m,所以k 从一开始*/}elsek++;/*继续用下一个质数去测试*/primes[pc++]=m;m+=2;/*除2 外,其余质数均是奇数*/}/*输出primes[0]至primes[pc-1]*/for(k=0;k<pc;k++)printf("%4d",primes[k]);printf("\n\n Press any key to quit...\n ");getch();}编制万年历#include "stdio.h"long int f(int year,int month){/*f(年,月)=年-1,如月<3;否则,f(年,月)=年*/if(month<3) return year-1;else return year;} long int g(int month){/*g(月)=月+13,如月<3;否则,g(月)=月+1*/if(month<3) return month+13;else return month+1;} long int n(int year,int month,int day){/*N=1461*f(年、月)/4+153*g(月)/5+日*/return 1461L*f(year,month)/4+153L*g(month)/5+day;} int w(int year,int month,int day){/*w=(N-621049)%7(0<=w<7)*/return(int)((n(year,month,day)%7-621049L%7+7)%7);} int date[12][6][7];int day_tbl[ ][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};main(){int sw,leap,i,j,k,wd,day;int year;/*年*/char title[]="SUN MON TUE WED THU FRI SAT";clrscr();printf("Please input the year whose calendar you want to know: ");/*输入年*/scanf("%d%*c",&year);/*输入年份值和掠过值后的回车*/sw=w(year,1,1);leap=year%4==0&&year%100||year%400==0;/*判闰年*/for(i=0;i<12;i++)for(j=0;j<6;j++)for(k=0;k<7;k++)date[i][j][k]=0;/*日期表置0*/for(i=0;i<12;i++)/*一年十二个月*/for(wd=0,day=1;day<=day_tbl[leap][i];day++){/*将第i+1 月的日期填入日期表*/date[i][wd][sw]=day;sw=++sw%7;/*每星期七天,以0 至6 计数*/if(sw==0) wd++;/*日期表每七天一行,星期天开始新的一行*/} printf("\n|==================The Calendar of Year %d=====================|\n|",year);for(i=0;i<6;i++){/*先测算第i+1 月和第i+7 月的最大星期数*/for(wd=0,k=0;k<7;k++)/*日期表的第六行有日期,则wd!=0*/wd+=date[i][5][k]+date[i+6][5][k];wd=wd?6:5;printf("%2d %s %2d %s |\n|",i+1,title,i+7,title);for(j=0;j<wd;j++){printf(" ");/*输出四个空白符*//*左栏为第i+1 月,右栏为第i+7 月*/for(k=0;k<7;k++)if(date[i][j][k])printf("%4d",date[i][j][k]);else printf(" ");printf(" ");/*输出十个空白符*/for(k=0;k<7;k++)if(date[i+6][j][k])printf("%4d",date[i+6][j][k]);else printf(" ");printf(" |\n|");}/*scanf("%*c");/*键入回车输出下一个月的日历*/}puts("=================================================================|") ;puts("\n Press any key to quit...");getch();}对数组元素排序rest(int a[], int n){int i,low,high,t; for(i=0,low=0,high=n-1;i<=high;) {if(a[i]>0){/*a[i]与a[high]交换,随之high 减1*/t=a[i];a[i]=a[high];a[high]=t;high--;}else if(a[i]==0)i++; /* 掠过该元素*/else{/*a[i]与a[low]交换,随之low 增1, i 增1*/t=a[i];a[i]=a[low];a[low]=t;low++; i++;}}}int s[]={8,4,0,-1,6,0,-5};main(){int i;clrscr();printf("\n The arry before rest is:\n");for(i=0;i<sizeof(s)/sizeof(s[0]);i++)printf("%4d",s[i]);rest(s,sizeof(s)/sizeof(s[0]));printf("\n The arry after rest is:\n");for(i=0;i<sizeof(s)/sizeof(s[0]);i++)printf("%4d",s[i]);printf("\n Press any key to quit...\n");getch();}任意进制数的转换/* 函数trans 将无符号整数n 翻译成d(2<=d<=16)进制表示的字符串s */ #define M sizeof(unsigned int)*8int trans(unsigned n, int d, char s[]){static char digits[] ="0123456789ABCDEF"; /* 十六进制数字的字符*/char buf[M+1];int j, i = M;if(d<2||d>16){s[0]='\0'; /* 不合理的进制,置s 为空字符串*/return 0; /* 不合理的进制,函数返回0 */}buf[i]='\0';do{buf[--i]=digits[n%d]; /*译出最低位,对应字符存入对应工作数组中*/n/=d;}while(n);/* 将译出在工作数组中的字符串复制到s */for(j=0;(s[j]=buf[i])!='\0';j++,i++);/* 其中控制条件可简写成s[j]=buf[i] */return j;}/* 主函数用于测试函数trans() */main(){unsigned int num = 253;int scale[]={2,3,10,16,1};char str[33];int i;clrscr();for(i=0;i<sizeof(scale)/sizeof(scale[0]);i++){if(trans(num,scale[i],str))printf("%5d = %s(%d)\n",num,str,scale[i]);elseprintf("%5d => (%d) Error! \n",num,scale[i]);}printf("\n Press any key to quit...\n");getch();}判断回文数/* 函数circle 用于判断正整数n 的d 进制数表示形式是否是回文数*/ int circle(int n, int d){int s=0,m=n;while(m){s=s*d+m%d;m/=d;}return s==n;}/* main 函数用于测试circle 函数*/int num[]={232,27,851};int scale[]={2,10,16};main(){int i,j;clrscr();for(i=0;i<sizeof(num)/sizeof(num[0]);i++)for(j=0;j<sizeof(scale)/sizeof(scale[0]);j++)if(circle(num[i],scale[j]))printf("%d -> (%d) is a Circle Number!\n",num[i],scale[j]);elseprintf("%d -> (%d) is not a Circle Number!\n",num[i],scale[j]);printf("\n Press any key to quit...\n");getch();}求解钢材切割的最佳订单#include <stdio.h>#define N 20#define DELTA 2int bestlen;int bestsele[N];int sele[N];int n;int orderlen[N];int total;main(){int i;clrscr();printf("\n Please enter total length of the steel:\n");/* 输入钢材总长*/scanf("%d",&total);printf("\n Please enter number of order:\n"); /* 输入定单数*/ scanf("%d",&n);printf("\n Please enter the orders:\n"); /* 输入各定单*/for(i=0;i<n;i++)scanf("%d",&orderlen[i]);bestlen=0; /*最佳解用料的初值*/for(i=0;i<n;i++)sele[i]=bestsele[i]=0; /*置当前选择和最佳选择初值*/try(); /* 调用函数求解*/for(i=0;i<n;i++) /* 输出结果*/if(bestsele[i])printf("order %d length = %d\n",i+1,orderlen[i]);printf("\n Press any key to quit...");getch();}try(){int i,len;for(len=i=0;i<n;i++) /* 求当前选中的用料量*/if(sele[i])len+=orderlen[i]+DELTA;if(len-DELTA<=total) /* 注意最后一段可能不需要切割*/{if(bestlen < len){/* 找到一个更好的解*/bestlen = len;for(i=0;i<n;i++)bestsele[i]=sele[i];}for(i=0;i<n;i++) /* 对所有未选定单逐一作选中尝试循环*/if(!sele[i]){sele[i]=1; /* 做选中尝试*/try();sele[i]=0;}}}指向数组的指针main(){int x,y,z; /* 定义三个int 型变量*/int *xp = &x, /* 定义指针变量xp,并赋值为x 的地址,使xp 指向x */ *yp = &y, /* 定义指针变量yp,并赋值为y 的地址,使yp 指向y */ *zp = &z; /* 定义指针变量zp,并赋值为z 的地址,使zp 指向z */int t;printf("\nPlease input x,y,z:\n");scanf("%d%d%d",xp,yp,zp); /* 通过变量的指针,为变量输入值*/if(*xp>*yp) /* 通过指向变量的指针引用变量的值*/{t=*xp; /* 通过指向变量的指针引用变量的值*/*xp=*yp;/* 通过指向变量x 的指针xp,引用变量x 的值*/*yp=t; /* 通过指向变量y 的指针yp,引用变量y 的值*/}if(*xp>*zp) /* 通过指向变量的指针,引用变量的值*/{t=*xp; /* 通过指向变量x 的指针xp,引用变量x 的值*/*xp=*zp;/* 通过指向变量x 的指针xp,引用变量x 的值*/*zp=t; /* 通过指向变量z 的指针zp,引用变量z 的值*/}if(*yp>*zp) /* 通过指向变量的指针,引用变量的值*/{t=*yp; /* 通过指向变量的指针,引用变量的值*/*yp=*zp;/* 通过指向变量y 的指针yp,引用变量y 的值*/*zp=t;/* 通过指向变量z 的指针zp,引用变量z 的值*/}printf("x = %d\ty = %d\tz = %d\n",x,y,z);printf("\nPress any key to quit...\n");getch();}阿拉伯数字转换为罗马数字#include <stdio.h>#define ROWS 4#define COLS 4int nums[ROWS][COLS]={{1000,1000,1000,1000},{900,500,400,100},{90,50,40,10},{9,5,4,1}};char *roms[ROWS][COLS]={{"m","m","m","m"}, {"cm","d","cd","c"},{"xc","l","xl","x"},{"ix","v","iv","i"}}; main(int argc,char *argv[ ]){int low,high;char roman[25]; if(argc<2){ printf("Usage:roman decimal_number\n");/*运行程序需带整数参数*/}high=low=atoi(argv[1]);/*将第一个参数转换成整数*/checknum(low);if(argc>2){/*带两个参数*/high=atoi(argv[2]);checknum(high);if(low>high){low=high;high=atoi(argv[1]);}}elselow=1;for(;low<=high;low++){to_roman(low,roman);printf("%d\t%s\n",low,roman);}} checknum(int val)/*检查参数合理性*/{if(val<1||val>9999){printf("The number must be in range 1..9999.\n");exit(0);}}to_roman(int decimal,char roman[ ])/*将整数转换成罗马数字表示*/ {int power,index;roman[0]='\0';for(power=0;power<ROWS;power++)for(index=0;index<COLS;index++)while(decimal>=nums[power][index]){strcat(roman,roms[power][index]);decimal-=nums[power][index];}}通讯录的输入输出#include <stdio.h>#define ZIPLEN 10#define PHONLEN 15/*struct addr 类型定义*/ struct addr{char *name;/*姓名*/char *address;/*地址*/char zip[ZIPLEN];/*邮政编码*/char phone[PHONLEN];/*电话号码*/}; main()/*本主函数示意上述输入输出函数的用法*/{struct addr p[100];int i,j;clrscr();for(i=0;readaddr(p+i);i++);for(j=0;j<i;j++) writeaddr(p+j);puts("\n Press any key to quit...");getch();} /* 函数readaddr 用于输入一个通信录函数*/int readaddr(struct addr *dpt){int len;char buf[120];/*输入字符串的缓冲区*/ printf("\nPlease input theName:\n");/*输入姓名*/if(scanf("%s",buf)==1){len=strlen(buf);dpt->name=(char *)malloc(len+1);/*申请存贮姓名的空间*/ strcpy(dpt->name,buf);}else return 0;/*Ctrl+Z 结束输入*/printf("Please input the Address:\n");/*输入地址*/if(scanf("%s",buf)==1){len=strlen(buf);dpt->address=(char *)malloc(len+1);/*申请存贮地址的空间*/ strcpy(dpt->address,buf);}else{/*Ctrl+Z 结束输入*/free(dpt->name);/*释放存贮姓名的空间*/return 0;}printf("Please input the Zip code:\n");/*输入邮编*/if(scanf("%s",buf)==1)strncpy(dpt->zip,buf,ZIPLEN-1);else{free(dpt->name);/*释放存贮姓名的空间*/free(dpt->address);/*释放存贮地址的空间*/return 0;/*Ctrl+Z 结束输入*/}printf("Please input the Phone number:\n");/*输入电话号码*/ if(scanf("%s",buf)==1)strncpy(dpt->phone,buf,PHONLEN-1);else{free(dpt->name);free(dpt->address);return 0;/*Ctrl+Z 结束输入*/}return 1;} /* 函数writeaddr 用于输出通讯录*/int writeaddr(struct addr*dpt){printf("Name : %s\n", dpt->name);/* 输出姓名*/printf("Address : %s\n", dpt->address);/*输出地址*/printf("Zip : %s\n", dpt->zip);/* 输出邮编*/printf("Phone : %s\n\n", dpt->phone);/*输出电话号码*/}扑克牌的结构表示enum suits{CLUBS,DIAMONDS,HEARTS,SPADES}; struct card{enum suits suit;char value[3];};struct card deck[52];char cardval[][3]= {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};char suitsname[][9]={"CLUBS","DIAMONDS","HEARTS","SPADES"}; main() {int i,j;enum suits s;clrscr();for(i=0;i<=12;i++)for(s=CLUBS;s<=SPADES;s++){j=i*4+s;deck[j].suit=s;strcpy(deck[j].value,cardval[i]);}for(j=0;j<52;j++)printf("(%s%3s)%c",suitsname[deck[j].suit],deck[j].value,j%4==3?'\n':'\t');puts("\nPress any key to quit...");getch();}用“结构”统计学生成绩#include <stdio.h>#define N 200#define SCORES 5#define NUMLEN 10struct std_type{char no[NUMLEN];/*学号*/char *name;/*名字符串指针*/int scores[SCORES];/*五门功课的成绩*/};struct std_type students[N];int order[N];int total[N]; /*[函数]输入一个学生信息函数*/int readastu(struct std_type *spt){int len,j;char buf[120];/*输入字符串的缓冲区*/ printf("\nNumber : ");/*输入学号*/if(scanf("%s",buf)==1)strncpy(spt->no,buf,NUMLEN-1);elsereturn 0;/*Ctrl+Z 结束输入*/printf("Name : ");/*输入姓名*/if(scanf("%s",buf)==1){len=strlen(buf);spt->name=(char *)malloc(len+1);/*申请存贮姓名的空间*/ strcpy(spt->name,buf);}else return 0;/*Ctrl+Z 结束输入*/printf("Scores : ");/*输入成绩*/for(j=0;j<SCORES;j++)if(scanf("%d",spt->scores+j)!=1)break;if(j==0)/*一个成绩也未输入*/{free(spt->name);/*释放存贮姓名的空间*/return 0;}for(;j<SCORES;j++)/*少数未输入的成绩用0 分代之*/ spt->scores[j]=0;return 1;} /*[函数]输出一个学生信息的函数*/int writeastu(struct std_type *spt){int i; printf("Number : %s\n",spt->no);/*输出学号*/printf("Name : %s\n",spt->name);/*输出姓名*/printf("Scores : ");/* 输出成绩*/for(i=0;i<SCORES;i++)printf("%4d",spt->scores[i]);printf("\n\n");} main(){int n,i,j,t; clrscr();for(n=0;readastu(students+n);n++);/*采用冒泡法对学生信息数组排序*/for(i=0;i<n;i++){order[i]=i;/* 预置第i 个输入的学生*/for(t=0,j=0;j<SCORES;j++)/*求第i 个学生的总分*/t+=students[i].scores[j];total[i]=t;}/*冒泡排序*/for(i=0;i<n-1;i++)/*共扫视n-1 遍*/for(j=0;j<n-1-i;j++)if(total[order[j]]<total[order[j+1]]){/*交换名次*/t=order[j];order[j]=order[j+1];order[j+1]=t;}for(j=0;j<n;j++)/* 输出*/writeastu(students+order[j]);printf("\n Press any key to quit...\n");getch();}报数游戏#include <stdio.h>struct ele{int no;struct ele *link;}main(){int n,m,i;struct ele *h,*u,*p;clrscr();printf("Please input n&m:\n");scanf("%d%d",&n,&m);/*输入n 和m*/h=u=(struct ele *)malloc(sizeof(struct ele));/*形成首表元*/ h->no=1;for(i=2;i<=n;i++)/*形成其余的n-1 个表元*/{u->link=(struct ele *)malloc(sizeof(struct ele));u=u->link;u->no=i;/*第i 个表元置编号i*/}u->link=h;/*末表元后继首表元,形成环*/puts("\nThe numbers of who will quit the cycle in turn are:"); while(n){for(i=1;i<m;i++)/*掠过m-1 个表元*/u=u->link;p=u->link;/*p 指向第m 个表元*/u->link=p->link;/*第m 个表元从环中脱钩*/printf("%4d",p->no);free(p);/*释放第m 个表元占用的空间*/n--;}printf("\n\n Press any key to quit...\n");getch();}学生成绩管理程序/*学生成绩管理程序编制一个统计学生考试分数的管理程序。
c语言初学必背代码C 语言初学必背代码C 语言作为一门基础的编程语言,对于初学者来说,掌握一些关键的代码片段是非常有帮助的。
这些代码不仅能够帮助你理解 C 语言的基本语法和概念,还能为你后续的学习打下坚实的基础。
接下来,让我们一起看看 C 语言初学必背的代码。
一、输出“Hello World”这可能是学习任何编程语言的第一步,它简单却具有象征意义。
```cinclude <stdioh>int main(){printf("Hello World\n");return 0;}```在这个代码中,`include <stdioh>`是预处理指令,用于包含标准输入输出头文件。
`main`函数是 C 语言程序的入口点。
`printf`函数用于输出指定的内容,`\n`是换行符。
二、变量的定义和使用```cinclude <stdioh>int main(){int num = 10; //定义一个整型变量并初始化float price = 125; //定义一个浮点型变量并初始化char letter ='A';//定义一个字符型变量并初始化printf("num =%d\n", num);printf("price =%f\n", price);printf("letter =%c\n", letter);return 0;}```在上述代码中,我们定义了整型、浮点型和字符型的变量,并使用`printf`函数输出它们的值。
其中,`%d`用于输出整型,`%f`用于输出浮点型,`%c`用于输出字符型。
三、算术运算```cint main(){int a = 5, b = 3;int sum = a + b;int difference = a b;int product = a b;int quotient = a / b;printf("sum =%d\n", sum);printf("difference =%d\n", difference);printf("product =%d\n", product);printf("quotient =%d\n", quotient);return 0;}```这里展示了 C 语言中的基本算术运算:加法、减法、乘法和除法。
C语言代码大全C语言是一种高级程序设计语言,广泛应用于计算机科学和软件开发领域。
它以其简洁、高效的特点而备受青睐。
本文将为您介绍一些常用的C语言代码,包括输入输出、流程控制、函数调用、数据结构等方面的代码示例。
一、输入输出1. 标准输入输出```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("您输入的数字是:%d\n", num);return 0;}```2. 文件读写```cint main() {FILE *file;char str[100];// 写入文件file = fopen("data.txt", "w");fprintf(file, "Hello, World!");fclose(file);// 读取文件file = fopen("data.txt", "r");fscanf(file, "%s", str);printf("从文件中读取的内容是:%s\n", str); fclose(file);return 0;}```二、流程控制1. 条件语句```cint main() {int num = 10;if (num > 0) {printf("该数字是正数。
\n"); } else if (num < 0) {printf("该数字是负数。
\n"); } else {printf("该数字是零。
\n"); }return 0;}```2. 循环语句```c#include <stdio.h>int main() {int num = 5;// while循环while (num > 0) {printf("当前数字:%d\n", num); num--;}// for循环for (int i = 0; i < 5; i++) {printf("当前数字:%d\n", i);}// do-while循环do {printf("当前数字:%d\n", num); num++;} while (num < 5);return 0;}```三、函数调用```c#include <stdio.h>int add(int a, int b) {return a + b;}int main() {int num1 = 5;int num2 = 3;int result = add(num1, num2);printf("两个数的和为:%d\n", result); return 0;}```四、数据结构1. 数组```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5};for (int i = 0; i < 5; i++) {printf("数组元素:%d\n", arr[i]); }return 0;}```2. 结构体```c#include <stdio.h>struct Student {char name[20];int age;};int main() {struct Student stu1;strcpy(, "Tom");stu1.age = 18;printf("学生姓名:%s\n", ); printf("学生年龄:%d\n", stu1.age); return 0;}```以上只是C语言代码中的一小部分示例,C语言是一门非常庞大的编程语言,拥有众多的功能和特性。
c语言代码大全C语言代码大全。
C语言作为一种通用的高级语言,被广泛应用于系统程序设计和应用程序开发。
它具有高效的系统编程能力和灵活的应用程序编程能力,因此备受程序员们的喜爱。
在本文中,我们将为您介绍一些常见的C语言代码,帮助您更好地理解和运用C语言。
首先,让我们来看一个简单的C语言程序示例:```c。
#include <stdio.h>。
int main() {。
printf("Hello, World!\n");return 0;}。
```。
在这个示例中,我们使用了`#include`指令来包含标准输入输出库文件`stdio.h`,然后定义了一个`main`函数,函数内部使用`printf`函数打印了一条简单的消息,并通过`return 0`语句返回了程序执行的结果。
接下来,让我们看一下如何使用C语言实现一个简单的计算器功能:```c。
#include <stdio.h>。
int main() {。
char operator;double firstNumber,secondNumber;printf("Enter an operator (+, -, , /): ");scanf("%c", &operator);printf("Enter two operands: ");scanf("%lf %lf",&firstNumber, &secondNumber);switch(operator) {。
case '+':printf("%.1lf + %.1lf = %.1lf",firstNumber, secondNumber, firstNumber + secondNumber);break;case '-':printf("%.1lf %.1lf = %.1lf",firstNumber, secondNumber, firstNumber secondNumber);break;case '':printf("%.1lf %.1lf = %.1lf",firstNumber, secondNumber, firstNumber secondNumber);break;case '/':printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber / secondNumber);break;default:printf("Error! operator is not correct");}。
C语言初学者经典代码(5条)1.打印“Hello, world!”#include <stdio.h>int main() {printf("Hello, world!");return 0;}这段代码使用了C标准库中的printf()函数,它能够在控制台中打印文本信息。
在main()函数中调用该函数,并传入字符串“Hello, world!”作为参数。
程序运行后,在控制台中就能看到输出的文本信息。
2.计算两个数的和并输出结果:#include <stdio.h>int main() {int a = 5, b = 2;int sum = a + b;printf("The sum of %d and %d is %d", a, b, sum);return 0;}这段代码定义了两个整型变量a和b,并将它们的值分别设置为5和2。
然后将它们相加得到和并赋值给整型变量sum。
最后通过printf()函数输出结果文本信息。
其中%d是占位符,表示输出一个整型变量的值。
3.判断一个数是否为偶数:#include <stdio.h>int main() {int num = 4;if (num % 2 == 0) {printf("%d is an even number.", num);} else {printf("%d is an odd number.", num);}return 0;}这段代码定义了一个整型变量num,并将它的初始值设置为4。
然后使用if语句判断num是否为偶数。
如果是,就输出相应的文本信息;如果不是,也输出相应的文本信息。
在if语句中,%d同样表示输出一个整型变量的值。
%s表示输出一个字符串的值。
4.输出乘法表:#include <stdio.h>int main() {for (int i = 1; i <= 9; ++i) {for (int j = 1; j <= i; ++j) {printf("%d*%d=%d ", j, i, i*j);}printf("\n");}return 0;}这段代码使用了两个嵌套的for循环,分别控制行和列的输出。
剪刀石头布源代码#include<stdio.h〉#include<stdlib。
h〉main(){int d,x;{printf("请输入:1是剪刀,2是石头,3是布”);scanf(”%d”,&d);x=rand()%3;if(d==x)printf("双方平局");else if((d==1&&x==2)||(d==2&&x==3)||(d==3&&x==1)) printf(”你赢了”);elseprintf(”电脑赢了”);}}简单计算器#include〈stdio。
h〉main(){int a,b,d=0;char c;while(d==0){printf(”请开始计算,请输入需要运算的数字和运算法则,数字符号数字:”); scanf(”%d%c%d”,&a,&c,&b);switch(c){case'+':printf(”%d+%d=%d\n",a,b,a+b);break;case’-’:printf(”%d—%d=%d\n",a,b,a-b);break;case'*’:printf("%d*%d=%d\n",a,b,a*b);break;case'/’:if(0==b)printf("除法被除数不能为零!\n”) ;elseprintf(”%d/%d=%d\n",a,b,a/b);break;}}}加油站加油问题#include<stdio。
h>int main(){double a = 3。
25,b = 3.00,c= 2.75;double d = 0。
05, e = 0.10, m;int x,y,z;printf("请输入您要的加油量:”);scanf("%d",&x);printf("请输入您要的汽油种类,1—a型汽油售价3。
初学者必会的c语言必背代码1、c语言必背100代码,C语言代码大全第一个------乘法表。
用C语言输出9*9成法口诀。
共9行9列,i控制行,j控制列。
2、c语言必背100代码之4×4数组下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,请在空白处完善程序。
3、c语言必背100代码,C语言必背100代码。
古典问题有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21…4、c语言必背100代码素数判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
5、c语言必背100代码完数相关代码一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3.编程找出1000以内的所有完数。
6、c语言必背100代码三角形打印编程打印直角杨辉三角形7、c语言必背100代码平均分问题通过键盘输入3名学生4门课程的成绩,分别求每个学生的平均成绩和每门课程的平均成绩。
要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。
#include <stdio.h>#include <stdlib.h>main(){ float a[4][5],sum1,sum2;int i,j;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%f",&a[i][j]);for(i=0;i<3;i++){ sum1=0;for(j=0;j<4;j++)sum1+=a[i][j];a[i][4]=sum1/4;}for(j=0;j<5;j++){ sum2=0;for(i=0;i<3;i++)sum2+=a[i][j];a[3][j]=sum2/3;}for(i=0;i<4;i++){ for(j=0;j<5;j++)printf("%6.2f",a[i][j]);printf("\n");}}8、c语言必背100代码反向输出完善程序,实现将输入的字符串反序输出,如输入windows 输出swodniw。
C语言经典编程实例第1章为什么要学C语言【验证型】1.1 Hello world.让我们用C语言向世界问好。
输入:无输出:Hello world.1.#include <stdio.h>2.int main()3.{4. printf("Hello world.\n");5.}1.#include<stdio.h>2.int main()3.{4. printf("Welcome\n");5. printf("to\n");6. printf("Beijing.\n");7.}第2章C数据类型【设计型】2.1 学习打印你的第一个图形背景:我们已经学习了printf函数,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。
程序如下:#include <stdio.h>int main(){printf("****\n");printf("****\n");printf("****\n");printf("****\n");return 0;}要求:按照上面的程序范例,编写一个小程序,要求输出的是 4 行由*号组成的等腰三角形。
输入:无。
输出:****************1.#include<stdio.h>2.int main()3.{4. printf(" *\n");5. printf(" ***\n");6. printf(" *****\n");7. printf("*******\n");8.9.return 0;10.}【验证型】2.2 输出倒三角形【题目描述】输出指定的由“*”组成的倒三角图案。
初学者必会的c语言必背代码1、c语言必背100代码,C语言代码大全第一个------乘法表。
用C语言输出9*9成法口诀。
共9行9列,i控制行,j控制列。
2、c语言必背100代码之4×4数组下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,请在空白处完善程序。
3、c语言必背100代码,C语言必背100代码。
古典问题有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21…4、c语言必背100代码素数判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
5、c语言必背100代码完数相关代码一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3.编程找出1000以内的所有完数。
6、c语言必背100代码三角形打印编程打印直角杨辉三角形7、c语言必背100代码平均分问题通过键盘输入3名学生4门课程的成绩,分别求每个学生的平均成绩和每门课程的平均成绩。
要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。
#include <stdio.h>#include <stdlib.h>main(){ float a[4][5],sum1,sum2;int i,j;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%f",&a[i][j]);for(i=0;i<3;i++){ sum1=0;for(j=0;j<4;j++)sum1+=a[i][j];a[i][4]=sum1/4;}for(j=0;j<5;j++){ sum2=0;for(i=0;i<3;i++)sum2+=a[i][j];a[3][j]=sum2/3;}for(i=0;i<4;i++){ for(j=0;j<5;j++)printf("%6.2f",a[i][j]);printf("\n");}}8、c语言必背100代码反向输出完善程序,实现将输入的字符串反序输出,如输入windows 输出swodniw。
案例一贪吃蛇游戏#define N 200#include <graphics.h>#include <stdlib.h>#include <dos.h>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/ struct Food{int x;/*食物的横坐标*/int y;/*食物的纵坐标*/int yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/struct Snake{int x[N];int y[N];int node;/*蛇的节数*/int direction;/*蛇移动方向*/int life;/* 蛇的生命,0活着,1死亡*/}snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/ void GamePlay(void);/*玩游戏具体过程*/ void PrScore(void);/*输出成绩*//*主函数*/void main(void){Init();/*图形驱动*/DrawK();/*开始画面*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}/*图形驱动*/void Init(void){int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc");cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/ void DrawK(void){/*setbkcolor(LIGHTGREEN);*/setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/for(i=50;i<=600;i+=10)/*画围墙*/{rectangle(i,40,i+10,49); /*上边*/rectangle(i,451,i+10,460);/*下边*/}for(i=40;i<=450;i+=10){rectangle(50,i,59,i+10); /*左边*/rectangle(601,i,610,i+10);/*右边*/}}/*玩游戏具体过程*/void GamePlay(void){randomize();/*随机数发生器*/food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/snake.life=0;/*活着*/snake.direction=1;/*方向往右*/snake.x[0]=100;snake.y[0]=100;/*蛇头*/snake.x[1]=110;snake.y[1]=100;snake.node=2;/*节数*/PrScore();/*输出得分*/while(1)/*可以重复玩游戏,压ESC键结束*/{while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{if(food.yes==1)/*需要出现新食物*/{food.x=rand()%400+60;food.y=rand()%350+60;while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/food.x++;while(food.y%10!=0)food.y++;food.yes=0;/*画面上有食物了*/}if(food.yes==0)/*画面上有食物了就要显示*/{setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);}for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/switch(snake.direction){case 1:snake.x[0]+=10;break;case 2: snake.x[0]-=10;break;case 3: snake.y[0]-=10;break;case 4: snake.y[0]+=10;break;}for(i=3;i<snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/{if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){GameOver();/*显示失败*/snake.life=1;break;}}if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)/*蛇是否撞到墙壁*/{GameOver();/*本次游戏结束*/snake.life=1; /*蛇死*/}if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/break;if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/{setcolor(0);/*把画面上的食物东西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10);snake.x[snake.node]=-20;snake.y[snake.node]=-20;/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/snake.node++;/*蛇的身体长一节*/food.yes=1;/*画面上需要出现新的食物*/score+=10;PrScore();/*输出新得分*/}setcolor(4);/*画出蛇*/for(i=0;i<snake.node;i++)rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);delay(gamespeed);setcolor(0);/*用黑色去除蛇的的最后一节*/rectangle(snake.x[snake.node-1],snake.y[snake.node-1], snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);} /*endwhile(!kbhit)*/if(snake.life==1)/*如果蛇死就跳出循环*/break;key=bioskey(0);/*接收按键*/if(key==ESC)/*按ESC键退出*/break;elseif(key==UP&&snake.direction!=4)/*判断是否往相反的方向移动*/snake.direction=3;elseif(key==RIGHT&&snake.direction!=2)snake.direction=1;elseif(key==LEFT&&snake.direction!=1)snake.direction=2;elseif(key==DOWN&&snake.direction!=3)snake.direction=4;}/*endwhile(1)*/}/*游戏结束*/void GameOver(void){cleardevice();PrScore();setcolor(RED);settextstyle(0,0,4);outtextxy(200,200,"GAME OVER");getch();}/*输出成绩*/void PrScore(void){char str[10];setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(6);settextstyle(0,0,2);sprintf(str,"score:%d",score);outtextxy(55,20,str);}/*图形结束*/void Close(void){getch();closegraph();}案例二计算器#include <dos.h> /*DOS接口函数*/#include <math.h> /*数学函数的定义*/#include <conio.h> /*屏幕操作函数*/#include <stdio.h> /*I/O函数*/#include <stdlib.h> /*库函数*/#include <stdarg.h> /*变量长度参数表*/#include <graphics.h> /*图形函数*/#include <string.h> /*字符串函数*/#include <ctype.h> /*字符操作函数*/#define UP 0x48 /*光标上移键*/#define DOWN 0x50 /*光标下移键*/#define LEFT 0x4b /*光标左移键*/#define RIGHT 0x4d /*光标右移键*/#define ENTER 0x0d /*回车键*/void *rar; /*全局变量,保存光标图象*/ struct palettetype palette; /*使用调色板信息*/ int GraphDriver; /* 图形设备驱动*/int GraphMode; /* 图形模式值*/int ErrorCode; /* 错误代码*/int MaxColors; /* 可用颜色的最大数值*/ int MaxX, MaxY; /* 屏幕的最大分辨率*/double AspectRatio; /* 屏幕的像素比*/void drawboder(void); /*画边框函数*/void initialize(void); /*初始化函数*/void computer(void); /*计算器计算函数*/void changetextstyle(int font, int direction, int charsize); /*改变文本样式函数*/void mwindow(char *header); /*窗口函数*/int specialkey(void) ; /*获取特殊键函数*/int arrow(); /*设置箭头光标函数*//*主函数*/int main(){initialize();/* 设置系统进入图形模式*/computer(); /*运行计算器*/closegraph();/*系统关闭图形模式返回文本模式*/return(0); /*结束程序*/}/* 设置系统进入图形模式*/void initialize(void){int xasp, yasp; /* 用于读x和y方向纵横比*/GraphDriver = DETECT; /* 自动检测显示器*/initgraph( &GraphDriver, &GraphMode, "" );/*初始化图形系统*/ErrorCode = graphresult(); /*读初始化结果*/if( ErrorCode != grOk ) /*如果初始化时出现错误*/{printf("Graphics System Error: %s\n",grapherrormsg( ErrorCode ) ); /*显示错误代码*/exit( 1 ); /*退出*/}getpalette( &palette ); /* 读面板信息*/MaxColors = getmaxcolor() + 1; /* 读取颜色的最大值*/MaxX = getmaxx(); /* 读屏幕尺寸*/MaxY = getmaxy(); /* 读屏幕尺寸*/getaspectratio( &xasp, &yasp ); /* 拷贝纵横比到变量中*/ AspectRatio = (double)xasp/(double)yasp;/* 计算纵横比值*/ }/*计算器函数*/void computer(void){struct viewporttype vp; /*定义视口类型变量*/int color, height, width;int x, y,x0,y0, i, j,v,m,n,act,flag=1;float num1=0,num2=0,result; /*操作数和计算结果变量*/char cnum[5],str2[20]={""},c,temp[20]={""};char str1[]="1230.456+-789*/Qc=^%";/* 定义字符串在按钮图形上显示的符号*/mwindow( "Calculator" ); /* 显示主窗口*/color = 7; /*设置灰颜色值*/getviewsettings( &vp ); /* 读取当前窗口的大小*/width=(vp.right+1)/10; /* 设置按钮宽度*/height=(vp.bottom-10)/10 ; /*设置按钮高度*/x = width /2; /*设置x的坐标值*/y = height/2; /*设置y的坐标值*/setfillstyle(SOLID_FILL, color+3);bar( x+width*2, y, x+7*width, y+height );/*画一个二维矩形条显示运算数和结果*/setcolor( color+3 ); /*设置淡绿颜色边框线*/rectangle( x+width*2, y, x+7*width, y+height );/*画一个矩形边框线*/setcolor(RED); /*设置颜色为红色*/outtextxy(x+3*width,y+height/2,"0."); /*输出字符串"0."*/x =2*width-width/2; /*设置x的坐标值*/y =2*height+height/2; /*设置y的坐标值*/for( j=0 ; j<4 ; ++j ) /*画按钮*/{for( i=0 ; i<5 ; ++i ){setfillstyle(SOLID_FILL, color);setcolor(RED);bar( x, y, x+width, y+height ); /*画一个矩形条*/rectangle( x, y, x+width, y+height );sprintf(str2,"%c",str1[j*5+i]);/*将字符保存到str2中*/outtextxy( x+(width/2), y+height/2, str2);x =x+width+ (width / 2) ; /*移动列坐标*/ }y +=(height/2)*3; /* 移动行坐标*/x =2*width-width/2; /*复位列坐标*/}x0=2*width;y0=3*height;x=x0;y=y0;gotoxy(x,y); /*移动光标到x,y位置*/arrow(); /*显示光标*/putimage(x,y,rar,XOR_PUT);m=0;n=0;strcpy(str2,""); /*设置str2为空串*/while((v=specialkey())!=45) /*当压下Alt+x键结束程序,否则执行下面的循环*/{while((v=specialkey())!=ENTER) /*当压下键不是回车时*/{putimage(x,y,rar,XOR_PUT); /*显示光标图象*/if(v==RIGHT) /*右移箭头时新位置计算*/if(x>=x0+6*width)/*如果右移,移到尾,则移动到最左边字符位置*/{x=x0;m=0;}else{x=x+width+width/2;m++;} /*否则,右移到下一个字符位置*/if(v==LEFT) /*左移箭头时新位置计算*/if(x<=x0){x=x0+6*width;m=4;} /*如果移到头,再左移,则移动到最右边字符位置*/ else{x=x-width-width/2;m--;} /*否则,左移到前一个字符位置*/if(v==UP) /*上移箭头时新位置计算*/if(y<=y0){y=y0+4*height+height/2;n=3;} /*如果移到头,再上移,则移动到最下边字符位置*/ else{y=y-height-height/2;n--;} /*否则,移到上边一个字符位置*/if(v==DOWN) /*下移箭头时新位置计算*/if(y>=7*height){y=y0;n=0;} /*如果移到尾,再下移,则移动到最上边字符位置*/else{y=y+height+height/2;n++;} /*否则,移到下边一个字符位置*/putimage(x,y,rar,XOR_PUT); /*在新的位置显示光标箭头*/ }c=str1[n*5+m]; /*将字符保存到变量c中*/if(isdigit(c)||c=='.') /*判断是否是数字或小数点*/{if(flag==-1) /*如果标志为-1,表明为负数*/{strcpy(str2,"-"); /*将负号连接到字符串中*/flag=1;} /*将标志值恢复为1*/sprintf(temp,"%c",c); /*将字符保存到字符串变量temp中*/ strcat(str2,temp); /*将temp中的字符串连接到str2中*/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,str2); /*显示字符串*/}if(c=='+'){num1=atof(str2); /*将第一个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=1; /*做计算加法标志值*/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='-'){if(strcmp(str2,"")==0) /*如果str2为空,说明是负号,而不是减号*/ flag=-1; /*设置负数标志*/else{num1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=2; /*做计算减法标志值*/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/outtextxy(5*width,height,"0."); /*显示字符串*/}}if(c=='*'){num1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=3; /*做计算乘法标志值*/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='/'){num1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=4; /*做计算除法标志值*/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='^'){num1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=5; /*做计算乘方标志值*/setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/ outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='%'){num1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=6; /*做计算模运算乘方标志值*/setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/ outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='='){num2=atof(str2); /*将第二个操作数转换为浮点数*/switch(act) /*根据运算符号计算*/{case 1:result=num1+num2;break; /*做加法*/case 2:result=num1-num2;break; /*做减法*/case 3:result=num1*num2;break; /*做乘法*/case 4:result=num1/num2;break; /*做除法*/case 5:result=pow(num1,num2);break; /*做x的y次方*/case 6:result=fmod(num1,num2);break; /*做模运算*/ }setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2); /*覆盖结果区*/sprintf(temp,"%f",result); /*将结果保存到temp中*/outtextxy(5*width,height,temp); /*显示结果*/}if(c=='c'){num1=0; /*将两个操作数复位0,符号标志为1*/num2=0;flag=1;strcpy(str2,""); /*将str2清空*/setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2); /*覆盖结果区*/outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='Q')exit(0); /*如果选择了q回车,结束计算程序*/}putimage(x,y,rar,XOR_PUT); /*在退出之前消去光标箭头*/return; /*返回*/}/*窗口函数*/void mwindow( char *header ){int height;cleardevice(); /* 清除图形屏幕 */setcolor( MaxColors - 1 ); /* 设置当前颜色为白色*/setviewport( 20, 20, MaxX/2, MaxY/2, 1 ); /* 设置视口大小 */height = textheight( "H" ); /* 读取基本文本大小*/settextstyle( DEFAULT_FONT, HORIZ_DIR, 1 );/*设置文本样式*/settextjustify( CENTER_TEXT, TOP_TEXT );/*设置字符排列方式*/outtextxy( MaxX/4, 2, header ); /*输出标题*/setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1 ); /*设置视口大小*/drawboder(); /*画边框*/}void drawboder(void) /*画边框*/{struct viewporttype vp; /*定义视口类型变量*/setcolor( MaxColors - 1 ); /*设置当前颜色为白色*/setlinestyle( SOLID_LINE, 0, NORM_WIDTH );/*设置画线方式*/getviewsettings( &vp );/*将当前视口信息装入vp所指的结构中*/rectangle( 0, 0, vp.right-vp.left, vp.bottom-vp.top ); /*画矩形边框*/ }/*设计鼠标图形函数*/int arrow(){int size;int raw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4}; /*定义多边形坐标*/setfillstyle(SOLID_FILL,2); /*设置填充模式*/fillpoly(8,raw); /*画出一光标箭头*/size=imagesize(4,4,16,16); /*测试图象大小*/rar=malloc(size); /*分配内存区域*/getimage(4,4,16,16,rar); /*存放光标箭头图象*/putimage(4,4,rar,XOR_PUT); /*消去光标箭头图象*/return 0;}/*按键函数*/int specialkey(void){int key;while(bioskey(1)==0); /*等待键盘输入*/key=bioskey(0); /*键盘输入*/key=key&0xff? key&0xff:key>>8; /*只取特殊键的扫描值,其余为0*/ return(key); /*返回键值*/}案例三黑白棋游戏/*3.3.4 源程序*/#include "graphics.h" /*图形系统头文件*/#define LEFT 0x4b00 /*光标左键值*/#define RIGHT 0x4d00 /*光标右键值*/#define DOWN 0x5000 /*光标下键值*/#define UP 0x4800 /*光标上键值*/#define ESC 0x011b /* ESC键值*/#define ENTER 0x1c0d /* 回车键值*/int a[8][8]={0},key,score1,score2;/*具体分数以及按键与存放棋子的变量*/ char playone[3],playtwo[3];/*两个人的得分转换成字符串输出*/void playtoplay(void);/*人人对战函数*/void DrawQp(void);/*画棋盘函数*/void SetPlayColor(int x);/*设置棋子第一次的颜色*/void MoveColor(int x,int y);/*恢复原来棋盘状态*/int QpChange(int x,int y,int z);/*判断棋盘的变化*/void DoScore(void);/*处理分数*/void PrintScore(int n);/*输出成绩*/void playWin(void);/*输出胜利者信息*//******主函数*********/void main(void){int gd=DETECT,gr;initgraph(&gd,&gr,"c:\\tc"); /*初始化图形系统*/DrawQp();/*画棋盘*/playtoplay();/*人人对战*/getch();closegraph();/*关闭图形系统*/}void DrawQp()/*画棋盘*/{int i,j;score1=score2=0;/*棋手一开始得分都为0*/ setbkcolor(BLUE);for(i=100;i<=420;i+=40){line(100,i,420,i);/*画水平线*/line(i,100,i,420); /*画垂直线*/}setcolor(0);/*取消圆周围的一圈东西*/ setfillstyle(SOLID_FILL,15);/*白色实体填充模式*/ fillellipse(500,200,15,15); /*在显示得分的位置画棋*/ setfillstyle(SOLID_FILL,8); /*黑色实体填充模式*/ fillellipse(500,300,15,15);a[3][3]=a[4][4]=1;/*初始两个黑棋*/a[3][4]=a[4][3]=2;/*初始两个白棋*/setfillstyle(SOLID_FILL,WHITE);fillellipse(120+3*40,120+3*40,15,15);fillellipse(120+4*40,120+4*40,15,15);setfillstyle(SOLID_FILL,8);fillellipse(120+3*40,120+4*40,15,15);fillellipse(120+4*40,120+3*40,15,15);score1=score2=2; /*有棋后改变分数*/DoScore();/*输出开始分数*/}void playtoplay()/*人人对战*/{int x,y,t=1,i,j,cc=0;while(1)/*换棋手走棋*/{x=120,y=80;/*每次棋子一开始出来的坐标,x为行坐标,y为列坐标*/ while(1) /*具体一个棋手走棋的过程*/{PrintScore(1);/*输出棋手1的成绩*/PrintScore(2);/*输出棋手2的成绩*/SetPlayColor(t);/*t变量是用来判断棋手所执棋子的颜色*/fillellipse(x,y,15,15);key=bioskey(0);/*接收按键*/if(key==ESC)/*跳出游戏*/break;elseif(key==ENTER)/*如果按键确定就可以跳出循环*/{if(y!=80&&a[(x-120)/40][(y-120)/40]!=1&&a[(x-120)/40][(y-120)/40]!=2)/*如果落子位置没有棋子*/{if(t%2==1)/*如果是棋手1移动*/a[(x-120)/40][(y-120)/40]=1;else/*否则棋手2移动*/a[(x-120)/40][(y-120)/40]=2;if(!QpChange(x,y,t))/*落子后判断棋盘的变化*/{a[(x-120)/40][(y-120)/40]=0;/*恢复空格状态*/cc++;/*开始统计尝试次数*/if(cc>=64-score1-score2) /*如果尝试超过空格数则停步*/{MoveColor(x,y);fillellipse(x,y,15,15);break;}elsecontinue;/*如果按键无效*/}DoScore();/*分数的改变*/break;/*棋盘变化了,则轮对方走棋*/}else/*已经有棋子就继续按键*/continue;}else /*四个方向按键的判断*/if(key==LEFT&&x>120)/*左方向键*/{MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);x-=40;fillellipse(x,y,15,15);}elseif(key==RIGHT&&x<400&&y>80)/*右方向键*/ {MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);x+=40;fillellipse(x,y,15,15);}elseif(key==UP&&y>120)/*上方向键*/{MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);y-=40;fillellipse(x,y,15,15);}elseif(key==DOWN&&y<400)/*下方向键*/{MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);y+=40;fillellipse(x,y,15,15);}}if(key==ESC)/*结束游戏*/break;if((score1+score2)==64||score1==0||score2==0)/*格子已经占满或一方棋子为0判断胜负*/{playWin();/*输出最后结果*/break;}t=t%2+1; /*一方走后,改变棋子颜色即轮对方走*/cc=0; /*计数值恢复为0*/} /*endwhile*/}void SetPlayColor(int t)/*设置棋子颜色*/{if(t%2==1)setfillstyle(SOLID_FILL,15);/*白色*/elsesetfillstyle(SOLID_FILL,8);/*灰色*/}void MoveColor(int x,int y)/*走了一步后恢复原来格子的状态*/{if(y<100)/*如果是从起点出发就恢复蓝色*/setfillstyle(SOLID_FILL,BLUE);else/*其他情况如果是1就恢复白色棋子,2恢复黑色棋子,或恢复蓝色棋盘*/ switch(a[(x-120)/40][(y-120)/40]){case 1:setfillstyle(SOLID_FILL,15);break; /*白色*/case 2:setfillstyle(SOLID_FILL,8);break; /*黑色*/default:setfillstyle(SOLID_FILL,BLUE); /*蓝色*/}}int QpChange(int x,int y,int t)/*判断棋盘的变化*/{int i,j,k,kk,ii,jj,yes;yes=0;i=(x-120)/40; /*计算数组元素的行下标*/j=(y-120)/40; /*计算数组元素的列下标*/SetPlayColor(t);/*设置棋子变化的颜色*//*开始往8个方向判断变化*/if(j<6)/*往右边*/{for(k=j+1;k<8;k++)if(a[i][k]==a[i][j]||a[i][k]==0)/*遇到自己的棋子或空格结束*/ break;if(a[i][k]!=0&&k<8){for(kk=j+1;kk<k&&k<8;kk++)/*判断右边*/{a[i][kk]=a[i][j]; /*改变棋子颜色*/fillellipse(120+i*40,120+kk*40,15,15);}if(kk!=j+1) /*条件成立则有棋子改变过颜色*/ yes=1;}}if(j>1)/*判断左边*/{for(k=j-1;k>=0;k--)if(a[i][k]==a[i][j]||!a[i][k])break;if(a[i][k]!=0&&k>=0){for(kk=j-1;kk>k&&k>=0;kk--){a[i][kk]=a[i][j];fillellipse(120+i*40,120+kk*40,15,15);}if(kk!=j-1)yes=1;}}if(i<6)/*判断下边*/{for(k=i+1;k<8;k++)if(a[k][j]==a[i][j]||!a[k][j])break;if(a[k][j]!=0&&k<8){for(kk=i+1;kk<k&&k<8;kk++){a[kk][j]=a[i][j];fillellipse(120+kk*40,120+j*40,15,15);}if(kk!=i+1)yes=1;}}if(i>1)/*判断上边*/{for(k=i-1;k>=0;k--)if(a[k][j]==a[i][j]||!a[k][j])break;if(a[k][j]!=0&&k>=0){for(kk=i-1;kk>k&&k>=0;kk--){a[kk][j]=a[i][j];fillellipse(120+kk*40,120+j*40,15,15);}if(kk!=i-1)yes=1;}}if(i>1&&j<6)/*右上*/{for(k=i-1,kk=j+1;k>=0&&kk<8;k--,kk++) if(a[k][kk]==a[i][j]||!a[k][kk])break;if(a[k][kk]&&k>=0&&kk<8){for(ii=i-1,jj=j+1;ii>k&&k>=0;ii--,jj++){a[ii][jj]=a[i][j];fillellipse(120+ii*40,120+jj*40,15,15);}if(ii!=i-1)yes=1;}}if(i<6&&j>1)/*左下*/{for(k=i+1,kk=j-1;k<8&&kk>=0;k++,kk--) if(a[k][kk]==a[i][j]||!a[k][kk])break;if(a[k][kk]!=0&&k<8&&kk>=0){for(ii=i+1,jj=j-1;ii<k&&k<8;ii++,jj--){a[ii][jj]=a[i][j];fillellipse(120+ii*40,120+jj*40,15,15);}if(ii!=i+1)yes=1;}}if(i>1&&j>1)/*左上*/{for(k=i-1,kk=j-1;k>=0&&kk>=0;k--,kk--) if(a[k][kk]==a[i][j]||!a[k][kk])break;if(a[k][kk]!=0&&k>=0&&kk>=0){for(ii=i-1,jj=j-1;ii>k&&k>=0;ii--,jj--){a[ii][jj]=a[i][j];fillellipse(120+ii*40,120+jj*40,15,15);}if(ii!=i-1)yes=1;}}if(i<6&&j<6)/* 右下*/{for(k=i+1,kk=j+1;kk<8&&kk<8;k++,kk++) if(a[k][kk]==a[i][j]||!a[k][kk])break;if(a[k][kk]!=0&&kk<8&&k<8){for(ii=i+1,jj=j+1;ii<k&&k<8;ii++,jj++){a[ii][jj]=a[i][j];fillellipse(120+ii*40,120+jj*40,15,15);}if(ii!=i+1)yes=1;}}return yes;/*返回是否改变过棋子颜色的标记*/ }void DoScore()/*处理分数*/{int i,j;score1=score2=0;/*重新开始计分数*/for(i=0;i<8;i++)for(j=0;j<8;j++)if(a[i][j]==1)/*分别统计两个人的分数*/score1++;elseif(a[i][j]==2)score2++;}void PrintScore(int playnum)/*输出成绩*/{if(playnum==1)/*清除以前的成绩*/{setfillstyle(SOLID_FILL,BLUE);bar(550,100,640,400);}setcolor(RED);settextstyle(0,0,4);/*设置文本输出样式*/if(playnum==1)/*判断输出哪个棋手的分,在不同的位置输出*/ {sprintf(playone,"%d",score1);outtextxy(550,200,playone);}else{sprintf(playtwo,"%d",score2);outtextxy(550,300,playtwo);}setcolor(0);}void playWin()/*输出最后的胜利者结果*/ {settextstyle(0,0,4);setcolor(12);if(score2>score1)/*开始判断最后的结果*/ outtextxy(100,50,"black win!");elseif(score2<score1)outtextxy(100,50,"white win!");elseouttextxy(60,50,"you all win!");}案例四迷宫问题/*4.3.3源程序*/#include <graphics.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>#include <dos.h>#define N 20/*迷宫的大小,可改变*/int oldmap[N][N];/*递归用的数组,用全局变量节约时间*/int yes=0;/*yes是判断是否找到路的标志,1找到,0没找到*/int way[100][2],wayn=0;/*way数组是显示路线用的,wayn是统计走了几个格子*/void Init(void);/*图形初始化*/void Close(void);/*图形关闭*/void DrawPeople(int *x,int *y,int n);/*画人工探索物图*/void PeopleFind(int (*x)[N]);/*人工探索*/void WayCopy(int (*x)[N],int (*y)[N]);/*为了8个方向的递归,把旧迷宫图拷贝给新数组*/int FindWay(int (*x)[N],int i,int j);/*自动探索函数*/void MapRand(int (*x)[N]);/*随机生成迷宫函数*/void PrMap(int (*x)[N]);/*输出迷宫图函数*/void Result(void);/*输出结果处理*/void Find(void);/*成功处理*/void NotFind(void);/*失败处理*/void main(void)/*主函数*/{int map[N][N]; /*迷宫数组*/char ch;clrscr();printf("\n Please select hand(1) else auto\n");/*选择探索方式*/ scanf("%c",&ch);Init(); /*初始化*/MapRand(map);/*生成迷宫*/PrMap(map);/*显示迷宫图*/if(ch=='1')PeopleFind(map);/*人工探索*/elseFindWay(map,1,1);/*系统自动从下标1,1的地方开始探索*/ Result();/*输出结果*/Close();}void Init(void)/*图形初始化*/{int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc");}void DrawPeople(int *x,int *y,int n)/*画人工控制图*/{/*如果将以下两句注释掉,则显示人工走过的路径,*/setfillstyle(SOLID_FILL,WHITE); /*设置白色实体填充样式*/bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6); /*恢复原通路*/switch(n)/*判断x,y的变化,8个方向的变化*/{case 1: (*x)--;break; /*上*/case 2: (*x)--;(*y)++;break ;/*右上*/case 3: (*y)++;break; /*右*/case 4: (*x)++;(*y)++;break; /*右下*/case 5: (*x)++;break; /*下*/case 6: (*x)++;(*y)--;break; /*左下*/case 7: (*y)--;break; /*左*/case 8: (*x)--;(*y)--;break; /*左上*/}setfillstyle(SOLID_FILL,RED);/*新位置显示探索物*/bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6); }void PeopleFind(int (*map)[N])/*人工手动查找*/{int x,y;char c=0;/*接收按键的变量*/x=y=1;/*人工查找的初始位置*/setcolor(11);line(500,200,550,200);outtextxy(570,197,"d");line(500,200,450,200);outtextxy(430,197,"a");line(500,200,500,150);outtextxy(497,130,"w");line(500,200,500,250);outtextxy(497,270,"x");line(500,200,450,150);outtextxy(445,130,"q");line(500,200,550,150);outtextxy(550,130,"e");line(500,200,450,250);outtextxy(445,270,"z");line(500,200,550,250);outtextxy(550,270,"c");/*以上是画8个方向的控制介绍*/setcolor(YELLOW);outtextxy(420,290,"Press 'Enter' to end");/*压回车键结束*/ setfillstyle(SOLID_FILL,RED);bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6);/*入口位置显示*/ while(c!=13)/*如果按下的不是回车键*/{c=getch();/*接收字符后开始各个方向的探索*/if(c=='w'&&map[x-1][y]!=1)DrawPeople(&x,&y,1);/*上*/elseif(c=='e'&&map[x-1][y+1]!=1)DrawPeople(&x,&y,2);/*右上*/elseif(c=='d'&&map[x][y+1]!=1)DrawPeople(&x,&y,3);/*右*/elseif(c=='c'&&map[x+1][y+1]!=1)DrawPeople(&x,&y,4);/*右下*/elseif(c=='x'&&map[x+1][y]!=1)DrawPeople(&x,&y,5);/*下*/elseif(c=='z'&&map[x+1][y-1]!=1)DrawPeople(&x,&y,6); /*左下*/elseif(c=='a'&&map[x][y-1]!=1)DrawPeople(&x,&y,7); /*左*/else if(c=='q'&&map[x-1][y-1]!=1)DrawPeople(&x,&y,8); /*左上*/ }setfillstyle(SOLID_FILL,WHITE); /*消去红色探索物,恢复原迷宫图*/ bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6);if(x==N-2&&y==N-2)/*人工控制找成功的话*/yes=1; /*如果成功标志为1*/}void WayCopy(int (*oldmap)[N],int (*map)[N])/*拷贝迷宫数组*/ {int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)oldmap[i][j]=map[i][j];}int FindWay(int (*map)[N],int i,int j)/*递归找路*/{if(i==N-2&&j==N-2)/*走到出口*/{yes=1;/*标志为1,表示成功*/return;}map[i][j]=1;/*走过的地方变为1*/WayCopy(oldmap,map); /*拷贝迷宫图*/if(oldmap[i+1][j+1]==0&&!yes)/*判断右下方是否可走*/{FindWay(oldmap,i+1,j+1);if(yes)/*如果到达出口了,再把值赋给显示路线的way数组,也正是这个原因,所以具体路线是从最后开始保存*/{way[wayn][0]=i;way[wayn++][1]=j;return;}}WayCopy(oldmap,map);if(oldmap[i+1][j]==0&&!yes)/*判断下方是否可以走,如果标志yes已经是1也不用找下去了*/{FindWay(oldmap,i+1,j);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}if(oldmap[i][j+1]==0&&!yes)/*判断右方是否可以走*/ {FindWay(oldmap,i,j+1);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}WayCopy(oldmap,map);if(oldmap[i-1][j]==0&&!yes)/*判断上方是否可以走*/ {FindWay(oldmap,i-1,j);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}if(oldmap[i-1][j+1]==0&&!yes)/*判断右上方是否可以走*/ {FindWay(oldmap,i-1,j+1);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}WayCopy(oldmap,map);if(oldmap[i+1][j-1]==0&&!yes)/*判断左下方是否可以走*/ {FindWay(oldmap,i+1,j-1);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}if(oldmap[i][j-1]==0&&!yes)/*判断左方是否可以走*/ {FindWay(oldmap,i,j-1);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}WayCopy(oldmap,map);if(oldmap[i-1][j-1]==0&&!yes)/*判断左上方是否可以走*/ {FindWay(oldmap,i-1,j-1);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}。
案例一贪吃蛇游戏#define N 200#include <graphics.h>#include <stdlib.h>#include <dos.h>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/ struct Food{int x;/*食物的横坐标*/int y;/*食物的纵坐标*/int yes;/*判断是否要出现食物的变量*/ }food;/*食物的结构体*/struct Snake{int x[N];int y[N];int node;/*蛇的节数*/int direction;/*蛇移动方向*/int life;/* 蛇的生命,0活着,1死亡*/ }snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/void GamePlay(void);/*玩游戏具体过程*/ void PrScore(void);/*输出成绩*//*主函数*/void main(void){Init();/*图形驱动*/DrawK();/*开始画面*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}/*图形驱动*/void Init(void){int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc");cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/ void DrawK(void){/*setbkcolor(LIGHTGREEN);*/setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/for(i=50;i<=600;i+=10)/*画围墙*/{rectangle(i,40,i+10,49); /*上边*/rectangle(i,451,i+10,460);/*下边*/}for(i=40;i<=450;i+=10){rectangle(50,i,59,i+10); /*左边*/rectangle(601,i,610,i+10);/*右边*/}}/*玩游戏具体过程*/void GamePlay(void){randomize();/*随机数发生器*/food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/snake.life=0;/*活着*/snake.direction=1;/*方向往右*/snake.x[0]=100;snake.y[0]=100;/*蛇头*/snake.x[1]=110;snake.y[1]=100;snake.node=2;/*节数*/PrScore();/*输出得分*/while(1)/*可以重复玩游戏,压ESC键结束*/{while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{if(food.yes==1)/*需要出现新食物*/{food.x=rand()%400+60;food.y=rand()%350+60;while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/food.x++;。
初学编程100个代码大全c语言当初学编程时,了解一些常见的代码示例是非常有帮助的。
以下是一些常见的C语言代码示例,总共100个,供你参考:1. Hello World程序:c.#include <stdio.h>。
int main() {。
printf("Hello, World!\n");return 0;}。
2. 计算两个数的和:#include <stdio.h>。
int main() {。
int num1, num2, sum;printf("Enter two numbers: "); scanf("%d %d", &num1, &num2); sum = num1 + num2;printf("Sum = %d\n", sum);return 0;}。
3. 判断一个数是奇数还是偶数:#include <stdio.h>。
int main() {。
int num;printf("Enter a number: ");scanf("%d", &num);if (num % 2 == 0) {。
printf("%d is even.\n", num); } else {。
printf("%d is odd.\n", num); }。
return 0;}。
4. 判断一个数是正数、负数还是零:c.#include <stdio.h>。
int main() {。
int num;printf("Enter a number: ");scanf("%d", &num);if (num > 0) {。
printf("%d is positive.\n", num);} else if (num < 0) {。
循环控制输出图案【程序1】题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
2.程序源代码:#include "stdio.h"main(){int i,j,result;printf("\n");for (i=1;i<10;i++){ for(j=1;j<10;j++){result=i*j;printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/}printf("\n");/*每一行后换行*/}}【程序2】题目:要求输出国际象棋棋盘。
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
2.程序源代码:#include "stdio.h"main(){int i,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if((i+j)%2==0)printf("%c%c",219,219);elseprintf(" ");printf("\n");}}==============================================================【程序3】题目:打印楼梯,同时在楼梯上方打印两个笑脸。
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
2.程序源代码:#include "stdio.h"main(){int i,j;printf("\1\1\n");/*输出两个笑脸*/for(i=1;i<11;i++){for(j=1;j<=i;j++)printf("%c%c",219,219);printf("\n");}}【程序4】题目:打印出如下图案(菱形)****************************1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
C语言经典源程序100例1. Hello, World!这是C语言中最基本的程序,用于显示"Hello, World!"。
```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```2. 计算两数之和这个程序用于计算两个整数的和,并将结果输出。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两数之和为:%d\n", sum);return 0;}```3. 判断奇偶数这个程序用于判断一个整数是奇数还是偶数。
```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("该数是偶数。
\n");} else {printf("该数是奇数。
\n");}}```4. 求输入数字的平均值这个程序用于求输入数字的平均值。
```c#include <stdio.h>int main() {int count, i;double num, sum = 0.0, average;printf("请输入数字的个数:");scanf("%d", &count);printf("请输入这 %d 个数字:\n", count); for (i = 0; i < count; i++) {scanf("%lf", &num);sum += num;}average = sum / count;printf("平均值为:%lf\n", average);}```5. 判断闰年这个程序用于判断一个年份是否为闰年。
循环控制输出图案【程序1】题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
2.程序源代码:#include "stdio.h"main(){int i,j,result;printf("\n");for (i=1;i<10;i++){ for(j=1;j<10;j++){result=i*j;printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/}printf("\n");/*每一行后换行*/}}【程序2】题目:要求输出国际象棋棋盘。
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
2.程序源代码:#include "stdio.h"main(){int i,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if((i+j)%2==0)printf("%c%c",219,219);elseprintf(" ");printf("\n");}}==============================================================【程序3】题目:打印楼梯,同时在楼梯上方打印两个笑脸。
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
2.程序源代码:#include "stdio.h"main(){int i,j;printf("\1\1\n");/*输出两个笑脸*/for(i=1;i<11;i++){for(j=1;j<=i;j++)printf("%c%c",219,219);printf("\n");}}【程序4】题目:打印出如下图案(菱形)****************************1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
2.程序源代码:main(){int i,j,k;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf(" ");for(k=0;k<=2*i;k++)printf("*");printf("\n");}for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf(" ");for(k=0;k<=4-2*i;k++)printf("*");printf("\n");}}【程序5】题目:打印出杨辉三角形(要求打印出10行如下图)1.程序分析:11 11 2 11 3 3 114 6 4 1151010 5 12.程序源代码:main(){int i,j;int a[10][10];printf("\n");for(i=0;i<10;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<10;i++)for(j=1;j a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<10;i++){for(j=0;j<=i;j++)printf("%5d",a[i][j]);printf("\n");}}【程序1】if语句嵌套练习题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}【程序2】if语句使用练习题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y 的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
2.程序源代码:main(){int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y){t=x;x=y;y=t;} /*交换x,y的值*/if(x>z){t=z;z=x;x=t;}/*交换x,z的值*/if(y>z){t=y;y=z;z=t;}/*交换z,y的值*/printf("small to big: %d %d %d\n",x,y,z);}【程序3】switch多分支语句练习题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码: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;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf("data error");break;}sum=sum+day; /*再加上某天的天数*/if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/ leap=1;elseleap=0;if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ sum++;printf("It is the %dth day.",sum);}【程序2】题目:有一个已经排好序的数组。
现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
2.程序源代码:main(){int a[11]={1,4,6,9,13,16,19,28,40,100};int temp1,temp2,number,end,i,j;printf("original array is:\n");for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");printf("insert a new number:");scanf("%d",&number);end=a[9];if(number>end)a[10]=number;else{for(i=0;i<10;i++){ if(a[i]>number){temp1=a[i];a[i]=number;for(j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}for(i=0;i<11;i++)printf("%6d",a[i]);}【程序3】题目:将一个数组逆序输出。
1.程序分析:用第一个与最后一个交换。
2.程序源代码:#define N 5main(){ int a[N]={9,6,5,4,1},i,temp;printf("\n original array:\n");for(i=0;i printf("%4d",a[i]);for(i=0;i{temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}printf("\n sorted array:\n");for(i=0;i printf("%4d",a[i]);}【程序1】题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。