C语言输入输专项训练chen.docx
- 文档编号:7692077
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:11
- 大小:18.15KB
C语言输入输专项训练chen.docx
《C语言输入输专项训练chen.docx》由会员分享,可在线阅读,更多相关《C语言输入输专项训练chen.docx(11页珍藏版)》请在冰豆网上搜索。
C语言输入输专项训练chen
C语言实训教程
----输入输出专项练习
一、实验目的
1.能够熟练并正确定义、输入、输出并使用常用数据类型:
整型、实型、字符型
2.能够使用scanf(),printf(),getchar(),putchar(),gets(),puts()进行各种数据正确格式的输入输出
二、实验内容及实验步骤
(一)验证性试验,验证以下实验,并分析实验结果
1.用下面的scanf函数输入数据,使a=3,b=7,x=,y=,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入数据?
#include<>
intmain()
{
inta,b;
floatx,y;
charc1,c2;
scanf(“a=%db=%d”,&a,&b);
scanf(“%f%e”,&x,&y);
scanf(“%c%c”,&c1,&c2);
printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);
return0;
}
运行时分别按以下方式输入数据,观察输出结果,分析原因。
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);
printf("integer:
%d\n",a);
printf("Pleaseinputacharacter:
");
scanf("%c",&b);
printf("character:
%c\n",b);
printf("Pleaseinputafloatnumber:
");
scanf("%f",&c);
printf("float:
%f\n",c);
}
如果把scanf("%c",&b);改为scanf("%1s",&b);观察运行结果
原因:
发
3.验证格式输入
#include<>
voidmain()
{
inta,b;
printf("Pleaseinputaandb:
");
scanf("%2d%*2d%2d",&a,&b);
printf("a=%d,b=%d,a+b=%d\n",a,b,a+b);
}
(1)输入123456,验证上述实验结果
(2)输入12345a,验证上述实验结果
4.格式输入与输出
#include<>
main()
{
inta=-1;
printf("%d,%o,%x",a,a,a);
printf("%8o,%12x",a,a);
}
验证程序分析实验结果
5.无符号数据的输出
#include<>
voidmain()
{
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.字符串的输出
#include<>
voidmain()
{
printf(“%3s,%,%.4s,%\n”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);
}
验证程序分析实验结果
%3s,格式输出字符串,右对齐,超出3个长度的,就全部输出;
%,输出字符串占7个位置,有对齐,左补空格,输出2个字符;
%.4s,仅输出4个字符,占位4个位置,右对齐;
%:
输出3个字符,占位5个位置,左对齐右补空格.
7.输出实数时的有效位数
#include<>
voidmain()
{floatx,y;
3 x=;
y=;
prinft(“%f”,x+y);
}
验证程序分析实验结果
8.输出双精度数时的有效位数
#include<>
voidmain()
{doublex,y;
printf(“%f”,x+y);
}
验证程序分析实验结果
9.输出实数时指定小数位数
#include<>
voidmain()
{
floatf=;
printf(“%f%10f%%.2f%\n”,f,f,f,f,f);
}
验证程序分析实验结果
10.字符输出
#include<>
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())
putchar(c);
(2)将4-7、10行代码替换如下,程序应该如何修改才能保持输出结果相同?
while((c=getchar())!
=EOF)putchar(c);
(3)将4-7、10行代码替换如下,程序应该如何修改才能保持输出结果相同?
c=getchar();
while(c!
=EOF)
{putchar(c);c=getchar();}
(4)如果用ASCII码修改if((c>=’a’)&&(c<=’z’));c+=’A’-’a’;这两句代码,应该如何修改?
(5)利用ctype函数修改上面代码,验证程序结果
#include<>
#include<>
intmain(void){
intc;
for(;;){
c=getchar();
if(c==EOF)break;
if(islower(c))
c=toupper(c);
putchar(c);
}
return0;
}
11.转义符输出
#include<>
voidmain()
{
printf("abc\tde\rf\tg\n");
printf(“h\ti\b\bjk\n”);
}
验证程序分析实验结果
12.字符串输入输出,连续输入三个单词,每个单词以空格分隔
#include<>
voidmain()
{
charstr1[5],str2[5],str3[5];
scanf(”%s%s%s”,str1,str2,str3);
printf("%s%s%s",str1,str2,str3);
}
验证程序分析实验结果
(二)编程题
1.编写printf函数调用下列格式来显示float型变量x:
a)指数表示形式:
最小为8的字段宽度内左对齐;小数点后保留1位数字.
b)指数表示形式:
最小为10的字段宽度内右对齐;小数点后保留6位数字
c)定点十进制表示形式:
最小为8的字段宽度内左对齐;小数点后保留3位数字
d)定点十进制表示形式:
最小为6的字段宽度内右对齐;小数点后无数字.
#include""
main()
{floatx;
x=;
printf("%\n",x,x,x);/
printf("%\n",x);/
return0;
}
2.设计程序使得用户可以以任意字符(回车、空格、制表符、逗号、其它)作为分隔符进行数据的输入
#include""
main()
{inta,b;
printf("pleaseinputadate:
");
scanf("%d%*c%d",&a,&b);
printf("%d\t%d",a,b);
return0;
}
3.编写一个程序,接收用户录入的日期信息并且将其显示出来.其中,输入日期的形式为月/日/年(mm/dd/yy),输出日期的形式为年月日(yymmdd)
#include""
main()
{intyear,month,day;
printf("pleaseinputthedate:
month,day,year\n");
scanf("%d%d%d",&month,&day,&year);
printf("%d/%d/%d\n",year,month,day);
return0;
}
4.有3个字符串,要求找出其中最大者
#include""
#include<>
main()
{charstr1[20],str2[20];
inta;
printf("pleaseinputthestr1andstr2:
\n");
gets(str1);
gets(str2);
if(strcmp(str1,str2)>0)
printf("str1>str2");
elseprintf("str1 returna; } #include"" #include<> #include<> main() {charstr1[20],str2[20],str3[20]; inta; printf("pleaseinputthestr1,str2andstr3: \n"); gets(str1); gets(str2); gets(str3); a=strcmp(str1,str2); if(a>0) if(strcmp(str1,str3)>0) printf("str1>str2,str1>str3\nstr1ismaxstring\n"); else printf("str1>str2,str1 else if(str2,str3>0)printf("str2>1,str2>str3,\nstr2ismaxstring\n"); elseprintf("str2>str1,str3>str2\nstr3ismaxstring\n"); returna; } 5.编写一个程序,对用户录入的产品信息进行格式化,程序运行后需要有以下会话: Enteritemnumber: 583 Enterunitprice: Enterpurchasedate(mm/dd/yy): 10/24/95 ItemUnitPricePurchaseDate 583$10/24/95 其中,数字项和日期项左对齐,单位价格右对齐,美元数量最大取值为 #include"" #include<> main() {intnum_ber; intmm,dd,yy; floatUnitprice; printf("请输入itemnum_ber: number=583\t"); scanf("%d",&num_ber); printf("请输入Unitprice: Unitprice=\t"); scanf("%f",&Unitprice); printf("请输入日期mm/dd/yy=10/24/95"); scanf("%d/%d/%d\t",&mm,&dd,&yy); printf("Itemnumber\tUnitPrice\tPurchaseDate"); printf("%4d\t%f\t%3d/%3d/%3d,num_ber,UnitPrice,mm,dd,yy"); return0; } 6.计算若干整数的值,要求输入有若干行,每行第一个整数n,代表后面还有n个数据,如果n=0代表输入结束。 输出: 要求对于每一行都要在相应的行输出和。 #include"" #include<> main() {intm,n,i,j,sum=0; inta[5][5]; scanf("%d",&m); if(m==0) printf("ê? è? ? áê? \n"); else for(i=0;i for(j=0;j scanf("%d",&a[i][j]); a[0][0]=m; for(i=0;i {for(j=0;j {printf("%d\t",a[i][j]);} printf("\n"); } for(i=0;i {for(j=0;j {sum=sum+a[i][j];} printf("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.实现一个密码程序,输出到屏幕上的字符显示为*,回车后停止输入密码,并将用户键入密码输出到屏幕上,并与已知密码进行比较,如果相同,则显示密码正确,不同则显示密码错误提示。 #include"" #include<> #include<> main() { charstr1[5],str2[5]="1234"; printf("? ? ê? è? ? ? ? ? ? ü? ? \t"); gets(str1); if(strcmp(str1,str2)==0) printf("? ü? ? ? yè·\n"); elseprintf("? ü? ? ′í? ó\n"); return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 输入 专项 训练 chen