高级语言第三次作业及答案

1.你猜!
题目描述
X侦探收到了一封匿名信,信封没有透露任何寄信人的信息,内容上也完全看不懂,仿佛是一堆乱码,但是在经过十分之一微秒的思考之后,他发现了其中的奥妙,啊!就这?他发现如果把所有字符后移三位就可以得出本来的意思,例如:dwr后移三位可得gzu,如果是x,y,z则循环后移变成a,b,c,但是信件内容太多了,希望你能帮他。

输入描述
输入一段长度小于50的字符串。
输出描述
输出解密后的字符串,行末无多余空格
样例输入
abcdefghijklmnopqrstuvwxyz

样例输出
defghijklmnopqrstuvwxyzabc

#include<stdio.h>
#include<string.h>
int main()
{ char a[50];
   int i=0;
 scanf("%s",a);
 int l=strlen(a);
 while(i<l){
 if(a[i]>='x')
 printf("%c",a[i]-23);
 else printf("%c",a[i]+3);
 i++;}
 return 0;
 }

输入一个正整数n,输出n的阶乘。

输入描述
正整数n(0<=n<=20)

输出描述
输入可能包括多组数据,对于每一组输入数据,输出n的阶乘

注:对于有多组输入的数据,可以用while循环函数不断读取输入数据,判断结束条件为Scanf函数返回结果为EOF。参考下列不断读入两个数a和b,并输出a+b结果的代码:

#include <stdio.h>

int main()
{
int a,b;
while(scanf("%d %d",&a, &b) != EOF)
printf("%d\n",a+b);
return 0;
}

样例输入
4
5
15

样例输出
24
120
1307674368000

#include<stdio.h>
void main()
{        long long int a=1,i;
    while(scanf("%lld",&i) != EOF){
	      for(;i>=1;i=i-1){
		  a=a*i;}
        printf("%lld\n",a);
        a=1;}
    return 0;
}

题目描述
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早晨又将剩下的桃子吃掉一半,又多吃了一个。以后每天早晨都吃了前一天剩下的一半零一个。到第n天早晨想再吃时,就只剩下一个桃子了。求第一天共摘了多少个桃子。

输入描述
一个正整数n。

输出描述
输出第一天共摘了多少个桃子。
请注意行尾输出换行。

样例输入
10

样例输出
1534

#include<stdio.h>
int main()
{
 int p,i,s=1;
 scanf("%d",&p);
 for(i=1;i<p;i++)
  s=(s+1)*2;
  printf("%d\n",s);
  return 0;
}

一个球从100米高度自由落下,每次落地后反弹会原高度的一半,再落下,再反弹。求它在第n次落地时,共经过多少米以及第n次反弹多高。

输入描述
一个正整数n。

输出描述
第n次落地时共经过多少米以及第n次反弹多高,保留4位小数。
请注意行尾输出换行。

样例输入 复制 更多
10

样例输出
299.6094 0.0977

#include<stdio.h>
void main()
{int i,n;
double high=100.0,high2=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
	high=high/2.0;
	high2=2*high+high+high2;
}
high2=high2-high;
printf("%.4f %.4f",high2,high);
return 0;


}

题目描述
一个数如果恰好等于它的因子之和,这个数就被称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。找出1000之内的所有完数,并输出。

输入描述

输出描述
每一个完数一行。在每一行中,首先输出这个完数的值,再输出一个冒号,之后从小到大输出这个完数的所有因子,在每个因子前输出一个空格。
请注意行尾输出换行。

样例输入

样例输出
6: 1 2 3
28: 1 2 4 7 14
496: 1 2 4 8 16 31 62 124 248

#include<stdio.h>
int main()
{int i,n,a,m;
	for(i=1;i<=1000;i++){a=0;
	 for(n=1;n<=i;n++){
	 	if(i%n==0&&i!=n)a=a+n;
		else if(i==n&&a==n){
		printf("%d: ",i); 
		for(m=1;m<=i;m++){
		if(i%m==0&&i!=m)
		printf("%d ",m);}printf("\n");}
	}
	}return 0;
}

