大小写切换c语言程序设计教程课后答案,中国大学MOOC-翁恺-C语言程序设计习题集 05-0 到 06-3...

05-0. 求序列前N项和(15)

时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

张彤彧(浙江大学)

本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中输出部分和的值,精确到小数点后2位。题目保证计算结果不超过双精度范围。

输入样例:

20

输出样例:

32.66

程序:

#include

#include

int main()

{

int N;

while(scanf("%d",&N)==1)

{

double a=2,b=1;

double sum=0.0;

for(int i=1;i<=N;i++)

{

sum+=a*1.0/b;

a=a+b;

b=a-b;

}

printf("%.2lf\n",sum);

}

}

05-1. 约分最简分式(15)

时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

翁恺(浙江大学)

分数可以表示为“分子/分母”的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。

输入格式:

输入在一行中给出一个分数,分子和分母中间以斜杠“/”分隔,如: 12/34 表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。

提示:在scanf的格式字符串中加入“/”,让scanf来处理这个斜杠。

输出格式:

在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用“分子/分母”的形式表示分数。如 5/6表示6分之5。

输入样例:

60/120

输出样例:

1/2

代码:

#include

#include

int Div(int n,int m)

{

if(n

{

int temp=n;

n=m;

m=temp;

}

int rem=n%m;

while(rem)

{

n=m;

m=rem;

rem=n%m;

}

return m;

}

int main()

{

int n,m;

char c;

while(scanf("%d%c%d",&n,&c,&m)==3)

{

int div=Div(n,m);

printf("%d/%d\n",n/div,m/div);

}

}

05-2. 念数字(15)

时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

翁恺(浙江大学)

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出“fu”字。十个数字对应的拼音如下:

0: ling

1: yi

2: er

3: san

4: si

5: wu

6: liu

7: qi

8: ba

9: jiu

输入格式:

输入在一行中给出一个整数,如: 1234 。

提示:整数包括负数、零和正数。

输出格式:

在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si。

输入样例:

-600

输出样例:

fu liu ling ling 代码:

#include

#include

#include

char num[10][10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};

int main()

{

int n;

while(scanf("%d",&n)==1)

{

int flag=0;

if(n<0)

{

printf("fu");

n=-n;

flag=1;

}

char a[100];

sprintf(a,"%d",n);

for(int i=0;i

{

if(flag==1)

{

printf(" %s",num[a[i]-48]);

}

if(flag==0)

{

flag=1;

printf("%s",num[a[i]-48]);

}

}

printf("\n");

}

}

05-3. 求a的连续和(15)

时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

翁恺(浙江大学)

输入两个整数a和n,a的范围是[0,9],n的范围是[1,8],求数列之和S = a+aa+aaa+...+aaa...a(n个a)。 如a为2、n为8时输出的是2+22+222+...+22222222的和。

输入格式:

输入在一行中给出两个整数,先后表示a和n。

输出格式:

在一行中输出要求的数列之和。

输入样例:

2 4

输出样例:

2468 代码:

#include

#include

#include

int main()

{

int a,n;

while(scanf("%d%d",&a,&n)==2)

{

int i,d=a*n,temp=0;

int arr[100];

for(i=0;i

{

d=a*(n-i)+temp;

arr[i]=d%10;

temp=d/10;

}

long long sum=0,pro=1;

for(i=0;i

{

sum+=arr[i]*pro;

pro*=10;

}

if(temp!=0)

printf("%d",temp);

printf("%lld\n",sum);

}

return 0;

}

06-0. 混合类型数据格式化输入(5)

时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

乔林(清华大学)

本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。

输入格式:

输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。

输出格式:

在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。

输入样例:

2.12 88 c 4.7

输出样例:

c 88 2.12 4.70 代码:

#include

#include

int main()

{

double d1,d2;

int i;

char c,c1,c2;

while(scanf("%lf%d%c%c%c%lf",&d1,&i,&c1,&c,&c2,&d2)==6)

{

printf("%c %d %.2lf %.2lf\n",c,i,d1,d2);

}

return 0;

}

06-1. 简单计算器(20)

时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

张彤彧(浙江大学)

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。

输入格式:

输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

输出格式:

在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

输入样例:

1+2*10-10/2=

输出样例:

10

代码:

#include

#include

#include

int main()

{

int a[10000];

char b[10000];

int i,num,c,cnt1=0,cnt2=0,flag=1;

do

{

scanf("%d%c",&num,&c);

a[cnt1++]=num;

b[cnt2++]=c;

}while(c!='=');

int res=a[0],j=0;

for(i=1;i

{

j=i-1;

if(b[j]!='+'&&b[j]!='-'&&b[j]!='*'&&b[j]!='/')

{

flag=0;

break;

}

if(b[j]=='*')

{

res*=a[i];

}

else if(b[j]=='-')

{

res-=a[i];

}

else if(b[j]=='/')

{

if(a[i]==0)

{

flag=0;

break;

}

res/=a[i];

}

else if(b[j]=='+')

{

res+=a[i];

}

}

if(flag==0)

printf("ERROR\n");

else

printf("%d\n",res);

}

06-2. 字符串字母大小写转换(10)

时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

张彤彧(浙江大学)

输入一个以#结束的字符串,本题要求将小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其它字符不变。

输入格式:

输入在一行中给出一个长度不超过40的、以#结束的非空字符串。

输出格式:

在一行中按照要求输出转换后的字符串。

输入样例:

Hello World! 123#

输出样例:

hELLO wORLD! 123 代码:

#include

#include

#include

int main()

{

char a[100];

char ch;

int cnt=0,i;

do

{

scanf("%c",&ch);

a[cnt++]=ch;

}while(ch!='#');

for(i=0;i

{

if(a[i]>='A'&&a[i]<='Z')

{

a[i]=a[i]+32;

continue;

}

if(a[i]>='a'&&a[i]<='z')

{

a[i]=a[i]-32;

continue;

}

}

for(i=0;i

printf("%c",a[i]);

printf("\n");

}

06-3. 单词长度(15)

时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

翁恺(浙江大学)

你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格;最后的‘.’不计算在内。

输入格式:

输入在一行中给出一行文本,以‘.’结束。

提示:用scanf("%c",...);来读入一个字符,直到读到‘.’为止。

输出格式:

在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。

输入样例:

It's great to see you here.

输出样例:

4 5 2 3 3 4 代码:

#include

#include

#include

int main()

{

char a[100000];

char ch;

int cnt=0,i,j;

scanf("%c",&ch);

while(ch!='.')

{

a[cnt++]=ch;

scanf("%c",&ch);

}

int len=strlen(a);

int lea[1000],t=0;

for(i=0;i

{

if(a[i]!=' ')

{

j=i+1;

while(a[j]!=' '&&j

{

j++;

}

lea[t++]=j-i;

i=j;

}

}

for(i=0;i

{

if(i==0)

printf("%d",lea[0]);

else

printf(" %d",lea[i]);

}

printf("\n");

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值