10道经典的C语言例题(含参考程序)
发布时间:2025-05-13 05:05:21 发布人:远客网络
一、10道经典的C语言例题(含参考程序)
1.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1^3+5^3+3^3。
int bai_wei,shi_wei,ge_wei,i,sum=0;
if(i==pow(bai_wei,3)+pow(shi_wei,3)+pow(ge_wei,3))
2.请输入任意两个整数x和y,求其最大公约数和最小公倍数。
printf("请输入任意两个整数:");
printf("这两个整数的最大公约数为:%d",i);
printf("这两个整数的最小公倍数为:%d",i);
3.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
int sum1=0,sum2=0,sum3=0,sum4,i=0;
printf("请输入一串字符串:");
for(i=0;i<strlen(str);i++) p=""></strlen(str);i++)>
if((str[i]>='a'&&str[i]='A'&&str[i]<='Z'))
if(str[i]>='0'&&str[i]<='9')
sum4=strlen(str)-sum1-sum2-sum3;
printf("英文字母的个数:%d",sum1);
printf("空格的个数:%d",sum2);
printf("数字的个数:%d",sum3);
printf("其他符号的个数:%d",sum4);
4.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
printf("请输入相加的个数n:");
for(i=0;i<n;i++) p=""></n;i++)>
5.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。
printf("在1000以内的完数有:");
for(j=1;j<i;j++) p=""></i;j++)>
6.输入一个不多于5位的正整数,要求:1、求它是几位数;2、逆序打印出个位数字。
for(i=0;i<n;i++) p=""></n;i++)>
for(i=0;i<k;i++) p=""></k;i++)>
7.输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
8.利用递归算法,将所输入的5个字符,以相反顺序打印出来。
9.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…球出这个序列的前20项之和。
二、C语言switch语句例题
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
printf("please input the first letter of someday\n");
while((letter=getch())!='Y')/*当所按字母为Y时才结束*/
{case'S':printf("please input second letter\n");
if((letter=getch())=='a')
else if((letter=getch())=='u')
else printf("data error\n");
case'F':printf("friday\n");break;
case'M':printf("monday\n");break;
case'T':printf("please input second letter\n");
if((letter=getch())=='u')
else if((letter=getch())=='h')
else printf("data error\n");
case'W':printf("wednesday\n");break;
default: printf("data error\n");
==============================================================
题目:Press any key to change color, do you want to try it. Please hurry up!
for(color= 0; color< 8; color++)
textbackground(color);/*设置文本的背景颜色*/
cprintf("This is color%d\r\n", color);
cprintf("Press any key to continue\r\n");
==============================================================
题目:学习gotoxy()与clrscr()函数
cprintf("Output at row 5 column 1\n");
cprintf("Output at row 10 column 20\n");
==============================================================
printf("Hello, world!\n");
for(counter= 1; counter<= 3; counter++)
==============================================================
for(color= 1; color< 16; color++)
textcolor(color);/*设置文本颜色*/
cprintf("This is color%d\r\n", color);
cprintf("This is blinking\r\n");
==============================================================
for(i=2;ifor(i=2;i for(j=i+1;j{
==============================================================
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
下次类推,即用第二个元素与后8个进行比较,并进行交换。
printf("please input ten num:\n");
for(j=i+1;jif(a[min]>a[j]) min=j;
==============================================================
题目:求一个3*3矩阵对角线元素之和
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
printf("please input rectangle element:\n");
printf("duijiaoxian he is%6.2f",sum);
==============================================================
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1.程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
此元素之后的数,依次后移一个位置。
int temp1,temp2,number,end,i,j;
printf("original array is:\n");
printf("insert a new number:");
==============================================================
1.程序分析:用第一个与最后一个交换。
printf("\n original array:\n");
printf("\n sorted array:\n");
题目:学习static定义静态变量的用法
printf("\40:var equal%d\n",var);
printf("\40:static var equal%d\n",static_var);
==============================================================
题目:学习使用auto定义变量的用法
{ printf("\40: The num equal%d\n",num);
printf("\40: The internal block num equal%d\n",num);
==============================================================
题目:学习使用static的另一用法。
printf("\40: The num equal%d\n",num);
printf("\40:The internal block num equal%d\n",num);
==============================================================
题目:学习使用external的用法。
printf("The value of c is equal to%d\n",c);
==============================================================
题目:学习使用register定义变量的方法。
printf("The sum is%d\n",tmp);
==============================================================
printf("\40: Program will stop if input value less than 50.\n");
printf("\40:Please input number==>");
printf("\40:The square for this number is%d\n",SQ(num));
==============================================================
#define exchange(a,b){\/*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/
printf("x=%d; y=%d\n",x,y);
printf("x=%d; y=%d\n",x,y);
==============================================================
printf("\40:%d larger than%d\n",i,j);
printf("\40:%d equal to%d\n",i,j);
printf("\40:%d smaller than%d\n",i,j);
printf("\40: No such value.\n");
==============================================================
题目:#if#ifdef和#ifndef的综合应用。
#define MAXIMUM(x,y)(x>y)?x:y
#define MINIMUM(x,y)(x>y)?y:x
printf("\40: The larger one is%d\n",MAXIMUM(a,b));
printf("\40: The lower one is%d\n",MINIMUM(a,b));
printf("\40: The lower one is%d\n",MINIMUM(a,b));
printf("\40: The larger one is%d\n",MAXIMUM(a,b));
printf("\40: The larger one is%d\n",MAXIMUM(a,b));
printf("\40: The lower one is%d\n",MINIMUM(a,b));
printf("\40: The lower one is%d\n",MINIMUM(a,b));
printf("\40: The larger one is%d\n",MAXIMUM(a,b));
==============================================================
#include"test.h"/*一个新文件50.c,包含test.h*/
printf("\40:%d larger than%d\n",i,j);
printf("\40:%d equal to%d\n",i,j);
printf("\40:%d smaller than%d\n",i,j);
printf("\40: No such value.\n");
1.程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1
printf("\40: The a& b(decimal) is%d\n",b);
printf("\40: The a& b(decimal) is%d\n",b);
==============================================================
1.程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1
printf("\40: The a& b(decimal) is%d\n",b);
printf("\40: The a& b(decimal) is%d\n",b);
==============================================================
1.程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0
printf("\40: The a& b(decimal) is%d\n",b);
printf("\40: The a& b(decimal) is%d\n",b);
==============================================================
题目:取一个整数a从右端开始的4~7位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
printf("%o\n%o\n",a,d);
==============================================================
printf("\40: The a's 1 complement(decimal) is%d\n",b);
printf("\40: The a's 1 complement(hexidecimal) is%x\n",a);
==============================================================
题目:画图,学用circle画圆形。
==============================================================
==============================================================
题目:画图,学用rectangle画方形。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
{int x0,y0,y1,x1,driver,mode,i;
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
outtextxy(150,40,"How beautiful it is!");
==============================================================
int i,j,k,x0,y0,x,y,driver,mode;
setcolor(2); line(x0,y0,x,y);}
/* Make 0 time normal size letters*/
settextstyle(DEFAULT_FONT,HORIZ_DIR,0);
outtextxy(10,170,"press a key");
setfillstyle(HATCH_FILL,YELLOW);
a=(2*PAI/16)*i+(2*PAI/180)*k-1;
==============================================================
color=(color>=MAXCOLOR)?0:++color;
另外,站长团上有产品团购,便宜有保证
三、c语言程序设计基础叶文珺版答案
初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:
一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?
二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。
三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。
出现问题原因清楚了,那么如何学习呢?请你看【C语言学习六步曲】
特别提醒:在使用本方法之前一定要先阅读C语言的相关内容,要初步掌握相关知识的要点,然后按下述方法学习,可以达到理解、巩固、提高C语言知识和提高程序调式能力的目的。
在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。单击此处查看【C语言的编程风格】
使用《Turbo C/C++ for Windows集成实验与学习环境》软件可以很方便地看着软件集成的《C语言入门教程》输入练习其中的程序例题。具体使用方法参见软件帮助部分。
1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。
2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹配、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。
3、修改C语言语法错误时要注意以下两点:
(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。
(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。
例如:将最简单的Hello World!程序
printf("Hello World!\n");
中的printf("Hello World!\n");中的Hello World!改成你的姓名,运行一下程序,看有什么变化?
第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?
第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化?
找出程序结果变化的原因,就加深了对C语句的理解。
第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。
在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。
在《Turbo C/C++ for Windows集成实验与学习环境》集成的教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。
注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!
注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!
例如,将Hello World程序中语句printf("Hello World!\n");中的;改成中文的分号;运行一下程序,看有什么结果?
C语言的错误信息的形式:(下面例子是的Turobo C2.0错误信息,如图1)
Error E:\WinTc\WinTc\frist.c 5: Function call missing) in function main
C语言的错误信息的形式:(下面例子是Visual C++6.0错误信息,如图2)
文件名行号冒号错误代码冒号错误内容
e:\wintc\wintc\frist.c( 5): error C2143: syntax error: missing')' before';'
软件集成了高校教学用的最多的两个编译器Visual C++6.0和Turbo c 2.0,支持C、标准C、C++、标准C++、WINDOWS C程序的编辑、编译、和调试。软件根据用户输入程序的类型智能选择编译器,不用使用者干涉。
调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就是差别。
第五步、研究典型的C语言程序,提高程序设计能力
经过上述过程的学习,我们已经学会了C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后就可以研读别人编写C语言经典程序,看懂别人是如何解决问题的,学习解决问题的方法和程序设计技巧,提高自己的程序设计能力。
在软件中有50多个典型的源程序,研究它的实现方法,提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言程序设计的能力。
C语言课程设计的目的:是让学生综合利用所学的C语言知识,解决一些接近实际问题题目,提高程序设计和调试较大程序的能力,为进一步进行软件开发打下坚实的基础。
最后送C语言初学者一句话来共勉:首先要相信自己是有能力学好C语言的,然后不惜一切代价把这种能力表现出来,你就成功了。做任何事,何尝不是这样呢?兴趣是学习C语言的最大动力,学习方法给你指明努力的方向,让你事半功倍。如果你感觉对你有帮助的话,请回帖支持,让更多的朋友知道它,谢谢支持!!!