谭浩强C语言(第二版)——第五章习题答案
作者:互联网
1. 求100~200间的全部素数。
解:
//
// @Author: Brisa
// @Date: 2021/10/5
// @Description: 100-200之间的素数
//
#include<stdio.h>
#include<math.h>
int main()
{
int temp, k;
printf("100-200的素数有:\n");
for(int i=100; i<=200; i++){
temp = sqrt(i);
for(k=2; k<= temp; k++){ //判断能否被2到根号i之间的数整除
if(i % k == 0){
break;
}
}
if(temp <= k) //判断满足是素数的条件
printf("%d\n", i);
}
return 0;
}
2. 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
解:
//
// @Author: Brisa
// @Date: 2021/10/5
// @Description: 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数
//
#include<stdio.h>
#include<string.h>
int main(){
int num=0, letter=0, space=0, others=0;//数字、字母、空格、其他字符
printf("请输入一串字符:\n");
char s[100]; //输入字符串
gets(s);
for(int i=0; s[i] != '\0'; i++){
if(s[i] >= '0' && s[i] <= '9') num++;
else if((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z')) letter++;
else if(s[i] == ' ') space++;
else others++;
}
printf("英文字母有:%d个,空格有%d个,数字有%d个,其他字符有%d个\n", letter, space, num, others);
return 0;
}
3. 输出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3 + 5^3 + 3^3。
解:
//
// @Author: Brisa
// @Date: 2021/10/5
// @Description: 输出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。
//
#include<stdio.h>
#include<math.h>
int main(){
int hundred=0, ten=0, indiv=0;
int temp;
for(int i=100; i<1000; i++){
//求三个位置的数
hundred = i / 100;
ten = (i % 100) / 10;
indiv = i % 10;
temp = pow(hundred, 3) + pow(ten, 3) + pow( indiv, 3);
if(temp == i) //满足水仙花的条件
printf("%d\n", i);
}
return 0;
}
4. 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
解:
//
// @Author: Brisa
// @Date: 2021/10/5
// @Description: 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
//
#include<stdio.h>
int main(){
/*分析:总共吃了9天,后一天是i, 则前一天是 (i+1)*2 */
int sum = 1;
for(int i=9; i>0; i--){
sum = (sum + 1) * 2;
}
printf("总共有%d个\n", sum);
return 0;
}
5. 一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时,共经过了多少米?第10次反弹多高?
解:
//
// @Author: Brisa
// @Date: 2021/10/5
// @Description: 一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时,共经过了多少米?第10次反弹多高?
//
#include<stdio.h>
int main(){
double high=100.00, sum=0.0;
for(int i=1; i<=10; i++){
sum = sum + high;
high = high / 2.0;
sum = sum + high;
}
sum -= high; //减去弹上去的一半
printf("在第10次落地时,共经过了%f米,第10次反弹%f米\n", sum, high);
return 0;
}
- 打印以下图案
*
***
*****
*******
*****
***
*
解:
//
// @Author: Brisa
// @Date: 2021/10/5
// @Description: 打印以下图案
//
#include<stdio.h>
int main(){
for(int i=1; i<=4; i++){
for(int j=1; j<=4-i; j++){
printf(" ");
}
for(int j=1; j <= 2*i - 1; j++){
printf("*");
}
printf("\n");
}
for(int i=1; i<=3; i++){
for(int j=3; j>=4-i; j--){
printf(" ");
}
for(int j=1; j <= 7-2*i; j++){
printf("*");
}
printf("\n");
}
return 0;
}
8. 两个乒乓球队进行比赛,各出3人。甲队为A、B、C 3人,乙队为X、Y、Z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Y比,请编程序找出3三队选手的对阵名单。
解:
//
// @Author: Brisa
// @Date: 2021/10/5
// @Description: 8. 两个乒乓球队进行比赛,各出3人。甲队为A、B、C 3人,乙队为X、Y、Z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Y比,请编程序找出3三队选手的对阵名单。
//
#include<stdio.h>
int main(){
/*i是A的对手,j是B的对手,k是C的对手*/
char i, j, k;
for(i='X'; i<='Z'; i++){
for(j='X'; j<='Z'; j++){
if(i != j){//AB对手不能一样
for(k='X'; k<='Z'; k++){
if(i!=k && j!=k){//ABC对手不能一样
if(i!='X' && k=='Z')//A说他不和X比,C说他不和X、Y比
printf("order is A--%c\tB--%c\tC--%c\n",i,j,k);
}
}
}
}
}
return 0;
}
标签:10,int,sum,C语言,谭浩强,printf,习题,include,100 来源: https://blog.csdn.net/m0_43416592/article/details/120618005