C语言练习1.plus

这篇博客介绍了多个C语言编程练习题,包括迭代法求平方根、金字塔字符打印、数列分段、最小差值计算、数字排序、车牌限行规则判断、阶梯电价计费计算、角谷定理应用、气温波动最大值分析、折点计数、寻找最大整数以及字符大小写转换等。通过这些题目,读者可以加深对C语言编程的理解和运用。

C语言练习1.plus

迭代法求根(1)

题目:迭代法求根(1)

问题描述:
用迭代法求 ,求平方根的迭代公式为
在这里插入图片描述
要求前后两次求出的x的差的绝对值小于 。
输入说明:
输入浮点数a。
输出说明:
输出一个浮点数x,小数点后保留5位小数。
输入样例:
3
输出样例:
1.73205

#include<stdio.h>
#include<math.h>
int main(){
   
   
	double xn = 1, x, a;
	scanf("%lf", &a);
	do{
   
   
		x = xn;
		xn = (x+a/x)/2;	
	}while(fabs(x-xn) > 1E-5);
	printf("%.5lf", xn);
	return 0;
 } 

金字塔打印–字符使用练习

标题
金字塔打印

描述
输入一个要打印的字符和打印行数N(N≤10),使用函数tow()完成字符金字塔的打印。打印结果要求:1、打印输入的字符;2、逐行增加一个字符;3、每行均为中心对称分布;4、整体为中心对称分布;5、字符之间空一格空格,字符之前加空格。

输入说明
输入一个字符和打印行数N(N≤10)。

输出说明
格式输出:打印字符金字塔,每行增加一个,字符之间空一格,中心对称分布。

输入样例
a
4

输出样例

提示
注意打印和排布方式要求,使用子函数实现打印。

#include<stdio.h>

void tow(char c,int n);
int main()
{
   
   
	char c=0;
	int n;
	scanf("%c",&c);
	scanf("%d",&n);
	tow(c,n);
}

void tow(char c,int n)
{
   
   
	for(int i=1;i<=n;i++)
	{
   
   
		for(int j=1;j<=n-i;j++)
		{
   
   
			printf(" ",c);
		}
		for(int k=1;k<=i;k++)
		{
   
   
			printf("%c ",c);
		}
	printf("\n");
	}
}

数列分段

题目2:数列分段
问题描述
  给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?
输入格式
  输入的第一行包含一个整数n,表示数列中整数的个数。
  第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。
输出格式
  输出一个整数,表示给定的数列有多个段。
样例输入
8
8 8 8 0 12 12 8 0
样例输出
5
样例说明
  8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五段。
评测用例规模与约定
1 ≤ n ≤ 1000,0 ≤ ai ≤ 1000。

#include "stdio.h"
int main(){
   
   
	int n;
	scanf("%d",&n);
	int i,j,k;
	int a[n];
	for(i=0;i<n;i++){
   
   
		scanf("%d",&a[i]);
	}
	
	j=a[0];
	k=1;
	for(i=0;i<n;i++){
   
   
		if(j!=a[i]){
   
   
			j=a[i];
			k++;
		}
	}
	
	printf("%d",k);
	return 0;
}

最小差值

题目3:最小差值
问题描述
  给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。
输入格式
  输入第一行包含一个整数n。
  第二行包含n个正整数,相邻整数之间使用一个空格分隔。
输出格式
  输出一个整数,表示答案。
样例输入
5
1 5 4 8 20
样例输出
1
样例说明
  相差最小的两个数是5和4,它们之间的差值是1。
样例输入
5
9 3 6 1 3
样例输出
0
样例说明
  有两个相同的数3,它们之间的差值是0.
数据规模和约定
对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数。

#include<stdio.h>  
int main()  
{
   
     
    int i,j,n,a[10000],mix=10000,max;  
    scanf("%d",&n);  
    for(i=0;i<n;i++)  
        scanf("%d",&a[i]);  
    for(i=0;i<n;i++)  
        for(j=0;j<i;j++)  
    {
   
     
        if(a[i]-a[j]==0)  
        {
   
     
            mix=0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十兮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值