非常经典C#案例培训资料

合集下载

C语言经典程序片段

C语言经典程序片段

C语言经典程序片段以下程序只能出了实现程序功能的核心语句,请掌握其编程思想。

1.编写函数fun求1!+2!+3!+ ……+n!的和,在main函数中由键盘输入n值,并输出运算结果。

请编写fun 函数。

int i;float f=1,s=0;for(i=1;i<=n;i++){f=f*i;s=s+f;}return s;2.从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。

请编写fun函数。

int min,i;min=x[0];for(i=1;i<n;i++){if(x[i]<min) min=x[i];}return min;3.从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的结论信息。

int i;int j;j= 1;for(i=2;i<n;i++){if(n%i==0) j= 0;}return j;4.输入2个学生3门课的成绩,计算学生成绩平均分,课程平均分和最高分. int i,j;float sum;for(i=0;i<2;i++) /*计算第i个学生平均分*/{sum=0;for(j=0;j<3;j++)sum=sum+score[i][j];StuAgv[i]=sum/3;}for(j=0;j<3;j++) /*计算第j门课的平均分*/{sum=0;for(i=0;i<2;i++)sum=sum+ score [i][j];CouAgv[j]=sum/2;}Max=score[0][0];for(i=0;i<2;i++)for(j=0;j<3;j++)if(Max<=score[i][j]){Max=score[i][j]; }return ;5.从字符串s中删除指定的字符c。

int i,k=0;for(i=0;s[i]!='\0';i++)if(s[i]!=c) s[k++]=s[i];s[k]='\0';6.求出二维数组周边元素之和,作为函数值返回。

C语言编程经典100例

C语言编程经典100例

文章由情难枕精心整理,希望对大家的学习和工作带来帮助整理人:情难枕整理时间:2011-4-10C语言经典编程100例程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/}}==============================================================【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。

1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

2.程序源代码:#include "math.h"main(){int m,i,k,h=0,leap=1;printf("\n");for(m=101;m<=200;m++){ k=sqrt(m+1);for(i=2;i<=k;i++)if(m%i==0){leap=0;break;}if(leap) {printf("%-4d",m);h++;if(h%10==0)printf("\n");}leap=1;}printf("\nThe total is %d",h);}==============================================================【程序3】题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

C语言经典100例

C语言经典100例

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)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;intbonus1,bonus2,bonus4,bonus6,bonus10,bon us; 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后再开方,如果开方后的结果满足如下条件,即是结果。

C语言经典代码考试自用

C语言经典代码考试自用

C语言经典代码考试自用C语言是一种通用的高级程序设计语言,经常被用于系统软件和应用软件的开发。

在学习C语言的过程中,熟练掌握经典的代码是非常重要的。

本文将介绍一些C语言经典代码,希望对于C语言的学习和考试有所帮助。

1. Hello World程序Hello World程序是C语言学习的第一步,也是非常经典的代码。

它的目的是输出一行字符串"Hello World!"到屏幕上。

以下是Hello World程序的代码:```c#include <stdio.h>int main() {printf("Hello World!");return 0;}```2. 求两个整数的最大公约数最大公约数是指能同时整除两个数的最大正整数。

以下是求两个整数的最大公约数的代码:```c#include <stdio.h>int gcd(int a, int b) {if (b == 0) {return a;} else {return gcd(b, a % b);}}int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);printf("最大公约数为:%d", gcd(num1, num2));return 0;}```3. 判断一个数是否为素数素数是只能被1和自身整除的数,大于1的自然数中除了2以外都是奇数。

以下是判断一个数是否为素数的代码:```c#include <stdio.h>#include <stdbool.h>bool isPrime(int num) {if (num <= 1) {return false;}for (int i = 2; i * i <= num; i++) { if (num % i == 0) {return false;}}return true;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数", num);} else {printf("%d不是素数", num);}return 0;}```4. 查找数组中的最大元素以下是查找数组中的最大元素的代码:```c#include <stdio.h>int findMax(int arr[], int n) {int max = arr[0];for (int i = 1; i < n; i++) {if (arr[i] > max) {max = arr[i];}}return max;int main() {int arr[] = {5, 2, 8, 10, 1};int n = sizeof(arr) / sizeof(arr[0]);printf("数组中的最大元素为:%d", findMax(arr, n));return 0;}```5. 根据用户输入的数字打印对应的星号图案以下是根据用户输入的数字打印对应的星号图案的代码:```c#include <stdio.h>void printPattern(int num) {for (int i = 1; i <= num; i++) {for (int j = 1; j <= i; j++) {printf("* ");}printf("\n");}int main() {int num;printf("请输入一个数字:");scanf("%d", &num);printPattern(num);return 0;}```以上是一些C语言经典代码的示例,涵盖了基本输入输出、循环、递归等常用语法和算法。

C语言入门必学—10个经典C语言算法

C语言入门必学—10个经典C语言算法

C语言入门必学—10个经典C语言算法C语言是一种广泛使用的编程语言,具有高效、灵活和易学的特点。

它不仅在软件开发中被广泛应用,也是计算机科学专业的必修课。

在学习C语言的过程中,掌握一些经典的算法是非常重要的。

本文将介绍10个经典C语言算法,帮助读者更好地了解和掌握C语言。

一、冒泡排序算法(Bubble Sort)冒泡排序算法是最简单、也是最经典的排序算法之一。

它通过不断比较相邻的元素并交换位置,将最大(或最小)的元素逐渐“冒泡”到数组的最后(或最前)位置。

二、选择排序算法(Selection Sort)选择排序算法是一种简单但低效的排序算法。

它通过不断选择最小(或最大)的元素,并与未排序部分的第一个元素进行交换,将最小(或最大)的元素逐渐交换到数组的前面(或后面)。

三、插入排序算法(Insertion Sort)插入排序算法是一种简单且高效的排序算法。

它通过将数组分为已排序和未排序两个部分,依次将未排序部分的元素插入到已排序部分的合适位置。

四、快速排序算法(Quick Sort)快速排序算法是一种高效的排序算法。

它采用了分治的思想,通过将数组分为较小和较大两部分,并递归地对两部分进行排序,最终达到整个数组有序的目的。

五、归并排序算法(Merge Sort)归并排序算法是一种高效的排序算法。

它采用了分治的思想,将数组一分为二,递归地对两个子数组进行排序,并将结果合并,最终得到有序的数组。

六、二分查找算法(Binary Search)二分查找算法是一种高效的查找算法。

它通过不断将查找范围折半,根据中间元素与目标值的大小关系,缩小查找范围,最终找到目标值所在的位置。

七、递归算法(Recursive Algorithm)递归算法是一种通过自我调用的方式解决问题的算法。

在C语言中,递归算法常用于解决树的遍历、问题分解等情况。

八、斐波那契数列算法(Fibonacci Sequence)斐波那契数列是一列数字,其中每个数字都是前两个数字的和。

19个C语言经典案例

