C语言-基础知识练习习题2

目录

第二章 顺序结构程序设计练习题

基础部分

提高部分

单号参考答案

2.5 提高部分(补充知识点)


第二章 顺序结构程序设计练习题

(单号习题提供参考答案,双号习题与前一个单号习题知识点基本一致,如遇不会,可发在评论区,大家互助,博主看到也会第一时间回复)

基础部分

1、编写程序输出sin30°+12.56^{\frac{1}{2}}的值(要求:不使用变量,此处12.56^{\frac{1}{2}}即根号下12.56)。

2、编写程序输出12.5*3.4的值(要求:不使用变量)。

3、编写程序,从键盘输入两个数字字符并分别存放在字符型变量a和b中,要求通过程序将与这两个字符对应的数字相加后输出,例如,输入字符型数字7和5,输出的则是整型数12(提示:通过“数字字符-‘0’”得到对应数字)。

4、编写程序,从键盘输入两个字符分别存放在变量x和y中,要求通过程序交换它们中的值。

提高部分

5、下面程序段的输出结果是         

float a=123.456;

printf("|%7.2f|,%-7.0f",a,a);

6、已有定义“int a=0;double b=0;char c='\0';”和语句“scanf("%d%lf%c",&a,&b,&c);”,若通过键盘给变量a、b、c分别赋值12、3.4和字符A,其正确的输入形式为         

7、编写程序,要求程序运行时的执行过程为:输出以下图形:

       @

@@$@@

       @

然后暂停运行;按任意键继续运行,再输出以下图形:

         😀

😀😀❤😀😀

         😀

然后暂停运行;按任意键继续运行,输出“interesting”。

8、编写程序,要求程序运行时的执行过程为:输出10与20之和,然后暂停运行;按任意键继续运行,再输出10与20之商,然后暂停运行;再按任意键继续运行,输出“The end”。

(单号习题提供参考答案,双号习题与前一个单号习题知识点基本一致,如遇不会,可发在评论区,大家互助,博主看到也会第一时间回复)

单号参考答案

基础部分

1、

#include<stdio.h>
#include<math.h>
int main(void)
{
	printf("%lf\n", (sin(30 * 3.14159 / 180) + sqrt(12.56)));
	return 0;
}

3、

#include<stdio.h>
int main(void)
{
	char a = '\0', b = '\0';
	int sum = 0;
	printf("Input a,b:\n");
	scanf("%c%c", &a, &b);
	sum = (a - '0') + (b - '0');
	printf("%c+%c=%d\n", a, b, sum);
}

注意:此处scanf输入时要注意两个数字之间不要有空格,否则输出的值是错误的,例:想输入字符型数字2和3,即23[回车]。不懂的可以看下我这篇博客对scanf函数的介绍(表2.1)。C语言程序设计-顺序结构、分支语句、循环结构、赋值语句、格式输入输出函数(scanf、printf)、字符输入输出函数(getchar、putchar)

提高部分

5、|[空格]123.46|,123[空格][空格][空格][空格]

7、

#include<stdio.h>
#include<conio.h>
int main()
{
	printf("  %c\n", '@');
	printf("%c%c%c%c%c\n", '@','@','$','@','@');
	printf("  %c\n", '@');
	getch();
	printf("  %c\n",'\1');
	printf("%c%C%C%C%C\n", '\1','\1','\3','\1','\1');
	printf("  %c\n", '\1');
	getch();
	printf("interesting\n");
	return 0;
}

给大家补充一些知识点。

2.5 提高部分

【例2.7】编写程序,用printf函数按指定宽度格式输出整型数据。

表2.3 按宽度输出整型数据

 

说明:

1)当使用%d格式说明符时,输出宽度是数据本身的宽度

2)可在%与d之间插入一个整数指定输出的宽度。如果指定的输出宽度比数据的实际宽度大,则用空格填补。当该整数大于(或小于)0时,在输出数据左(或右)边补空格。如果指定的输出宽度比数据的实际宽度小,则将数据完整输出。因此在给定输出宽度之前,应先估计需处理的数据宽度,否则指定输出宽度将失去意义。

        对于%f,%e,%c和%s等格式说明符,也可以指定输出宽度。

【例2.8】编写程序,用printf函数按指定输出宽度格式输出实型数据。

#include<stdio.h>
int main()
{
	printf("**%f**", 100.567);   //整数部分原值输出,小数点后输出6位
	printf("**%12f**", 100.567);  //共输出12位,左边补两个空格(右对齐)
	printf("**%-12f**\n", 100.567);  //共输出12位,右边补两个空格(左对齐)
	printf("**%-6.2f**", 1.567);  //共输出6位,小数点后输出2位,左对齐
	printf("**%6.2f**", 1.567);  //共输出6位,小数点后输出2位,右对齐
	printf("**%6.0f**", 1.567); //共输出6位,小数部分不输出
	printf("**%.2f**", 1.567);  //整数部分原值输出,小数点后输出两位
}

