C语言编程练习题绝对经典
完整版C语言100个经典题目

完整版C语言100个经典题目在学习和掌握C语言编程技巧的过程中,解决各种经典题目是非常重要的。
下面是一份C语言的100个经典题目,帮助你提高编程能力和理解C语言的核心概念。
1. 编写一个程序,输出"Hello, World!"。
2. 编写一个程序,从键盘输入两个整数,然后输出它们的和。
3. 编写一个程序,从键盘输入两个整数,然后交换它们的值。
4. 编写一个程序,输出1到100之间所有的奇数。
5. 编写一个程序,输出1到100之间所有能被3整除的数。
6. 编写一个程序,判断一个年份是否为闰年。
7. 编写一个程序,将一个字符串逆序输出。
8. 编写一个程序,求出一个整数的阶乘。
9. 编写一个程序,判断一个数是否为素数。
10. 编写一个程序,输入一个字符串,然后统计其中的字母、数字和空格的个数。
11. 编写一个程序,将一个字符串转换为大写字母。
12. 编写一个程序,从键盘输入一个字符串,然后去除其中的重复字符。
13. 编写一个程序,将一个字符串按照指定分隔符进行拆分,并输出拆分后的结果。
14. 编写一个程序,将一个字符串中的所有单词首字母大写。
15. 编写一个程序,找出一个整数数组中的最大值。
16. 编写一个程序,找出一个整数数组中的最小值。
17. 编写一个程序,计算一个整数数组中所有元素的平均值。
18. 编写一个程序,对一个整数数组进行冒泡排序。
19. 编写一个程序,对一个整数数组进行选择排序。
20. 编写一个程序,对一个整数数组进行插入排序。
21. 编写一个程序,对一个整数数组进行快速排序。
22. 编写一个程序,计算斐波那契数列的第n个数字。
23. 编写一个程序,计算一个整数的平方根。
24. 编写一个程序,判断一个字符串是否为回文字符串。
25. 编写一个程序,输入一个正整数n,然后输出n行杨辉三角。
26. 编写一个程序,将一个二维整数数组进行转置。
27. 编写一个程序,将一个二维整数数组进行矩阵乘法运算。
c语言经典常用习题

1.输入一个字符串,将其按给定的长度n格式化并输出,若n=0,则输出原字符串输入输入一个字符串输出格式化并输出样例输入asdfasdf3样例输出asdfasdf提示#include<stdio.h>#include<string.h>int main(){int n,m,i,j;char a[10000];gets(a);scanf("%d",&m);n=strlen(a);if(m==0)puts(a);else{for(i = 0; i < n; i += m){if(a[i] == '\0')return 0;for(j = 0; j < m; ++ j){if(a[i + j] == '\0'){printf("\n");return 0;}printf("%c", a[i + j]);}printf("\n");}}return 0;}2.题目描述输入一个长度不超过100 的字符串,删除串中的重复字符。
输入输入要检查的字符串,长度不超过100个字符。
例如:abacaeedabcdcd。
输出删除重复字符后的字符串。
例如:abced。
样例输入saas样例输出sa提示#include <stdio.h>int main(){char a[100];int i,j,m;scanf("%s",a);for(i=0;a[i]!=0;i++)for(j=i+1;a[j]!=0;j++)if(a[i]==a[j]){for(m=j;a[m]!=0;m++){a[m]=a[m+1];}j--;}puts(a);return 0;}3.请编写C程序,输入5个不同的且为字符格式的学生编号,将其先由大到小排序,再将最大的学生编号和最小的学生编号互换位置,然后输出此时5位学生的编号。
100条经典C语言笔试题目(全)