(第二个是50)
输入描述

输出描述
题目描述中算式的值,并保留4位小数。
请注意行尾输出换行。

样例输入 复制 更多

样例输出
47977.9290

#include<stdio.h>
int main()
{int a=0,i,b=0;
double c=0.0,n,d=0.0;
for(i=1;i<=100;i++)
 a=i+a;
for(i=1;i<=50;i++)
 b=i*i+b;
for(n=1;n<=10;n++)
 c=c+1/n;
 d=a+b+c;
 printf("%.4f",d);
 return 0;
}

题目描述
求出100至200间的所有素数。

输入描述

输出描述
输入所有符合条件的素数,并在每一个数之后输出一个空格。
请注意行尾输出换行。

样例输入

样例输出
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199

#include<stdio.h>
int main()
{int i,n;
 for(i=100;i<=200;i++){
 	for(n=2;n<=i;n++){
 	if(n==i)printf("%d ",n);
 	else if(i%n==0)
	 break;
 	else  ;}
 }return 0;
}

题目描述
判断一个数是否是素数。

输入描述
一个大于1且小于100000000的整数m。

输出描述
如果m是素数,输出“prime”,否则请输出“not prime”。
请注意不需要输出引号,行尾输出换行。

样例输入
10000019

样例输出
prime

#include<stdio.h>
int main()
{long long int a,i;
scanf("%lld",&a);
for(i=2;i<=a;i++){
if(i==a)printf("prime");
else if(a%i==0)printf("not prime");}
return 0;
}

求Fibonacci数列的前40个数。这个数列有如下特点:第1、2两个数为1、1。从第3个数开始,该数是其前面两个数之和。即:
输入描述

输出描述
输出Fibonacci数列的前40个数,并在每个数之后输出一个空格。
请注意行尾输出换行。

样例输入 复制 更多

样例输出
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155

#include<stdio.h>
int main()
{int a1=1,a2=1,a3=0,i;
 printf("%d %d ",a1,a2);
 for(i=1;i<=12;i++){
 a3=a1+a2;
 printf("%d ",a3);
 a1=a3+a2;
 printf("%d ",a1);
 a2=a1+a3;
 printf("%d ",a2);
 }
 a3=a1+a2;
 a1=a3+a2;
 printf("%d %d",a3,a1);
 return 0;
 
}

使用
这个公式求π的近似值,直到某一项的绝对值小于10-6为止。
输入描述

输出描述
输出π的近似值,保留6位小数。
请注意行尾输出换行。

样例输入 复制 更多

样例输出
3.141591

#include<stdio.h>
void main()
{int b=-1;
 double c=1.0,a=0.0,i;
 for(i=1.0;1/i>=0.000001;i=i+2){
 	a=(-b)*1/i+a;
 	b=-b;
 }
 printf("%f",4*a);
 return 0;


}

题目描述
用do…wihle语句求1+2+3+…+100的值。

输入描述

输出描述
输出题目描述中表达式的值。请注意行尾输出换行。

样例输入

样例输出
5050

#include<stdio.h>
int main()
{int a=0,i=0;
 do{a=a+i;
 i++;
 }
 while(i<=100);
 printf("%d",a);
}

求1+2+3+…+100的值。

输入描述

输出描述
输出题目描述中表达式的值。请注意行尾输出换行。

样例输入

样例输出
5050

#include<stdio.h>
int main()
{int i,a=0;
for(i=1;i<=100;i++)
 a=a+i;
 printf("%d",a);
}

题目描述
给定一个不多于5位的正整数,要求:

1、 求出它是几位数;

2、 分别输出每一位数字,且每一位数字之后输出一个空格;

3、 按逆序输出各位数字,且每一位数字之后输出一个空格。