运行结果:

**100.567000****  100.567000****100.567000  **
**1.57  ****  1.57****     2****1.57**

程序说明:

1)用%f格式说明符输出时,按原数输出,但小数点后输出6位。如果输出项的小数点位不到6位,则用0填补。用%12f格式说明符输出时,除了遵循%f规定外,输出还保证占12个字符位(含小数点位)。如果输出项不到12位,左边补空格。用%-12f格式说明符输出时,如果输出项不到12位,右边补空格。

2)用%-6.2f(或%6.2f)格式说明符表示按左(或右)对齐方式输出,并指定输出总宽度为6(含小数点位),小数点后输出2位。用%6.0f格式说明符指定输出宽度为6,但不输出小数点后的数据。

3)用%.2格式说明符时,整数部分原值输出,小数点后输出2位。

4)当输出数据的宽度大于指定宽度时,整数部分按原样输出,但小数部分要按上述规则处理。

        当需要将数据按表格形式输出时,通常使用指定宽度的方法。

【例2.9】编写程序,在scanf函数中指定输入数据的宽度。

#include<stdio.h>
int main()
{
	int a = 0;
	scanf("a=%3d", &a); //3表示最大输入长度
	printf("a=%d\n", a);
	return 0;
}

输入说明见表2.4

表2.4 按宽度输入整型数据

 程序说明:

1)可以在scanf函数的格式说明符前,用一个整数指定输入数据的最大宽度,但对实型数不可以指定数据宽度

2)由于“scanf("a=%3d",&a);”中的“a=”只是要求用户输入数据时先输入“a=”,再输入数据,因此企图通过scanf函数给用户提示信息是办不到的。

【例2.10】编写程序,从键盘输入3个数据12、A、34,分别存放在a、b、c中。

#include<stdio.h>
int main()
{
	int a = 0, c = 0;
	char b = '\0';
	printf("Enter a,b,c:");   //调用scanf之前,给用户提示信息
	scanf("%d%c%d", &a, &b, &c);   //12A34<回车>或12A[空格]34<回车>
	printf("%d,%c,%d\n", a, b, c);
	return 0;
}

运行结果:

Enter a,b,c:12A34
12,A,34

程序说明:

1)输入提示信息必须在调用scanf函数之前给出,否则达不到效果。

2)输入可按“12A34<回车>”或“12A[空格]34<回车>形式,但不能用“12[空格]A34<回车>”形式,因为系统把空格当成一个字符赋给变量b,而且将字符A赋给变量c,但c是整型变量不能接收字符A,因此b和c都将得不到正确的值,而分别得到“[空格]”和“1550”。

        C语言除了提供前面介绍的输入输出函数外,还提供了其他输入输出函数。下面再介绍两个输入输出函数。

【例2.11】编写一个使用字符输入函数getch和getche的程序。

#include<stdio.h>
#include<conio.h>   //使用getch或getche时加此命令行
int main()
{
	char ch = '\0';
	ch = getche();   //输入的字符显示在屏幕
	putchar(ch);
	ch = getch();    //输入的字符不显示在屏幕
	putchar(ch);
	putchar('\n');
	return 0;
}

运行结果:

aab

程序说明:

1)运行结果中第一个a是getche函数输入的字符,第二个a和b是输出的字符,用getch函数输入的字符b不显示在屏幕上getche和getch是单个字符的输入函数,在程序中使用这些函数时,在程序的开头要加上“#include<conio.h>”。

2)getchar、getche和getch函数的比较

  • 调用这三个函数时,都要求用户从键盘输入一个字符;
  • 调用getchar函数时,用户输入的字符显示在屏幕,而且等用户输入回车符后才运行。这样用户可以先判断输入内容是否正确,当输入正确时用回车符命令继续执行,即其执行完全由用户控制;
  • 调用getche函数时,用户输入的字符也显示在屏幕上,但不等用户输入回车符就运行;
  • 调用getch函数时,用户输入的字符不显示在屏幕上,而且不等待用户输入回车符就运行;

由于getche和getch函数不等待用户输入回车符,在某些场合很有用。

【例2.12】编写一个getch函数的应用程序。

#include<stdio.h>
#include<conio.h>
int main()
{
	printf("Let's study the C language.\n");
	printf("Press any key...\n");
	getch();
	printf("Study hard.\n");
	return 0;
}

运行结果:

Let's study the C language.
Press any key...
Study hard.

程序说明:

运行程序时,先显示“Let's study the C language.”和“Press any key...”后,系统等待用户输入一个字符。按任意键继续显示“Study hard.”。如果要显示的内容多,利用这种方法可以分屏显示,便于观察运行结果。

 


Open your mind to the possibilities.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值