100条经典C语言笔试题目1、请填写bool,float,指针变量与“零值”比较的if语句。
提示:这里“零值”可以是0,0.0,FALSE 或者“空指针”。
例如int变量n与“零值”比较的if语句为:if ( n == 0 )if ( n != 0 )以此类推。
(1)请写出 bool flag 与“零值”比较的 if 语句:【标准答案】if ( flag )if ( !flag )(2)请写出 float x 与“零值”比较的 if 语句:【标准答案】 const float EPSINON = 0.00001;if ((x >= - EPSINON) && (x <= EPSINON)不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。
(3)请写出 char *p 与“零值”比较的 if 语句【标准答案】 if (p == NULL)if (p != NULL)2、以下为 Linux下的 32 位 C程序,请计算 sizeof 的值。
char str[] = “Hello” ;char *p = str ;int n = 10;请计算(1)sizeof (str ) =(2)sizeof ( p ) =(3)sizeof ( n ) =【标准答案】(1)6、(2)4、(3)4(4)void Func ( char str[100]) {……;} 请计算 sizeof( str ) = (5)void *p = malloc( 100 );请计算sizeof ( p ) =【标准答案】(4)4、(5)43、 long a=0x801010;a+5=?【标准答案】0x801010用二进制表示为:“1000 0000 0001 0000 0001 0000”,十进制的值为8392720,再加上5就是8392725。
4、用变量a给出下面的定义e) 一个有10个指针的数组,该指针是指向一个整型数的;f) 一个指向有10个整型数数组的指针 ;g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;【标准答案】e)int * a[10]; f)int (*a)[10]g)int (*a)(int); h) int (*a[10])(int)5、设有以下说明和定义:typedef union {long i; int k[5]; char c;} DATE;struct data { int cat; DATE cow; double dog;} too;DATE max;则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:_____【标准答案】DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20.data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是 20 + 32 = 52。
C语言编程题精选及答案.

C语言编程题精选C语言学习2010-11-30 15:48:25 阅读47 评论0 字号:大中小订阅1. 有函数F(x)=(x+1)2和G(x)=2x+1,输入X值计算F(G(x))的值。
2. 任意输入三个字符,要求首先按逆序输出,然后同行原序输出。
3. 在屏幕上输出如下图案(考虑能否将输出的行数由输入的值来控制):************************4. 在屏幕上输出如下图案(考虑将输出的行数由输入的值来控制):***************5. 编程输出如下格式图形(考虑将输出的行数由输入的值来控制):****************6. 编程输出如下格式图形(考虑将输出的行数由输入的值来控制):**********7. 编程输出如下格式图形(考虑将输出的行数由输入的值来控制):****************8. 编程输出如下格式图形(考虑将输出的行数由输入的值来控制):*************************9. 编程输出如下格式图形(考虑将输出的行数由输入的值来控制):****************10. 编程输出如下格式图形(考虑将输出的行数由输入的值来控制):*************************11. 编写打印如下图形的程序(考虑将输出的行数由输入的值来控制):* * * * ** * * * ** * * * ** * * * *12. 编制程序打印如下图形(考虑将输出的行数由输入的值来控制):ABBBCCCCCDDDDDDDEEEEEEEEEFFFFFFFFFFFGGGGGGGGGGGGG13. 编程打印图形(考虑将输出的行数由输入的值来控制):11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 5 6 5 4 3 2 114. 编程打印图形(考虑将输出的行数由输入的值来控制):11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 5 6 5 4 3 2 115. 编程打印图形(考虑将输出的行数由输入的值来控制):1 2 3 4 5 6 5 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 3 2 11 2 3 2 11 2 1116. 编程打印图形(考虑将输出的行数由输入的值来控制):11 11 2 11 3 3 11 4 6 4 11 5 10 10 1 117. 编程打印图形(考虑将输出的行数由输入的值来控制):11 11 2 11 3 3 11 4 6 4 11 5 10 10 1 118. 输入一个大写字母打印菱形。
c编程练习题(打印版)

c编程练习题(打印版)C语言编程练习题一、基础练习1. 编写一个程序,计算并输出两个整数的和、差、乘积和商。
提示:使用scanf函数输入两个整数,使用算术运算符进行计算。
2. 编写一个程序,计算并输出一个圆的面积。
提示:圆的面积公式为A = π * r * r,其中 r 是圆的半径。
3. 编写一个程序,计算并输出一个矩形的周长和面积。
提示:矩形的周长公式为 P = 2 * (l + w),面积公式为 A = l * w,其中 l 是长度,w 是宽度。
4. 编写一个程序,判断一个整数是奇数还是偶数。
提示:使用模运算符 % 来判断。
二、控制结构练习1. 编写一个程序,根据用户输入的分数,输出对应的等级。
提示:90分以上为 A,80-89分为 B,70-79分为 C,60-69分为D,60分以下为 F。
2. 编写一个程序,实现简单的猜数字游戏。
提示:程序随机生成一个1到100之间的整数,用户输入猜测的数字,程序根据用户输入给出提示(太高、太低或正确)。
3. 编写一个程序,实现一个简单的计算器。
提示:程序提示用户输入运算符(+、-、*、/)和两个操作数,然后输出计算结果。
三、数组练习1. 编写一个程序,实现对一个整数数组的排序。
提示:可以使用冒泡排序、选择排序或插入排序算法。
2. 编写一个程序,找出一个字符串数组中最长的字符串。
提示:遍历字符串数组,比较每个字符串的长度。
3. 编写一个程序,实现字符串的反转。
提示:可以使用数组的索引特性来实现。
四、函数练习1. 编写一个函数,计算一个数的阶乘。
提示:使用递归或循环来实现。
2. 编写一个函数,实现字符串的复制。
提示:不使用库函数,手动复制字符串。
3. 编写一个函数,判断一个字符串是否为回文字符串。
提示:回文字符串是指正读和反读都一样的字符串。
五、指针练习1. 编写一个程序,使用指针交换两个整数的值。
提示:注意指针变量的赋值和解引用。
2. 编写一个程序,实现字符串的连接。
C语言经典例题及答案

