C语言自学日志4

2022/6/24-2022/6/29

题目

1. 字符输出函数putchar

1.1 说明

C语言的数据输出库函数有两大类——字符输出函数和格式输出函数,其说明都在标准输入/输出头文件里。putchar(字符量)括号中的字符量可以是字符变量,也可以是字符常量。

1.2 实例

c1和c2是两个字符类型的变量,程序和结果如下:

#include<stdio.h>
int main()
{
	char c1,c2; //定义两个字符变量
	c1='a'; //给字符变量c1赋值
	c2='b'; //给字符变量c2赋值
	putchar(c1); //输出字符a
	putchar(c2); //输出字符b
	printf("%c",c1);
	printf("%c",c2);
	putchar('\n'); //输出回车换行
	putchar(c1-32); //c1-32='a'-32=97-32=65,对应'A'
	putchar(c2-32);
	printf("%c",(c1-32));
	printf("%c",(c2-32));
	return 0;
}

在原代码基础上,我添加了printf输出函数,可以对比学习printf和putchar的格式。

输出结果
abab
ABAB

但是当字符较多时,这样输出字符是否有点麻烦?

2. 字符输出函数puts

2.1 说明

关于字符输出,puts函数更加方便,能一次输出一串字符,puts输出字符串时要遇到‘\0’也就是字符结束符才会停止。

2.2 实例

#include<stdio.h>
int main(void)
{
	char c[8];  //定义一个有8个元素的字符数组
	c[0]='a';
	c[1]='b';
	c[2]='\n';
	c[3]=c[0]-32;
	c[4]=c[1]-32;
	c[5]='\0';
	puts(c);
	return 0;
 } 

输出结果
ab
AB

和1.2例子的输出结果大同小异

3. 格式输出函数

3.1 说明

格式输出函数printf

