c语言课件中例题
- 格式:doc
- 大小:310.00 KB
- 文档页数:15
C语言编程实例100题【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/for(j=1;j<5;j++)for(k=1;k<5;k++){if(i!=k&&i!=j&&j!=k)/*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。
利润(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);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
b说明:1、原先的少部分题目有错,请用红色的部分替换掉;2、如果红色部分有文字“删除该行”,就直接删除该行;第一章C语言的基础知识第一节对C语言的初步认识习题1. 下列叙述中错误的是BA)任何一个C程序都必须有且仅有一个main函数,C语言总是从main函数开始执行。
B)C语言中的变量,可以先使用后定义。
C)所有的C语言语句最后都必须有一个分号D)C程序书写格式自由,语句可以从任一列开始书写,一行内可以写多个语句。
第二节熟悉Visual C++习题1. C语言源程序名的后缀是 BA).exe B).c C).obj D).cp2. 下列叙述中错误的是DA)计算机不能直接执行用C语言编写的源程序B)C程序经C编译后,生成后缀为.obj的文件是一个二进制文件C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D)后缀为.obj和.exe的二进制文件都可以直接运行3. 用C语言编写的代码程序BA)可立即执行B)是一个源程序C)经过编译即可执行D)经过编译解释才能执行第三节标识符习题1. 按照C语言规定的用户标识符命名规则,不能出现在标识符中的是BA)大写字母B)连接符C)数字字符D)下划线2. 以下选项中不合法的标识符是 CA)print B)FOR C)&a D)_003. 以下叙述中错误的是AA)用户所定义的标识符允许使用关键字B)用户所定义的标识符应尽量做到“见名知意”C)用户所定义的标识符必须以字母或下划线开头D)用户定义的标识符中,大、小写字母代表不同标识4. 可在C程序中用作用户标识符的一组标识符是AA)and B)Date C)Hi D)case_2007 y-m-d Dr.Tom Bigl5. 以下不合法的用户标识符是CA)j2_KEY B)Double C)4d D)_8_6. 以下不能定义为用户标识符的是DA)Main B)_0 C)_int D)sizeof 7. 下列选项中,不能用作标识符的是DA)_1234_ B)_1_2 C)int_2_ D)2_int_8. 以下4组用户定义标识符中,全部合法的一组是AA)_main B)If C)txt D)int enclude -max REAL k_2sin turbo 3COM _001第四节数制转换习题1.十进制整数360的八进制为__________,十六进制为_____________。
c语言经典例题100道经典,源程序100例题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数,都是多少, 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) ,*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);} }==============================================================【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润,高于10万元的部分,可高于10万元,低于20万元时,低于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;1else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01; printf("bonus=%d",bonus); }============================================================== 【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少,1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
C语言课本例题高级程序设计 2012-01-05 9:00-11:00 陆宇红 1-203 陆宇红周金凤第三章顺序结构程序设计。
1.输入3个字符,并反向输出3个字符和它们的ASCII码。
#include"stdio.h"void main( ){ char ch1,ch2,ch3;scanf("%c%c%c",&ch1,&ch2,&ch3);printf("%c,%d\n",ch3,ch3);printf("%c,%d\n",ch2,ch2);printf("%c,%d\n",ch1,ch1);2.求方程ax*x+bx+c=0的实数根。
#include"stdio.h"void main( ){ float a,b,c,disc,x1,x2;printf("input a,b,c:");scanf("%f,%f,%f",&a,&b,&c);disc=b*b-4ac;x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf("\nx1=%6.2f\nx2=%6.2f\n",x1,x2);3.求前驱字符和后继字符。
输入一个字符,找出它的前驱和后继字符。
按从大到小的顺序输出。
#include"stdio"void main( ){ char ch1;printf("请输入一个字符\n");scanf("%c",&ch1);printf("前驱字符:%c,元字符:%c,后继字符:%c,它们的ASCII值分别为:%d,%d,%d\n",ch1+1,ch1,ch1-1,ch1+1,ch1,ch1-1);4.输入三角形的边长,求三角形面积(面积=sqrt(s(s-a)(s-b)(s-a)),s=(a+b+c)/2).第四章选择结构程序设计5.根据输入学生成绩判断,当成绩>=90时,为A等,。
例/*ch2_003.c*/#define PRICE 12.5main(){ int num=3;float total;char ch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a’;printf(“total=%f,ch1=%c\n”,total,ch1);}运行结果:total=37.500000, ch1=d例:/*ch2_6.c*/#include <stdio.h>main(){ int x,y=7;float z=4;x=(y=y+6,y/z);printf("x=%d\n",x);}运行结果:x=3/*ch3_4.c*/#include <stdio.h>main(){ int c;printf("Enter a character:");c=getchar();printf("%c--->hex%x\n",c,c);}运行结果:Enter a character:AA--->hex41例输入三角形边长,求面积/*ch3_12.c*/#include <math.h>#include <stdio.h>main(){ float a,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2f\n",a,b,c,s);printf("area=%7.2f\n",area);}输入:3,4,6 ↵输出:a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33例从键盘输入大写字母,用小写字母输出/*ch4_13.c*/#include "stdio.h"main(){ char c1,c2;c1=getchar();printf("%c,%d\n",c1,c1);c2=c1+32;printf("%c,%d\n",c2,c2);}输入:A ↵输出:A,65a,97例显示1~10的平方/*ch5_21.c*/#include <stdio.h>main(){ int i=1;while(i<=10){ printf("%d*%d=%d\n",i,i,i*i);i++;}}运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100#include<stdio.h>#include<math.h>main(){float a,b;double s,h;double f(double x);int n,i;printf("Input integral area a,b:");scanf("%f,%f",&a,&b);printf("Input n:");scanf("%d",&n);h=(b-a)/n;s=0.5*h*(f(a)+f(b));for(i=1;i<=n-1;i++)s=s+h*f(a+i*h);printf("\nThe value is:%f\n",s); }double f(double x){return(sqrt(4.0-x*x));}例循环嵌套,输出九九表/*ch5_5.c*/#include <stdio.h>main(){ int i,j;for(i=1;i<10;i++)printf("%4d",i);printf("\n---------------------------------------\n");for(i=1;i<10;i++)for(j=1;j<10;j++)printf((j==9)?"%4d\n":"%4d",i*j);}例break举例:输出圆面积,面积大于100时停止#define PI 3.14159main(){int r;float area;for(r=1;r<=10;r++){ area=PI*r*r;if(area>100)break;printf("r=%d,area=%.2f\n",r,area);}}例读10个整数存入数组,找出其中最大值和最小值#include <stdio.h>#define SIZE 10main(){ int x[SIZE],i,max,min;printf("Enter 10 integers:\n");for(i=0;i<SIZE;i++){ printf("%d:",i+1);scanf("%d",&x[i]);}max=min=x[0];for(i=1;i<SIZE;i++){ if(max<x[i]) max=x[i];if(min>x[i]) min=x[i];}printf("Maximum value is %d\n",max);printf("Minimum value is %d\n",min); }例用冒泡法对10个数排序(由小到大#include <stdio.h>main(){ int a[11],i,j,t;printf("Input 10 numbers:\n");for(i=1;i<11;i++)scanf("%d",&a[i]);printf("\n");for(j=1;j<=9;j++)for(i=1;i<=10-j;i++)if(a[i]>a[i+1]){t=a[i]; a[i]=a[i+1]; a[i+1]=t;} printf("The sorted numbers:\n");for(i=1;i<11;i++)printf("%d ",a[i]);}例用简单选择法对10个数排序#include <stdio.h>main(){ int a[11],i,j,k,x;printf("Input 10 numbers:\n");for(i=1;i<11;i++)scanf("%d",&a[i]);printf("\n");for(i=1;i<10;i++){ k=i;for(j=i+1;j<=10;j++)if(a[j]<a[k]) k=j;if(i!=k){ x=a[i]; a[i]=a[k]; a[k]=x;}}printf("The sorted numbers:\n");for(i=1;i<11;i++)printf("%d ",a[i]);}例将二维数组行列元素互换,存到另一个数组中#include <stdio.h>main(){ int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],i,j;printf("array a:\n");for(i=0;i<=1;i++){ for(j=0;j<=2;j++){ printf("%5d",a[i][j]);b[j][i]=a[i][j];}printf("\n");}printf("array b:\n");for(i=0;i<=2;i++){ for(j=0;j<=1;j++)printf("%5d",b[i][j]);printf("\n");}}例求二维数组中最大元素值及其行列号#include <stdio.h>main(){ int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};int i,j,row=0,colum=0,max;max=a[0][0];for(i=0;i<=2;i++)for(j=0;j<=3;j++)if(a[i][j]>max){ max=a[i][j];row=i;colum=j;}printf("max=%d,row=%d, \colum=%d\n",max,row,colum);}例输入一行字符,统计其中有多少个单词#include <stdio.h>main(){ char string[81];int i,num=0,word=0;char c;gets(string);for(i=0;(c=string[i])!='\0';i++)if(c==' ') word=0;else if(word==0){ word=1; num++; }printf("There are %d words \in the line\n",num);}例交换两个数/*ch7_2.c*/#include <stdio.h>main(){ int x=7,y=11;printf("x=%d,\ty=%d\n",x,y);printf("swapped:\n");swap(x,y);printf("x=%d,\ty=%d\n",x,y);}swap(int a,int b){ int temp;temp=a; a=b; b=temp;}例求三个数中最大数和最小数的差值#include <stdio.h>int dif(int x,int y,int z);int max(int x,int y,int z);int min(int x,int y,int z);void main(){ int a,b,c,d;scanf("%d%d%d",&a,&b,&c);d=dif(a,b,c);printf("Max-Min=%d\n",d);}int dif(int x,int y,int z){ return max(x,y,z)-min(x,y,z); }int max(int x,int y,int z){ int r;r=x>y?x:y;return(r>z?r:z);}int min(int x,int y,int z){ int r;r=x<y?x:y;return(r<z?r:z);}例求n的阶乘#include <stdio.h>int fac(int n){ int f;if(n<0) printf("n<0,data error!");else if(n==0||n==1) f=1;else f=fac(n-1)*n;return(f);}main(){ int n, y;printf("Input a integer number:");scanf("%d",&n);y=fac(n);printf("%d! =%15d",n,y);例Hanoi塔问题void move(char x, char y){ printf("%c--->%c\n",x,y); }void hanoi(int n,char one,char two,char three) { if(n==1) move(one,three);else{ hanoi(n-1,one,three,two);m ove(one,three);h anoi(n-1,two,one,three);}}main(){ int m;printf("Input the number of disks:");scanf("%d",&m);printf("The steps to moving %3d disks:\n",m);hanoi(m,'A','B','C');}例8.11 求10个学生的平均成绩#include <stdio.h>float average(int arr[10], int n);void main(){ int score[10], i;float aver;printf("Input 10 scores:\n");for( i=0; i<10; i++ )scanf("%d", &score[i]);aver=average(score,10);printf("Average is:%.2f", aver);}float average(int arr[10], int n){ int i;float aver,sum=0;for( i=0; i<n; i++ )sum += arr[i];aver = sum /n;return aver;}例8.13 数组排序-选择法排序void sort(int array[],int n){ int i,j,k,t;for(i=0;i<n-1;i++){ k=i; /*k为最小元素下标*/f or(j=i+1;j<n;j++)if(array[j]<array[k]) k=j;i f(k!=i){ t=array[i];array[i]=array[k];array[k]=t;}}}main(){ int a[10],i;for(i=0;i<10;i++)s canf("%d",&a[i]);sort(a,10);for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");}例8.14有一个3*4的矩阵,求出其中的最大元素的值int max_value(int array[3][4]){ int i,j,k,max;max=array[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++)if(array[i][j]>max)max=array[i][j];return(max);}main(){ int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};printf("max value is %d\n",max_value(a));}例将数组a中的n个整数按相反顺序存放#include "stdio.h"void inv(int x[], int n){ int t,i,j,m=(n-1)/2;for(i=0;i<=m;i++){ j=n-1-i;t=x[i]; x[i]=x[j]; x[j]=t;}}main(){ int i,a[10]={3,7,9,11,0,6,7,5,4,2};inv(a,10);printf("The array has been reverted:\n");for(i=0;i<10;i++)printf("%d,",a[i]);printf("\n");}例3个学生各学4门课,计算总平均分,并输出第n个学生成绩main(){ void average(float *p,int n);void search(float (*p)[4],int n);float score[3][4]={{65,67,79,60},{80,87,90,81},{90,99,100,98}};average(*score,12);search(score,2);}void average(float *p,int n){ float *p_end, sum=0,aver;p_end=p+n-1;for(;p<=p_end;p++)s um=sum+(*p);aver=sum/n;printf("average=%5.2f\n",aver);}void search(float (*p)[4], int n){ int i;printf(" No.%d :\n",n);for(i=0;i<4;i++)printf("%5.2f ",*(*(p+n)+i));}例用函数指针变量调用函数,比较两个数大小#include "stdio.h"int max(int x,int y){ int z;if(x>y) z=x;else z=y;return(z);}main(){ int (*p)();int a,b,c;p=max;scanf("%d,%d",&a,&b);c=(*p)(a,b);printf("a=%d,b=%d,max=%d\n",a,b,c);}例对字符串排序(简单选择排序)main(){ void sort(char *name[],int n), print(char *name[],int n);char *name[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer "};int n=5;sort(name,n);print(name,n);}void sort(char *name[],int n){ char *temp;int i,j,k;for(i=0;i<n-1;i++){ k=i;for(j=i+1;j<n;j++)i f(strcmp(name[k],name[j])>0) k=j;if(k!=i){ temp=name[i]; name[i]=name[k]; name[k]=temp;} }}例11.2 统计候选人选票#include <stdio.h>struct person{ char name[20];int count;}leader[3]={"Li",0,"Zhang",0,"Wang",0} ;main(){ int i,j; char leader_name[20];for(i=1;i<=10;i++){ scanf("%s",leader_name);for(j=0;j<3;j++)i f(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}for(i=0;i<3;i++)printf("%5s:%d\n",leader[i].name,leader[i].count);}例读文本文件内容,并显示#include <stdio.h>#include <stdlib.h>main(){ FILE *fp;char ch,*filename=" out.txt";if((fp=fopen(filename, "r"))==NULL){ printf("cannot open file\n");exit(0);}ch=fgetc(fp);while(ch!=EOF){putchar(ch); ch=fgetc(fp);}fclose(fp);}例13.2二进制文件拷贝#include <stdio.h>#include <stdlib.h>main(){ FILE *in, *out;char ch,infile[10],outfile[10];scanf("%s",infile);scanf("%s",outfile);if ((in = fopen(infile, "rb"))== NULL){ printf("Cannot open infile.\n");exit(0);}if ((out = fopen(outfile, "wb"))== NULL){ printf("Cannot open outfile.\n");exit(0);}while(!feof(in))fputc (fgetc(in),out);fclose(in); fclose(out);}例从键盘按格式输入数据存到磁盘文件中去#include <stdio.h>#include <stdlib.h>main(){ char s[80],c[80];int a,b;FILE *fp;if((fp=fopen("test","w"))==NULL){ puts("can't open file"); exit() ; }fscanf(stdin,"%s%d",s,&a);/*read from keaboard*/ fprintf(fp,"%s %d",s,a);/*write to file*/fclose(fp);if((fp=fopen("test","r"))==NULL){ puts("can't open file"); exit(); }fscanf(fp,"%s%d",c,&b);/*read from file*/fprintf(stdout,"%s %d",c,b);/*print to screen*/fclose(fp);}。