用递归法将一个整数转换成字符串。例如,输入483,应输出字符串“483”。N的位数不确定,可以是任意的整数
C语言集中上机实验报告
C语言集中上机实验报告学生:学号:班级:专业:重庆邮电大学移通学院2011年6月第一章循环1.1 实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法(2)掌握字符数组和字符串函数的使用;(3)掌握与数组有关的算法。
1.2 实验基本内容1.1打印出以下图案** * ** * * * ** * * * * * ** * * * ** * **题目分析:运用数组初始化打印出图形。
程序:#include"stdio.h"void main(){char a[7][7]={{' ',' ',' ','*'},{' ',' ','*','*','*'},{' ','*','*','*','*','*'},{'*','*','*','*','*','*','*'},{' ','*','*','*','*','*'},{' ',' ','*','*','*'},{' ',' ',' ','*'}};int i,j;for(i=0;i<7;i++){for(j=0;j<7;j++)printf("%c",a[i][j]);printf("\n");}}运行结果:1.2编写程序实现输入整数n,输出如下所示由数字组成的菱形。
【C语言】第七章作业
如果要求输出100~200之间的素数,如何修改 main函数。
3.main函数实现
int main() { int i;
printf("100~200之间的素数有:"); for(i=100;i<=200;i++) if (primer(i)) printf("%d ",i);
{ printf("请输入一个大于2的整数:"); scanf("%d",&m);
} flag=primer(m); if (flag) printf("%d是素数。\n",m); else printf("%d不是素数。\n",m); return 0; }
3.运行程序
输入测试数据:17 输入测试数据:34 输入测试数据:2 输入测试数据:1 输入测试数据:0 分别测试程序的正确性。
convert(i); }运行结果是什么?
最小公倍数=(i*j)/最大公约数
1.最大公约数函数实现
int gongyue(int i,int j) { int t,r; if (j>i)
{t=i;i=j;j=t;} while( (r=i%j)!=0) {
i=j; j=r; } return(j); }
1.最小公倍数函数实现
int gongbei(int i,int j,int h) { return(i*j/h); }
9.运行程序
输入测试数据: I am No.201002,You are No.201003! 检测程序的正确性。 正确结果: 字母个数是:13 数字个数是:12 空格个数是:4 其它字符个数是:4
函数的定义与使用
实验报告课程名称程序设计基础实验项目函数的定义与使用实验仪器计算机系别计算机学院专业计算机大类班级/学号学生姓名实验日期成绩指导教师实验三一、实验目的(1)熟悉定义函数的方法。
(2)熟悉声明函数的方法。
(3)熟悉调用函数时实参与虚参的对应关系,以及“值传递”的方式。
(4)学习对多文件的程序的编译和运行。
(5)进一步熟悉怎样利用函数实现指定的任务。
(6)熟函数的嵌套调用和递归调用的方法。
(7)熟悉全局变量和局部变量的概念和方法。
二、实验内容(1)写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。
本程序应当准备以下测试数据:17,34,2,1,0。
分别运行并检查结果是否正确。
要求所编写的程序,主函数的位置在其他函数之前,在主函数中对其所调用函数作声明。
进行以下工作:①输入自己编写的程序,编译和运行程序,分析结果。
②将主函数的函数声明删掉,再进行编译,分析编译结果。
③把主函数的位置改为在其他函数之后,在主函数中不含函数声明。
④保留判别素数的函数,修改主函数,要求实现输出100~200之间的素数。
#include<stdio.h>int main(){int a,b,i;printf("请输入一个整数:\n");scanf("%d",&a);for(b=0,i=2;i<=a-1;i++){if(a%i==0)b++;}if(b==0)printf("您输入的数是素数");elseprintf("您输入的数不是一个素数");return 0;}(2)写一个函数,将字符串中的元音字母复制到另一字符串,然后输出。
①输入程序,编译和运行程序,分析结果。
②分析函数声明中参数的写法。
先后用以下两种形式。
(a)函数声明中参数的写法与定义函数时的形式完全相同,如:void cpy(char s[],char c[]);(b)函数声明中参数的写法与定义函数时的形式基本相同,但省略写数组名。
c语言实验报告 (2)
C语言实验报告说明1,所有程序均用VC6。
0编译运行,文件名命名为姓名+日期,因为实验存在补做,所以并不是按照日期先后排列的。
2,为了使截图清晰,手动将运行窗口由“黑底白字"改为了“白底黑字”.实验2 数据类型、运算符和表达式一、实验目的:(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法。
(2)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。
(3)掌握C语言的输入和输出函数的使用(4)进一步熟悉C程序的编辑、编译、连接和运行的过程.三、程序调试与问题解决:(1)输人并运行下面的程序#include<stdio.h>void main(){char c1,c2;c1='a’;c2=’b';printf(”%c %c\n”,c1,c2);}错误!运行此程序.错误!在上面printf语句的下面再增加一个printf语句。
printf(”%d%d\n",c1,c2);再运行,并分析结果。
输出结果如图,编译成功,无错误.错误!将第3行改为int c1,c2;再运行,并分析结果。
错误!再将第4、5行改为c1=a;c2=b;再运行,并分析结果。
a,b没有定义,编译报错。
错误!再将第4、5行改为c1=‘’a‘’;c2=‘’b‘’;再运行,并分析结果。
○6再将第4、5行改为c1=300;c2=400;再运行,并分析结果.以字符型输出时,输出的将是300,400对应的字符.(2)输人并运行教材第3章习题3. 6给出的程序#include〈stdio.h〉main (){char c1=’a’,c2=’b’,c3=’c',c4=’\101’,c5=’\116';printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);printf(”\t\b%c %c\n”,c4,c5);}#include<stdio.h>void main(){int a,b;unsigned c,d;long e,f;a=100;b=-100;e=50000;f=32767;c=a;d=b;printf("%d,%d\n",a,b);printf(”%u,%u\n",a,b);printf("%u,%u\n",c,d);c=a=e; d=b=f;printf(”%d,%d\n",a,b);printf("%u,%u\n”,c,d);}请对照程序和运行结果分析:①将一个负整数斌给一个无符号的变t,会得到什么结果.画出它们在内存中的表示形式。
程序填空
━━━━━━━━━━━━━━━━━━一、程序填空━━━━━━━━━━━━━━━━━━第1题/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。
-------------------------------------------------------*/#include <conio.h>#include <stdio.h>void fun (long s, long *t){long sl=10;s /= 10;/***********SPACE***********/*t = s 【?】 10;while(s>0){/***********SPACE***********/s = 【?】;/***********SPACE***********/*t = s%10*sl【?】;/***********SPACE***********/sl = sl 【?】10;}}void main(){long s,t;printf("\nPlease enter s:");scanf("%ld", &s);fun(s, &t);printf("The result is: %ld\n", t);}第2题/*-------------------------------------------------------【程序填空】---------------------------------------------------------题目:下面程序的功能是用递归法求n!。
C语言实验
C语言上机指导实验2数据类型、运算符和表达式1.实验目的掌握C语言数据类型,熟悉如何定义一个整形、字符型和实型的变量,以及对他们赋值的方法。
掌握不同的类型数据之间赋值的规律。
学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
进一步熟悉C程序的编辑、编译、连接和运行的过程。
2.实验内容和步骤(2).在此基础上增加一个语句:printf(“%d%d\n”,c1,c2);再运行,并分析结果。
(3).再将第2行改为:int c1,c2;再使之运行,并观察结果。
(4).再将第3、4行改为:c1 = a; /* 不用单撇号*/c2 = b;再使之运行,分析其运行结果。
(5).再将第3、4行改为:c1 = ”a”; /* 用双撇号*/c2 = ”b”;再使之运行,分析其运行结果。
(6).再将第3、4行改为:c1 = 300; /* 用大于255的整数*/c2 = 400;再使之运行,分析其运行结果。
输入并运行教材第3章习题3.6给出的程序(1).将一个负整数赋给一个无符号的变量,会得到什麽结果。
画出它们在内存中的表示形式。
(2).将一个大于32765的长整数赋给整形变量,会得到什麽结果。
画出它们在内存中的表示形式。
(3).将一个长整数赋给无符号的变量,会得到什麽结果(分别考虑该长整数的值大于或等于65535 以及小于65535 的情况)。
画出它们在内存中的表示形式。
同学们可以改变程序中各变量的值,以便比较。
例如:a = 65580, b = -40000,e = 65535,f = 65580。
(2).将第4、5行改为:m = i++;n = ++j;再运行。
printf(“%d,%d”, ++i, ++j);(5).再将printf 语句改为:printf(“%d,%d,%d,%d”, i, j, i++, j++);该题的要求是:要将”China”译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母。
C语言基础题
C语言基础题第一期:1. 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身,例如:153是一水仙花数,因为153=1+125+27.2. 一个数如果恰好等于它的因子之和,这个数就称为“完数”,例如:6的因子是1,2,3,而6=1+2+3因此6是“完数”。
编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1,2,33. 有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,…求出这个数列的前20相之和。
4.一个球从100M高度自由下落,每次落地后反跳回原高度的一半,再落下,再反弹,求它在第10次落地时,共经过多少米,第10次反弹多高。
5.猴子吃桃问题。
猴子第一天,摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。
第二天早上又将剩下的桃子吃掉一半,有多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第十天早上想再吃时,就只剩一个桃子了。
求第一天共摘了多少个桃。
6.两个乒乓球队进行比赛,各出3人。
甲队为A,B,C;乙队X,Y,Z。
以抽签决定比赛名单。
有人向队员打听比赛的名单,A说他不和X比,C说他不和X,Z比,请编程找出3队赛手的名单。
7.将一个二维数组行和列的元素互换,存到另一个数组中。
原始二位数组手动输入,行和列自定。
8.输出以下的杨辉三角形(要求输出15行)11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 19.输出“魔方阵”。
所谓魔方阵就是指这样的方阵,它的每一行,每一列和对角线之和均相等。
例如三阶魔方阵为:8 1 64 9 2要求输出1~n2的自然数构成的魔方阵。
10.找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
第二期:1.有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
实验6 函数 习题及答案
(2)a2.cppe "stdio.h"
int fun(int num)
{
int k=1;
do
{
k*=num %10;/
num/=10;
}while(num);
return(k);
}
void main()
{
int n=26;
printf("%d\n",fun(n));
#include "stdio.h"
int swap(int a,int b)
{
int c,s;
c=a;
a=b;
b=c;
s=a+b;
return s;
}
void main()
{
int a,b,s;
a=3;b=4;
s=swap(a,b);
printf("a=%d b=%d s=%d\n",a,b,s);
{
flag=1;
t[i++]=c;
}
else if(flag)
{
t[i]='\0';
printf("decimal number %d:\n",htoi(t));
printf("continue or not(Y/N)?");
c=getchar();
if(c=='N' || c=='n')
flag1=0;
}
(4)b4.cpp
程序说明:在主函数中读入一字符串,再读入一字符,然后调用函数dele在字符串中查找并删除该字符,最后输出该字符串。
#include "stdio.h"
电子科技大学22春“计算机应用技术”《C语言》期末考试高频考点版(带答案)试卷号:4
电子科技大学22春“计算机应用技术”《C语言》期末考试高频考点版(带答案)一.综合考核(共50题)1.下列运算符中优先级最低的是()。
A.?:B.+C.&&D.!=参考答案:A2.逻辑表达式的值可以为0、1或者-1。
()A.正确B.错误参考答案:B3.下列符号中可以用作自定义函数名的是()。
A.typedefB.intC.go_toD.INTE.Getchar参考答案:CDE4.在C语言中,逗号既可以作为运算符,也可以作为分隔符。
()A.正确B.错误参考答案:A以下程序的输出结果是()。
main() {int a=100,x=10,y=20,ok1=5,ok2=0; if(xA.值不确定B.1C.0D.-1参考答案:D6.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为()。
A.a[i]+jB.*(a[i]+j)C.*(a+j)D.(a+i)参考答案:B7.有以下程序,其中函数f的功能是将多个字符串按字典顺序排序。
()#include void f(char *p[],int n) { char *t; int i,j; for(i=0;i0){t=p[i];p[i]=p[j];p[j]=t;} } main( ) { char *p[5] ={“ abc”, “aabdfg ” ,“abbd”, “dcdbe”, “cd”}A.6B.4C.3D.2参考答案:B8.以下程序的正确运行结果是()。
#include int func(int a ,int b) ; main( ) { int k=4,m=1,p; p=fun(k,m);printf( “%d,”,p) ; p=fun(k,m);printf( “%d\n”,p) ; } func(int a,int b) {static int m=0,i=2 ; i+=m+1 ; m=i+a+b ; return m;}A.8,8B.8,20C.8,17D.8,169.以下叙述错误的是()。
C++实验指导书及源程序代码
C++上机实验指导书(2011版)软件学院·软件工程教研室2011.3目录实验1 C++编程环境实践 (1)实验2 基本数据类型、运算符和表达式 (10)实验3 选择和循环结构(*) (13)实验4 数组、指针、引用(*) (16)实验5 函数与重载 (18)实验6 类与对象 (20)实验7 运算符重载(*) (24)实验8 继承 (25)实验9 多继承(*) (27)实验10 多态与虚函数 (29)实验1 C++编程环境实践一、实验目的1.熟悉VC++6.0编程环境;2.编制简单C++程序并运行;3.熟悉C++的编辑、编译、连接和运行过程。
二、实验内容及步骤1.使用VisualC++6.0建立一个标准C++程序,编译、运行以下程序:具体实验步骤:(1)启动Visual C++ 6.0开发环境从“开始”菜单中选择“程序”| Microsoft Visual Studio 6.0 |Microsoft Visual C++6.0,显示Visual C++ 6.0开发环境主窗口,如图1-1所示。
在Visual C++主窗口的顶部是菜单栏,左侧为项目工作区窗口,右侧是程序编辑窗口。
工作区窗口用来显示所设定的工作区的信息,程序编辑窗口用来程序编辑区项目工作区 菜单栏 图1-1 Visual C++6.0的主窗口输入和编辑源程序。
(2)建立和运行只包含一个C++源程序的方法①建立只包含一个C++源程序的方法一个最简单的C++程序只包含一个源程序的文件,建立这样的一个C++源程序的方法是在Microsoft Visual C++主窗口的菜单栏中选择“File →New”命令,弹出“New”对话框,单击“Files”选项卡,在其列表框中选择“C++ Source File”选项,表示要建立一个新的C++源程序文件,然后在对话框右半部分的Location文本框中输入准备编辑的源程序文件的存储路径(假设为F:\C++),表示准备编辑的源程序文件将存放在F盘C++子目录下,在其上方的File文本框中输入准备编辑的源程序文件的名字(假设为example1.cpp),如图1-2所示。
C语言上机实验5-12
17.5实验5循环结构程序设计1.实验目的(1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。
(2)掌握在程序设计中循环的方法实现一些常用的算法(如穷举、迭代、递推等)。
(3)进一步学习调试程序。
2.实验内容编程并上机调试运行(1)输入一行字符、分别统计出其中的英文字母、空格、数字和其他字符的个数(本题是教材第5章第4题)在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。
(2)输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。
例如,153是一个水仙花数,因为153=1³+5³+3³(本题是教材第五章第8题)。
(3)猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃,只剩一个桃子了。
求第一天共摘了多少桃子(本题是教材第五章第12题)。
再得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。
请修改程序并运行,检查结果是否正确。
(4)用牛顿迭代法求方程2X³=4x²+3x-6=0在1.5附近的根(本题是教材第五章第13题,学过高等数学的读者可选做此题)。
再得到正确结果后,请修改程序所设的X初始值由1.5改为100,1000,1000,再运行,观察结果,分析不同的x初值对结果有什么影响,为什么?修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。
3.预习内容预习教材第5章。
17.6实验6数组1.实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。
(2)掌握字符数组和字符串函数的使用。
(3)掌握与数组有关的算法(特别是排序算法)。
2.实验内容编程序并上机调试运行。
高级语言程序设计第6章参考答案
1.6.3习题解答编程题1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主调函数调用这两个函数,并输出结果。
两个整数由键盘输入。
分析:求两个数a和b的最大公约数:设这个数为x,则x一定小于等于a和b中的较小者min(a,b)。
在区间[1, min(a,b)]中能找到的最后一个同时被a和b整除的那个数,就是a和b的最大公约数x。
求两个数a和b的最小公倍数:设这个数为x,则x一定大于等于a和b中的较大者max(a,b),而小于等于a*b。
在区间[max(a,b), a*b ]中找到的第一个能同时整除a和b的那个数,就是a和b的最小公倍数x。
参考程序代码:#include "stdio.h"f1(int a, int b)/*求最大公约数*/{int x,i;for(i=1;i<=(a<=b?a:b);i++){if(a%i==0&&b%i==0){x=i;}}printf("\n最大公约数为: %d\n",x);}f2(int a, int b)/*求最小公倍数*/{int i,x;for(i=((a>b)?a:b);i<=a*b;i++){if(i%a==0&&i%b==0){x=i;break;}}printf("\n最小公倍数为: %d\n",x);}void main(){int a,b;printf("\n请输入两个数:\n");printf("a=");scanf("%d", &a);printf("b=");scanf("%d", &b);f1(a, b);f2(a, b);}运行结果:请输入两个数:a=4b=16最大公约数为:4最小公倍数为:162.编写一个函数,其功能是对于给定的一个时间数(秒为单位),以“时:分:秒”的格式输出。
计算机科学与技术第4次上机实验教案资料
哈尔滨工程大学《程序设计基础》实验报告基础实践一姓名:麦豆班级:学号:实验时间: 2018 年 5 月 3 日哈尔滨工程大学计算机基础课程教学中心实验题目1:写一个函数,Sn=a+aa+aaa+···+aa···a求多项式的前n项和,其中a是一个数字。
n由键盘输入。
设计思想:声明函数sum,利用循环求得sum最终值并返回sum值实验代码及注释:#include <stdio.h>int sum(int a,int n);//sum函数声明int main(){int n;int a;printf(" 请输入a,n:\n");scanf("%d%d",&a,&n);printf("前%d项和为%d\n",n,sum(a,n));//调用函数sum return 0;}int sum(int a,int n){int sum=0;int i;int count;count=0;for(i=1;i<=n;i++){count=count*10+a;//每次乘10加asum=sum+count;}return sum;}验证与结论:总结与心得体会:声明函数时后面一定要有分号,但写函数时不需要。
实验题目2:编程实现求10000以内的回文数。
其中,函数实现判断任一正整数是否为回文数。
所谓回文数就是将一个数从左向右读与从右向左读是一样的,例如121和1331都是回文数。
设计思想:声明judje函数,判断number是否为回文数。
在函数内部先判断数字number位数,由于回文数为对称结构,故通过位数来确定判断次数,每次判断数字首位与个位然后去掉首位与个位再次判断直至循环结束。
另外需要对个位数另行判断,个位数一定为回文数。
如果为回文数返回1,否则返回0。
实验代码及注释:#include <stdio.h>#include <math.h>int judje(int number);//声明judje函数int main(){int i;for(i=0;i<10000;i++){if(judje(i)==1)//judje为1的数输出printf("%d\t",i);}return 0;}int judje(int number)//判断number是否为回文数{int judje,i=0,middle_number,parity,j;//回文数判断变量,数字位数,数字位数中间变量,数字位数奇偶int middle_number2;//取掉首位个位剩余数int shouwei,gewei;//首位,个位middle_number2=number;//全部赋初值middle_number=number;do //判断数字位数{ i++;middle_number=middle_number/10;//对数字除以10直到为}while (middle_number!=0);parity=i/2;//运算次数for (j=1;j<=parity;j++){shouwei=middle_number2/pow(10.0,(double)(i-2*j+1));//首位数字gewei=middle_number2%10;//个位数字middle_number2=(middle_number2-shouwei*pow(10.0,(double)(i-2*j+ 1)))/10;//将首位与个位去除后剩余的数if((shouwei==gewei) && j==parity)//个位与首位相等且都已比较完成{judje=1;//1为真}else if(shouwei!=gewei){judje=0;break;}}if(parity==0)//如果为个位数一定为回文数judje=1;return judje;}验证与结论:总结与心得体会:通过函数可以使代码更加简洁,流程更加清晰。
C语言程序设计各章练习题
《C 语言程序设计》各章练习题2016年12月汇编第1—3章 C 语言基础、编程规范、顺序结构程序设计编程题1:设a 和b 均为int 型变量,编写一个程序,通过键盘读入a ,b 的值,然后交换a,b 的值。
要求屏幕显示“输入2个整数,用空格隔开”的提示语句,并且输出交换前a,b 的值,交换后a ,b 的值。
附加要求:(1)允许定义第3个变量,实现交换; (2)不允许定义第3个变量,实现交换。
第4章选择结构程序设计编程题2:根据下列函数关系写程序,要求提示输入x 的值,输出y 的值。
⎪⎪⎩⎪⎪⎨⎧>=<+-=0020212x x x x x y 编程题2:根据下列函数关系写程序,要求提示输入x 的值,输出y 的值。
⎪⎩⎪⎨⎧>≤≤--<=002222x x x x x y 编程题3:求 ax 2+bx+c=0方程的解.(只输出b 2-4ac 〉=0的求解结果,小于0,输出“不予求解!”)第5章 循环结构程序设计编程题4:编程计算∑=ni i 1。
要求提示键盘输入n ,如n 为负数,不予计算,直接返回。
编程题5:编程序计算n !,要求n 从键盘输入,如n 小于0,不予计算。
编程题6:从键盘输入一个数n,判断n 是否是素数。
编程题6:编写程序输出1~100之间的偶数,要求屏幕显示时5个偶数一行,每个数占5位,右对齐。
编程题7:编程计算100到1000之间有多少个数其各位数字之和是5,并将其输出。
编程题8:求满足下列条件的三位数n ,它除以11(整数相除)所得到的商等于n 的各位数字的平方和,且其中至少有二位数字相同的数。
编程题9:有一些十进制整数对ab 和cd 具有如下特性:ab×cd=ba×dc ,其中a≠b 且c≠d 。
如:12×42=21×24.请编程找出30~50之间满足上述等式所有m,n 值,并按上述等式的格式输出。
(×用*表示)编程题10:从键盘上输入一个整数,然后把这个整数的各位逆序输出.例如,输入123456,输出654321.第6章数组编程题11:有一个已排好序的数组int a[11]={-5,—3,0,6,8,12,16,28,66,88};,要求输入一个数后,按原来排序的规律将它插入数组中。
C语言经典编程算法
C语言经典编程算法汇集(不断补充)用pi/4=1-1/3+1/5-1/7+...公式求PI的近似值,直到最后一项的绝对值小有10的-6次方为止。
#include <math.h>main(){int i=-1;float j,s=0.0;for(j=1.0;fabs(1.0/j)>=1e-6;j=j+2.0){i=-i;s+=i*1.0/j;}s=s*4.0;printf("%f\n",s);}输入四个整数,要求按由小到大的顺序输出。
main(){int a,b,c,d;printf("请输入4个整数:");scanf("%d,%d,%d,%d",&a,&b,&c,&d);printf("\n a=%d, b=%d, c=%d, d=%d \n",a,b,c,d);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b,b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}printf("排序结果如下:\n");printf("%d %d %d %d\n",a,b,c,d);}译密码。
为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。
例如,可以按以下规律电文变为密码:将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。
字母按上述规律转换,非字母字符不变。
如“China!”转换为“Glmre!”。
输入一行字符,要求输出其相应的密码。
#include <stdio.h>main(){char a,b[100];int i,j=0;printf("qing shu ru,yi hui che jie shu:");for(i=0;(b[i]=getchar())!='\n';i++){if((b[i]>='a'&&b[i]<='z')||(b[i]>='A'&&b[i]<='Z'))b[i]+=4;if(b[i]>'Z'&&b[i]<='Z'+4||b[i]>'z')b[i]=b[i]-26;}while(b[j]!='\0'){printf("%c",b[j]);j++;}}输入两个正整数m和n,求其最大公约数和最小公倍数。
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语言程序设计(THE C PROGRAMMING LANGUAGE)二、课程编码:0921163005三、课程目标和基本要求:通过本课程的学习,要求学生掌握C 语言的基本语法、基本语句、基本控制结构以及程序设计的一般方法,使学生具有熟练使用 C 语言编程解决实际问题的能力。
基本要求:掌握C语言的基本控制结构和基本控制语句及相关的语法规范,熟练运用C语言进行顺序、选择和循环结构程序设计的能力;熟练的上机编程和程序调试的能力;掌握一些常用的算法,如递推法、迭代法、穷举法、求最大最小值、排序、查找、插入、删除等,具有熟练运用这些算法解决实际问题的能力;了解结构化程序设计和模块化设计方法的基本思想,掌握必要的程序设计技巧、程序测试和程序调试技巧。
四、课程总学时: 90 学时(严格按教学计划时数)[理论: 54 学时;实验: 36 学时]五、程总学分: 4 学分(严格按教学计划学分)六、适用专业和年级:适用专业:信息与计算,应用数学,统计学,数学教育。
适用年级:大学一年级七、实验项目汇总表:注:1、实验编号:学校内部使用的编号(不超过13位),在校内具有永久唯一性。
若实验撤消,该实验编号将不再使用。
如果实验内容更新较大,则应另设新的实验编号。
实验编号十二或十三位,前十位为该课程代码(培养方案中的课程代码),第十一、十二位为该门课程的实验序号(01-99),独立设课的实验编号最后一位为“*”,非独立设课的实验编号最后一位为空,例如:《大学物理实验》的某实验项目编号为102000400601,该实验又为独立设课实验,则编号为102000400601*。
2、实验类别:基础、专业基础、专业;实验类型:演示性、验证性、综合性、设计研究、其它;实验要求:必修、选修、其它。
八、大纲内容:实验序号: 0921163005001实验名称:C语言环境[实验目的和要求]1.了解所用的计算机C语言编译系统(如VC++6.0)的基本操作方法,学会独立使用该系统。
C语言题库
C语言题库1. 输入一个整数,判断它是几位数?(*)2. 编制一函数,得到一个整数的某一位的数字。
(*)3. 求出所有的水仙花数。
水仙花数是一个三位数,其各位数字的立方和等于该数。
例如153=1^3+5^3+3^3。
(**)4、编写函数fun求1000以内所有7的倍数之和。
(*)int fun(int m){ }5、将一个数组中的元素按逆序存放。
(*)6、输入三个整数x,y,z,请把这三个数由小到大输出。
(*)7、递归调用计算阶乘, 输入n,求n的阶乘(*)8、删除字符串中的数字字符。
例如:输入字符串:48CTYP9E6,则输出:CTYPE。
(**)9、计算并输出500以内最大的10个能被13或17整除的自然数之和。
(*)10、统计一个字符串中的字母、数字、空格和其它字符的个数。
(*)11、不用第三个变量,实现两个数的对调操作。
(**)12、求1!+3!+5!+……+n!的和。
(**)13、求一批数中最大值和最小值的差。
(*)14、编写函数fun,函数的功能是:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。
每一分数的分母是前两项的分母之和;每一分数的分子是前两项的分子之和。
例如:求前20项之和的值为32.660259。
(**)15、打印出如下图(菱形)(**)*************************16、用冒泡法对数组a进行由小到大的排序。
(*)17、求出二维数组中的最大元素值(*)18、输入一个字符串,对字符串逆序输出(*)19、已知一个数列,它的头两项分别是0和1,从第三项开始以后的每项都是其前两项之和。
编程打印此数,直到某项的值超过200为止。
(***)20、计算平均成绩并统计90分以上人数。
(*)21、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?(***)22、判断101-200之间有多少个素数,并输出所有素数。
用递归函数将一个整数n转换为字符串word精品
1. 用递归函数将一个整数n 转换为字符串.例如:输入438,应输出字符串"438",n 的位数不确定,可以是任意位数的整数.// 方法一:不使用static 型变量#include <stdio.h> void ltos( long d,char s[], int *i){char t;if (d<0)d=-d, s[(*i)++]= '-'; //若为负则存入负号t=d%10+ '0';d/=10;if (d)ltos(d,s,i);s[(*i)++]=t;s[(*i)]= '\0'; // 字符串结束符}void main(){int i=0;char str[20]; long int n; printf( "long n=" ); scanf("%ld" ,&n); ltos(n, str, &i);printf( "string=%s\n" ,str);}//方法二:使用static 型变量#include<stdio.h> #include<string.h>void ltos(long d, char s[]){char t; static int i=0;if(d<0)d=-d, s[i++]='-'; //若为负则存入负号t=d%10+'0';d/=10; if(d)ltos(d, s); s[i++]=t; s[i]='\0';//字符串结束符}void main(){char str[20];long int n;printf("long n=");scanf("%ld",&n);ltos(n, str); printf("string=%s\n", str);}// 方法三:不使用递归函数#include<stdio.h> void ltos(long d, char s[]){ char t; int i=0, j; if(d<0)d=-d, s[i++]='-'; do{ s[i++]=d%10+'0'; d/=10; }while(d); s[i]=0; j=i-1; for(i=0; i<j; i++, j--){t=s[i]; s[i]=s[j]; s[j]=t;}}// 主函数的写法与方法二完全相同。