目录
2.5 提高部分(补充知识点)
第二章 顺序结构程序设计练习题
(单号习题提供参考答案,双号习题与前一个单号习题知识点基本一致,如遇不会,可发在评论区,大家互助,博主看到也会第一时间回复)
基础部分
1、编写程序输出sin30°+的值(要求:不使用变量,此处
即根号下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.