当前位置: 首页 > news >正文

C语言程序设计第四版-课本习题(第六章-循环控制结构)

题目一:试编写一个程序,从键盘输入n,然后计算并输出n!

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n;
	cin>>n;
	int num=1;
	for(int i=1;i<=n;i++){
		num=num*i;
	}
	cout<<num;
	return 0;
} 

题目二:从键盘输入n,然后计算并输出1-n之间所有数的阶乘值

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n;
	cin>>n;
	int num=1;
	for(int i=1;i<=n;i++){
		num=num*i;
		cout<<num<<" ";
	} 
	return 0;
} 

题目三:从键盘输入n,然后计算并输出1!+2!+3!+……+n!

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n;
	cin>>n;
	int num=1,sum=0;
	for(int i=1;i<=n;i++){
		num=num*i;
		sum=sum+num;
	} 
	cout<<sum;
	return 0;
} 

题目四:编程设计一个简单的猜数游戏:先由计算机“想”一个数请用户猜,如果用户猜对了,则计算机给出提示“Right”,否则提示“Wrong”,并告诉用户所猜的数是大还是小

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n=rand();
	int num;
	cin>>num;
	if(num==n){
		cout<<"Right";
	}
    else if(num>n){
    	cout<<"Wrong,所猜的数更小"; 
	}
	else{
    	cout<<"Wrong,所猜的数更大"; 
	}
	return 0;
}

题目五:编程设计一个简单的猜数游戏:先由计算机“想”一个数请用户猜,如果用户猜对了,则计算机给出提示“Right”,否则提示“Wrong”,并告诉用户所猜的数是大还是小每次猜数知道用户猜对为止,并且记录用户猜数的次数,反映猜的水平

#include<bits/stdc++.h>
using namespace std;

int main(){
	std::srand(std::time(0));//设置随机数种子为当前时间
	int n=rand()%100+1;//一个1到100之间的随机数
	int num,sum=0;
	while(1){
		cin>>num;
		if(num==n){
			cout<<"Right"<<endl;
			break;
		}
	    else if(num>n){
	    	cout<<"Wrong,所猜的数更小"<<endl; 
	    	sum++;
		}
		else{
	    	cout<<"Wrong,所猜的数更大"<<endl; 
	    	sum++;
		}
	} 
	cout<<sum<<endl;
	return 0;
} 

题目六:编程设计一个简单的猜数游戏:先由计算机“想”一个数请用户猜,如果用户猜对了,则计算机给出提示“Right”,否则提示“Wrong”,并告诉用户所猜的数是大还是小每次猜数知道用户猜对为止,最多猜十次,不管猜不猜对,都结束

#include<bits/stdc++.h>
using namespace std;

int main(){
	std::srand(std::time(0));//设置随机数种子为当前时间
	int n=rand()%100+1;//一个1到100之间的随机数
	int num,sum=0;
	int flag=1;
	while(1){
		cin>>num;
		if(num==n){
			flag=0;
			cout<<"Right"<<endl;
			break;
		}
	    else if(num>n){
	    	cout<<"Wrong,所猜的数更小"<<endl; 
		}
		else{
	    	cout<<"Wrong,所猜的数更大"<<endl; 
		}
		sum++;
		if(sum==10){
			break;
		}
	} 
	if(sum==10) 
	    cout<<"十次结束了"<<endl;
	return 0;
} 

题目七:编程设计一个简单的猜数游戏:先由计算机“想”一个数请用户猜,如果用户猜对了,则计算机给出提示“Right”,否则提示“Wrong”,并告诉用户所猜的数是大还是小每次猜数知道用户猜对为止,最多猜十次,不管猜不猜对,都结束,每次询问用户是否继续猜数

#include<bits/stdc++.h>
using namespace std;

int main(){
	std::srand(std::time(0));//设置随机数种子为当前时间
	int n=rand()%100+1;//一个1到100之间的随机数
	int num,sum=0;
	int flag=1;
	while(1){	
		cin>>num;	 
		if(num==n){
			flag=0;
			cout<<"Right"<<endl;
			break;
		}
	    else if(num>n){
	    	cout<<"Wrong,所猜的数更小"<<endl; 
		}
		else{
	    	cout<<"Wrong,所猜的数更大"<<endl; 
		}
		sum++;
		if(sum==10){
			break;
		}
		cout<<"请问是否继续猜数"<<endl;
		char con;
		cin>>con;
		if(con=='N')
		    break;
	} 
    cout<<"共猜了"<<sum<<"次"<<endl;
	return 0;
} 

