c语言编程20例

更新时间:2023-12-05 04:50:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.开学第一考

问题描述

开学的第一个周末,像往届一样,新生都会参加英语分级考试。所谓英语分级考试就是为了测试一下新生的英语水平,并将他们分成1~4,4个等级。分级规则如下:95分(含95分)以上为level4,只需修一个学期的大学英语;85分(含85分)至95分为level3,需修大学英语两个学期;75分(含75分)至85分为level2,需修3个学期的大学英语;剩下的为level1,对不起,就只能修4个学期的大学英语了。小明是刚12级计算机系的新生,他不小心知道了自己的分级考试成绩,于是乎他就迫切的想知道自己会被分在哪一个level,这不,就麻烦一下新生中大神小强,写一个小程序来判定一下小明会被分在哪一个level吧!

输入格式

输入一个整数代表小明的分数

输出格式

输出小明被分在哪一个英语等级,level1、level2、level3、level4,如果分数不在[0,100]区间内,输出“Error!”(注意:不输出引号)

样例输入

60 101

样例输出

level1 Error!

解答:

#include int main() {

int a;

scanf(\ if(a>100)

printf(\ else if(a>=95)

printf(\ else if(a>=85) printf(\ else if(a>=75)

printf(\ else if(a>=0)

printf(\ else printf(\ return 0; }

2.小明的考题1——分段函数

问题描述

小明是一个数学狂,自吹自擂说自己的数学是如何如何的好,但是他的风头却被大神小强抢光了,小明就很郁闷,自言自语了一句:不就是编程牛逼点嘛,有本事编几个程序出来解解数学题啊。运气挺背的是,小强就在他后面,不小心就听到了??小强倒是很大方的说:要不你就出几个题考考我?小明这下就得瑟了,呵,小样,看我不整死你!因为小明不知大神的底,于是乎第一题就出了一个简单的分段函数题:

输入格式

输入仅包含一个整数x,并且-100 <= x <= 100

输出格式

输出仅一个整数,表示函数值f(x)

样例输入

-10

样例输出

-440

解答

#include int main() {

int x,g,f;

scanf(\g=x*x-550; if(x

f=g+x+4; else f=g-x;

printf(\

}

return 0;

3.小明的考题2——数与单词

问题描述

上一道分段函数的题目被小强轻松秒杀了,这一次,小明知道该出有深度一点的题目了。“数学是科学之王”,小明对此坚信不疑!数学的强悍之处在于它能通过一种映射的关系,把两种不相关的东西联系在一起。现在,小明想考小强的是,小强需要建立起阿拉伯数字与英文字母的对应关系,小明不想过于为难小强,就限制了一下定义域为0—9的10个数字,映射规则为:0—zero、1—one、?、9—nine,现在小明随便说一个0—9的数字,小强的程序能后输出该数字对应的英文单词。

输入格式

输入数据为一个[0,9]区间的整数

输出格式

输出该数字对应的英文单词

样例输入

8

样例输出

eight

解答

#include int main() {

int x;

scanf(\if(x==0)

printf(\

else if(x==1)

printf(\

else if(x==2)

printf(\

else if(x==3)

printf(\

else if(x==4)

printf(\

else if(x==5)

printf(\

else if(x==6)

printf(\

else if(x==7)

printf(\

else if(x==8)

printf(\

else if(x==9)

printf(\ }

return 0;

4.小明的考题3——必杀技

问题描述

小明为了这最后一题煞费苦心,不过他还是没有什么头绪。这天,他去宿舍楼下的邮局给高中的那群哥们姐妹寄几张咱厦大魅力风光的明信片。抬头的时候瞥了一眼墙上挂着的信函资费说明,详情如下:

平信分本埠和外埠,按首重和续重计收资费,首重100克以内,每重20克(不足20克按20克计算)本埠0.80元,外埠1.20元。续重101~2000克,每重100克(不足100克按100克计算)本埠1.20元,外埠2.00元。 这下,小明可就有主意了。他就用这个信函的资费考考小强。

输入格式

输入两个整数k w,以空格隔开。(k=1 or k=2,k=1代表本埠,k=2代表外埠。w代表信函重量,单位g ,已知0

输出格式

输出资费,结果保留两位小数。

样例输入

1 95

样例输出

4.00

解答

#include int main() {

int k,w; double s;

scanf(\ if(k==1) if(w<=100)

{if(w )

s=(w/20+1)*0.8;

else s=w/20*0.8; }

else

{if(w0) s=4.00+((w-100)/100+1)*1.2; else s=4.00+(w-100)/100*1.2; }

if(k==2) if(w<=100)

{if(w )

s=(w/20+1)*1.2;

else s=w/20*1.2; }

else

{if(w0) s=6.00+((w-100)/100+1)*2.00; else s=6.00+(w-100)/100*2.00; }

printf(\ return 0; }

5.四则运算器

问题描述

三题下来,小明败得彻彻底底的,看着小强写的那些代码,自己瞬间压力山大了。不过,小明就是小明,灵光忽地乍现:自己何不拜小强为师,这样以后的编程不就有师傅做靠山,那不就变得easy啦?小明说到做到,当即就拜小强为师。小强秉着助人为乐的原则,也就收下了小明这个徒弟。不过呢,拜师得有考验才行了,这不,就换小强考考小明啦!不过,小强也不打算怎么为难小强!既

然小明数学不错,那就让他去做做简单的数学方面的题吧。给出一个计算式,求结果。

ps:计算式只包含“+”、“-”、“*”、“/”其中一种运算

输入格式

输入一个计算式,格式为:a # b = 。#为运算符。注意,运算符与数之间有空格!当#为/,即计算除法时,要判断除数是否为0,若除数为0,输出“Error!”

输出格式

输出结果,保留4位小数。当#为/,即计算除法时,要判断除数是否为0,若除数为0,输出“Error!”(输出无引号)

样例输入

15 + 23 =

样例输出

38.0000

解答

#include int main() {

double a,b,s; char c;

scanf(\

if(c=='+') {s=a+b; printf(\}

else if(c=='-') {s=a-b;

printf(\

}

else if(c=='*') {s=a*b;

printf(\ }

}

else if(c=='/') {s=a/b; if(b==0)

printf(\

else printf(\} return 0;

6.算日期

问题描述

自从收了小明这个徒弟之后,小强的生活就没平静过,小明发扬勤奋好问的精神,总是缠着小强问这问那的。这天,小强在去食堂的路上不小心看见小明迎面走来,正打算避开他的时候,不过小明也正好看见小强像他走去,就喊着“师傅师傅”,小强这下没得躲了。小明问了小强非常意外的问题:师傅,今天几号啊。小强随口答道:XX号。不过就在这时,小强却想到了一个可以打发小明的方法,他对小明说:小明啊,你不是想让我给你出出题做嘛,我正好想到一个,今天是XXXX年XX月XX日,你给我算算今天是今年的第多少天吧!小明还想问问怎么做来着,只见小强已经开溜了??

输入格式

输入一个日期,格式为yyyy/mm/dd

输出格式

输出一个整数,表示该日期在当年中为第几天

.

样例输入

2000/03/01

样例输出

61 解答

#include int main() {

int a,b,c,t;

scanf(\if(a%4||!(a0)&&a@0) {

if(b==1) t=c; else if(b==2) t=c+31; else if(b==3) t=c+59; else if(b==4) t=c+90; else if(b==5) t=c+120; else if(b==6) t=c+151; else if(b==7) t=c+181; else if(b==8) t=c+212; else if(b==9) t=c+243; else if(b==10) t=c+273; else if(b==11) t=c+304; else if(b==12) t=c+334;

printf(\}

else if(!(a%4)&&(a0)||!(a@0)) }

{

if(b==1) t=c;

else if(b==2) t=c+31; else if(b==3) t=c+60; else if(b==4) t=c+91; else if(b==5) t=c+121; else if(b==6) t=c+152; else if(b==7) t=c+182; else if(b==8) t=c+213; else if(b==9) t=c+244; else if(b==10) t=c+274; else if(b==11) t=c+305; else if(b==12) t=c+335; printf(\} return 0;

7.分数约简

问题描述

自从小明拜小强为师后,自知和师傅之间有着无法逾越的差距!不过他并不气馁,他决定通过的努力一点一点缩短与师傅之间的距离!这不才刚学完循环结构,他就迫不及待的想练习了。于是他自己去找了一些题来练手!

这第一个题很简单,就是给出一个分数,把它化为最简分式。

输入格式

第一行输入一个整数T,代表有T个测试数据。

接下来的T行,每行输入两个非负整数m、n,m是分母,n是分子。

输出格式

输出最简分式,格式a/b。若b=1,只输出a;若分子n=0,则输出“Error!”(输出无引号)

样例输入

3

12 16 15 3 20 0

样例输出

3/4 5

Error! 解答

#include #include int main() {

int T,m,n,c,t,d,a,b,f;

scanf(\for(t=1;t<=T;t++) {

scanf(\if(n==0) printf(\

else if(m==0)printf(\else if(m>=n) { }

else if(m

a=n;

if(!(m%n))printf(\else if(m%n) { }

a=m; b=n; do {

c=(int)fmod(a,b); a=b; b=c;

}while(c!=0); d=m/a; f=n/a;

printf(\

}

}

b=m; do {

c=(int)fmod(a,b); a=b; b=c;

}while(c!=0); d=m/a; f=n/a;

printf(\

printf(\} return 0;

8.再做分段函数

问题描述

这次小明给自己找了一个分段函数的题:

输入格式

第一行输入一个n,代表有n个测试数据,接下来的n行,每行输入变量x的值

输出格式

输入对应变量x的函数值f(x),每个结果一行

样例输入

2

-1500 500

样例输出

2500 -7500 解答

#include int main() {

int n,i,x,y; scanf(\for(i=1;i<=n;i++) {

scanf(\

while(x<0) { }

y=5*x-10000;

x=-5*x-10000;

}

printf(\} return 0;

9.简单的数列求和

问题描述

再来,有通项公式

求前n项和Sn

输入格式

输入n

输出格式

输出前n项和Sn(保留4位小数)

样例输入

5

样例输出

7.5000 解答

#include int main() {

double Sn,n,i; Sn=0; i=1;

}

scanf(\while(i<=n) { }

printf(\return 0;

Sn=Sn+i/2; i++;

10.找闰年

问题描述

再来,小明回想到,自己不是曾经出了一题闰年的题来考自己的师傅吗?那我何不就改改,然后自己做?他想:要不我就输出给定的任一一个时间段之间的闰年吧!

输入格式

输入两个整数m,n,代表两个年份。保证m

输出格式

输出[m,n]之间的所有闰年,每行5个

样例输入

1998 2015

样例输出

2000 2004 2008 2012 解答

#include int main()

{

int m,n,t; t=0;

scanf(\ }

while(m<=n) { }

printf(\return 0;

if(!(m%4)&&(m0)||!(m@0)) { } m=m+1;

printf(\t=t+1;

if(t%5==0) printf(\

11.小明的自娱自乐

问题描述

练习完前面四个题,小明有点累了,就上上网,找找c语言的资料。碰巧看到这样一道题:输入一个正整数,然后从个位开始一次输出每一位数字对应的英文字母。例如:输入1532,输出two three five one。

输入格式

第一行输入一个T,代表有T组测试数据,T<100

对于每一组测试数据,输入一个整数x(0

输出格式

对于每一组测试数据,输出对应结果,每个结果占一行

样例输入

3 24 1993 562431

样例输出

four two

three nine nine one

one three four two six five

来源

解答

#include int main() {

int T,a,b,t,c; scanf(\for(t=1;t<=T;t++) {

scanf(\while(a!=0) { b=a/10; c=a-10*b;

if(c==0) printf(\

}

}

else if(c==1) printf(\else if(c==2) printf(\else if(c==3) printf(\else if(c==4) printf(\else if(c==5) printf(\else if(c==6) printf(\else if(c==7) printf(\else if(c==8) printf(\else if(c==9) printf(\a=b; }

printf(\

return 0;

12.Simple a + b

问题描述

普通的a + b太没有意思了,小明决定玩点花样:如果加法没有进位,结果会是怎样?

输入格式

输入两个正整数a和b(0<=a, b<100000000)

输出格式

输出没有进位情况下加法的结果。

PS:类似125 +932的情况,输出的数的首位不能为0,即125 + 932 =57;类似5555 + 5555的情况输出只有一个 0.

样例输入

45 79

样例输出

14 解答

#include int main() {

int a,b,i,x1,x2,x,m=1,n=1,h=0; i=1;

scanf(\while(m!=0||n!=0) {

m=a/10; x1=a-10*m; n=b/10; x2=b-10*n; x=x1+x2; if(x>=10) h=h+(x-10)*i; else if(x<10) h=h+x*i; i=i*10;

样例输出

Fleeting time does not blur my memory of you. Can it really be 4 years since I first saw you? I still remember, vividly, on the beautiful Zhangzhou Campus, 4 years ago, from the moment I saw you smile, as you were walking out of the classroom and turned your head back, with the soft sunset glow shining on your rosy cheek, I knew, I knew that I was already drunk on you. 解答

#include int main() {

int i=0; char cn,c1,c2;

while(scanf(\{

if((cn>='A')&&(cn<='Z')) {c1=cn-65-i&+65;

if(c1<65)c2=cn-65+26+i/26*26-i+65; else c2=cn-65+i/26*26+65-i; printf(\}

else if((cn>='a')&&(cn<='z')) {c1=cn-97-i&+97;

if(c1<97)c2=cn-97+26+i/26*26-i+97; else c2=cn-97+i/26*26+97-i; printf(\

}

}

}

else {c2=cn; printf(\} i++;

return 0;

16.谁是下一个十佳歌手

问题描述

一年一度的校园十佳歌手如期而至。和往届一样,每一位参与选手准备一首参赛曲目,选手唱完之后,评委们会给出他们的分数。从这些分数中去掉一个最高分和一个最低分,然后计算平均分所得结果即为该选手的最终得分。由于参赛选手众多,一个一个的手动计算太慢,于是主委会找到计算系求助,希望咱们系能帮忙写一个计算得分的程序!

输入格式

第一行输入一个T,代表有T组测试数据,T<=100

对于每一组测试数据,输入有两行,第一行为一个正整数n,n<=100,代表有n个裁判。第二行输入n个正整数,代表n个裁判打的分数。分数<=100.

输出格式

对于每组数据,输出结果,保留2位小数

样例输入

1 5

88 94 87 83 90

样例输出

88.33 解答

#include

int main() {

int T,n,i,j;

double s=0,b,x,c,a,d,m,l; scanf(\for(i=1;i<=T;i++) {

scanf(\if(n==1){scanf(\printf(\else if(n==2){

scanf(\c=(a+b)/2; printf(\

else if(n>2) {

m=0; l=100;

for(j=1;j<=n;j++) {scanf(\if(x>m)m=x; if(x

}

}

}

s=s+x;} d=(s-m-l)/(n-2); s=0;

printf(\

return 0;

17.九九乘法表

问题描述

大家都知道九九乘法表吧,小明因为前面的很多题目都不会,实在无聊,就手写了一个nn乘法表(如九九乘法表),但是没自信的他不知道写的对不对,你能也写一个程序帮他检验一样吗。

输入格式

输入一个整数n。(n<=20)

输出格式

输出nn乘法表,第i行有i个表达式,第i行第j个表达式为j*i=k,其中k为i和j的乘积。

样例输入

3

样例输出

1*1=1

1*2=2 2*2=4

1*3=3 2*3=6 3*3=9 解答

#include int main()

{ }

int i,j,n,t=1,s; scanf(\for(i=1;i<=n;i++) { }

return 0;

for(j=1;j<=i;j++,t++) {; s=i*j;

printf(\} t=1; printf(\

18.奇偶求和计算

问题描述

给一个长度为n的整数数列,要求分别输出奇数项的和与偶数项的和。

输入格式

第一行一个整数n,表示数列有n个数。(N<=1000)

第二行n个整数,表示每个数的数值。(0<任意整数<1000)

输出格式

输出两行,第一行为奇数项的和,第二行为偶数项的和。

样例输入

5

1 3 2 2 8

样例输出

11 5 解答

#include int main() { }

int n,x,i,a=0,b=0; scanf(\for(i=1;i<=n;i++) { }

printf(\printf(\return 0;

scanf(\if(i%2==0) a=a+x; else b=b+x;

19.志愿者的工作

问题描述

有一天,小明在海报墙上看到一则关于整理自行车停车位的志愿者招募广告。原来是因为宿舍旁边那长度为L的自行车停车位(编号1~L),已经被停满

了。后勤集团为了保障所有停车地区都有空余的停车位,以保证要临时停车的同学有车位可停。于是便招募m位志愿者,每一个志愿者会分到一个工作区域,他们的工作就是将该区域(闭区间)的车辆移到另外的停车地区,由于工作的疏忽,存在志愿者之间的工作区域有交叉的可能。但是后勤集团只关心最后还有多少辆车没有被移走。小明报名参加了这项志愿者活动,而且还被任命为负责人,现在他需要向后勤集团汇报最后还剩多少辆车没有被移走。

输入格式

第一行输入两个正整数,停车位长度L和招募志愿者人数m, L<10000,m<100 接下来m行,每一行输入两个正整数a、b,该志愿者的工作区域为[a,b]

输出格式

输出一个整数,代表最后还剩多少辆车没被移走

样例输入

20 5 1 3 5 8 3 6 12 14 18 20

样例输出

6 解答

#include int main() {

int a[10000]={0}; int i,j,t,L,n=0,m,c,d; scanf(\for(i=1;i<=m;i++) {

scanf(\

}

for(t=c;t<=d;t++) a[t]=1; }

for(j=1;j<=L;j++) {if(a[j]==0) n=n+1;} printf(\return 0;

20.进制转换

问题描述

小强给小明布置了一个小任务。写一个二进制转十进制的程序。

输入格式

第一行输入一个T,代表有T组测试数据

对于每一组测试数据,输入一个二进制串 ,长度不超过31

输出格式

对于每一组测试数据,输出转换后的结果

样例输入

2 10

101010111

样例输出

2 343 解答

#include #include #include

int main() {

char a[32];

int b[32]; int c[32];

int m=0,i,k=0,T,s,t,j,d; scanf(\for(t=0;t<=T-1;t++) {scanf(\m=strlen(a); for(i=0;i

}

for(i=0,s=0;i

s=s+b[i];

c[t]=s;

printf(\return 0;

}

本文来源:https://www.bwwdw.com/article/j1at.html

Top