基本数据类型和字符类型的转换

基本数据类型和字符类型的转换

介绍:将基本数据类型和字符类型的转换(即char数组)之间的转换。

sprintf函数的用法

(1)头文件 <stdlib.h>
(2)sprintf 和平时我们常用的 printf 函数的功能很相似 。sprintf 函数打印到字符串中,而 printf 函数打印输出到屏幕上。sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用广泛。

基本数据类型转换成字符串类型(即char数组)。

#include<stdio.h>

void main(){
	char str1[20],str2[20],str3[20];//定义字符数组,即字符串
	int a = 20984,b = 48090;
	double d1 = 14.309948;
	//sprintf 是一个系统函数,可以将结果存放在字符串中
	sprintf(str1,"%d%d",a,b);//将 a,b 这2个整数放在str1中 
	sprintf(str2,"%.2f",d1);
	sprintf(str3,"%8.2f",d1);//保存8位数,小数占2位,不足8位前面补相应空格
	printf("str1=%s str2=%s str3=%s",str1,str2,str3);
}

在这里插入图片描述

将字符串转化成基本数据类型

通过<stdio.h>的函数调用 atoi (转换成整数)和 atof(转换成小数)

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

void main(){
	//字符数组
	char str1[10]="123456";
	char str2[10]="12.67423";
	char str3[10]="ab";
	char str4[10]="111";
	
	//atoi 转换成整数
	int num1 = atoi(str1);
	int num2 = atoi(str4);
	
	//atof 转换成小数
	double num3 = atof(str2);
	
	char num4 = str3[0];//表示取 str3 的第一个字符 a
	printf("num1=%d \nnum2=%d \nnum3=%f \nnum4=%c \n",num1,num2,num3,num4);
} 

在这里插入图片描述

注意事项

**(1)在将char 数组类型转成基本数据类型时,要确保能够转成有效的数据,比如我们可以把"123",转成一个整数,但是不能把"hello”转成一个整数。
(2)如果格式不正确,会默认转成0或者0.0。(注意软件不会报错)
**
案例

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

void main(){
	char str3[10]="ab";

	//假设我把字符 a 改成整形,因为格式不对,会输出 0 
	int num4 = str3[0];//取 str3 的第一个字符 
	char num5 = str3[0];
	printf("num4=%d  num5=%c",num4,num5);
} 

在这里插入图片描述

函数例题

1.函数可以没有返回值案例,编写一个函数,从终端输入一个整数打印出对应的金子塔。

打印实心

#include<stdio.h>

void jzt(int m){
	int i,j,k;
	for(i=1;i<=m;i++){//控制层数 
		for(j=1;j<=m-i;j++){//打印前面的空格 
			printf(" ");
		}
		for(j=1;j<=2*i-1;j++){
				printf("*");
		}
		printf("\n");//一次循环后换行 
	}
}
void main(){
	int n=0;
	scanf("%d",&n);
	jzt(n);
}

在这里插入图片描述

打印空心

#include<stdio.h>

void jzt(int m){
	int i,j,k;
	for(i=1;i<=m;i++){//控制层数 
		for(k=1;k<=m-i;k++){//打印前面的空格 
			printf(" ");
		}
		for(j=1;j<=2*i-1;j++){
			if(j==1 || j==2*i-1 || i==m){//第一层和最后一层全打,中间就打印首尾 
				printf("*");
			}
			else{
				printf(" ");//打印中间的空格 
			}
		}
		printf("\n");//一次循环后换行 
	}
}

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

在这里插入图片描述

2.编写一个函数,从终端输入一个整数(1—9),打印出对应的乘法表。

#include<stdio.h>

void cfb(int n){
	int i,j;
	for(i=1;i<=n;i++){
		for(j=1;j<=i;j++){
			int sum = i*j;
			printf("%d * %d = %d  ",i,j,sum);
		}
		printf("\n");
	}
}
void main(){
	int m;
	scanf("%d",&m);
	cfb(m);
}

在这里插入图片描述

3.编写函数,对给定的一个二维数组(3×3)转置。

在这里插入图片描述

#include<stdio.h>

void change(int a[3][3]) {
	int i, j, temp;
	for(i=0; i<3; i++) {
		for(j=0; j<i; j++) { //这里是j<i而不是j<3,如果是j<3的话,那么有的值就会换两次,即没变;
		    //数据互换 
			temp=a[i][j];
			a[i][j]=a[j][i];
			a[j][i]=temp;
		}
	}
}
void main() {
	int a[3][3];//定义3行3列数组 
	int i, j;
	for(i=0; i<3; i++) {
		for(j=0 ; j<3 ; j++) {
			scanf("%d",&a[i][j]);
		}
	}
	change (a);//当发生 change 事件时运行的函数
	printf("转换后:\n"); //这里写转置后,可能更好
	for(i=0; i<3; i++) {
		for(j=0; j<3; j++) {
			printf("%d ",a[i][j]);
		}
		printf("\n");
	}
}

在这里插入图片描述
change () 函数触发 change 事件,或规定当发生 change 事件时运行的函数。
注释: 当用于 select 元素时,change 事件会在选择某个选项时发生。 当用于 text field 或 text area 时,该事件会在元素失去焦点时发生。 触发被选元素的 change 事件。 规定当被选元素的 change 事件发生时运行的函数。

4.定义函数,实现求两个double数字的最大值,并返回。

传统函数

#include<stdio.h>

void getMax(double m,double n){
	double sum = m -n;
	if(sum>0){
		printf("最大值为:%lf",m);
	}
	else if(sum<0){
		printf("最大值为:%lf",n);
	} 
	else{
		printf("一样大!!!"); 
	}
}
void main(){
	double m,n;
	scanf("%lf%lf",&m,&n);
	getMax(m,n);
}

在这里插入图片描述
三元运算符

#include<stdio.h>

double getMax(double a,double b){
	return a>b ? a:b;
}

void main(){
	double m,n;
	scanf("%lf%lf",&m,&n);
	double d1 = getMax(m,n);
	printf("最大值为:%f",d1);
}

在这里插入图片描述

5.定义函数,求出三个int类型数的和,并返回。

#include<stdio.h>

int Sum(int a,int b,int c){
	int sum;
	return sum = a + b + c;
}

void main(){
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	printf("和为:%d",Sum(a,b,c));
} 

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值