二级C语言上机同步练习.docx
《二级C语言上机同步练习.docx》由会员分享,可在线阅读,更多相关《二级C语言上机同步练习.docx(28页珍藏版)》请在冰豆网上搜索。
![二级C语言上机同步练习.docx](https://file1.bdocx.com/fileroot1/2022-11/23/9048c7ae-5727-4c9d-b6f4-35690e9667b6/9048c7ae-5727-4c9d-b6f4-35690e9667b61.gif)
二级C语言上机同步练习
第一次上机练习内容
1.2.1节的课后练习
2.程序填空题
1).请补充完整程序prog1.c
#include
/**********found**********/
{
printf("Thisisaerrorprogram.");
/**********found**********/
3.程序修改题
1).程序prog2.c中有错,请修改。
#include
/**********found**********//
Main
{
printf("Thisisaerrorprogram.");
}
2).程序prog3.c中有错,请修改。
#include
main()
{
charc='a';
/**********found**********/
printf("thisstatementiserror.why?
")
}
3).程序prog4.c中有错,请修改。
#include
main()
{
/**********found**********/
int2a=120;
printf("Thisisaerrorprogram.");
}
4).程序prog5.c中有错,请修改。
#include
main()
{
/**********found**********/
intCase=5,charb='a';
/**********found**********/
printf("Case=%d",case);
}
4.程序设计题
1).请编写如下程序prog6.c,查看运行结果,分析原因。
#include
main()
{
shorta=32767,b=a+1;
printf("a=%d,a=%u,b=%d,b=%u",a,a,b,b);
}3276732767-32768随机数
2).请编写如下程序prog7.c,查看运行结果,分析原因。
#include
main()
{
unsignedshorta=65535,b=a+1;
printf("a=%d,a=%u,b=%d,b=%u",a,a,b,b);
}a=65535a=6553500
3).请编写程序prog8.c,编译该程序,查看编译时的出错信息,分析原因。
#include
main()
{
inta;
a=10;
floatb;
b=1.0;
printf("a=%db=%f\n",a,b);
}定义完了一起付初值,或者直接定义时付初值(inta=10;
floatb;b=1.0;)或者(inta;floatb;b=1.0;a=10;)
4).请编写如下程序prog9.c,查看运行结果,分析原因。
#include
main()
{
printf("ABCD\'12\\4567\0abc");
}ABCD'12\4567
第二次上机练习内容
1.程序填空题
1).prog1.c中字符变量ch1存放的是大写字母,请填空,实现字符变量ch2中存放的是ch1中对应字符的小写字母。
#include
main()
{
charch1='B',ch2;
/**********found**********/
ch2=ch1+'a'-'A';
printf("ch1=%c,ch2=%c\n",ch1,ch2);
}
2).prog2.c中,变量ch中存放的是数字字符,请将ch中的数字字符转换成数字存入到整型变量i中。
#include
main()
{
charch='3';
inti;
/**********found**********/
i=ch-'0';
printf("ch=%d,i=%d\n",ch,i);
}ch=51,i=3
3).变量a是一个四位的正整数,请将prog3.c补充完整,使四位数a中的个位、十位、百位和千位上的值分别赋给变量gw、sw、bw和qw。
#include
main()
{
inta=6752,gw,sw,bw,qw;
/**********found**********/
gw=a%10;sw=a/10%10;
/**********found**********/
bw=a/100%10;qw=a/1000;
printf("四位数a=%d\n其中gw=%d,sw=%d,bw=%d\n",a,gw,sw,bw,qw);
}
4).a是一个实型变量,请将程序prog4.c补充完整,分别输出a的整数部分和小数部分。
#include
main()
{
floata=64.81479,decimal;
intinteger;
/**********found**********/
integer=a/1;
/**********found**********/
decimal=a-integer;
printf("实型数据a=%f\n其中整数部分integer=%d,小数部分decimal=%f\n",a,integer,decimal);
}
2.程序修改题
1).变量a是一个超过两位的正整数,请修改程序prog5.c,使b的值为a的最后两位。
#include
main()
{
inta=57264,b;
/**********found**********/
b=a%100;
printf("a=%d\nb=%d\n",a,b);
}
3.程序设计题
1).请编写如下程序prog6.c,查看运行结果,分析原因。
#include
main()
{
inta,b,c;
printf("%d\n",(a=10,b=20,c=30));
printf("%da=%db=%dc=%d\n",a=(10,b=20,c=30),a,b,c);
}30
30a=10,b=20,c=30
2).如果a是一个实型变量,请编程序prog7.c,让a保留两位小数并对第三位进行四舍五入。
#include
main()
{floata,b;
scanf("%f",&a);
b=(int)(a*100+0.5)/100.0;
printf("%.2f",b);}
3).有两个两位数a和b,请编写程序prog8.c,将a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
#include
main()
{inta,b,c;
scanf("%d%d",&a,&b);
c=a%10*10+a/10*1000+b%10+b/10*100;
printf("%d",c);}
4).有两个两位数a和b,请编写程序prog9.c,将a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
#include
main()
{inta,b,c;
scanf("%d%d",&a,&b);
c=a%10*100+a/10+b%10*1000+b/10*10;
printf("%d",c);}
第三次上机练习内容
1.3.2.1节的课后练习
2.程序填空题
1).从键盘输入一个字符,通过getchar()函数接收赋给变量ch,再用putchar()函数将该字符输出,请补充完整prog1.c。
#include
main()
{
charch;
/**********found**********/
ch=getchar();
putchar(ch);
}
2).补充程序prog2.c,输出列表中使用变量a、b和c,使程序的输出结果为:
a=50,b=40,c=30
#include
main()
{
inta=30,b=40,c=50;
/**********found**********/
printf("a=%d,b=%d,c=%d\n",c,b,a);
}
3).补充程序prog3.c,使程序的输出结果为a=10,b=20,a+b=30。
#include
main()
{
inta=10,b=20;
/**********found**********/
printf("a=%d,b=%d,a+b=%d",a,b,a+b);
}
4).在程序prog4.c中填写相应的内容,当输入的内容为3,c=45时,使变量a、b、c的值分别3,4,5。
#include
main()
{
inta,b,c;
/**********found**********/
scanf("%d,c=%d%d",&a,&b,&c);
printf("%d,%d,%d",a,b,c);
}
3.程序修改题
1).通过程序prog5.c给变量a、b和c分别赋值1,2,3,再通过printf函数输出各变量的值。
#include
main()
{
inta,b,c;
/**********found**********/
scanf("%d,%d,%d",&a,&b,&c);
/**********found**********/
printf("%d,%d,%d",a,b,c);
}
2).修改程序prog6.c,使各变量能正确的接收并输出数据。
#include
main()
{
inta,b;
charc;
floatd;
/**********found**********/
scanf("%d%d%c%f",&a,&b,&c,&d);
/**********found**********/
printf("%d,%d,%c,%f",a,b,c,d);
}
注释:
没有空格就不用空格
4.程序设计题
1).请编写如下程序prog7.c,查看运行结果,分析原因。
#include
main()
{
intk=1234;
floatf=123.456;
printf("%d\n%6d\n%2d\n",k,k,k);
printf("\n");
printf("%f\n%12f\n%12.2f\n%.0f",f,f,f,f);}
2).请编写如下程序prog8.c,查看运行结果,分析原因。
#include
main()
{
floatf=123.456;
printf("%f\n%f%%",f,f);
printf("\n");
printf("%s\n%6s\n%.3s","abcd","abcd","abcd");
printf("\n");}
3).请编写如下程序prog9.c,根据指定数据进行输入,查看运行结果,分析原因。
#include
main()
{
inta,b,c,d,e,f,g;
chars,t;
scanf("%3d%2d",&a,&b);/*4789*/
printf("a=%db=%d\n",a,b);
scanf("%2d%3c%2c%3d",&c,&s,&t,&d);/*987654321*/
printf("s=%ct=%cc=%dd=%d\n",s,t,c,d);
scanf("%2d%*2d%3d%3d",&e,&f,&g);/*123456789*/
printf("e=%df=%dg=%d\n",e,f,g);}
注释:
(%*2d跳过2个;接受3个只输出一个)
4).请编写如下程序prog10.c,根据指定数据进行输入,查看运行结果,分析原因。
#include
main()
{
inta=10,b=20;
scanf("%d",&a,&b);/*输入34*/
printf("a=%db=%d\n",a,b);
printf("%d%d%d\n",12,34);
printf("%d%d\n",8,9,10);
}
第四次上机练习内容
1.程序填空题
1).在程序prog1.c中,从键盘输入一个字符给变量ch,若输入的字符为数字字符,则输出“YES!
”,否则输出“NO!
”。
#include
main()
{
charch;
/**********found**********/
ch=getchar();
/**********found**********/
if('0'<=ch&&ch<='9')
printf("YES!
");
else
printf("NO!
");
}
2).在程序prog2.c中输入两个数,分别放入x和y中,若两个数不相等,则输出其中的大数,若两数相等则输出x的值。
#include
main()
{
intx,y;
scanf("%d%d",&x,&y);
/**********found**********/
if(x>=y)
printf("两个数中的较大值是:
%d\n",x);
else
printf("两个数中的较大值是:
%d\n",y);
}
3).在程序prog3.c中通过条件表达式判断变量x是奇数还是偶数,是奇数输出1,偶数输出0。
#include
main()
{
intx;
scanf("%d",&x);
/**********found**********/
printf("%d\n",x%2?
1:
0);
}
2.程序修改题
1).在程序prog4.c中,通过键盘输入数据给变量x,若1≤x<100则输出x的值,否则提示出错。
#include
main()
{
intx;
scanf("%d",&x);
/**********found**********/
if(x>=1&&x<100)
printf("x=%d\n",x);
else
printf("erro!
\n");
}
2).修改程序prog5.c,根据输入的学生成绩给出相应的等级,大于或等于90分以上的等级为A,60分以下的等级为E,其余每10分为一个等级。
#include
main()
{
intg;
printf("Enteramark:
");
scanf("%d",&g);
/**********found**********/
switch(g/10)
{
case10:
case9:
printf("A\n");break;
case8:
printf("B\n");break;
case7:
printf("C\n");break;
/**********found**********/
case6:
printf("D\n");break;
default:
printf("E\n");
}
}
3).修改程序prog6.c,变量t为字符型,通过程序判断t中的值是否为字母,若是输出YES,否则输出NO。
#include
main()
{
chart;
/**********found**********/
scanf("%c",t);
/**********found**********/
if(t>='A'&&t<='Z'||t>='a'&&t<='z')
printf("YES\n");
else
printf("NO\n");
}
3.程序设计题
1).编写程序prog7.c,完成以下表达式的功能。
#include
main()
{intx,y;
scanf("%d",&x);
if(x!
=0)
if(x>0)
printf("%d",y=1);
elseprintf("%d",y=-1);
elseprintf("%d",y=0);}
2).编写程序prog8.c,实现两个变量值的交换。
(例如:
a的初值为5,b初值为10,交换后变为a的值为10,b为5)。
方法一:
#include
main()
{inta,b,t;
scanf("%d%d",&a,&b);
{t=a;a=b;b=t;}
printf("a=%d,b=%d",a,b);}
方法二:
#include
main()
{inta,b,t;
scanf("%d%d",&a,&b);
printf("a=%d,b=%d",b,a);}
3).编写程序prog9.c,输入a、b、c三个数,打印出最大者。
#include
main()
{inta,b,c,max;
scanf("%d%d%d",&a,&b,&c);
max=a;
if(b>max)
max=b;
if(c>max)
max=c;
printf("%d",max);}
4).请编写如下程序prog10.c,查看运行结果,分析原因。
#include
main()
{
intx=0,y=2,z=3;
switch(x)
{
case0:
switch(y==2)
{
case1:
printf("*");break;
case2:
printf("%");break;
}
case1:
switch(z)
{
case1:
printf("$");
case2:
printf("*");break;
default:
printf("#");
}
}
}
输出结果为:
*#
第五次上机练习内容
1.程序填空题
1).程序prog1.c的功能是:
从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
请填空。
#include
main()
{
floatx,max,min;
scanf("%f",&x);
max=x;min=x;
/**********found**********/
while(x>=0)
{
if(x>max)max=x;
/**********found**********/
if(xscanf("%f",&x);
}
printf("max=%f\nmin=%f\n",max,min);
}注释:
要输入负数才会结束
2).程序prog2.c的功能是:
将整型变量s中的数逆置放入变量t中。
#include
main()
{
ints,t=0;
scanf("%d",&s);
/**********found**********/
while(s>0)
{
/**********found**********/
t=t*10+s%10;
s=s/10;
}
printf("t=%d\n",t);
}
3).程序prog3.c的功能是:
计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。
请填空。
#include
main()
{
inti,n;
floats=0.0;
scanf("%d",&n);
for(i=1;i<=n;i++)
/**********found**********/
if(i%5==0||i%9==0)
/**********found**********/
s=s+1.0/i;
prinf("s=%f\n",s);
}
2.程序修改题
1).从键盘输入n(n<10)的值,修改程序prog4.c,计算并输出n!
。
#include
main()
{
inti=1,n;
/**********found**********/
doubles=1.0;
scanf("n=%d",&n);
/**********found**********/
while(i<=n)
{
s=s*i;
i++;
}
printf("s=%f\n",s);
}
2).修改程序prog5.c,功能是计算并输出n以内(包括n)能被7或11整除,但不能同时被7和11整除的所有自然数平方根之和。
#include
#include
main()
{
inti,n;
floats=0.0;
scanf("n=%d",&n);
for(i=1;i<=n;i++)
/**********found**********/
if((i%7==0||i%11==0)&&i%77!
=0)
/**********found**********/
s=s+sqrt(i);
printf("s=%f",s);
}注释输入:
n=、、、、、
3.程序设计题
1).编写程序prog7.c,求1-3+5-7+…-99+101的值。
方法一:
#include
main()
{inti,j,s1=0,s2=0,sum=0;
for(i=1;i<=101;i+=4)
s1=s1+i;
for(j=-3;j>=-99;j-=4)
s2+=j;
sum=s1+s2;
printf("%d",sum);}
方法二:
#include
main()
{inti,j,s1=0,s2=0,sum=0;
for(i=1;i<=101;)
{s1=s1+i;
i+=4;}
for(j=-3;j>=-99;)
{s2+=j;
j-=4;}
sum=s1+s2;
printf("%d",sum);}
2).编写程序prog8.c,功能是计算并输出下列多项式的值:
#include
main()
{inti,n,j=0;
floa