题目八:读入五个正整数并且显示它们。当读入的数据为负数时,程序立即停止


#include<bits/stdc++.h>
using namespace std;

int main(){
	int n;
	for(int i=1;i<=5;i++){
		cin>>n;
		if(n<0) break;
		cout<<n<<endl;
	}
	return 0;
} 

题目九:读入五个正整数,输入为正数时,显示它们,当读入的数据为负数时,不显示,进入下一轮循环

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n;
	for(int i=1;i<=5;i++){
		cin>>n;
		if(n<0) continue;
		cout<<n<<endl;
	}
	return 0;
} 

题目十:韩信点兵问题。韩信有一支兵,他想知道有多少人,便让士兵排队报数。按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;按从1至11报数,最末一个士兵报的数为10;计算韩信有多少士兵 

#include<bits/stdc++.h> 
using namespace std;
bool f5(int n){
	int k=0;
	for(int i=1;i<=n;i++){
		k++;
		if(k==6) k=1;
	}
	if(k==1) return true;
	return false;
}
bool f6(int n){
	int k=0;
	for(int i=1;i<=n;i++){
		k++;
		if(k==7) k=1;
	}
	if(k==5) return true;
	return false;
}
bool f7(int n){
	int k=0;
	for(int i=1;i<=n;i++){
		k++;
		if(k==8) k=1;
	}
	if(k==4) return true;
	return false;
}
bool f11(int n){
	int k=0;
	for(int i=1;i<=n;i++){
		k++;
		if(k==12) k=1;
	}
	if(k==10) return true;
	return false;
}

int main(){
	for(int i=1;i<10000;i++){
		if(f5(i) && f6(i) && f7(i) && f11(i)){
			cout<<i<<endl;
		}
	}
	return 0;
}
#include<bits/stdc++.h> 
using namespace std;
int main(){
	for(int i=1;i<10000;i++){
		if(i%5==1 && i%6==5 && i%7==4 && i%11==10){
			cout<<i<<endl;
		}
	}
	return 0;
}

题目十一:编程计算自然数的立方和,知道立方和>=1000000时为止,统计并输出实际累加的项数

#include<bits/stdc++.h>
using namespace std;

int main(){
	int sum=0;
	int i,t;
	for(i=1;;i++){
		t=i*i*i;
		sum=sum+t;
		if(sum>=1000000) break; 
	}
	cout<<i;
	return 0;
}

题目十二:计算1+3+5……+101 

#include<bits/stdc++.h>
using namespace std; 

int main(){
	int sum=0;
	for(int i=1;i<=101;i=i+2){
		sum=sum+i;
	}
	cout<<sum;
	return 0;
}

题目十三:计算1*2*3+3*4*5+……+99*100*101

#include<bits/stdc++.h>
using namespace std;

int main(){
	long i;
	long sum=0,t;
	for(i=1;i<=99;i=i+2){
		t=i*(i+1)*(i+2);
		sum=sum+t;
	}
	cout<<sum;
	return 0;
} 

题目十四:计算a+aa+aaa+……+aaaa…a(n个a)

#include<bits/stdc++.h>
using namespace std;

int main(){
	long a,n;
	cin>>a>>n;
	long t=0,sum=0;
	for(long i=1;i<=n;i++){
		t=a+t*10;
		sum=sum+t;
	}
	cout<<sum;
	return 0;
}

题目十五:有一条长阶梯,若每步跨两阶,最后剩下一阶;若每步跨三阶,则最后剩下两阶;若每步跨五阶,最后剩下四阶;若每步跨六阶,则最后剩下五阶;若每步跨七阶,正好一节不剩,计算一共多少阶 

#include<stdio.h>
int main(){
	int x=1,find=0;
	while(!find){
		if(x%2==1 && x%3==2 && x%5==4 && x%6==5 &&x%7==0){
			printf("x=%d\n",x);
			find=1;
		}
		x++;
	}
	return 0;
}

题目十六:编程计算并输出1到n之间所有数的平方和立方。

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cout<<i*i<<" "<<i*i*i<<endl;
	}
	return 0;
} 

题目十七:某人在外国留学,不熟悉当地天气预报中的华氏温度值,请编程按每隔10度输出0-300度之间的华氏温度到摄氏温度的对照表 ,已知华氏和摄氏度的转换公式为C=5/9*(F-32),其中,c表示摄氏温度,F表示华氏温度

#include<bits/stdc++.h>
using namespace std;

