IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Day07 C语言基础练习 -> 正文阅读

[C++知识库]Day07 C语言基础练习

?今天没有学习新的东西,今天做了很多联系题,今天就来谢谢练习题的总结以及部分题的思路

?

昨天写了一些题,今天1~5题用for循环来重新写

1.? 计算100以内的偶数之和

#include<stdio.h>

int main()
{
	int i, j;
	int sum = 0;
	for(i = 1; i <= 50; i++)
	{
		for(j = i * 2; j <= i * 2 ; j++)
		{
			sum += j;	
		}
	
	}
	
	printf("%d", sum);
	
	return 0;
}

我用了两个for循环来算出100以内偶数和

第一个for控制一个1~50的数字,第二个for将它×2,并且只+一个数字,最后输出总和

?2.??求和:1-2+3-4+5-6+...-100

#include<stdio.h>

int main()
{
	int i;
	int sum = 0;
	for(i = 1; i <= 100; i++)
	{
		if(i % 2 == 0)
		{
			sum = sum - i;
		}
		else{
			sum = sum + i;
		}
	}
	
	printf("%d", sum); 
	
	return 0;
}

for循环来控制要加的数字,再for循环里面用%2来算出它是否偶数个个数,如果是偶数个数的数,就-这个数,否则加这个数

3.??求积:1*2*3*4*5*6

#include<stdio.h>

int main()
{
	int i;
	int sum = 1;
	
	for(i = 1; i <= 6; i++)
	{
		sum *= i;
	}
	
	printf("%d", sum);
	return 0;
}

算出最后结果是720

4.? ?输出100以内7的倍数,中间用tab键间隔,每5个换行

#include<stdio.h>

int main()
{
	int i;
	int count = 0;
	for(i = 1; i <= 100; i++){
		if(i % 7 == 0){
			printf("%d	", i);
			count++;
			if(count % 5 == 0){
			printf("\n");
		}
		}
	
	}
	
	
	return 0;
 } 

这个题,用for循环控制100以内的数字,如果它是7的倍数,输出,在用一个count来计数,输出5个后输出一个回车。

?5. 求两个数的最大公约数

#include<stdio.h>

int main(){
	int a, b, i;
	printf("请输入两个数:\n");
	scanf("%d %d", &a, &b); 
	if(b > a){
		b ^= a;
		a ^= b;
		b ^= a;
	}
	for(i = b; i > 0; i--){
		if(a % i == 0 && b % i ==0){
			printf("最大公约数是:%d", i);
			break;
			
		}
	}

	
	return 0;
 } 

这个是辗转相除,我的想法是输入两个数a,b,但是a必须要大于b,因我我想要用a取辗转除以b,所以如果a小于b则用异或操作,来将a和b交换,最后进入for循环进行辗转相除,如果a和b都对其中的一个i取余为0(也就是可以将这个i整除),那么这个i就是a和b的最大公约数

?6.??整数反转:如12345,输出54321

#include<stdio.h>

int main()
{
 
	int num, result=0;
	printf("请输入一个数:\n");
	scanf("%d",&num);
	while(num!=0)
	{
		result = result * 10 + num % 10;
		num = num / 10;
	}
	
	printf("%d\n", result);
	
	
	
	
	return 0;
}

这个其实就是将输入数字的个位十位百位...依次翻转过来,num%10就是在得到个位,result * 10其实就是将的得到的这一个数扩大一位

?7.??输入一个数字,判断是否是回文数。如12321,反转后仍是12321,则是回文数

#include<stdio.h>

int main()
{
	int num = 0;
	int temp = 0;
	int result = 0;
	printf("请输入一个数字:\n");
	scanf("%d", &num);
	temp = num; 
	while(num != 0)
	{
		result = result * 10 + num % 10;
		num = num / 10;
	}
//	printf("%d", result);
	
	if (result == temp)
	{
		printf("是回文数");
	}
	else
	{
		printf("不是回文数");
	}
	
	 
	 	
}

回文数其实和上一道题用了相同的思路,其实就是将数字倒过来,如果得到的数字和原本的数字相同,则就为回文数

8.?2012年培养学员25万人,每年增长25%。请问按此增长速度,到哪一年培训学员人数将达到100万人?

#include<stdio.h>

int main()
{
	int a = 250000;
	int b = 1000000;
	int i;
	
	for(i = 1; i <= 1000; i++){
		a = a * 1.25;
		if(a >= b)
		{
			printf("第%d年可达到目标", i);
			break;
		}
	}
	
	return 0;
}

?这个用for循环来判断是几年,因为不知道会是几年,所以预设了一个比较大的数字1000,然后进入for循环,来计算,当大于等于100万的时候出循环,并且也可以知道这个是第几年(i)

最后的结果是7年

9.??1~10之间的整数相加,得到累加值大于20的当前数

#include<stdio.h>

int main()
{
	int i;
	int sum = 0;
	for(i = 1; i <= 10; i++)
	{
		sum += i;
		if(sum >= 20)
		{
			printf("%d", i);
			break;
		}
	}
	
	return 0;
}