19个C语言经典案例
{ k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{leap=0;break;}
if(leap)
{printf("%-4d",m);h++;
if(h==0)
k=strlen(c);
for (i=0,j=k-1;i<k/2;i++,j--)
{ c1=c[i];c[i]=c[j];c[j]=c1; }
printf("%s\n",c);
}
指针法:
void invert(char *s)
{int i,j,k;
#include<stdio.h>
replace(char *s,char c1,char c2)
{ while(*s!='\0')
{ if (*s==c1)
*s=c2;
s++;
}
}
main()
{ FILE *fp;
char str[100],a,b;
#include<stdio.h>
void sort(int *x,int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(x[j]>x[k]) k=j;
if(k!=i)
{
t=x[i];
printf("\n");

C语言经典编程100例

C语言经典编程100例

C语言经典编程100例程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/}}==============================================================【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。

1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

2.程序源代码:#include "math.h"main(){int m,i,k,h=0,leap=1;printf("\n");for(m=101;m<=200;m++){ k=sqrt(m+1);for(i=2;i<=k;i++)if(m%i==0){leap=0;break;}if(leap) {printf("%-4d",m);h++;if(h%10==0)printf("\n");}leap=1;}printf("\nThe total is %d",h);}【程序4】题目:将一个正整数分解质因数。

例如:输入90,打印出90=2*3*3*5。

c语言经典案例

c语言经典案例

1、用筛选法求100之内的素数。

#include <stdio.h>void main(){int num[100],i,j;for (i=0;i<100;i++) num[i]=1;for (i=2;i<=10;i++)for (j=2;i*j<=100;j++) num[i*j-1]=0;printf("0至100内素数有:\n");for (i=j=0;i<100;i++)if (num[i]==1) {printf("%-4d",i+1);if (++j%4==0) printf("\n");}}2、用选择法对10个整数排序。

#include <stdio.h>void main(){int num[10],n,i,j,t,k;printf("请输入十个整数:");for (n=0;n<10;n++) scanf("%d",&num[n]);for (i=0;i<9;i++){k=i;for (j=i+1;j<10;j++)if (num[k]<num[j]) k=j;if (k!=i) {t=num[i];num[i]=num[k];num[k]=t;}}printf("从大到小排序为:");for (n=0;n<10;n++) printf("%d ",num[n]);}3、求一个3*3的整型二维数组对角线元素之和。

#include <stdio.h>void main(){int num[3][3],i,j;printf("输入二维数组:\n");for (i=0;i<3;i++)for (j=0;j<3;j++)scanf("%d",&num[i][j]);printf("两对角线和分别为%d 和%d\n",num[0][0]+num[1][1]+num[2][2],num[0][2]+num[1][1]+num[2][0]);}5、将一个数组中的值按逆序重新存放。

c语言经典题目

c语言经典题目

一,闰年问题#include<stdio.h>void main(){int a;printf("please input the data of years:");scanf("%d",&a);if(a%400==0||(a%4==0&&a%100!=0))printf("\n闰年:%d",a);}二,数字整除问题#include<stdio.h>void main(){int a=1,i=0;printf("能被7整除的数:\n");while(a<=100){if(a%7==0){printf("%4d",a);i++;if(i%5==0)printf("\n");}a++;}}三,五层递加三角#include<stdio.h>void main(){int a,b,n=1;while(n<=5){a=1,b=1;while(a<=5-n){printf(" ");a++;}while(b<=2*n-1){printf("*");b++;}printf("\n");n++;}}四,水仙花数#include<stdio.h>void main(){int a,m,n,q,p=1;a=100;while(a<1000){m=a/100;n=a/10-m*10;q=a-m*100-n*10;if(a==m*m*m+n*n*n+q*q*q){printf("%5d",a);if(p%2==0)printf("\n");p++;}a++;}}五,最小公倍数#include<stdio.h>int gy(int x,int y){int r;if(x<y){r=x;x=y;y=r;}r=x%y;while(r!=0){x=y;y=r;r=x%y;}return (y);}int gb(int m,int n){int p;p=m*n/gy(m,n);return (p);}void main(){int a,b,c;printf("please enter the data you want to handle:");scanf("%d,%d",&a,&b);c=gb(a,b);printf("%d",c);}六,1+1/3+1/5.....#include<stdio.h>void main(){int n,i;float sum=0.0;scanf("%d",&n);i=1;while(i<=n){sum +=___1.0/(2*i-1);i++;}printf("%.3f",sum);}七,1+1/(1+2)+1/(1+2+3).....#include<stdio.h>void main(){int a,b,c=0;float d=0.0;a=1;scanf("%d",&b);while(a<=b){c+=a;a++;d+=1.0/c;}printf("%d\n",c);printf("%.3f",d);}八,1/(1*2*3*4....*b)#include<stdio.h>void main(){int a,b,c=1;float d;scanf("%d",&b);a=1;while(a<=b){c*=a;a++;d=1.0/c;}printf("%d\n",c);printf("%.3f\n",d);}九,从大到小排列数组,求和,取极差#include<stdio.h>void main(){int a[10],m=0,i,j,t,c;float d=0.0;while(m<10){scanf("%d",&a[m]);m++;}for(i=0;i<10;i++)printf("%3d",a[9-i]);printf("\n");for(i=0;i<10;i++)for(j=0;j<9-i;j++){if(a[j]<a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}for(i=0;i<10;i++)printf("%3d",a[i]);c=a[0]-a[9];printf("\n%d",c);for(i=0;i<10;i++)d+=a[i];printf("\n%.3f",d/10.0);}十,矩阵转置及其元素最大值#include<stdio.h>void main(){int i,j,a[2][3],b[3][2],max;for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<2;i++){for(j=0;j<3;j++)printf("a[%d][%d]=%d ",i,j,a[i][j]);printf("\n");}for(i=0;i<2;i++){for(j=0;j<3;j++){b[j][i]=a[i][j];}}for(i=0;i<3;i++){for(j=0;j<2;j++)printf("b[%d][%d]=%2d ",i,j,b[i][j]);printf("\n");}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];}printf("max=%d",max);}十一,矩阵对角线元素和#include<stdio.h>void main(){int i,j,m=0,a[3][3];for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("a[%d][%d]=%2d ",i,j,a[i][j]);printf("\n");}printf("对角线之和为:");for(i=0;i<3;i++)m+=a[i][i];printf("%d",m);}十二,斐波那契数列#include<stdio.h>void main(){int fib[20]={1,1};int i;for(i=2;i<20;i++)fib[i]=fib[i-1]+fib[i-2];for(i=0;i<20;i++){if(i%5==0)printf("\n");printf("%5d",fib[i]);}}十三,杨辉三角#include<stdio.h>void main(){int a[10][10],i,j;for(i=0;i<10;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<10;i++)for(j=1;j<i;j++)a[i][j]=a[i-1][j]+a[i-1][j-1];for(i=0;i<10;i++){for(j=0;j<=i;j++)printf("%5d",a[i][j]);printf("\n");}}十四,101-200之间的素数#include<stdio.h>void main(){int sum,num,i;for(num=101;num<=200;num++){sum=0;for(i=2;i<num;i++){if(num%i==0)sum++;}if(sum==0)printf("%5d",num);}}#include<stdio.h>void main(){int i,j,k;for(i=0;i<=20;i++)for(j=0;j<=33;j++)for(k=0;k<=99;k=k+3)if((i+j+k==100)&&(15*i+9*j+k==300))printf("i=%d j=%d k=%d\n",i,j,k);}十六,猴子吃桃#include<stdio.h>void main(){int x1,x2=1,day;for(day=9;day>0;day--){x1=2*(x2+1);x2=x1;}printf("第一天的桃子数:%d\n",x1);5.1 用π/4≈1-1/3+1/5-1/7+…公式求π的值,直到某一项的绝对值小于10-6为止。

C语言经典例子100个

C语言经典例子100个

转自夜痕_翔哥的博客详情请访问他的博客。

如有侵权,请联系上传者撤回经典C语言程序设计100例1-10【程序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)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后再开方,如果开方后的结果满足如下条件,即是结果。

C语言经典算法大全

C语言经典算法大全

C语言经典算法大全1. 冒泡排序(Bubble Sort):比较相邻的元素,如果顺序错误就交换位置,直到整个序列有序。

2. 快速排序(Quick Sort):选择一个中间元素作为基准,将序列分成两部分,左边的元素都小于等于基准,右边的元素都大于等于基准,然后递归地对两个子序列进行排序。

3. 插入排序(Insertion Sort):将元素逐个插入到已经排序的序列中,直到整个序列有序。

4. 选择排序(Selection Sort):每次选择一个最小(或最大)的元素放到有序序列的末尾(或开头),直到整个序列有序。

5. 归并排序(Merge Sort):将序列分成若干个子序列,对每个子序列进行排序,然后再将已排好序的子序列合并成一个有序序列。

6. 希尔排序(Shell Sort):将序列划分成若干个小的子序列分别进行直接插入排序,然后逐渐减小子序列的间隔直到整个序列有序。

7. 堆排序(Heap Sort):利用堆这种数据结构进行排序,构建一个大(或小)根堆,依次将根节点(最大或最小值)和最后一个节点交换位置,然后重新调整堆。

8. 计数排序(Counting Sort):统计每个元素的出现次数,然后根据统计结果,将元素按照顺序放入相应位置,从而实现排序。

9. 桶排序(Bucket Sort):将元素分到不同的桶中,桶内元素进行排序,然后按照桶的顺序将元素取出,从而实现排序。

10.基数排序(Radix Sort):根据元素的位数进行排序,首先排个位,然后排十位,以此类推,直到排完最高位。

除了上述排序算法之外,C语言中还有许多其他经典算法,例如二分查找、递归、深度优先、广度优先、贪心算法、动态规划等等。

这些算法都有各自的特点和应用场景,对于提高编程水平和解决实际问题都有很大的帮助。

总结起来,掌握C语言的经典算法对于编程爱好者来说是非常重要的。

它们可以帮助我们更好地理解计算机科学的基本原理和数据结构,提高我们编写程序的能力和效率。

c 经典代码大全

c  经典代码大全
b+=a+2*c%5; // 相 当 于 表 达 式 语 句 b=b+(a+2*c%5); cout<<"(1) b="< main() { //用 sizeof 计算各类种常量的字节长度 cout<<"sizeof('$')="< main() { //声明变量语句中使用顺序运算 int x, y; //计算中使用顺序运算 x=50; y=(x=x-5, x/5); cout<<"x="<<x<<endl; cout<<"y="<<y<<endl; } #include main() { //测试表达式类型的转换 int n=100,m; double x=3.791,y; cout<<"n*x="<<n*x<<endl; //赋值类型转换 m=x; y=n; cout<<"m="<<m<<endl; cout<<"y="<<y<<endl; //强制类型转换 cout<<"int(x)="< main() { float a,b,s; cout<<"a b"<<endl; cin>>a>>b; //利用 cin 从键盘上为变量 a,b 赋值 s=a; if (a main() { int x,y; cout<<"x="; cin>>x; if (x<=0) { //满足条件执行 y=2*x; cout<<"y="<<y; //输出结果 } else { //不满足条件执行 y=x*x; cout<<"y="<<y; //输出结果 } } #include main() { int a,b,c; int smallest; cout<<"a b c"<<endl; cin>>a>>b>>c; if (a<=b) //外层条件语句 { if (a<=c) //内层条件语句 smallest=a; else smallest=c; } else { if (b<=c) //内层条件语句 smallest=b; else smallest=c; } cout<<"Smallest="< main() { int score; //从键盘上输入分数 cout<<"score="; cin>>score; //用带 else if 的条件语句判断处理 if (score<0 || score>100) { cout<<"The score is out of range!"<<endl; } else if (score>=90) cout<<"Your grade is a A."<<endl; else if (score>=80) cout<<"Your grade is a B."<<endl; else if (score>=70) cout<<"Your grade is a C."<<endl; else if (score>=60) 6

c语言经典例子

c语言经典例子

c语言经典例子C语言是一种非常经典且广泛使用的编程语言,下面我将列举十个典型的C语言例子,并给出详细的描述。

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 a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;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");}return 0;}```4. 计算一个数的阶乘这个例子展示了如何使用循环来计算一个数的阶乘。

代码如下:```c#include <stdio.h>int main() {int num, factorial = 1;printf("请输入一个整数:");scanf("%d", &num);for (int i = 1; i <= num; i++) {factorial *= i;}printf("%d的阶乘为:%d\n", num, factorial);return 0;}```5. 判断一个数是否为素数这个例子演示了如何使用循环和条件语句来判断一个数是否为素数。

C语言编程练习题绝对经典

C语言编程练习题绝对经典

马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人解方程组编写程序,采用穷举法求出结果;编写程序,根据以下公式求e 的值;要求用两种方法计算:1for 循环,计算前50项 2while 循环,直至最后一项的值小于10-4从键盘中输入一个数字不限位数,用循环语句编程判断并输出这个数字的位数;猴子吃桃子问题;猴子第一天摘下若干个桃,当即只一半,又多吃一个;第二天早上又将剩下的一半吃掉一半,双多吃一个;以后每天早上都吃了前天剩下的一半零一个,到第10天早上只剩下最后一个桃;问第一天摘了几个桃;编程打印九九乘法表青年歌手参加歌曲大奖赛,有10个评委打分,试编程求选手的平均得分去掉一个最高分和一个最低分;从键盘中输入一个数字可以包含小数点,其位数在60位以下,求其整数的有效位数,如输入0123.456,返回值为整数有效位数为31输入数据为浮点型,不用数组,不用字符串,只有变量的算术运算实现此功能;2使用数组来进行编程;使用数组,编写一个十进制正整数转换为任意进制数的转换工具;大进制向小进制的转换;方法是相除去余10进制327转八进制:327/8=40余数为740/8=5余数为0于是八进制数为507第一位5是最后的商使用数组,编写一个任意进制正整数转换为十进制的转换工具;以2,10进制互转为例,其他请举一反三:二进制数1101转十进制:1×2的三次幂+1×2的二次幂+0×2的一次幂+1×2的零次幂=8+4+0+1=1310个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为12,2,8,22,16,4,10,6,14,20;然后按下列规则调整,所有小孩同时把自己的糖果分一半给右边的小孩,糖块数变为奇数的人,再向老师补要一块,问经过多少次调整后,大家的糖块一样多,且每人多少块;编写一个函数,用以求x2-5x+4的值,x 做为函数的形参,调用此函数,求:y1=22-5×2+4Y2=x+152-5x+15+4Y3=sinx2-5sinx+4sinx 可以加载”math.h ”库函数后使用,函数说明为 doublesindoublex编写一个函数,使给定的一个二维数组N ×N 行列互换N>3;从键盘中输入一个不超过40个字符的字符串,再输入一个位数,删除对应位数的字符,然后输出删除指定字符后的字符串11111111!2!3!4!5!!e n ≈++++++⋅⋅⋅⋅⋅⋅+要求:1用puts输出指示信息2用gets接收字符串如果有一个正整数从左、右来读都是一样的,则称为回文式数简称回数;比如101,32123,999都是回数;数学中有名的“回数猜想”之迷,至今未解决;回数猜想:任取一个数,再把它倒过来,并把这两个数相加,然后把这个和数再倒过来,与原和数相加,重复此过程,一定能获得一个回数;例:68倒过来是8668+86=154154+541=605605+506=1111回数编程,输入任意整数,按上述方法产生一个回数,为简便起见,最多计算7步,看是否能得到一个回数; 要求:主函数中接收键盘数据,必须用scanf“%ld”,&变量名接收整型变量,显示该数与其倒数的和,输出每一步计算步骤;子函数1,计算该数的倒数;子函数2,验证和是否为回数,是则主函数打印“经过n次计算,得到回数”,超过7次未能得到回数,显示,“经过n次计算,未得到回数”求Sn=a+aa+aaa+------+aaaaaaan个a,其中a和n都从键盘中输入,如从键盘中输入2,5,则计算S5=2+22+222+2222+22222;include"stdio.h"voidmain{inta,n,i=1;longs=0,t=0;printf"a=";scanf"%d",&a;printf"n=";scanf"%d",&n;whilei<=n{t=t+a;s=s+t;a=a10;++i;}printf"sum=%d",s;}两个乒乓球队进行比赛,各出三人;甲队为A,B,C三人,乙队为X,Y,Z三人;已抽签决定比赛名单,有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,编程找出三对选手的对手名单;注:使用穷举法include"stdio.h"intmain{inti,j,k;fori=1;i<=3;++i{forj=1;j<=3;++j{fork=1;k<=3;++k{ifi==j||j==k||i==kcontinue;ifi=1&&k=1&&k=3{printf"Avs%c\n",i+'X'-1;printf"Bvs%c\n",j+'X'-1;printf"Cvs%c\n",k+'X'-1;return0;}}}}return0;}编写一个函数,函数说明为:charlastcharcharstr功能:求一个字符串的最后一个字符,如果是空串,则返回空字符;再利用该函数编程,输入两个字符串,输出第一字符串的最后一个字符和第二个字符串的最后一个字符;韩信点兵;韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10;编程求韩信至少有多少兵include"stdio.h"voidmain{inti;fori=1;;i++{ifi%5==1&&i%6==5&&i%7==4&&i%11==10{printf"%d",i;break;}}}用递归方法计算下列函数的值:fxx,n=x-x2+x3-x4+......-1n-1xnn>0要求:1写出递归函数的原型2编写程序4用递归法将一个整数转换成字符形式输出;例如输入483,应输出字符串“483”;其程序如下,请验证,并修改程序,增加显示出输入数字的位数的功能,并使输出结果与下图一致; voidconvertlongn{longi;ifi=n/10=0converti;putcharn%10+'0';}main{longnumber;scanf"%ld",&number;ifnumber<0{putchar'-';number=-number;}convertnumber;}利用以下公式,编程计算π的值,直到最后一项的绝对值用函数fabs小于0.0001为止;程序1题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数都是多少1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4;组成所有的排列后再去掉不满足条件的排列;2.程序源代码:include"stdio.h"include"conio.h"main{inti,j,k;printf"\n";fori=1;i<5;i++/以下为三重循环/forj=1;j<5;j++fork=1;k<5;k++{ifi=k&&i=j&&j=k/确保i、j、k三位互不相同/printf"%d,%d,%d\n",i,j,k;}getch;}===========================================程序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.程序源代码:include"stdio.h"include"conio.h"main{longinti;intbonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf"%ld",&i;bonus1=1000000.1;bonus2=bonus1+1000000.75;bonus4=bonus2+2000000.5;bonus6=bonus4+2000000.3;bonus10=bonus6+4000000.15;ifi<=100000bonus=i0.1;elseifi<=200000bonus=bonus1+i-1000000.075;elseifi<=400000bonus=bonus2+i-2000000.05;elseifi<=600000bonus=bonus4+i-4000000.03;elseifi<=1000000bonus=bonus6+i-6000000.015;elsebonus=bonus10+i-10000000.01;printf"bonus=%d",bonus;getch;}===========================================程序3题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果;请看具体分析:2.程序源代码:include"math.h"include"stdio.h"include"conio.h"main{longinti,x,y,z;fori=1;i<100000;i++{x=sqrti+100;/x为加上100后开方后的结果/y=sqrti+268;/y为再加上168后开方后的结果/ifxx==i+100&&yy==i+268/如果一个数的平方根的平方等于该数,这说明此数是完全平方数/ printf"\n%ld\n",i;}getch;}===========================================程序4题目:输入某年某月某日,判断这一天是这一年的第几天1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天;2.程序源代码:include"stdio.h"include"conio.h"main{intday,month,year,sum,leap;printf"\npleaseinputyear,month,day\n";scanf"%d,%d,%d",&year,&month,&day;switchmonth/先计算某月以前月份的总天数/{case1:sum=0;break;case2:sum=31;break;case3:sum=59;break;case4:sum=90;break;case5:sum=120;break;case6:sum=151;break;case7:sum=181;break;case8:sum=212;break;case9:sum=243;break;case10:sum=273;break;case11:sum=304;break;case12:sum=334;break;default:printf"dataerror";break;}sum=sum+day;/再加上某天的天数/ifyear%400==0||year%4==0&&year%100=0/判断是不是闰年/leap=1;elseleap=0;ifleap==1&&month>2/如果是闰年且月份大于2,总天数应该加一天/sum++;printf"Itisthe%dthday.",sum;getch;}===========================================程序5题目:输入三个整数x,y,z,请把这三个数由小到大输出;1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小;2.程序源代码:include"stdio.h"include"conio.h"main{intx,y,z,t;scanf"%d%d%d",&x,&y,&z;ifx>y{t=x;x=y;y=t;}/交换x,y的值/ifx>z{t=z;z=x;x=t;}/交换x,z的值/ify>z{t=y;y=z;z=t;}/交换z,y的值/printf"smalltobig:%d%d%d\n",x,y,z;getch;}===========================================程序6题目:用号输出字母C的图案;1.程序分析:可先用''号在纸上写出字母C,再分行输出;2.程序源代码:include"stdio.h"include"conio.h"main{printf"HelloC-world\n";printf"\n";printf"\n";printf"\n";printf"\n";getch;}===========================================程序7题目:输出特殊图案,请在c环境中运行,看一看,VeryBeautiful1.程序分析:字符共有256个;不同字符,图形不一样;2.程序源代码:include"stdio.h"include"conio.h"main{chara=176,b=219;printf"%c%c%c%c%c\n",b,a,a,a,b;printf"%c%c%c%c%c\n",a,b,a,b,a;printf"%c%c%c%c%c\n",a,a,b,a,a;printf"%c%c%c%c%c\n",a,b,a,b,a;printf"%c%c%c%c%c\n",b,a,a,a,b;getch;}============================================================== 程序8题目:输出99口诀;1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列;2.程序源代码:include"stdio.h"include"conio.h"main{inti,j,result;printf"\n";fori=1;i<10;i++{forj=1;j<10;j++{result=ij;printf"%d%d=%-3d",i,j,result;/-3d表示左对齐,占3位/}printf"\n";/每一行后换行/}getch;}===========================================程序9题目:要求输出国际象棋棋盘;1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格;2.程序源代码:include"stdio.h"include"conio.h"main{inti,j;fori=0;i<8;i++{forj=0;j<8;j++ifi+j%2==0printf"%c%c",219,219;elseprintf"";printf"\n";}getch;}==============================================================程序10题目:打印楼梯,同时在楼梯上方打印两个笑脸;1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数;2.程序源代码:include"stdio.h"include"conio.h"main{inti,j;printf"\1\1\n";/输出两个笑脸/fori=1;i<11;i++{forj=1;j<=i;j++printf"%c%c",219,219;printf"\n";}getch;}.:.:经典c程序100例==11--20:.:.经典c程序100例==11--20程序11题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:include"stdio.h"include"conio.h"main{longf1,f2;inti;f1=f2=1;fori=1;i<=20;i++{printf"%12ld%12ld",f1,f2;ifi%2==0printf"\n";/控制输出,每行四个/f1=f1+f2;/前两个月加起来赋值给第三个月/f2=f1+f2;/前两个月加起来赋值给第三个月/}getch;}==============================================================程序12题目:判断101-200之间有多少个素数,并输出所有素数;1.程序分析:判断素数的方法:用一个数分别去除2到sqrt这个数,如果能被整除,则表明此数不是素数,反之是素数;2.程序源代码:include"stdio.h"include"conio.h"include"math.h"main{intm,i,k,h=0,leap=1;printf"\n";form=101;m<=200;m++{k=sqrtm+1;fori=2;i<=k;i++ifm%i==0{leap=0;break;}ifleap{printf"%-4d",m;h++;ifh%10==0printf"\n";}leap=1;}printf"\nThetotalis%d",h;getch;}===========================================程序13题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身;例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方;1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位;2.程序源代码:include"stdio.h"include"conio.h"main{inti,j,k,n;printf"'waterflower'numberis:";forn=100;n<1000;n++{i=n/100;/分解出百位/j=n/10%10;/分解出十位/k=n%10;/分解出个位/ifi100+j10+k==iii+jjj+kkkprintf"%-5d",n;}getch;}===========================================程序14题目:将一个正整数分解质因数;例如:输入90,打印出90=2335;程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:1如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可;2如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步;3如果n不能被k整除,则用k+1作为k的值,重复执行第一步;2.程序源代码:/zhengintisdividedyinshu/include"stdio.h"include"conio.h"main{intn,i;printf"\npleaseinputanumber:\n";scanf"%d",&n;printf"%d=",n;fori=2;i<=n;i++whilen=i{ifn%i==0{printf"%d",i;n=n/i;}elsebreak;}printf"%d",n;getch;}===========================================程序15题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B 表示,60分以下的用C表示;1.程序分析:a>ba:b这是条件运算符的基本例子;2.程序源代码:include"stdio.h"include"conio.h"main{intscore;chargrade;printf"pleaseinputascore\n";scanf"%d",&score;grade=score>=90'A':score>=60'B':'C';printf"%dbelongsto%c",score,grade;getch;}===========================================程序16题目:输入两个正整数m和n,求其最大公约数和最小公倍数;1.程序分析:利用辗除法;2.程序源代码:include"stdio.h"include"conio.h"main{inta,b,num1,num2,temp;printf"pleaseinputtwonumbers:\n";scanf"%d,%d",&num1,&num2;ifnum1<num2/交换两个数,使大数放在num1上/{temp=num1;num1=num2;num2=temp;}a=num1;b=num2;whileb=0/利用辗除法,直到b为0为止/{temp=a%b;a=b;b=temp;}printf"gongyueshu:%d\n",a;printf"gongbeishu:%d\n",num1num2/a;getch;}===========================================程序17题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数;1.程序分析:利用while语句,条件为输入的字符不为'\n'.2.程序源代码:include"stdio.h"include"conio.h"main{charc;intletters=0,space=0,digit=0,others=0;printf"pleaseinputsomecharacters\n";whilec=getchar='\n'{ifc>='a'&&c<='z'||c>='A'&&c<='Z'letters++;elseifc==''space++;elseifc>='0'&&c<='9'digit++;elseothers++;}printf"allinall:char=%dspace=%ddigit=%dothers=%d\n",letters,space,digit,others;getch;}===========================================程序18题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字;例如2+22+222+2222+22222此时共有5个数相加,几个数相加有键盘控制;1.程序分析:关键是计算出每一项的值;2.程序源代码:include"stdio.h"include"conio.h"main{inta,n,count=1;longintsn=0,tn=0;printf"pleaseinputaandn\n";scanf"%d,%d",&a,&n;printf"a=%d,n=%d\n",a,n;whilecount<=n{tn=tn+a;sn=sn+tn;a=a10;++count;}printf"a+aa+...=%ld\n",sn;getch;}==============================================================程序19题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”;例如6=1+2+3.编程找出1000以内的所有完数;1.程序分析:请参照程序<--上页程序14.2.程序源代码:include"stdio.h"include"conio.h"main{staticintk10;inti,j,n,s;forj=2;j<1000;j++{n=-1;s=j;fori=1;i<j;i++{ifj%i==0{n++;s=s-i;kn=i;}}ifs==0{printf"%disawanshu",j;fori=0;i<n;i++printf"%d,",ki;printf"%d\n",kn;}}getch;}==============================================================程序20题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米第10次反弹多高1.程序分析:见下面注释2.程序源代码:include"stdio.h"include"stdio.h"main{floatsn=100.0,hn=sn/2;intn;forn=2;n<=10;n++{sn=sn+2hn;/第n次落地时共经过的米数/hn=hn/2;/第n次反跳高度/}printf"thetotalofroadis%f\n",sn;printf"thetenthis%fmeter\n",hn;getch;}.:.:经典c程序100例==21--30:.:.经典c程序100例==21--30程序21题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个;到第10天早上想再吃时,见只剩下一个桃子了;求第一天共摘了多少;1.程序分析:采取逆向思维的方法,从后往前推断;2.程序源代码:include"stdio.h"include"conio.h"main{intday,x1,x2;day=9;x2=1;whileday>0{x1=x2+12;/第一天的桃子数是第2天桃子数加1后的2倍/x2=x1;day--;}printf"thetotalis%d\n",x1;getch;}===========================================程序22题目:两个乒乓球队进行比赛,各出三人;甲队为a,b,c三人,乙队为x,y,z三人;已抽签决定比赛名单;有人向队员打听比赛的名单;a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单;1.程序分析:判断素数的方法:用一个数分别去除2到sqrt这个数,如果能被整除,则表明此数不是素数,反之是素数;2.程序源代码:include"stdio.h"include"conio.h"main{chari,j,k;/i是a的对手,j是b的对手,k是c的对手/fori='x';i<='z';i++forj='x';j<='z';j++{ifi=jfork='x';k<='z';k++{ifi=k&&j=k{ifi='x'&&k='x'&&k='z'printf"orderisa--%c\tb--%c\tc--%c\n",i,j,k;}}}getch;}===========================================程序23题目:打印出如下图案菱形1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列;2.程序源代码:include"stdio.h"include"conio.h"main{inti,j,k;fori=0;i<=3;i++{forj=0;j<=2-i;j++printf"";fork=0;k<=2i;k++printf"";printf"\n";}fori=0;i<=2;i++{forj=0;j<=i;j++printf"";fork=0;k<=4-2i;k++printf"";printf"\n";}getch;}===========================================程序24题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和;1.程序分析:请抓住分子与分母的变化规律;2.程序源代码:include"stdio.h"include"conio.h"mainintn,t,number=20;floata=2,b=1,s=0;forn=1;n<=number;n++{s=s+a/b;t=a;a=a+b;b=t;/这部分是程序的关键,请读者猜猜t的作用/ }printf"sumis%9.6f\n",s;getch;}===========================================程序25题目:求1+2+3+...+20的和1.程序分析:此程序只是把累加变成了累乘;2.程序源代码:include"stdio.h"include"conio.h"main{floatn,s=0,t=1;forn=1;n<=20;n++{t=n;s+=t;}printf"1+2+3...+20=%e\n",s;getch;}===========================================程序26题目:利用递归方法求5;1.程序分析:递归公式:fn=fn_142.程序源代码:include"stdio.h"include"conio.h"main{inti;intfact;fori=0;i<5;i++printf"\40:%d=%d\n",i,facti;getch;}intfactjintj;{intsum;ifj==0sum=1;elsesum=jfactj-1;returnsum;}===========================================程序27题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来;1.程序分析:2.程序源代码:include"stdio.h"include"conio.h"main{inti=5;voidpalinintn;printf"\40:";palini;printf"\n";getch;}voidpalinnintn;{charnext;ifn<=1{next=getchar;printf"\n\0:";putcharnext;}else{next=getchar;palinn-1;putcharnext;}}===========================================程序28题目:有5个人坐在一起,问第五个人多少岁他说比第4个人大2岁;问第4个人岁数,他说比第3个人大2岁;问第三个人,又说比第2人大两岁;问第2个人,说比第一个人大两岁;最后问第一个人,他说是10岁;请问第五个人多大1.程序分析:利用递归的方法,递归分为回推和递推两个阶段;要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人10岁,再往回推;2.程序源代码:include"stdio.h"include"conio.h"agenintn;{intc;ifn==1c=10;elsec=agen-1+2;returnc;}main{printf"%d",age5;getch;}===========================================程序29题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字;1.程序分析:学会分解出每一位数,如下解释:这里是一种简单的算法,师专数002班赵鑫提供2.程序源代码:include"stdio.h"include"conio.h"main{longa,b,c,d,e,x;scanf"%ld",&x;a=x/10000;/分解出万位/b=x%10000/1000;/分解出千位/c=x%1000/100;/分解出百位/d=x%100/10;/分解出十位/e=x%10;/分解出个位/ifa=0printf"thereare5,%ld%ld%ld%ld%ld\n",e,d,c,b,a;elseifb=0printf"thereare4,%ld%ld%ld%ld\n",e,d,c,b;elseifc=0printf"thereare3,%ld%ld%ld\n",e,d,c;elseifd=0printf"thereare2,%ld%ld\n",e,d;elseife=0printf"thereare1,%ld\n",e;getch;}===========================================程序30题目:一个5位数,判断它是不是回文数;即12321是回文数,个位与万位相同,十位与千位相同;1.程序分析:同29例2.程序源代码:include"stdio.h"include"conio.h"main{longge,shi,qian,wan,x;scanf"%ld",&x;wan=x/10000;qian=x%10000/1000;shi=x%100/10;ge=x%10;ifge==wan&&shi==qian/个位等于万位并且十位等于千位/printf"thisnumberisahuiwen\n";elseprintf"thisnumberisnotahuiwen\n";getch;}.:.:经典c程序100例==31--40:.:.经典c程序100例==31--40程序31题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母;1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母;2.程序源代码:include"stdio.h"include"conio.h"voidmain{charletter; printf"pleaseinputthefirstletterofsomeday\n"; whileletter=getch='Y'/当所按字母为Y时才结束/ {switchletter{case'S':printf"pleaseinputsecondletter\n"; ifletter=getch=='a'printf"saturday\n";elseifletter=getch=='u'printf"sunday\n";elseprintf"dataerror\n";break;case'F':printf"friday\n";break;case'M':printf"monday\n";break;case'T':printf"pleaseinputsecondletter\n"; ifletter=getch=='u'printf"tuesday\n";elseifletter=getch=='h'printf"thursday\n";elseprintf"dataerror\n";break;case'W':printf"wednesday\n";break;default:printf"dataerror\n";}}getch;}=========================================== 1.求下列分段函数的值;2.求下列分段函数的值;a、b由键盘输入3.求分段函数的值4.求分段函数的值⎪⎩⎪⎨⎧<=>+=0ln 01012X x X X e Y x5.计算:s=1+1/1+1/2+……+1/n,其中n 由键盘输入;6.用台劳级数求e 的近似值,直到最后一项小于10-6e=1+1/1+1/2+1/3+……7.求s=1-2+3-4+5……+99-1008.输出200~1000之间能被7整除的数,并统计其个数;9.任意输入100个整数,分别统计其中的正数、负数和零的个数;10.任意输入N 个数,统计其中的正数个数和负数个数;11.任意输入aNN 个数,找出并输出其中的最大数和最小数,以及它们的下标;12.求数组a88中,主对角线和次对角线上各元素之和;13.任意输入N 个数,将它们由大到小排序输出;14.编程打印下列的杨辉三角形;设10行11112113311464115101051……15.以“”为字符,打印一个正三角形;16.以“”为字符,打印一个6行的倒正三角形;17.打印10~1000之间满足下列条件的所有数:正序读和反序读都相同,例如:55、232等;18.从键盘任意输入一个大于0且小于1000的整数,然后输出此整数的所有整数因子;例如:输入12,输出1,2,3,4,6,12;19.编写一个函数,将字符串中的元音字母输出;例如字符串为“boyandgirl”,则输出为:oai20.从键盘上任意输入一个字符串S,输出其中的数字字符;例如输入为:sd12we$55abc8,则输出结果为:1255821.编写一个函数,将两个字符串连接起来;不能用strcat函数;22.编写一个函数:完成判断方阵aNN是否关于主对角线对称相等,若对称则返回1,否则返回0;23.输入10个学生包括姓名和成绩的信息,找出成绩最高的,然后输出该学生的姓名和成绩;24.输入10个学生包括姓名、计算机、英语的信息,找出二门课的平均成绩最高的学生,然后输出该学生的姓名和成绩;25.函数intaddintaNN,intbN的功能是将a数组中每行的最小元素放入b数组中,编写该函数实现之;26.函数intaddintaNN,intbN的功能是将a数组中每行的最大元素放入b数组中,编写该函数实现之;27.函数intaddintaNN,intbN的功能是将a数组中每列的最小元素放入b数组中,编写该函数实现之;28.编写一函数:intsubstringcharstr,charsub,判断字符串sub是否是字符串str的子串,若是子串,则返回子串的位置,否则返回-1;29.函数voidcompchars1,s2的功能是比较字符串s1和字符串s2,若字符串s1大于字符串s2,则函数返回1,若字符串s1等于字符串s2,则函数返回0,若字符串s1小于字符串s2,则函数返回-1;要求:不能调用库函数strcmp30.函数voiddelechars的功能是删除字符串s中的所有数字字符和非字母字符,并将字符串压缩;例如原字符串为:abc12ef5ghij8%%yz,处理后的字符串为:abcefghijyz;。

c语言经典编程实例

c语言经典编程实例

c语言经典编程实例C语言作为一门经典的编程语言,拥有丰富的编程实例。

下面列举了十个经典的C语言编程实例。

1. 计算两个数的和这是一个非常简单的C语言编程实例,通过输入两个数,然后计算它们的和并输出。

可以使用scanf函数获取输入的两个数,然后使用加法运算符将它们相加,最后使用printf函数将结果输出。

2. 判断一个数是否为素数素数是指只能被1和自身整除的数。

这个实例可以通过循环判断给定的数是否能被2到它自身减1之间的数整除,如果能被整除,则不是素数,否则是素数。

3. 实现冒泡排序算法冒泡排序是一种简单的排序算法,通过比较相邻的两个元素并交换位置来实现排序。

可以通过循环嵌套和条件判断来实现冒泡排序算法。

4. 计算斐波那契数列斐波那契数列是一个经典的数列,每个数字都是前两个数字之和。

可以使用循环或递归的方式来计算斐波那契数列。

5. 判断一个字符串是否为回文字符串回文字符串是指正序和倒序读都相同的字符串。

可以通过比较字符串的首尾字符来判断是否为回文字符串。

6. 实现链表数据结构链表是一种常见的数据结构,可以通过指针来实现链表的创建、插入和删除操作。

7. 实现二叉树数据结构二叉树是一种常见的数据结构,可以通过指针来实现二叉树的创建、插入和删除操作。

8. 实现图数据结构图是一种常见的数据结构,可以通过邻接矩阵或邻接表来实现图的创建、添加和删除节点以及节点之间的连接关系。

9. 实现简单的计算器计算器是一个常见的应用程序,可以通过使用表达式解析和运算符优先级来实现一个简单的计算器。

10. 实现简单的画图程序画图程序可以通过使用图形库或者字符绘制来实现简单的图形绘制,如画直线、矩形、圆形等。

以上是十个经典的C语言编程实例,涵盖了基本的算术运算、数据结构和常见的应用程序。

通过学习和实践这些实例,可以提高对C语言的理解和应用能力。

经典的c语言编程案例

经典的c语言编程案例

经典的c语言编程案例C语言是一门经典的编程语言,被广泛用于各类软件开发和系统设计中。

它具有语法简单、灵活性高和执行效率好等特点,因此,通过学习经典的C语言编程案例,不仅可以提升编程技能,还能加深对C语言的理解。

本文将介绍几个经典的C语言编程案例,希望对读者有所帮助。

案例一:计算圆的周长和面积要计算圆的周长和面积,需要使用圆的半径进行计算。

首先,定义一个常量PI,它的值可以通过在程序中赋予3.14159来近似表示。

接着,声明一个变量radius,并从用户输入中获取圆的半径。

然后,使用公式2 * PI * radius计算圆的周长,并使用公式PI * radius * radius计算圆的面积。

最后,将结果打印输出。

```c#include <stdio.h>int main() {const double PI = 3.14159;double radius;printf("请输入圆的半径:");scanf("%lf", &radius);double circumference = 2 * PI * radius;double area = PI * radius * radius;printf("圆的周长为:%lf\n", circumference);printf("圆的面积为:%lf\n", area);return 0;}```案例二:求解斐波那契数列斐波那契数列是一种经典的递归数列,它的前两个数为0和1,后面的每个数都是前两个数之和。

通过使用循环和递归两种方法,可以分别计算出斐波那契数列的第n项。

```c#include <stdio.h>// 循环方法求解斐波那契数列的第n项int fibonacci_loop(int n) {if (n == 0) {return 0;}else if (n == 1) {return 1;}else {int a = 0, b = 1, c;for (int i = 2; i <= n; i++) {c = a + b;a = b;b = c;}return c;}}// 递归方法求解斐波那契数列的第n项int fibonacci_recursive(int n) {if (n == 0) {return 0;}else if (n == 1) {return 1;}else {return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2);}}int main() {int n;printf("请输入要求解的斐波那契数列的项数:");scanf("%d", &n);int result1 = fibonacci_loop(n);int result2 = fibonacci_recursive(n);printf("循环方法求解结果:%d\n", result1);printf("递归方法求解结果:%d\n", result2);return 0;}```案例三:实现简单的学生成绩管理系统学生成绩管理系统可以对学生的成绩进行录入、查询和统计等操作。

经典C编程规范完整篇

经典C编程规范完整篇
02
2 注释
C语言编程规范
注释
1
2-1:一般情况下,源程序有效注释量必须在20%以上。
2
C语言编程规范
2 注释
C语言编程规范
/************************************************* Copyright (C), 1988-1999, Huawei Tech. Co., Ltd. File name: // 文件名 Author: Version: Date: // 作者、版本及完成日期 Description: // 用于详细说明此程序文件完成的主要功能,与其他模块 // 或函数的接口,输出值、取值范围、含义及参数间的控 // 制、顺序、独立或依赖等关系 Others: // 其它内容的说明 Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明 1. .... History: // 修改历史记录列表,每条修改记录应包括修改日期、修改 // 者及修改内容简述 1. Date: Author: Modification: 2. ... *************************************************/
应如下书写 for (...) { ... // program code } if (...) { ... // program code } void example_fun( void ) { ... // program code }
C语言编程规范
1 排版
1-11:在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如->),后不应加空格。 说明:采用这种松散方式编写代码的目的是使代码更加清晰。 由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格.如括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为在C/C++语言中括号已经是最清晰的标志了。 在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留两个以上空格。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

窗体与界面设计1.1 菜单应用实例菜单是程序开发中经常使用的界面元素,合理利用菜单不但可以使用户非常方便的操作程序的功能,更能使效率提高,适应人性化的潮流。

下面通过几个应用实例,介绍菜单设计的方法和技术。

实例001 带历史信息的菜单实例说明在开发图纸管理软件时,要求在菜单上记录用户最近打开的档案或图纸,以方便下次使用。

如图1.1所示,单击“文件”菜单下的“打开文件”子菜单,打开需要查阅的图纸。

下次运行该软件时,上次打开的文件名记录到“文件”菜单的历史菜单中,选择该菜单,即可打开相应的图纸文件。

技术要点要实现保存最近打开的文件,可以将在菜单中最近打开文件的文件名和路径保存到事先建立的*.ini文件中,系统启动时读取*.ini中的数据建立数组菜单,即可实现显示历史菜单的功能。

注意:要建立一个带历史信息的菜单,必须首先添加一个MenuStrip菜单控件,并将主窗体的IsMdiContainer属性设为True。

实现过程(1)创建一个项目,将其命名为Ex01_01,默认窗体为Form1。

(2)从工具箱中向Form1窗体添加MenuStrip控件,同时向窗体添加OpenFileDialog控件。

创建一个“文件”主菜单,在其下面创建打开、关闭所有、退出等菜单选项。

(3)主要程序代码。

将打开文件路径写入INI文件的实现代码如下:private void 打开ToolStripMenuItem_Click(object sender, EventArgs e){openFileDialog1.FileName = "";this.openFileDialog1.ShowDialog();StreamWriter s = new StreamWriter(address + "\\Menu.ini", true);s.WriteLine(openFileDialog1.FileName);//写入INI文件s.Flush();s.Close();ShowWindows(openFileDialog1.FileName);}读取INI文件并将信息加入菜单的实现代码如下:private void Form1_Load(object sender, EventArgs e){StreamReader sr = new StreamReader(address + "\\Menu.ini");int i = this.文件ToolStripMenuItem.DropDownItems.Count-2;while (sr.Peek()>=0)//读取INI文件{ToolStripMenuItem menuitem = new ToolStripMenuItem(sr.ReadLine());this.文件ToolStripMenuItem.DropDownItems.Insert(i, menuitem);i++;menuitem.Click += new EventHandler(menuitem_Click);}sr.Close();}自定义方法ShowWindows()用来加载背景图片并显示窗体,实现代码如下:public void ShowWindows(string fileName){Image p = Image.FromFile(fileName);Form f = new Form();f.MdiParent = this;f.BackgroundImage = p;f.Show();}举一反三根据本实例,读者可以开发以下程序。

记录用户操作菜单日志的程序。

在用户单击菜单时,把用户、菜单命令和菜单对应功能写入保存菜单日志的INI文件。

如果需要查看日志,只需打开INI文件。

通过数据库保存菜单历史信息的程序。

菜单使用频率的程序。

把用户使用菜单的数据信息保存到数据库中,然后统计用户使用菜单的频率,并根据此频率调整菜单的显示顺序。

实例002 菜单动态合并实例说明在程序中经常使用弹出菜单,并且一个窗体中可以存在多个弹出菜单。

开发过MDI窗体的读者可能都知道,当MDI子窗体最大化时,子窗体和主窗体的菜单能够自动的合并。

这是如何实现的呢?本例实现了将两个弹出菜单动态的合并成一个弹出菜单的功能。

实例效果如图1.2所示。

技术要点C# 2.0中已经将弹出菜单封装为Context MenuStrip控件,利用该控件中的Items对象可以操作菜单中的菜单项。

该对象是ToolStripMenuItem类型,使用Items.AddRange( )方法可以向弹出菜单中添加菜单项,该方法原型如下。

public void AddRange (ToolStripItem[] toolStripItems)参数说明如下。

l toolStripItems:控件的数组。

实现过程(1)创建一个项目,将其命名为Ex01_02,默认窗体为Form1。

(2)从工具箱中向Form1窗体添加一个MenuStrip控件用来设计菜单;同时向窗体添加ContextMenuStrip控件用来设计右键菜单;选中MenuStrip控件创建一个“打开子窗体”主菜单,然后选中ContextMenuStrip控件为其添加子项。

(3)为程序添加一个窗体,默认名为Form2,同时向窗体添加ContextMenuStrip控件用来设计右键菜单,然后选中ContextMenuStrip控件为其添加子项。

(4)主要程序代码。

private void 打开自窗体ToolStripMenuItem_Click(object sender, EventArgs e){Form2 f = new Form2();f.MdiParent = this;f.Show();//显示子窗体f.Resize += new EventHandler(f_Resize);}void f_Resize(object sender, EventArgs e){Form2 f = (Form2)sender;ToolStripMenuItem item = new ToolStripMenuItem();for (int i = 0; i < f.contextMenuStrip2.Items.Count; )//合并菜单{item.DropDownItems.Add(f.contextMenuStrip2.Items[i]);}this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {item});}举一反三根据本实例,读者可以实现以下功能。

让右键菜单在子窗体中显示。

让右键菜单在主窗体和子窗体中同时显示。

实例003 像开始菜单一样漂亮的菜单实例说明Windows的开始菜单非常的独特,在菜单的旁边有一条竖着的彩条,彩条中还写着文字。

这种独特的菜单能够使程序的界面看起来更加的漂亮。

本例中就实现了这种菜单,运行本例弹出“打开菜单”时,就会看到菜单的左边有一个紫色的彩条。

实例效果如图1.3所示。

技术要点在C# 2.0中,MenuStrip控件中的子项ToolStripMenuItem已经包括了左侧的彩条,实现像开始菜单一样的菜单非常容易,不像在其他计算机语言的开发环境中,需要调用API才可以实现。

如果想改变左侧竖着的彩条,只要给对应的菜单项设置相应的图片即可。

注意:如果要在左侧彩条显示文字,只要在对应的图片上加入文字即可。

实现过程(1)创建一个项目,将其命名为Ex01_03,默认窗体为Form1。

(2)从工具箱中向Form1窗体添加MenuStrip控件。

(3)为MenuStrip控件添加相应的子项。

(4)为子项添加相应的图片。

举一反三根据本实例,读者可以实现以下功能。

将菜单元设置成不同的格式(如图片、文字等)。

在菜单左侧播放动画。

实例004 任务栏托盘菜单实例说明有一些软件通常只是在后台运行,这些进程大部分时间不显示用户界面。

可通过单击任务栏状态通知区域的图标来访问的病毒防护程序就是一个示例。

Windows窗体中的NotifyIcon控件通常用于显示在后台运行的进程的图标,本实例利用该控件制作了一个任务栏托盘菜单。

实例效果如图1.4所示。

技术要点要实现程序启动时出现在系统托盘中。

必须要为窗体添加NotifyIcon 控件和ContextMenuStrip 控件。

注意:必须为NotifyIcon 控件的Icon属性设置图标。

实现过程(1)创建一个项目,将其命名为Ex01_04,默认窗体为Form1。

(2)向Form1窗体添加NotifyIcon 控件和ContextMenuStrip控件,并为ContextMenuStrip 控件添加子项。

(3)选择NotifyIcon 控件,在其属性窗口中将ContextMenuStrip属性设置为添加到窗体上的ContextMenuStrip控件,并为Icon属性设置图片。

举一反三根据本实例,读者可以开发以下程序。

程序启动时不出现界面,直接出现在系统托盘中运行的后台程序。

程序启动时不出现在任务栏中。

实例005 可以拉伸的菜单界面实例说明如果管理程序功能菜单非常多,而用户只使用一些常用菜单,这时,可以将主菜单项下的不常用菜单隐藏起来。

此种显示方式类似于对菜单进行拉伸。

使用时,只需单击展开菜单,即可显示相应菜单功能。

运行本例,效果如图1.5所示。

技术要点要实现可以拉伸的菜单,关键是要使用一个开关变量,同时调用ShowDropDown()方法,显示操作后的结果。

下面详细介绍一下该方法。

ShowDropDown()方法用来显示与此ToolStripDrop DownItem关联的ToolStripDropDownItem 控件。

其语法结构如下:public void ShowDropDown ()另外,用ShowDropDown()方法还可以显示已由DropDown 属性设置的下拉控件。

注意:必须设置开关变量的初值。

实现过程(1)创建一个项目,将其命名为Ex01_05,默认窗体为Form1。

(2)从工具箱中向Form1窗体添加MenuStrip控件,选中MenuStrip控件为其添加子项。

(3)双击“展开(关闭)子项”为其双击事件添加处理代码。

(4)主要程序代码。

private void Form1_Load(object sender, EventArgs e){//初始设置下面的菜单隐藏this.设置密码ToolStripMenuItem.Visible = false;this.添加用户ToolStripMenuItem.Visible = false;this.忘记密码ToolStripMenuItem.Visible = false;this.修改密码ToolStripMenuItem.Visible = false;this.员工录入ToolStripMenuItem.Visible = false;}private void toolStripMenuItem1_Click(object sender, EventArgs e) {switch (i){case 1:this.设置密码ToolStripMenuItem.Visible = false;this.添加用户ToolStripMenuItem.Visible = false;this.忘记密码ToolStripMenuItem.Visible = false;this.修改密码ToolStripMenuItem.Visible = false;this.员工录入ToolStripMenuItem.Visible = false;i = 2;this.操作ToolStripMenuItem.ShowDropDown();break;case 2:this.设置密码ToolStripMenuItem.Visible = true;this.添加用户ToolStripMenuItem.Visible = true;this.忘记密码ToolStripMenuItem.Visible = true;this.修改密码ToolStripMenuItem.Visible = true;this.员工录入ToolStripMenuItem.Visible = true;i = 1;this.操作ToolStripMenuItem.ShowDropDown();break;}}举一反三根据本实例,读者可以开发以下功能。

相关文档
最新文档