一、求一个任意边长的矩形面积。
#include <stdio.h>void main(){int w,h,sum;scanf("%d%d",&w,&h);sum=w*h;printf("area=%d\n",sum);}二、求一个任意半径的圆的面积及周长。
#define PI 3.14159#include <stdio.h>void main(){float r,area,c;scanf("%f",&r);area=PI*r*r;c=2*PI*r;printf("area=%f\ncircle=%f\n",area,c);}三、已知:w=5, y=4, z=2, 求表达式:w*y/z的值,并输出。
##include <stdio.h>void main(){ int w,y,z,r;w=5;y=4;z=2;r=w*y/z;printf("%5d",r);}一、从键盘上输入三个数,求出其中的最大值,并输出。
#include <stdio.h>void main(){int a,b,c,max;scanf("%d%d%d",&a,&b,&c);max=a;if(max<b) max=b;if(max<c) max=c;printf("max=%d\n",max);}二、求sin300。
+sin600+cos300+cos600之和。
(注意:30*3.14159/180)#include <stdio.h>#define PI 3.14159#include <math.h>void main(){float a,b,sum;a=30*PI/180;b=60*PI/180;sum=sin(a)+sin(b)+cos(a)+cos(60);printf("total=%f\n",sum);}三、比较两个数的大小。
c语言经典题目100题

