C程序练习
1.编程从键盘任意输入两个时间(例如4时55分和1时25分),计算并输出这两个时间之间的间隔。要求不输出时间差的负号。
- #include<stdio.h>
- int main()
- {
- int hour1,minute1,hour2,minute2,hour3,minute3,time,time1,time2;
- printf("Input time one(hour, minute):");
- scanf("%d,%d",&hour1,&minute1);
- printf("Input time two(hour, minute):");
- scanf("%d,%d",&hour2,&minute2);
- time1=hour1*+minute1;
- time2=hour2*+minute2;
- if(time1>time2)
- time=time1-time2;
- else
- time=time2-time1;
- hour3=time/;
- minute3=time%;
- printf("%d hour %d minute\n",hour3,minute3);
- return ;
- }
2.
设capital是最初的存款总额(即本金),rate是整存整取的存款年利率,n 是储蓄的年份,deposit是第n年年底账号里的存款总额。已知如下两种本利之和的计算方式:
按复利方式计息的本利之和计算公式为:deposit = capital * (1 + rate) n
按普通计息方式计算本利之和的公式为:deposit = capital * (1 + rate * n)
已知银行整存整取不同期限存款的年息利率分别为:
存期1年,利率为 0.0225
存期2年,利率为 0.0243
存期3年,利率为 0.0270
存期5年,利率为 0.0288
存期8年,利率为 0.0300
若输入其他年份,则输出"Error year!"
- #include<stdio.h>
- #include<math.h>
- int main()
- {
- int flag=;
- int year;
- double capital,rate,deposit;
- char interest;
- printf("Input capital, year:");
- scanf("%lf,%d,&capital",&capital,&year);
- switch(year)
- {
- case :rate=0.0225;
- break;
- case :rate=0.0243;
- break;
- case :rate=0.0270;
- break;
- case :rate=0.0288;
- break;
- case :rate=0.0300;
- break;
- default:flag=;
- }
- printf("Compound interest (Y/N)?");
- scanf(" %c",&interest);
- if((interest=='y'||interest=='Y')&&flag)
- {
- deposit=capital*pow(+rate,year);
- printf("rate = %.4f, deposit = %.4f\n",rate,deposit);
- }
- else if((interest=='n'||interest=='N')&&flag)
- {
- deposit=capital*(+rate*year);
- printf("rate = %.4f, deposit = %.4f\n",rate,deposit);
- }
- else
- {
- printf("Error year!\n");
- }
- return ;
- }
3.
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是一个4位数。我年龄的4次方是一个6位数。这=10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”请你编程算出他当时到底有多年轻。
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- int tenBit(int n,int *a);
- int main()
- {
- for(int x=;x<=;++x)
- {
- int a[]={,,,,,,,,,};
- int d = tenBit(x*x*x,a)+tenBit(x*x*x*x,a);
- if(d==){
- printf("age=%d\n",x);
- break;
- }
- }
- return ;
- }
- int tenBit(int n,int *a){
- int cnt =;
- while(n){
- for(int i=;i<;++i){
- if(n%==a[i]){
- a[i]=-;
- cnt++;
- }
- }
- n/=;
- }
- return cnt;
- }
4.
化简分数的最简分数(寻找分子分母的最大公约数)
- #include<stdio.h>
- int Gcd(int a,int b);
- int main()
- { int a;
- int b;
- printf("Input m,n:");
- scanf("%d,%d",&a,&b);
- if (a<||a>||b<||b>)
- {
- printf("Input error!\n");
- }
- else
- printf("%d/%d\n",a/Gcd(a,b),b/Gcd(a,b));
- getchar();
- getchar();
- return ;
- }
- int Gcd(int a,int b)
- {
- int max=;
- int i;
- int n = a < b ? a : b;
- for (i = ; i <= n; ++i)
- {
- if (a % i == && b % i == )
- {
- if(max < i)
- {
- max = i;
- }
- }
- }
- return max;
- }
最简分式化简
5.
从键盘任意输入一个整数n,编程计算并输出1~n之间的所有素数之和。
函数原型:int IsPrime(int x);
函数功能:判断x是否是素数,若函数返回0,则表示不是素数,若返回1,则代表是素数
- #include<stdio.h>
- int IsPrime(int x);
- int main()
- {
- int x,i;
- int sum=;
- printf("Input n:");
- scanf("%d",&x);
- if(x<)
- {
- printf("sum=%d\n",sum);
- }
- else
- {
- for(i=;i<=x;i++)
- {
- if(!IsPrime(i))
- {
- sum+=i;
- }
- }
- printf("sum=%d\n",sum);
- }
- getchar();
- getchar();
- return ;
- }
- int IsPrime(int x)
- {
- int i;
- for (i=;i<x;i++)
- {
- if(x%i==)
- {
- return ;
- break;
- }
- }
- return ;
- }
素数和
6.
已知一个集合A,对A中任意两个不同的元素求和,若求得的和仍在A内,则称其为好数对。例如,集合A={1 2 3 4},1+2=3,1+3=4,则1,2和1,3 是两个好数对。编写程序求给定集合中好数对的个数。
- #include<stdio.h>
- #define SIZE 1000
- int Good(int a[], int m,int n);
- int main()
- {
- int i;
- int a[SIZE];
- int n;
- int m=;
- scanf("%d",&n);
- for (i=;i<n;i++)
- {
- scanf("%d",&a[i]);
- }
- printf("%d",Good(a,m,n));
- return ;
- }
- int Good(int a[], int m,int n)
- {
- int i,j,k;
- for(i=;i<n-;++i)
- {
- for (j=i+;j<n;j++)
- {
- for(k=;k<n;k++)
- {
- if(a[i]+a[j]==a[k])
- m++;
- }
- }
- }
- return m;
- }
好对数
7.
猴子吃桃问题,反向递归
法一:
- #include<stdio.h>
- int Monkey(int n, int x);
- int main()
- {
- int n,x=;
- printf("Input days n:");
- scanf("%d",&n);
- printf("x=%d\n",Monkey(n,x));
- }
- int Monkey(int n, int x)
- {
- if(n==)
- {
- return x;
- }
- else
- {
- return Monkey((n-),*(x+));
- }
- }
法二:
- #include <stdio.h>
- int getPeachNumber(n)
- {
- int num; //定义所剩桃子数
- if(n==)
- {
- return ; //递归结束条件
- }
- else
- {
- num =(getPeachNumber(n+)+)*;//这里是不应该用递归呢?
- printf("第%d天所剩桃子%d个\n", n, num); //天数,所剩桃子个数
- }
- return num;
- }
- int main()
- {
- int num = getPeachNumber();
- printf("猴子第一天摘了:%d个桃子。\n", num);
- return ;
- }
8.
据说,鲁智深一天中午匆匆来到开封府大相国寺,想蹭顿饭吃,当时大相国寺有99个和尚,只做了99个馒头。智清长老不愿得罪鲁智深,便把他安排在一个特定位置,之后对所有人说: 从我开始报数(围成一圈),第5个人可以吃到馒头(并退下) ,按此方法,所有和尚都吃到了馒头,唯独鲁智深没有吃上。请问他在那个位置? 能否借鉴筛法求出剩下的最后一个人的位置?
- #include <stdio.h>
- int main()
- {
- int a[]={};
- int bread;
- int cnt=;int i=;
- for (bread=; bread>; ++i,i%=)
- {
- if(a[i]==)
- {
- cnt++;
- }
- if (cnt==)
- {
- bread--;
- cnt=;
- a[i]=-;//改变已经分到的状态
- }
- }
- for(i=;i<;i++)
- {
- if (a[i]==)
- printf("The result is %d: ",i+);
- }
- return ;
- }
鲁智深吃馒头
9.
Squeeze函数的功能是删除字符串s中所出现的与变量c相同的字符。例如,输入为:abcdef↙c↙输出为:abdef
- #include <stdio.h>
- #include <string.h>
- void Squeeze(char *s, char c);
- int main()
- {
- char a[], c, *s;
- s = a;
- gets(a);
- scanf("%c",&c);
- Squeeze(s, c);
- printf("%s\n", s);
- return ;
- }
- void Squeeze(char *s, char c)
- {
- int i, j;
- for (i = j = ; s[i] != '\0'; i++)
- {
- if (__________)
- {
- __________;
- j++;
- }
- }
- _____________; /* 在字符串t2的末尾添加字符串结束标志 */
- }
code
10.
从键盘输入一串字符(假设字符数少于8个),以回车表示输入结束,编程将其中的数字部分转换为整型数并以整型的形式输出。
函数原型为 int Myatoi(char str[]);其中,形参数组str[]对应用户输入的字符串,函数返回值为转换后的整型数。
(str[i]-'0'); //将字符数字转化为相应的数字
- #include<stdio.h>
- #include<string.h>
- #define LENGTH 8
- int Myatoi(char str[]);
- int main()
- {
- char str[LENGTH+];
- printf("Input a string:");
- scanf("%7s",str);
- printf("%d\n",Myatoi(str));
- return ;
- }
- int Myatoi(char str[])
- {
- int i;
- int result=;
- for(i=;str[i]!='\0';i++)
- {
- if(str[i]>=''&&str[i]<='')
- {
- result=result*+(str[i]-''); //将字符数字转化为相应的数字
- }
- }
- return result;
- }
11.编程计算n(n<=500)以内的10个最大素数及其和,分别输出这最大的10个素数及其和。n的值要求从键盘输入。要求10个素数按从大到小的顺序输出。
- #include<stdio.h>
- #include<math.h>
- int Isprime(int n);
- int main()
- {
- int i,n,cnt=;
- int a[]={};
- int sum=;
- printf("Input n(n<=500):");
- scanf("%d",&n);
- for (i=n;i>=;--i)
- {
- if(Isprime(i))
- {
- a[cnt]=Isprime(i);
- sum+=a[cnt];
- printf("%6d",a[cnt]);
- if(cnt==)
- break;
- cnt++;//严格注意位置
- }
- }
- printf("\nsum=%d\n",sum);
- getchar();
- getchar();
- return ;
- }
- int Isprime(int n)
- {
- int i,flag=;
- for (i=;i<=sqrt(n);i++)
- {
- if(n%i==)
- {
- flag=;
- break;
- }
- }
- if(flag==)
- {
- return n;
- }
- else
- return ;
- }
12.
题目内容:请输入星期几的第一个字母(不区分大小写)来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母(小写),否则输出“data error”。
- #include<stdio.h>
- int main()
- {
- char i,j;
- printf("please input the first letter of someday:\n");
- scanf("%c",&i);
- switch(i)
- {
- case 'M':
- case 'm':
- printf("monday\n");
- break;
- case 'w':
- case 'W':
- printf("wednesday\n");
- break;
- case 'f':
- case 'F':
- printf("friday\n");
- break;
- case 't':
- case 'T':
- printf("please input second letter:\n");
- scanf(" %c",&j);
- if (j=='u')//||j=='U')
- {
- printf("tuesday\n");
- break;
- }
- else if (j=='h')//||j=='H')
- {
- printf("thursday\n");
- break;
- }
- else printf("data error\n"); break;
- case 's':
- case 'S':
- printf("please input second letter:\n");
- scanf(" %c",&j);
- if (j=='a')//||j=='A')
- {
- printf("saturday\n");break;
- }
- if (j=='u')//||j=='U')
- {
- printf("sunday\n");
- break;
- }
- else printf("data error\n"); break;
- default :
- printf("data error\n"); break;
- }
- return ;
- }
13.奖学金发放
题目内容:
某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,每项奖学金获取的条件分别如下:
1) 院士奖学金:期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生每人均可获得8000元;
2) 五四奖学金:期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生每人均可获得4000元;
3) 成绩优秀奖:期末平均成绩高于90分(>90)的学生每人均可获得2000元;
4) 西部奖学金:期末平均成绩高于85分(>85)的西部省份学生每人均可获得1000元;
5) 班级贡献奖:班级评议成绩高于80分(>80)的学生干部每人均可获得850元;
只要符合上述条件就可获得相应的奖项,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚明的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。
- #include<stdio.h>
- typedef struct winners
- {
- char name[];
- int finalScore;
- int classScore;
- char work;
- char west;
- int paper;
- int scholarship;
- }WIN;
- void Addup(WIN stu[],int n);
- int FindMax(WIN student[],int n);
- int main()
- {
- int n;
- WIN stu[];
- printf("Input n:");
- scanf("%d",&n);
- Addup(stu,n);
- FindMax(stu,n);
- printf("%s get the highest scholarship %d\n",stu[FindMax(stu,n)].name,stu[FindMax(stu,n)].scholarship);
- getchar();
- getchar();
- return ;
- }
- void Addup(WIN stu[],int n)
- {
- int i;
- for (i=;i<n;++i)
- {
- stu[i].scholarship=;
- printf("Input name:");
- scanf("%s",stu[i].name);
- printf("Input final score:");
- scanf("%d",&stu[i].finalScore);
- printf("Input class score:");
- scanf("%d",&stu[i].classScore);
- printf("Class cadre or not?(Y/N):");
- scanf(" %c",&stu[i].work);
- printf("Students from the West or not?(Y/N):");
- scanf(" %c",&stu[i].west);
- printf("Input the number of published papers:");
- scanf("%d",&stu[i].paper);
- if(stu[i].finalScore>&&stu[i].paper>)
- {
- stu[i].scholarship+=;
- }
- if(stu[i].finalScore>&&stu[i].classScore>)
- {
- stu[i].scholarship+=;
- }
- if(stu[i].finalScore>)
- {
- stu[i].scholarship+=;
- }
- if(stu[i].finalScore>&&stu[i].west=='Y')
- {
- stu[i].scholarship+=;
- }
- if(stu[i].classScore>&&stu[i].work=='Y')
- {
- stu[i].scholarship+=;
- }
- printf( "name:%s,scholarship:%d\n",stu[i].name,stu[i].scholarship);
- }
- }
- int FindMax(WIN student[],int n)
- {
- int i,k=;
- int max=student[k].scholarship;
- for (i=;i<n;i++)
- {
- if(student[i].scholarship>max)
- {
- max=student[i].scholarship;
- k=i;
- }
- }
- return k;
- }
14.评选最牛群主
现在要评选最牛群主,已知有3名最牛群主的候选人(分别是tom,jack和rose),有不超过1000人参与投票,最后要通过投票评选出一名最牛群主,从键盘输入每位参与投票的人的投票结果,即其投票的候选人的名字,请你编程统计并输出每位候选人的得票数,以及得票数最多的候选人的名字。候选人的名字中间不允许出现空格,并且必须小写。若候选人名字输入错误,则按废票处理。
- #include<stdio.h>
- #include<string.h>
- typedef struct
- {
- char name[];
- int m;
- }Vote;
- int main()
- {
- Vote a[];
- int j;
- for (j=;j<;j++)
- {
- a[j].m=;
- }
- char *pName[]={"tom","jack","rose"};
- int i,n;
- char str[];
- printf("Input the number of electorates:");
- scanf("%d",&n);
- for (i=;i<n;i++)
- {
- printf("Input vote %d:",i+);
- scanf("%s",str);
- if(strcmp(str,pName[])==)
- {
- (a[].m)++;
- }
- if(strcmp(str,pName[])==)
- {
- a[].m++;
- }
- if(strcmp(str,pName[])==)
- {
- a[].m++;
- }
- }
- printf("Election results:\n");
- for (i=;i<;i++)
- {
- printf("%s:%d\n",pName[i],a[i].m);
- }
- int k=;
- int max=a[k].m;
- for (i=;i<;i++)
- {
- if(max<a[i].m)
- {
- max=a[i].m;
- k=i;
- }
- }
- printf("%s wins\n",pName[k]);
- getchar();
- getchar();
- return ;
- }
C程序练习的更多相关文章
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- 微信小程序开发心得
微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 微信应用号(小程序)开发IDE配置(第一篇)
2016年9月22日凌晨,微信宣布“小程序”问世,当然只是开始内测了,微信公众平台对200个服务号发送了小程序内测邀请.那么什么是“小程序”呢,来看微信之父怎么说 看完之后,相信大家大概都有些明白了吧 ...
- 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)
建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...
- 【探索】在 JavaScript 中使用 C 程序
JavaScript 是个灵活的脚本语言,能方便的处理业务逻辑.当需要传输通信时,我们大多选择 JSON 或 XML 格式. 但在数据长度非常苛刻的情况下,文本协议的效率就非常低了,这时不得不使用二进 ...
- 通过Jexus 部署 dotnetcore版本MusicStore 示例程序
ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序
直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...
随机推荐
- java中类的三大特征之多态
Java 多态 同一种事物由于条件不同,展示出不同的结果,叫做多态. 父类的引用类型,由于使用不同的子类对象实例,而执行不同的操作. 多态存在的三个必要条件 1. 子类继承父类: 2. 子类重写父类方 ...
- 新概念英语(1-51)A pleasant climate
新概念英语(1-51)A pleasant climate Does it ever snow in Greece? A:Where do you come from? B:I come from G ...
- Spring Security入门(3-5)Spring Security 的鉴权 - 决策管理器和投票器
1.决策管理器的运行原理: 2.Spring Security提供的决策管理器实现 3.用户自定义的决策管理器
- layer ui插件显示tips时,修改字体颜色
今天做调查问卷,又遇到一个蛋疼小问题,记录下. 调查问卷有很多选项是要求必填的,如果不填的话,需要给出友好的提示.用的如下组件:http://layer.layui.com/ 1.之前一直默认用的: ...
- PyQt5--基础篇:用eric6工具实现三级联动效果
今天给大家介绍下python gui界面的三级联动效果,我们用工具eric6来实现,先看下效果图. 首先我们先创建项目linkage,再新建窗体进入到Qt设计师工具开始设计界面,完成后保存并退出. 在 ...
- ArUco----一个微型现实增强库的介绍及视觉应用(一)
ArUco----一个微型现实增强库的介绍及视觉应用(一) 一.ArUco简介 ArUco是一个开源的微型的现实增强库,目前好像已经集成在OpenCV3.0以上的版本内了,它除了用于现实增强,还很用于 ...
- 【推荐】CentOS安装gcc-4.9.4+更新环境+更新动态库
注:以下所有操作均在CentOS 6.8 x86_64位系统下完成. CentOS上yum安装的gcc版本过低(4.4.7),在安装某些软件的时候不支持,所以这里需要对其进行升级. #gcc的安装# ...
- ·c#之Thread实现暂停继续(转)
暂停与继续实现,可以使用Thread.Suspend和Thread.Resume而这两个方法,在VS2010里提示已经过时,不建议使用,在网上查阅了一些资料,发现有个事件通知的方法很好,事件通知的大致 ...
- svg 五花 元辅音 助读器
如图,使用svg 创建5个圆,中间 辅音字母,外圈 元音字母 以及 示例单词. 可以使用 提交 按钮 进行更新
- es6-promise源代码重点难点分析
摘要 vue和axios都可以使用es6-promise来实现f1().then(f2).then(f3)这样的连写形式,es6-promise其实现代浏览器已经支持,无需加载外部文件.由于promi ...