C程序练习

时间:2022-09-22 12:09:18

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程序练习的更多相关文章

  1. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  2. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  3. 微信小程序开发心得

    微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ...

  4. node&period;js学习(三)简单的node程序&amp&semi;&amp&semi;模块简单使用&amp&semi;&amp&semi;commonJS规范&amp&semi;&amp&semi;深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  5. 微信应用号(小程序)开发IDE配置(第一篇)

    2016年9月22日凌晨,微信宣布“小程序”问世,当然只是开始内测了,微信公众平台对200个服务号发送了小程序内测邀请.那么什么是“小程序”呢,来看微信之父怎么说 看完之后,相信大家大概都有些明白了吧 ...

  6. 编写高质量代码&colon;改善Java程序的151个建议&lpar;第5章&colon;数组和集合&lowbar;&lowbar;&lowbar;建议75~78&rpar;

    建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...

  7. 【探索】在 JavaScript 中使用 C 程序

    JavaScript 是个灵活的脚本语言,能方便的处理业务逻辑.当需要传输通信时,我们大多选择 JSON 或 XML 格式. 但在数据长度非常苛刻的情况下,文本协议的效率就非常低了,这时不得不使用二进 ...

  8. 通过Jexus 部署 dotnetcore版本MusicStore 示例程序

    ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...

  9. Code Review 程序员的寄望与哀伤

    一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...

  10. 使用 &period;NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序

    直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...

随机推荐

  1. 使用UG UISTYLER 窗体编辑器,创建对话框 part 1

    在UG 二次开发中,经常需要一些交互的输入,参数的更改啊,零件的选取什么的,UG 自身提供了创建这一类对话框的功能.当然也可以使用MFC或winForm 作为交互.但使用自带的比较快和简洁,风格也统一 ...

  2. Android对应用程序签名

    1.首先签名是个什么东西. 应用程序签名就是为你的程序打上一种标记,来作为你自己的标识. 2.为什么要进行数字签名 这是Android系统的要求,每一个应用程序必要要经过数字签名才可能安装到系统中,能 ...

  3. 网页 console的使用

    通过按下回车键会触发执行命令,而有时候我们需要执行的逻辑比较复杂,需要多行才可以完成,可以通过点击“shift+回车键”来实现换行. 在console中,可以实现对按钮的监控.比如此时按钮的文本值为“ ...

  4. 关于广义后缀树(多串SAM)的总结

    之前我们给的SAM的例题,基本上是一个串建SAM的就能做的 如果要建多个串的SAM应该怎么做呢 首先看题,bzoj2780 我一开始的想法是SA以前的弄法,把串拼起来,中间加分隔符做SAM 这题确实可 ...

  5. SDOI HH的项链 HEOI采花

    题目大意: SDOI求一个区间内只出现一次的数的个数.多组询问. HEOI 求一个区间内出现至少两次的数的个数.多组询问. SDOI HH'neckplace如果每次询问都是1..r的话,那么我们只要 ...

  6. 剖析Asp&period;Net Web API路由系统---WebHost部署方式

    上一篇我们剖析了Asp.Net路由系统,今天我们再来简单剖析一下Asp.Net Web API以WebHost方式部署时,Asp.Net Web API的路由系统内部是怎样实现的.还是以一个简单实例开 ...

  7. Linux IPC实践&lpar;12&rpar; --System V信号量&lpar;2&rpar;

    实践1:信号量实现进程互斥 父子进程执行流程如下: 父进程 子进程 P P O(print) X(print) sleep sleep O(print) X(print) V V sleep slee ...

  8. spark编译报错信息简介

    spark编译需要环境 git java1.+ maven R 报错信息1: [INFO] ------------------------------------------------------ ...

  9. Maven - dependency那些事儿

    身边有几位刚使用Maven的同学表示——在一个叫"pom.xml"的文件里声明一个依赖就不用去手动添加jar了,感觉这东西和自己手动管理依赖没太大区别. 当然,并不是这样,在此记录 ...

  10. UVA - 11987 Almost Union-Find(带删除的并查集)

    I hope you know the beautiful Union-Find structure. In this problem, you’re to implement something s ...