1.寻找数组中的最大值和最小值2.寻找数组中的中位数3.查找数组中给定元素的索引4.反转数组5.合并两个升序数组6.移位数组7.查找两个数组的交集8.查找两个数组的并集9.查找两个数组的差集10.寻找数组中的众数11.寻找数组中的缺失元素12.寻找数组中的重复元素13.计算数组的和14.计算数组的平均值15.计算数组的方差16.计算数组的标准差17.比较两个数组是否相等18.复制数组19.排序数组20.搜索数组(线性搜索)21.搜索数组(二分搜索)22.插入元素到数组23.删除元素到数组24.更新数组中的元素25.创建动态数组26.释放动态数组27.字符串复制28.字符串连接29.字符串比较30.字符串搜索31.字符串替换32.字符串分割33.字符串反转34.字符串大小写转换35.字符串修剪36.计算字符串长度37.字符串格式化38.链表创建39.链表插入40.链表删除41.链表搜索42.链表反转43.链表排序44.链表合并45.链表复制46.链表释放47.树创建48.树插入49.树删除50.树搜索51.树反转52.树排序53.树合并54.树复制55.树释放56.堆创建57.堆插入58.堆删除59.堆搜索60.堆反转61.堆排序62.堆合并63.堆复制64.堆释放65.图创建66.图插入67.图删除68.图搜索69.图反转70.图排序71.图合并72.图复制73.图释放74.队列创建75.队列插入76.队列删除77.队列搜索78.队列反转79.队列排序80.队列合并81.队列复制82.队列释放83.栈创建84.栈插入85.栈删除86.栈搜索87.栈反转88.栈排序89.栈合并90.栈复制91.栈释放92.哈希表创建93.哈希表插入94.哈希表删除95.哈希表搜索96.哈希表反转97.哈希表排序98.哈希表合并99.哈希表复制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) /*确保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;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后再开方,如果开方后的结果满足如下条件,即是结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人?解方程组编写程序,采用穷举法求出结果。
编写程序,根据以下公式求e的值。
要求用两种方法计算:1) for循环,计算前50项2)while 循环,直至最后一项的值小于10-4从键盘中输入一个数字(不限位数),用循环语句编程判断并输出这个数字的位数。
猴子吃桃子问题。
猴子第一天摘下若干个桃,当即只一半,又多吃一个。
第二天早上又将剩下的一半吃掉一半,双多吃一个。
以后每天早上都吃了前天剩下的一半零一个,到第10天早上只剩下最后一个桃。
问第一天摘了几个桃。
编程打印九九乘法表青年歌手参加歌曲大奖赛,有10个评委打分,试编程求选手的平均得分(去掉一个最高分和一个最低分)。
从键盘中输入一个数字(可以包含小数点,其位数在60位以下,求其整数的有效位数,如输入,返回值为整数有效位数为3)1) 输入数据为浮点型,不用数组,不用字符串,只有变量的算术运算实现此功能。
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=13)10个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为12,2,8,22,16,4,10,6,14,20。
然后按下列规则调整,所有小孩同时把自己的糖果分一半给右边的小孩,糖块数变为奇数的人,再向老师补要一块,问经过多少次调整后,大家的糖块一样多,且每人多少块。
编写一个函数,用以求x2-5x+4的值,x做为函数的形参,调用此函数,求:y1= 22-5×2+4Y2=(x+15)2-5(x+15)+4Y3=(sinx)2-5sinx+4sinx 可以加载””库函数后使用,函数说明为double sin( double x)编写一个函数,使给定的一个二维数组(N×N)行列互换(N>3)。
从键盘中输入一个不超过40个字符的字符串,再输入一个位数,删除对应位数的字符,然后输出删除指定字符后的字符串要求: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+------+aaaaaaa(n个a),其中a和n都从键盘中输入,如从键盘中输入2,5,则计算S5=2+22+222+2222+22222。
#include ""void main(){int a,n,i=1;long s=0,t=0;printf("a=");scanf("%d",&a);printf("n=");scanf("%d",&n);while(i<=n){t=t+a;s=s+t;a=a*10;++i;}printf("sum=%d",s);}两个乒乓球队进行比赛,各出三人。
甲队为A,B,C三人,乙队为X,Y,Z三人。
已抽签决定比赛名单,有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,编程找出三对选手的对手名单。
注:使用穷举法#include""int main(){ int i,j,k;for(i=1;i<=3;++i){ for(j=1;j<=3;++j){ for(k=1;k<=3;++k){ if(i==j || j==k || i==k) continue;if (i!=1 && k!=1 && k!=3){ printf("A vs %c\n",i+'X'-1);printf("B vs %c\n",j+'X'-1);printf("C vs %c\n",k+'X'-1);return 0;}}}}return 0;}编写一个函数,函数说明为:char lastchar ( char str[])功能:求一个字符串的最后一个字符,如果是空串,则返回空字符。
再利用该函数编程,输入两个字符串,输出第一字符串的最后一个字符和第二个字符串的最后一个字符。
韩信点兵。
韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。
编程求韩信至少有多少兵?#include ""void main(){int i;for(i=1;;i++){if(i%5==1&&i%6==5&&i%7==4&&i%11==10){printf("%d",i);break;}}}用递归方法计算下列函数的值:fx (x, n)=x-x2+x3-x4+......(-1)n-1xn n>0要求:1) 写出递归函数的原型2) 编写程序4 用递归法将一个整数转换成字符形式输出。
例如输入483,应输出字符串“483”。
其程序如下,请验证,并修改程序,增加显示出输入数字的位数的功能,并使输出结果与下图一致。
void convert(long n){ long i;if ((i=n/10)!=0)convert(i);putchar(n%10+'0');}main(){ long number;scanf("%ld",&number);if ( number<0){putchar('-'); number= -number;}convert (number);}利用以下公式,编程计算π的值,直到最后一项的绝对值( 用函数fabs() )小于为止。
【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:#include ""#include ""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);}getch();}===========================================【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:#include ""#include ""main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0. 1;bonus2=bonus1+100000*;bonus4=bonus2+200000*;bonus6=bonus4+200000*;bonus10=bonus6+400000*;if(i<=100000)bonus=i*;else if(i<=200000)bonus=bonus1+(i-100000)*;else if(i<=400000)bonus=bonus2+(i-200000)*;else if(i<=600000)bonus=bonus4+(i-400000)*;else if(i<=1000000)bonus=bonus6+(i-600000)*;elsebonus=bonus10+(i-1000000)*;printf("bonus=%d",bonus);getch();}===========================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。