输入描述
一个不多于5位的正整数。

输出描述
共有三行,分别对应题目描述中提到的三个要求。
请注意行尾输出换行。

提示
提示
样例输入 复制 更多
34568

样例输出
5
3 4 5 6 8
8 6 5 4 3

#include<stdio.h>
#include<string.h>
int main()
{ char a[10],i;
 scanf("%s",a);
 int l=strlen(a);
 printf("%d\n",l);
 for(i=0;i<l;i++)
 printf("%c ",a[i]);
 printf("\n");
 for(i=l-1;i>=00;i--)
 printf("%c ",a[i]);
 return 0;
 }
  • 19
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 《编译原理与技术》第二版是由清华大学出版社出版的一本教材,主要讲解了编译原理和技术的相关知识。作为该书的答案解析,北邮CSDN(中国科学技术大学的CSDN博客)提供了一份详细的答案解析,方便学生进行学习和复习。 这份答案解析包括了教材中每个章节的习题答案,以及对课后作业和例题的解答过程。北邮CSDN对每个问题都进行了详细的讲解,包括问题的分析、思路的指导和解题方法的详细步骤。并且,他们还给出了一些注意事项和解题技巧,帮助学生更好地理解和掌握编译原理和技术的相关内容。 北邮CSDN的答案解析不仅提供了正确的答案,更重要的是他们的解答过程清晰明了,逻辑严谨,容易理解。学生可以通过参考他们的解答过程,加深对编译原理和技术的理解,提高解题的能力。 总而言之,北邮CSDN提供的《编译原理与技术》第二版的答案解析是一个很好的学习资源,可以帮助学生巩固和提升自己在编译原理和技术方面的知识水平。 ### 回答2: 《编译原理与技术》第二版答案北邮CSDN是北邮(北京邮电大学)计算机学院CSDN(CSDN是中国最大的专业IT社区和IT技术服务平台)上提供的《编译原理与技术》第二版教材的答案。编译原理与技术是计算机科学中的重要课程,主要研究如何将高级语言编写的程序翻译成硬件可以执行的机器语言指令。《编译原理与技术》第二版主要讲解了编译器的整体结构、词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等内容。在学习编译原理与技术的过程中,学生需要掌握各个部分的原理和算法,并能够独立完成简单的编译器实现。而教材的答案则提供了课后习题的解答,供学生自测和参考。北邮CSND提供《编译原理与技术》第二版答案,为学生提供了一个可以查阅和参考的资源,使学生能够更好地理解和掌握编译原理与技术的知识。 ### 回答3: 编译原理与技术是计算机科学中的一门重要课程,涉及到源程序的语法分析、语义分析、优化以及代码生成等方面的内容。编译原理与技术第二版答案北邮csdn是指在北京邮电大学计算机科学与技术学院的CSDN博客上可以找到《编译原理与技术第二版》的答案和解析。 编译原理与技术的主要内容包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等。这些内容是编译器的核心组成部分,是将高级语言翻译成机器语言的关键环节。 而编译原理与技术第二版答案的提供方北邮csdn是指北京邮电大学的CSDN博客上有相关课程的答案和解析。这些答案和解析可能是一些跟随教材一起提供的辅助资料,可以帮助学生更好地理解和掌握编译原理与技术的知识。 对于学习编译原理与技术的学生来说,编译原理与技术第二版答案北邮csdn可以作为一个参考和学习的资源。通过阅读和思考这些答案和解析,可以更好地理解和应用课程中的重要概念和技术,提高编译器的设计和开发能力。 总之,编译原理与技术是计算机科学中的重要课程,编译原理与技术第二版答案北邮csdn提供了一些辅助资源,可以帮助学生更好地理解和掌握相关知识。但是,在使用这些答案和解析时,我们应该保持独立思考和学习的态度,根据自身的理解和需求进行适当的参考和借鉴。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值