int main(){
	float F;
	for(int C=0;C<=300;C=C+10){
		F=float(C)*5/9+32;
		cout<<C<<" - "<<std::fixed<<std::setprecision(3)<<F<<endl;
	}
	return 0;
} 

题目十八:假设今年的工业产值100万,产值增长率从键盘输入,请编程计算工业产值过多少年后可实现翻一番

#include<bits/stdc++.h>
using namespace std;
int main(){
	float num=1000000;
	float rate;
	int i;
	cin>>rate;
	for(i=1;;i++){
		num=num*rate+num;
		if(num>=2000000){
			break;
		}
	}
	cout<<i;
	return 0;
} 

题目十九:利用π/4=1-1/3+1/5+… ,编程计算π的近似值,直到最后一项的绝对值小于10^(-4),输出π的值并计算累加的次数

#include<bits/stdc++.h>
using namespace std;
int main(){
	int i,flag=1;
	float sum=0,temp;
	for(i=1;i<=10000;i=i+2){
		temp=1/float(i);
		sum=sum+temp*flag;
		flag=-flag;
	}
	cout<<sum*4<<endl<<i<<endl;
	return 0;
}

题目二十:利用e=1+1/1!+1/2!+1/3!+…+1/n!, 编程计算e的近似值,直到最后一项的绝对值小于10^(-5)为止 ,输出e的值并计算累加的次数

#include<bits/stdc++.h>
using namespace std;
int main(){
	int i;
	float temp,sum=1,t=1;
	for(i=1;;i++){
		t=t*i;
		temp=1/float(t);
		sum=sum+temp;
		if(fabs(temp)<0.00001){
			break;
		}
	}
	cout<<sum<<endl<<i+1;
	return 0;
} 

题目二十一:水仙花数是指各位数字的立方和等于该数本身的三位数。例如:153是水仙花数,因为153=1^3+3^3+5^3,请编程计算出所有的水仙花数。

#include<bits/stdc++.h>
using namespace std;

int main(){
	int i;
	for(i=100;i<1000;i++){
		int bai=i/100;
		int shi=i/10%10;
		int ge=i%10;
		if(i==((bai*bai*bai)+(shi*shi*shi)+(ge*ge*ge))){
			cout<<i<<" ";
		}
	}
	return 0;
} 

题目二十二:已知不等式:1!+2!+3!+…+m!<n,请编程对用户指定的n计算并输出满足该不等式的m的整数解。

#include<bits/stdc++.h>
using namespace std;

int main(){
	int sum=0;
	int t=1,i,n;
	cin>>n;
	for(i=1;;i++){
		t=t*i;
		sum=sum+t;
		if(sum>=n){
			break;
		}
	}
	cout<<i;
	return 0;
} 

题目二十三:输入一些正数,编程计算并输出这些正数的和,输入负数或零时表示输入数据结束

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n,sum=0;
	while(1){
		cin>>n;
		if(n<=0) break;
		sum=sum+n;
	}
	cout<<sum;
	return 0;
}

题目二十四:输入一些正数,编程计算并输出这些正数的和,输入负数不累加,输入零时表示输入数据结束

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n,sum=0;
	while(1){
		cin>>n;
		if(n==0) break;
		else if(n<0) continue; 
		sum=sum+n;
	}
	cout<<sum;
	return 0;
}

题目二十五:男人、女人和小孩总计三十人,在一家饭店吃饭,共花了五十先令,每个男人各花三先令,每个女人各花2先令,每个小孩各花一先令,请用穷举法编程计算男人、女人和小孩各多少人

#include<bits/stdc++.h>
using namespace std;

int main(){
	int num;
	for(int i=0;i<=30;i++){
		for(int j=0;j<=30-i;j++){
			if((i*3+j*2+(30-i-j))==50){
				cout<<i<<" "<<j<<" "<<30-i-j<<endl;
			}
		}
	}
	return 0;
} 

题目二十六:鸡兔同笼。共有98个头,386只脚,请用穷举法编程计算鸡兔各有多少只

#include<bits/stdc++.h>
using namespace std;

int main(){
	for(int i=0;i<=98;i++){
		if((i*2+(98-i)*4)==386){
			cout<<"鸡有"<<i<<"只,"<<"兔有"<<98-i<<"只"<<endl;
		}
	}
	return 0;
}

题目二十七:公鸡每只5元,母鸡每只3元,小鸡3只一元,请用穷举法编程计算,
若用100元买一百只鸡,则公鸡、母鸡、小鸡多少 

#include<bits/stdc++.h>
using namespace std;