这个用for循环控制1~10的数,然后用一个sum累加,当sum>=20的时候输出这个数字i

这个题会输出6

10.??循环输入商品编号,显示对应的商品价格。输入“n“结束循环

#include<stdio.h>

int main()
{
	int num;
	char s;

	while(1){
		printf("****************************************\n");
		printf("请选择购买的商品编号:\n");
		printf("1.T恤      2.网球鞋      3.网球拍\n");
		printf("****************************************\n");
		printf("请输入商品编号:");
		scanf("%d", &num);
		switch(num)
		{
			case 1:
				printf("T恤		¥245.0\n");
				break;
			case 2:
				printf("网球鞋		¥600.0\n");
				break;
			case 3:
				printf("网球拍		¥1000.0\n");
				break;
			default:
				printf("您的输入有误\n");
				break; 
		}
		printf("是否继续?(y/n)\n");
		getchar();
		scanf("%c", &s);
		if(s == 'y')
		{
			printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
			continue; 
		}
		else if(s == 'n')
		{
			printf("程序结束");
			break;
		 } 
		 
		
	}
	
	
	return 0;
}

?这个算是第一个要想的比较多的题了,首先我们先设置一个死循环,让它执行一轮后可以重新开始不至于直接退出程序,用switch来控制想要的商品,1,2,3会输出对应的商品,当你输入其他数字的时候,会提示你输入错误。然后,执行完switch后,程序会问你是否继续执行,如果想继续执行按y,就会回到开头,重新来过,如果想结束,就按n,就会杀死程序

?11.??升级菜单切换。如果用户输入错误,可以重复输入直到输入正确,执行相应的操作后退出循环

#include<stdio.h>

int main()
{
	int num;
	
	printf("****************************************\n");
	printf("			1. 客户信息管理\n");
	printf("			2. 购物结算\n");
	printf("			3. 真情回馈\n");
	printf("			4. 注销\n");
	printf("****************************************\n");
	printf("请选择,输入数字:");
	scanf("%d", &num);
	while(1)
	{
	
		
		switch(num)
		{	
			case 1:
				printf("客户信息管理\n");
				break;
			case 2:
				printf("购物结算\n");
				break;
			case 3:
				printf("真情回馈\n");
				break;
			case 4:
				printf("注销\n");
				break;
			default:
				printf("输入错误请重新输入数字:\n");
				scanf("%d", &num);
				continue;		
				
		}
		break;
	 } 
}

?这个和上一题思路很类似,只不过在输入错误指令的时候,会让你重新输入一个数字继续进行switch判断,如果输入了正确的数字,则会跳出循环结束程序

?

?12.??输出摄氏温度与华氏温度的对照表,要求它从摄氏温度0度到250度,每隔20度为一组

????????转换关系:华氏温度 = 摄氏温度 * 9 / 5.0 + 32

#include<stdio.h>

int main()
{
	float ss = 0;
	float hs = 0;
    int i;
    int count = 0;
    
    printf("摄氏温度		华氏温度\n");
    for(i = 0; i <= 250; i++)
    {
    	ss = i;
    	hs = ss * 9 / 5.0 + 32;
    	printf("%.1f			%.1f\n", ss, hs);
    	count++;
    	if(count % 20 == 0)
    	{
    		printf("-----------------------------\n");
		}
	}

 } 

?13.??从键盘上输入一位整数,当输入1-7时,显示下面对应的英文星期名称的缩写。

????????????????MON ?2:TUE ?3:WED ?4:THU ?5:FRI ?6:SAT ?7:SUN

????????输入其他数字时提示用户重新输入,输入数字0时程序结束。运行结果如下:

#include<stdio.h>

int main()
{
	int day;
		
	while(1)
	{
		printf("请输入一个(1-7)的数字(输入0结束):\n");
		scanf("%d", &day);
		switch(day)
		{
		case 1:
			printf("今天是MON\n");
			break;
		case 2:
			printf("今天是TUE\n");
			break;
		case 3:
			printf("今天是WED\n");
			break;
		case 4:
			printf("今天是THU\n");
			break;
		case 5:
			printf("今天是FRI\n");
			break;
		case 6:
			printf("今天是SAT\n");
			break;
		case 7:
			printf("今天是SUN\n");
			break;
		case 0:
			printf("程序结束\n");
			break;
		default:
			printf("您的输入有误,请重新输入\n\n");
			break;					
		}
		if(day == 0)
		{
			break;
		}
		
	}	

}

?这个就是当输入0的时候跳出死循环,我的想法是在switch后面做一个判断,是否输入为0,如果为0就跳出

14.??输入从周一至周五每天的学习时间(以小时为单位),并计算每日平均学习时间。输出效果如下:

#include<stdio.h>

int main()
{
	float ave = 0;
	float sum = 0;
	float time = 0; 
	int i;
	for(i = 1; i <= 5; i++)
	{
		printf("请输入周%d的学习时间:", i);
		scanf("%f", &time);
		sum += time;
	}
	ave = sum / 5;
	printf("每日平均学习时间是%.2f小时", ave);
	
	return 0;
		
 } 

