行业知识
C语言基础100例子
2026-11-05 00:39:52
来源:互联网转载
C语言基础100例子
- 题目1:有1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- 题目2:企业发放的奖金根据利润提成。
- 题目3:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 题目4:输入某年某月某日,判断这一天是这一年的第几天?
- 题目5:输入三个整数x,y,z,请把这三个数由小到大输出。
- 题目6:用号输出字母C的图案。
- 题目7:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
- 题目8:输出9*9口诀。
- 题目9:要求输出国际象棋棋盘。
- 题目10:打印楼梯,同时在楼梯上方打印两个笑脸。
- 题目11:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不***,问每个月的兔子总数为多少?(输出前40个月即可)
- 题目12:判断 101 到 200 之间的素数。
- 题目13:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
- 题目14:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
- 题目15:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
- 题目16:输入两个正整数m和n,求其最大公约数和最小公倍数。
- 题目17:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- 题目18:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
- 题目19:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
- 题目20:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
- 题目21:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
- 题目22:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
- 题目23:打印出如下图案(菱形)。
- 题目24:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
- 题目25:求1+2!+3!+...+20!的和。
- 题目26:利用递归方法求5!。
- 题目27:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
- 题目28:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
- 题目29:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
- 题目30:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
- 题目31:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
- 题���32:删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母。
题目1:有1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
**程序分析:**可填在百位、十位、个位的数字都是 1、2、3、4,组成所有的排列后再去掉不满足条件的排列。
()#include int main(){ int i,j,k; printf("\n"); for(i=1;i // 以下为三重循环 for(j=1;j for (k=1;k // 确保i、j、k三位互不相同 if (i!=k&&i!=j&&j!=k) { printf("%d,%d,%d\n",i,j,k); } } } }} double i; double bonus1,bonus2,bonus4,bonus6,bonus10,bonus; printf("你的净利润是:\n"); scanf("%lf",&i); bonus1=100000*0.1; bonus2=bonus1+100000*0.075; bonus4=bonus2+200000*0.05; bonus6=bonus4+200000*0.03; bonus10=bonus6+400000*0.015; if(i bonus=i*0.1; } else if(i bonus=bonus1+(i-100000)*0.075; } else if(i bonus=bonus2+(i-200000)*0.05; } else if(i bonus=bonus4+(i-400000)*0.03; } else if(i bonus=bonus6+(i-600000)*0.015; } else if(i1000000) { bonus=bonus10+(i-1000000)*0.01; } printf("提成为:bonus=%lf",bonus); printf("\n");} int i, j, m, n, x; for (i = 1; i z) { /*交换z,y的值*/ t=y;y=z;z=t; } printf("从小到大排序: %d %d %d\n",x,y,z);}请输入三个数字:132从小到大排序: 1 2 3
题目6:用号输出字母C的图案。
**程序分析:**可先用’*'号在纸上写出字母C,再分行输出。
程序源代码:
#include "stdio.h"int main(){ printf("用 * 号输出字母 C!\n"); printf(" ****\n"); printf(" *\n"); printf(" * \n"); printf(" ****\n");}用 * 号输出字母 C! **** * * ****
题目7:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
**程序分析:**字符共有256个。不同字符,图形不一样。
VC6.0下出现中文乱码(原因+解决方法):
176的16进制是B0,219的16进制是DB,0xB0DB是"佰"字的内码,所以输出的就是"佰"了。
主要原因是文件信息的代码页不同,我们所使用的操作系统中文状态下的代码页,要显示扩展的ASCII码需要在437 OEM-美国这个下面显示,这样就可以显示出你所希望的。具体修改控制台的默认代码页步骤如下:
- 1.点击运行界面左上角标题栏图标【c:\】,选择默认值一项
- 2.修改默认代码页,936(ANSI/OEM-简体中文GBK)为437 OEM-美国
- 3、关闭后重新运行一下即可
#includeint main(){ char a=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); return 0;}[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I15dxGHg-1665651728902)(C:\Users\11910\AppData\Roaming\Typora\typora-user-images\image-20221013110321372.png)]
题目8:输出9*9口诀。
**程序分析:**分行与列考虑,共 9 行 9 列,i 控制行,j 控制列。
程序源代码:
#includeint main(){ int i,j,result; printf("\n"); for (i=1;i for(j=1;j result=i*j; printf("%d*%d=%-3d",i,j,result); /*-3d表示左对齐,占3位*/ } printf("\n"); /*每一行后换行*/ }} int i,j; for(i=0;i for(j=0;j int i,j; printf("\n"); /*输出两个笑脸*/ for(i=1;i for(j=1;j int f1=1,f2=1,i; for(i=1;i printf("%12d%12d",f1,f2); if(i%2==0) printf("\n"); f1=f1+f2; f2=f1+f2; } return 0;} int i,j; int count=0; for (i=101; i for (j=2; j // 如果 j 能被 i 整除再跳出循环 if (i%j==0) break; } // 判断循环是否提前跳出,如果 j count++; printf("%d ",i); // 换行,用 count 计数,每五个数换行 if (count % 5 == 0) printf("\n"); } } return 0;} int i,x,y,z; for(i=100;i x=i%10; y=i/10%10; z=i/100%10; if(i==(x*x*x+y*y*y+z*z*z)) printf("%d\n",i); } return 0;} int n,i; printf("请输入整数:"); scanf("%d",&n); printf("%d=",n); for(i=2;i while(n%i==0) { printf("%d",i); n/=i; if(n!=1) printf("*"); } } printf("\n"); return 0;} int score; char grade; printf("请输入分数: "); scanf("%d",&score); grade=(score=90)?'A':((score=60)?'B':'C'); printf("%c\n",grade); return 0;} int a,b,t,r,n; printf("请输入两个数字:\n"); scanf("%d %d",&a,&b); if(at=b;b=a;a=t;} r=a%b; n=a*b; while(r!=0) { a=b; b=r; r=a%b; } printf("这两个数的最大公约数是%d,最小公倍数是%d\n",b,n/b); return 0;} char c; int letters=0,spaces=0,digits=0,others=0; printf("请输入一些字母:\n"); while((c=getchar())!='\n') { if((c='a'&&c int s=0,a,n,t; printf("请输入 a 和 n:\n"); scanf("%d%d",&a,&n); t=a; while(n0) { s+=t; a=a*10; t+=a; n--; } printf("a+aa+...=%d\n",s); return 0;} int i,j,k,n,sum; int a[256]; for(i=2;i sum=a[0]=1; k=0; for(j=2;j if(i%j==0) { sum+=j; a[++k]=j; } } if(i==sum) { printf("%d=%d",i,a[0]); for(n=1;n float h,s; h=s=100; h=h/2; //第一次反弹高度 for(int i=2;i s=s+2*h; h=h/2; } printf("第10次落地时,共经过%f米,第10次反弹高%f米\n",s,h); return 0;} int day, x1 = 0, x2; day=9; x2=1; while(day0) { x1=(x2+1)*2; // 第一天的桃子数是第2天桃子数加1后的2倍 x2=x1; day--; } printf("总数为 %d\n",x1); return 0;} char i,j,k; for(i='x';i for(j='x';j if(i!=j) { for(k='x';k if(i!=k&&j!=k) { if(i!='x'&&k!='x'&&k!='z') { printf("顺序为:a--%c\tb--%c\tc--%c\n",i,j,k); } } } } } }} int i,j,k; for(i=0;i for(j=0;j printf(" "); } for(k=0;k printf("*"); } printf("\n"); } for(i=0;i for(j=0;j printf(" "); } for(k=0;k printf("*"); } printf("\n"); } } int i,t; float sum=0; float a=2,b=1; for(i=1;i sum=sum+a/b; t=a; a=a+b; b=t; } printf("%9.6f\n",sum); } int i; long double sum,mix; sum=0,mix=1; for(i=1;i mix=mix*i; sum=sum+mix; } printf("%Lf\n",sum); } int i; int fact(int); for(i=0;i printf("%d!=%d\n",i,fact(i)); }}int fact(int j){ int sum; if(j==0){ sum=1; } else { sum=j*fact(j-1); } return sum;} int i=5; void palin(int n); printf("请输入5个字符:"); palin(i); printf("\n");}void palin(n)int n;{ char next; if(n next=getchar(); printf("相反顺序输出结果:"); putchar(next); } else { next=getchar(); palin(n-1); putchar(next); }} int c; if(n==1) c=10; else c=age(n-1)+2; return(c);}int main(){ printf("%d\n",age(5));} long a,b,c,d,e,x; printf("请输入 5 位数字:"); scanf("%ld",&x); a=x/10000; /*分解出万位*/ b=x%10000/1000; /*分解出千位*/ c=x%1000/100; /*分解出百位*/ d=x%100/10; /*分解出十位*/ e=x%10; /*分解出个位*/ if (a!=0){ printf("为 5 位数,逆序为: %ld %ld %ld %ld %ld\n",e,d,c,b,a); } else if(b!=0) { printf("为 4 位数,逆序为: %ld %ld %ld %ld\n",e,d,c,b); } else if(c!=0) { printf("为 3 位数,逆序为:%ld %ld %ld\n",e,d,c); } else if(d!=0) { printf("为 2 位数,逆序为: %ld %ld\n",e,d); } else if(e!=0) { printf("为 1 位数,逆序为:%ld\n",e); }} long ge,shi,qian,wan,x; printf("请输入 5 位数字:"); scanf("%ld",&x); wan=x/10000; /*分解出万位*/ qian=x%10000/1000; /*分解出千位*/ shi=x%100/10; /*分解出十位*/ ge=x%10; /*分解出个位*/ if (ge==wan&&shi==qian) { /*个位等于万位并且十位等于千位*/ printf("这是回文数\n"); } else { printf("这不是回文数\n"); }} char i,j; printf("请输入第一个字母:\n"); scanf("%c",&i); getchar();//scanf("%c",&j);的问题,第二次是读入的一个换行符,而不是输入的字符,因此需要加一个getchar() 吃掉换行符 switch(i) { case 'm': printf("monday\n"); break; case 'w': printf("wednesday\n"); break; case 'f': printf("friday\n"); break; case 't': printf("请输入下一个字母\n"); scanf("%c",&j); if (j=='u') {printf("tuesday\n");break;} if (j=='h') {printf("thursday\n");break;} case 's': printf("请输入下一个字母\n"); scanf("%c",&j); if (j=='a') {printf("saturday\n");break;} if (j=='u') {printf("sunday\n"); break;} default : printf("error\n"); break; } return 0;} int hash [256]; if(NULL == charSet) return str; for(int i = 0; i