|
习题 4
4.1
分析并写出下面程序的运行结果。
(1)
#include <stdio.h>
int main(void)
{
char c1 = &#39;a&#39;,c2 = &#39;b&#39;,c3 = &#39;c&#39;;
printf (&#34;a%cb%cc\n&#34;,c1,c2,c3);
return 0;
}
(2)
#include <stdio.h>
int main(void)
{
int a = 12,b=15;
printf (&#34;a = %d%%,b = %d%%\n&#34;,a,b);
return 0;
}
(3)假设程序运行时输入123456。
#incldue <stdio.h>
int main(void)
{
int a,b;
scanf (&#34;%2d%*2s%2d&#34;,&a,&b);
printf (&#34;%d,%d\n&#34;,a,b);
return 0;
}解:
(1)
aabbc(2)
%%为输出一个% 。
a = 12%,b = 15%(3)
%2d为读取两位并按int存储,%*2s为忽略两位(按字符计算)。
12,564.2
分析下面程序,请指出错误的原因和程序错在哪里,并改正错误。
#include <stdio.h>
int main(void)
{
long a,b;
float x,y;
scanf (&#34;%d,%d\n&#34;,a,b);
scanf (&#34;%5.2f,%5.2f\n&#34;x,y);
printf (&#34;a = %d,b = %d\n&#34;,a,b);
printf (&#34;x = %d,y = %d\n&#34;,x,y);
return 0;
}解:
#include <stdio.h>
int main(void)
{
long a,b;
float x,y;
scanf (&#34;%d,%d\n&#34;,&a,&b); //scanf函数的参数地址表中是地址
scanf (&#34;%5.2f,%5.2f\n&#34;&x,&y); //scanf函数的参数地址表中是地址
printf (&#34;a = %ld,b = %ld\n&#34;,a,b); //long型变量的格式转换说明为%ld
printf (&#34;x = %f,y = %f\n&#34;,x,y); //float型变量的格式转换说明为%f
return 0;
}4.4
填空题
(1)要使下面程序在屏幕上显示1,2,34,则从键盘输入的数据格式应为___________。
#include <stdio.h>
int main(void)
{
char a,b;
int c;
scanf (&#34;%c%c%d&#34;,&a,&b,&c);
printf (&#34;%c,%c,%d\n&#34;,a,b,c);
return 0;
}
(2)在与上面程序的键盘输入相同的情况下,若将程序中的第7条语句修改为
printf (&#34;%-2c%-2c%d\n&#34;,a,b,c);
则程序的屏幕输出为________________。
(3)要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕在屏幕上显示的结果也为1,2,34,则应将程序中的第6条语 句修改为__________________。
(4)在(3)的程序基础上,程序仍输入1,2,34,若将程序中的第7条语句修改为
pritnf (&#34;\&#39;%c\&#39;,\&#39;%c\&#39;,%d\n&#34;,a,b,c);
则程序的屏幕输出为______________。
(5)要使上面程序无论用下面那种格式输入数据,程序在屏幕上的而输出结果都为1,2,34,则应该将程序中的第6条语句修改为
________________ 。
第1种输入方式:1,2,34 (以逗号作为分隔符)
第2中输入方式:1 2 34 (以空格作为分隔符)
第3中输入方式:1 2 34 (以Tab键作为分隔符)
第4种输入方式:1
2
34 (以回车符作为分隔符 )解:
(1)
格式转换说明符%c每次读取一个字符 。
故应该输入:
1234(2)
%-2c表示输出一个字符,这个字符占两个字符宽,左对齐,用空格补位 。
1 2 34(3)
printf (&#34;%c,%c,%d&#34;);(4)
\&#39; 表示输出一个 &#39; 。
&#39;1&#39;,&#39;2&#39;,34(5)
可用%*c忽略一个字符 。
scanf (&#34;%c%*c%c%*c%d&#34;,&a,&b,&c);4.4
参考例4.2程序,编程从键盘输入一个小写英文字母,将其转换为大写英文字母,将转换后的大写英文字母及其十进制的ASCII码值显示到屏幕上。解:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char a;
while (a < 97 || a > 122) //判断输入字母是否为小写字母
{
printf (&#34;Pleaes enter a lowercase : &#34;);
scanf (&#34;%c&#34;,&a);
}
a = a - 32;
printf (&#34;%c %d&#34;,a,a);
return 0;
} |
|