编程从零基础到进阶(更新中)

题目描述
依旧是输入三个整数,要求按照占8个字符的宽度,并且靠左对齐输出
输入格式
一行三个整数,空格分开
输出格式
输出它们按格式输出的效果,占一行
样例输入
123456789 -1 10
样例输出
123456789-1 10

#include "stdio.h"

int main(){
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    printf("%-8d%-8d%-8d",a,b,c);
    return 0;
}

printf函数%8d表示输出的整数至少占用8个字符,%-8d则表示左对齐。

题目描述
输入一个单精度浮点数,输出保留三位小数输出
输入格式
一个单精度浮点数
输出格式
对应的三位小数的数字
样例输入
3.14159
样例输出
3.142

#include <stdio.h>

int main(){
    float a;
    scanf("%f",&a);
    printf("%.3f",a);
    return 0;
}

printf函数%.3f表示输出浮点数时保留三位小数

题目描述
分别定义bool,char类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。
输入格式

输出格式
一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。
样例输入

样例输出

#include<stdio.h>
#include <stdbool.h>
int main()
{
    bool a;
    char b;
    printf("%d %d",sizeof(a),sizeof(b));
    return 0;
}

记得include <stdbool.h>

在这里插入图片描述

#include <stdio.h>


int main(){
	int a,b;
	double c;
	scanf("%d %d",&a,&b);
	c=(double)b/a;
	c=c*100;
	printf("%.3f%%",c);
	return 0;
}

printf(“%%”):输出百分号%本身。

在这里插入图片描述

#include <stdio.h>


int main(){
	double r;
	while(scanf("%lf",&r)!=EOF)
	{
		printf("%.3lf\n",4.0/3*3.1415926*r*r*r);
	}

	return 0;
}

在每次循环开始时,while语句会检查scanf(“%lf”, &r) != EOF这个条件是否为真。scanf函数尝试从标准输入读取一个double类型的值并将其存储在r中。
如果输入成功,scanf返回读取成功的项目数量,通常是1(因为我们只尝试读取一个double类型的数据)。
如果到达文件末尾或输入失败,scanf返回EOF(End Of File的预定义宏,在stdio.h中定义,通常等于-1)。

在这里插入图片描述

#include <stdio.h>
#include <math.h>

int main(){
	int n;
	scanf("%d",&n);
	printf("%d",(int)pow(2,n));
	return 0;
}

对于pow函数,无论输入的base(底数)和exponent(指数)是什么类型,只要它们可以隐式转换为double,pow函数都将返回一个double类型的值。这意味着即使你传入的是int或者其他浮点数类型如float,pow函数也会将它们转换为double,并在计算后返回一个double类型的值。

在这里插入图片描述

#include <stdio.h>
#define LEAP_YEAR(y) {if((((y)%100==0)&&((y)%400==0))||((y)%100!=0)&&((y)%4==0))printf("L");else printf("N");}

int main(){
	int a;
	scanf("%d",&a);
	LEAP_YEAR(a);
	return 0;
}

在宏定义中,“()” 用于指定函数样宏的参数列表,而 “{}” 通常用于控制流语句(如 if, for, while 等)中的代码块,但在宏定义中,它们并没有特殊的含义,因为预处理器并不理解 C 语言的语法结构。

在这里插入图片描述

#include <stdio.h>

int main(){
	int n;
	scanf("%d",&n);
	int i;
	int sum=0;
	double ave;
	for(i=0;i<n;i++){
		int x;
		scanf("%d",&x);
		sum+=x;
	} 
	ave=(double)sum/n;
	printf("%.2lf",ave);
	return 0;
}

假设用户输入 3 并按下回车键,然后输入 1 2 3 再次按下回车键。在这种情况下:

  1. 第一个 scanf() 读取整数 3。
  2. 循环开始,第一个 scanf(“%d”, &x); 读取 1。
  3. 第二个 scanf(“%d”, &x); 读取 2。
  4. 第三个 scanf(“%d”, &x); 读取 3。
  5. 所有的 n 个整数都被读取完毕,循环结束。

在这里插入图片描述

#include <stdio.h>

int main(){
	int n,k,max;
	scanf("%d",&n);
	int a[100];
	for(k=0;k<n;k++){
		scanf("%d",&a[k]); 
	}
	max=a[0];
	for(k=0;k<n;k++){
		if(a[k]>=max){
			max=a[k];
		}
	}
	printf("%d",max);
	return 0;
}

  1. 部分初始化:如果你只初始化数组的一部分,未初始化的元素将被自动设置为零(对于数值类型)。
  2. 未初始化的数组的值分两种情况:(1)全局数组,也就是定义在main函数外面的数组,元素的默认值是全部为0的。(2)局部数组,定义在函数内部的数组,其值默认是随机的。

在这里插入图片描述

#include <stdio.h>

int main(){
	int n,k,t,x,y,z,s;
	int sum1=0;
	int sum2=0;
	int sum3=0;
	int sum=0;
	scanf("%d",&n);
	int a[17][3];
	for(k=0;k<n;k++){
		for(t=0;t<3;t++){
			scanf("%d",&a[k][t]);
		}
	}
	for(k=0;k<n;k++){
		sum1+=a[k][0];
	} 
	for(k=0;k<n;k++){
		sum2+=a[k][1];
	} 
	for(k=0;k<n;k++){
		sum3+=a[k][2];
	} 
	sum=sum1+sum2+sum3;
	printf("%d %d %d %d",sum1,sum2,sum3,sum);
	return 0;
}

  • 对于字符数组,通常可以直接使用数组名,因为scanf需要的是指向字符串开始的地址,而数组名本身就提供这个地址。
  • 对于非字符数组,每次都需要使用&来获取单个元素的地址,除非你正在使用某种指针或数组技巧,如通过指针算术来遍历数组。

动态数组
在C语言中,当我们书写小数时,默认的类型是 double 类型。这意味着如果你写了一个小数,如 0.001,它默认会被解释为 double 类型的值。如果你想要指定一个浮点数为 float 类型,你需要在数字后面加上 f 或 F 后缀。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值