调用形式printf(格式控制,参数1,…, 参数n
功能按照格式控制串所指定的格式,在标准输出设备上输出参数1至参数n的值,参数是表达式

3.2 输出格式说明符

格式控制串中,有说明输出数据类型的符号,称为格式说明符,掌握常用的格式说明就好啦。
|

格式说明符含义
%d以有符号十进制形式输出整型数
%o以无符号八进制形式输出整型数
%x以无符号十六进制形式输出整型数
%f以小数形式
%c输出字符
3.2.1 输出格式说明符实例

以十进制、八进制、十六进制及无符号数的形式查看-1的值

#include<stdio.h>
int main(void)
{
	int m=-1;
	printf("m: %d,%o,%x.%u\n",m,m,m,m);
	return 0;
} 

4. 转义字符的使用

4.1 说明

\t是转义字符,表示横向跳格,即跳到下一个输出区,一个输出区占8列

4.2 实例

通过格式输出函数printf(),查看转义字符的作用

#include<stdio.h>
int main(void) 
{
	char a,b,c;
	a='n';
	b='e';
	c='w';
	printf("%c%c%c\n",a,b,c);
	printf("%c\t%c\t%c\n",a,b,c);
	printf("%c\n%c\n%c\n",a,b,c);
	return 0;
}

程序结果
new
new
n
e
w
//这里用*代表空格

5. 字符输入函数getchar

5.1 说明

数据的输出有字符输出函数和格式输出函数,同样,C语言的数据输出也分为两大类,字符输入函数和格式输入函数,它们的说明都在头文件里面,stdio.h即为standard input and output.

5.2 字符输入实例1——用户密码的接收

若某银行系统限定用户输入的密码必须是6位,则相应的接收程序如下

#include<stdio.h>
int main(void)
{
	char c1,c2,c3,c4,c5,c6;
	c1=getchar();
	c2=getchar();
	c3=getchar();
	c4=getchar();
	c5=getchar();
	c6=getchar();
	return 0; 
 } 

5.3 字符输入实例2——大小写字符的转换

#include<stdio.h>
int main(void)
{
	char ch;
	ch=getchar();
	printf("%c %d\n",ch,ch);
	printf("%c %d\n\n",ch-32,ch-32);
	return 0;
 } 

输入:m
输出:m 109
M 77

#include<stdio.h>
int main(void)
{
	char ch;
	ch=getchar();
	printf("%c %d\n",ch,ch);
	printf("%c %d\n\n",ch+32,ch+32);
	return 0;
 } 

输入: M
输出: M 77
m 109

6. 字符串输入函数gets

6.1 说明

字符串输入库函数——函数gets,能一次接 收一串字符

6.2 实例

#include<stdio.h>
int main(void)
{
	char str1[60];
	gets(str1);
	printf("%s\n",str1);
	return 0;
 } 

输入: hello world!
输出: hello world!

7. 格式输入函数scanf

7.1 说明

调用形式scanf(格式控制串,地址参数1…,地址参数n);
功能按照“格式控制串指定的格式,从键盘输入数据,依次存放到对应的变量中去

7.2 格式输入函数实例1——教务网站的登录

布朗先生需要登录教务网站,把学生的考试成绩下载到系统里。登录需要输入用户名和密码,用户名ID学校规定是工资号码,密码必须是20以内的数字或字符

#include<stdio.h>
int main(void)
{
	int id;
	char password[20];
	printf("用户ID:");                 
	scanf("%d",&id);
	printf("密码是:"); 
	scanf("%s",password);
	printf("ID=%d\n",id) ;
	printf("密码=%s\n",password);
	return 0;
 } 

输入: 用户ID:2468
密码:abc123
输出:ID=2468
密码=abc123

8. 顺序结构

8.1 数据交换

定义两个整形变量,输入两个整数,交换这两个变量的值,输出变量值。

#include<stdio.h>
int main(void)
{
	int a,b,temp;
	printf("输入a,b:");
	scanf("%d,%d",&a,&b);
	printf("交换前:a=%d,b=%d\n",a,b);
	temp=a;
	a=b;
	b=temp;
	printf("交换后:a=%d,b=%d\n",a,b);
	return 0;
	
 } 

输入a,b:77,88
输出:交换前:a=77,b=88
交换后:a=88,b=77

8.2 成绩处理

从键盘输入4名学生的学号和英语考试成绩,打印这4个人的学号和成绩,最后输出四个人的英语平均成绩.
程序流程按照输入、求值、输出的顺序执行

#include<stdio.h>
int main(void) 
 {
 	int num1,num2,num3,num4;
 	float grade1,grade2,grade3,grade4;
 	float ave; 
 	printf("input 4 numbers:\n");
 	scanf("%d,%d,%d,%d",&num1,&num2,&num3,&num4);
 	printf("input 4 grades:\n");
 	scanf("%f,%f,%f,%f",&grade1,&grade2,&grade3,&grade4);
 	ave=(grade1+grade2+grade3+grade4)/4;
 	printf("%d:%f\n",num1,grade1);
 	printf("%d:%f\n",num2,grade2);
 	printf("%d:%f\n",num3,grade3);
 	printf("%d:%f\n",num4,grade4);
 	printf("average=%f\n",ave);
 	return 0; 
 	
 }

结果
input 4 numbers:
1,2,3,4
input 4 grades:
86,92,75,64
1: 86.000000
2: 92.000000
3: 75.000000
4: 64.000000
average=79.250000

9. 双分支选择结构

9.1 if

include<stdio.h>
int main(void)
{
	if(1>4)
	{
		printf("第一条语句\n");
		printf("第二条语句\n");
	}
	printf("第三条语句\n");
	return 0;
}

输出结果
第三条语句

9.2 if-else——价格竞猜游戏中的结果判断

在价格竞猜游戏中,在每次报价后主持人会有“高了”“低了”“对了”三种提示。设商品的实际价格为168元,竞猜者每次报价为value,写出结果判断的语句。

#include<stdio.h>
int main(void)
{
	int value;
	printf("报价为:");
	scanf("%d",&value);
	if(value>168)
	{
		printf("高了"); 
	}
	else
	{
		if(value<168)
		{
				printf("低了"); 
		}
		else
		{
		    	printf("对了"); 
		}
		
	}
	return 0;
 } 

9.3 if-else嵌套——求三个数中的最大值

#include<stdio.h>
int main(void)
{
	int a,b,c;
	int max;
	printf("请输入三个数:");
	scanf("%d %d %d",&a,&b,&c) ;
	if(a>b)
	{
		if(a>c)
		{
			max=a;
		}
		else
		{
			max=c;
		}
	}
	else
	{
		if(b>c)
		{
			max=b;
		}
		else
		{
			max=c;
		}
	}
	printf("max=%d\n",max);
	return 0;
 } 

当然了,这个题的写法还有很多,例如

#include<stdio.h> 
int main(void)
{
	int a,b,c,max;
	printf("请输入三个数:");
	scanf("%d,%d,%d",&a,&b,&c);
	max=a>b?a:b;
	max=max>c?max:c;
	printf("最大值是:%d",max);
	return 0;
}

10. 多分支选择结构

10.1 switch

switch语句
switch(表达式)
{
case 常量1:语句集A;[ break;]
case 常量2:语句集B;[ break;]

case 常量n:语句集N; [ break;]
default: 语句集N+1;
}

10.2 实例1——布朗先生的周记薄

#include<stdio.h>
int main(void)
{
	int a;
	printf("输入星期:");
	scanf("%d",&a);
	switch(a)
	{
		case 1:printf("周一例会\n"); break;
		case 2:printf("周二上课\n"); break;
		case 3:printf("周三讲座\n"); break;
		case 4:printf("周四办公\n"); break;
		case 5:printf("周五上课\n"); break;
		case 6:printf("周六研讨会\n");break;
		case 7:printf("周日郊游\n");  break;
		default:printf("输入错误\n"); break;
	}
	return 0;
 } 

输入:1
输出:周一例会

10.3 实例2——百分制转为五分制

输入百分制成绩score,转换成相应的五分制成绩grade并输出。

#include<stdio.h>
int main(void) 
{
	int score;
	printf("Please input score:");
	scanf("%d",&score);
	if(score>100&&score<110) score=110;
	switch(score/10)
	{
		case 10:
		case 9:printf("%d-----A\n",score);break;
		case 8:printf("%d-----B\n",score);break;
		case 7:printf("%d-----C\n",score);break;
		case 6:printf("%d-----D\n",score);break;
		case 5:
		case 4:
	    case 3:
	    case 2:
	    case 1:
	    case 0:printf("%d-----E\n",score);break;
	    default:printf("Input error\n");
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值