C语言输入输专项训练chenWord文档下载推荐.docx
《C语言输入输专项训练chenWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言输入输专项训练chenWord文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
1a=3,b=7,x=,y=,A,a↙
Pressanykeytocontinue
2a=3b=7x=y=Aa↙
3a=3b=7Aa↙
4a=3b=7↙
537↙
6a=3b=7↙
↙
A↙
a↙
⑦a=3b=7↙
Aa↙
⑧a=3b=7↙
原因:
“,”号、enter键都会被当做值给输入进去。
2.字符输入
#include<
main()
inta;
charb;
floatc;
printf("
Pleaseinputaninteger:
"
);
scanf("
%d"
&
a);
integer:
%d\n"
a);
Pleaseinputacharacter:
%c"
character:
%c\n"
b);
Pleaseinputafloatnumber:
%f"
c);
float:
%f\n"
c);
}
如果把scanf("
改为scanf("
%1s"
观察运行结果
发
3.验证格式输入
voidmain()
inta,b;
Pleaseinputaandb:
%2d%*2d%2d"
a,&
a=%d,b=%d,a+b=%d\n"
a,b,a+b);
(1)输入123456,验证上述实验结果
(2)输入12345a,验证上述实验结果
4.格式输入与输出
inta=-1;
printf("
%d,%o,%x"
,a,a,a);
%8o,%12x"
,a,a);
验证程序分析实验结果
5.无符号数据的输出
#include<
unsignedinta=65535;
intb=-2;
printf(“a=%d,%o,%x,%u\n”,a,a,a,a);
printf(“b=%d,%o,%x,%u\n”,b,b,b,b);
6.字符串的输出
printf(“%3s,%,%.4s,%\n”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);
%3s,格式输出字符串,右对齐,超出3个长度的,就全部输出;
%,输出字符串占7个位置,有对齐,左补空格,输出2个字符;
%.4s,仅输出4个字符,占位4个位置,右对齐;
%:
输出3个字符,占位5个位置,左对齐右补空格.
7.输出实数时的有效位数
{floatx,y;
3 x=;
y=;
prinft(“%f”,x+y);
}
8.输出双精度数时的有效位数
{doublex,y;
printf(“%f”,x+y);
}
9.输出实数时指定小数位数
{
floatf=;
printf(“%f%10f%%.2f%\n”,f,f,f,f,f);
10.字符输出
intmain(void){
intc;
for(;
;
){
c=getchar();
if(c==EOF)
break;
if((c>
=’a’)&
&
(c<
=’z’))
c+=’A’-’a’;
putchar(c);
}
return0;
(1)对比下列五种代码,将4-7、10行代码替换如下,程序应该如何修改才能保持输出结果相同?
for(c=getchar();
c!
=EOF;
c=getchar())
(2)将4-7、10行代码替换如下,程序应该如何修改才能保持输出结果相同?
while((c=getchar())!
=EOF)putchar(c);
(3)将4-7、10行代码替换如下,程序应该如何修改才能保持输出结果相同?
c=getchar();
while(c!
=EOF)
{putchar(c);
(4)如果用ASCII码修改if((c>
=’z’));
这两句代码,应该如何修改?
(5)利用ctype函数修改上面代码,验证程序结果
if(c==EOF)break;
if(islower(c))
c=toupper(c);
11.转义符输出
voidmain()
abc\tde\rf\tg\n"
printf(“h\ti\b\bjk\n”);
12.字符串输入输出,连续输入三个单词,每个单词以空格分隔
charstr1[5],str2[5],str3[5];
scanf(”%s%s%s”,str1,str2,str3);
%s%s%s"
str1,str2,str3);
(二)编程题
1.编写printf函数调用下列格式来显示float型变量x:
a)指数表示形式:
最小为8的字段宽度内左对齐;
小数点后保留1位数字.
b)指数表示形式:
最小为10的字段宽度内右对齐;
小数点后保留6位数字
c)定点十进制表示形式:
小数点后保留3位数字
d)定点十进制表示形式:
最小为6的字段宽度内右对齐;
小数点后无数字.
#include"
{floatx;
x=;
%\n"
x,x,x);
/
x);
2.设计程序使得用户可以以任意字符(回车、空格、制表符、逗号、其它)作为分隔符进行数据的输入
{inta,b;
pleaseinputadate:
%d%*c%d"
&
%d\t%d"
a,b);
3.编写一个程序,接收用户录入的日期信息并且将其显示出来.其中,输入日期的形式为月/日/年(mm/dd/yy),输出日期的形式为年月日(yymmdd)
{intyear,month,day;
pleaseinputthedate:
month,day,year\n"
%d%d%d"
month,&
day,&
year);
%d/%d/%d\n"
year,month,day);
4.有3个字符串,要求找出其中最大者
main()
{charstr1[20],str2[20];
pleaseinputthestr1andstr2:
\n"
gets(str1);
gets(str2);
if(strcmp(str1,str2)>
0)
printf("
str1>
str2"
elseprintf("
str1<
returna;
{charstr1[20],str2[20],str3[20];
pleaseinputthestr1,str2andstr3:
gets(str3);
a=strcmp(str1,str2);
if(a>
if(strcmp(str1,str3)>
0)
str2,str1>
str3\nstr1ismaxstring\n"
else
printf("
str2,str1<
str3\nstr3ismaxstring\n"
else
if(str2,str3>
0)printf("
str2>
1,str2>
str3,\nstr2ismaxstring\n"
elseprintf("
str1,str3>
str2\nstr3ismaxstring\n"
5.编写一个程序,对用户录入的产品信息进行格式化,程序运行后需要有以下会话:
Enteritemnumber:
583
Enterunitprice:
Enterpurchasedate(mm/dd/yy):
10/24/95
ItemUnitPricePurchaseDate
583$10/24/95
其中,数字项和日期项左对齐,单位价格右对齐,美元数量最大取值为
{intnum_ber;
intmm,dd,yy;
floatUnitprice;
请输入itemnum_ber:
number=583\t"
num_ber);
请输入Unitprice:
Unitprice=\t"
Unitprice);
请输入日期mm/dd/yy=10/24/95"
%d/%d/%d\t"
mm,&
dd,&
yy);
Itemnumber\tUnitPrice\tPurchaseDate"
%4d\t%f\t%3d/%3d/%3d,num_ber,UnitPrice,mm,dd,yy"
6.计算若干整数的值,要求输入有若干行,每行第一个整数n,代表后面还有n个数据,如果n=0代表输入结束。
输出:
要求对于每一行都要在相应的行输出和。
{intm,n,i,j,sum=0;
inta[5][5];
m);
if(m==0)
ê
?
è
á
else
for(i=0;
i<
m;
i++)
for(j=0;
j<
j++)
scanf("
a[i][j]);
a[0][0]=m;
for(i=0;
{for(j=0;
{printf("
%d\t"
a[i][j]);
{sum=sum+a[i][j];
sum=%d\n"
sum);
sum=0;
7.编程实现如下程序,输入Bba=7b=6并输出,每个数据以逗号分隔,每个数据宽度为10,浮点型数据小数后保留2位。
8.有如下结构体,编程实现n(n<
=10)名同学的数据输入与输出,n为通过键盘输入,成绩输出格式为左对齐,总长度为6,保留小数点后2位,要求当所有数据输入后再输出。
structstudent
charname[20];
charsex;
longnum;
floatscore[3];
};
9.通过键盘不断输入字符,当输入到?
号时停止输入将输入的字符转换为整型输出到屏幕上,数字之间以空格分隔,要求每输出5个字符换一次行。
10.实现一个密码程序,输出到屏幕上的字符显示为*,回车后停止输入密码,并将用户键入密码输出到屏幕上,并与已知密码进行比较,如果相同,则显示密码正确,不同则显示密码错误提示。
charstr1[5],str2[5]="
1234"
;
ü
\t"
if(strcmp(str1,str2)==0)
yè
·
′í
ó