?用for循环来控制输入的天数减少代码量,将每次输入的时间累加,在平均的出想要的答案

?要想学的好,平均学习时间要高啊!

15.??键盘录入一个数,请判断它数能被几个9整除?。如81就可以被9个9整除

#include<stdio.h>

int main()
{
	int num;
	int count = 0;
	int i;
	printf("请输入一个数:\n");
	scanf("%d", &num);
	if(num % 9 == 0)
	{
		for(i = 1; i <= num; i++)
	{
		if(i % 9 == 0)
		{
			count++;
		}
	}
		printf("可以被%d个9整除", count);
	}
	else
	{
		printf("不能被9整除");
	}
	
	
//	if(num % 9 == 0)
//	{
//		printf("可以被%d个9整除", num / 9);
//	}
//	else
//	{
//		printf("不能被9整除");
//	}
	
	return 0;
}

看代码也能看到本来很简单的问题,故意用for循环来写的,不过最终也能解决问题

16.??计算顾客比例

#include<stdio.h>

int main()
{
	float sum_up = 0;
	float sum_down = 0;
	float age = 0; 
	int i;
	for(i = 1; i <= 10; i++)
	{
		printf("请输入第%d位顾客年龄:", i);
		scanf("%f", &age);
		if(age >= 30.0)
		{
			sum_up++;
		}
		else
		{
			sum_down++;
	}

}
	printf("30岁以下的比例是%.0f%%\n",  (sum_down / 10) * 100);
	printf("30岁以上的比例是%.0f%%",  (sum_up / 10) * 100);
}

?这里就是用for循环来控制要输入第几个顾客年龄,如果年龄大于30用sum_up来累加,年龄小于30用sum_down来累加,最后算出比例

?17.??用户登录验证,验证次数最多3次

#include<stdio.h>

int main()
{
	int count = 123;
	int password = 123;
	
	int c, p, i;
	for(i = 3; i >= 1; i--)
	{
		printf("请输入用户名:");
		scanf("%d", &c);
		printf("请输入密码:");
		scanf("%d", &p);
		if(c == count && p == password)
		{
			break;
		}
		printf("输入错误!您还有%d次机会\n\n\n", i - 1); 
	}
		if(i <= 3 && i > 0)
		{
			printf("登录成功"); 
		}
		else
		{
			printf("对不起,您3次均输入错误"); 	
		}
	
	
	
	return 0;
}

?这个在for循环中加了个if判断,如果在输入途中输对了,可以跳出for循环,再对i进行判断,0<i<=3的时候,输出登录成功,其他的就是输入错误

18.??输出加法表

#include<stdio.h>

int main()
{
	int i, j, N;
	printf("请输入您想输出的加法个数:\n");
	scanf("%d", &N);
	for(i = 0; i <= N; i++)
	{
		printf("%d	+	%d	=	%d\n", i, (N-i), N);
	}
	return 0;
}

?

?19.??用户玩游戏,每次玩5局

? ? ? ? (1)不足五局不能晋级

? ? ? ? (2)在五局游戏中,如果80%达到80分以上,为一级,如果 60%达到80分以上为二级,否则不能晋级

#include<stdio.h>

int main()
{
	int i;
	int score;
	char q;
	int up = 0;
	for(i = 1; i <= 5; i++)
	{
		printf("您正在玩第%d局,成绩为:", i);
		scanf("%d", &score);
		 if(i == 5)
		{
			printf("游戏结束");
			break;
		}
		printf("继续玩下一局吗?(y/n)");
		getchar();
		scanf("%c", &q);
		if(q == 'y')
		{
		
			continue;
		} 
		else if(q == 'n')
		{
			printf("您已经中途退出游戏\n");
			break;
		}
		
		printf("进入下一局\n");
		
		if(score > 80)
		{
			up++;
		}
	}
	if(up >= 4)
	{
		printf("恭喜!您是一级玩家!"); 
	}
	else if(up >= 3)
	{
		printf("恭喜!差一点您就可以成为一级玩家了!");
	}
	else
	{
		printf("对不起,您未能晋级,继续加油啊");
	}
}

?这道题综合了前几道题的思路,虽然长,但不难

20.? 猜数字

?

?

?没学过随机数,在网上搜了一下就很容易的解决了

#include<stdio.h>
#include<stdlib.h>


int main()
{
	int num;
	int a = rand() % 100;
	printf("请您猜一个1~100的数字:\n");
	
	while(1)
	{
		scanf("%d", &num);
		if(num > a)
		{
			printf("您猜的数字大了,请重新输入:\n");
		}
		else if(num < a)
		{
			printf("您猜的数字小了,请重新输入:\n");
		}
		else
		{
			printf("恭喜你猜对了!");
			break;
		 } 
		
	}
	
	
	
	
	return 0;
}

?在头文件处

#include<stdlib.h>
?

在函数处

int a = rand() % 100;

就可以生成一个100以内的随机数了

总结:

今天练了很多题还是巩固了基础知识,也学到了一些思路以及想法,这些都是很宝贵的经验,以后肯定能用到

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 18:45:50  更:2022-08-19 18:46:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 23:05:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码