int main(){
	for(int i=0;i<20;i++){
		for(int j=0;j<34;j++){
			if(5*i+3*j+(100-i-j)/3==100){
				cout<<i<<" "<<j<<" "<<100-i-j<<endl;
			}
		}
	}
	return 0;
}

题目二十八:用100元人民币兑换10元,5元,1元的纸币(每一种都要有)共五十张,
请用穷举法编程计算共有几种兑换方案,每种兑换方案各兑换多少张纸币

#include<bits/stdc++.h>
using namespace std;

int main(){
	int sum=0;
	for(int i=1;i<9;i++){
		for(int j=1;j<19;j++){
			if(10*i+5*j+(50-i-j)==100){
				cout<<i<<" "<<j<<" "<<50-i-j<<endl;
				sum++;
			}
		}
	}
	cout<<sum;
	return 0;
} 

题目二十九:按照以下格式输出乘法表:

#include<bits/stdc++.h>
using namespace std;

int main(){
	for(int i=1;i<=9;i++){
		cout<<left<<setw(3)<<i<<" ";
	}
	cout<<endl;
	for(int i=1;i<=9;i++){
		cout<<left<<setw(3)<<'-'<<" ";
	}
	cout<<endl;
	for(int i=1;i<=9;i++){
		for(int j=1;j<=i;j++){
		    	cout<<left<<setw(3)<<i*j<<' ';
		}
		cout<<endl;
	}
	return 0;
}

 题目三十:有一天,一个百万富翁遇到一个陌生人,陌生人找他谈了一笔生意,陌生人对百万富翁说“我每天给你十万元,而你第一天给我一分钱,第二天给我两分钱,第三天给我4分钱,……
你每天给我的钱是前一天的两倍,直到满30天”,编程计算这个月陌生人给百万富翁多少钱,百万富翁给陌生人多少钱?

#include<bits/stdc++.h>
using namespace std;

int main(){
//	int num;
	double temp=0.1,sum=0;
	for(int i=1;i<=30;i++){
		sum=sum+temp;
		cout<<sum<<endl;
		temp=temp*2;
	}
	cout<<100000*30<<"   "<<sum;
	return 0;
} 

题目三十一:一辆卡车违反了交通规则,撞人后逃逸。现场有三人目击该事件,但是没有记住车号,只记住车号的一些特征,甲说:车号的前两位数字是相同的,乙说:车号的后两位数字是相同的,但是与前两位不同,丙是位数学家,他说:4位的车号正好是一个整数的平方。请根据以上线索找出车号

#include<bits/stdc++.h>
using namespace std;
int main(){
	int num;
	for(int i=0;i<=9;i++){
		for(int j=0;j<=9;j++){
			if(i!=j){
				num=i*1000+i*100+j*10+j;
				for(int k=1;k<=sqrt(num);k++){
					if(k*k==num){
						cout<<num<<endl;
						break;
					}
				}
			}
		}
	}
	return 0;
}

相关文章:

  • 星越L_陡坡缓降使用讲解
  • 双系统下Linux挂载Windows硬盘失败
  • centos 7 部署ftp 基于匿名用户
  • 详解“二分”系列算法
  • 织梦DedeCMS让CKeditor编辑模板文件的方法(默认源码模式编辑)
  • Java-servlet(七)详细讲解Servlet注解
  • 音视频框架详解
  • 第十四次CCF-CSP认证(含C++源码)
  • Python——MySQL数据库编程
  • DeepSeek API keys本地调用 [python]
  • 【AI知识】在 PyTorch 中设计和实现一个完整的模型训练和优化流程
  • C语言 数据结构【动态顺序表】详解
  • 表格标题竖直
  • IP地址结构体与字符串转换函数详解
  • 基于RT-thread使用STM32F407驱动LCD屏幕
  • 【HCIA-晴天老师】15-VLAN的Hybrid配置笔记
  • Camera2 API拍照失败问题实录:从错误码到格式转换的排坑之旅
  • Python实现生产者消费者模型-多进程与多线程处理
  • 基于Redis分布锁+事务补偿解决数据不一致性问题
  • 大数据E10:基于Spark和Scala编程解决一些基本的数据处理和统计分析,去重、排序等
  • 俄乌释放停火和谈信号,克宫:将组建“相应级别”谈判代表团
  • 深入贯彻中央八项规定精神学习教育中央指导组完成进驻
  • 多省市已开展现房销售试点,去年全国现房销售面积占比超30%
  • 伊朗外长称正与美国进行“善意”的会谈
  • 习近平会见古巴国家主席迪亚斯-卡内尔
  • 夜读丨喜马拉雅山的背夫