3.2基础实验
一、程序分析
1.以下程序若输入’a’,则输入格式为:__c1=a____;运行结果为:___a,A↙_____。
#include
intmain( )
{char c1,c2;
scanf(“c1=%c”,&c1);
c2=c1-32;
printf(“%c,%c\n”,c1,c2);
return 0;
}
2.以下程序如果使得a的值为2、b的值为3,则输入格式为:_a=2,b=3__;运行结果为:_2,3↙_。
#include
intmain( )
{ int a,b;
scanf(“a=%d,b=%d”,&a,&b);
printf(“%d,%d\n”,a,b);
return 0;
}
3.以下程序若输入12.3、7.6、1.1,则输入格式为:_12.3 7.6 1.1__;运行结果为:_aver=7.00___。
#include
intmain( )
{ floata,b,c,d;
scanf(“%f%f%f”,&a,&b,&c);
d=(a+b+c)/3;
printf(“aver=%.2f”,d);
return 0;
}
二、程序填空
1.输入一个四位整数,求各位数字之和(如1234,则结果为1+2+3+4=10)。
若输入3562,则运行结果为:___3+5+6+2=16↙____________。
#include
intmain( )
{ int n,a,b,c,d,m;
scanf(“%d”,&n);
a=n%10;
b=(n/10)%10;
c=(n/100)%10;
d=__n/1000________;
m=__a+b+c+d________;
printf(“%d+%d+%d+%d=%d\n ”, d,c,b,a,m);
return 0;
}
2.给定一个华氏法表示的温度值,将其转换为摄氏法表示的温度,转换公式为则运行结果为:__f=64.00,c=17.78↙__。
#include
intmain ( )
{ float f,c;
f=64.0;
c=__(f-32)*5.0/9.0_________________;
printf(“f=%.2f,c=%5.2f\n”,f,c);
return 0;
}
三、程序改错
)
32
(
9
5
-
=f
c
四、程序设计
1.对输入的字符进行加密,加密规则为“输入4个字符,将每个字符加4后转换成加密字符”,如输入“Ab2c”则加密后的字符序列为“Ef6g”。
3.3拓展实验
一、程序分析
1.⊙以下程序若输入3.4、1
2.0、8.9,则输入格式为:
3.4,12.0,8.9,运行结果为:7.20↙。
#include
#include
intmain( )
{ float a,b,c;
float s,area;
scanf(“%f,%f,%f” ,&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“%.2f\n”,area);
return 0;
}
2.以下程序若输入C和2,则运行结果分别为:__'F'和'5'_________。
#include
intmain( )
{ char c1;
int c2=0;
c1=getchar( );
c2=c1+3;
putchar('\'' );putchar(c2); putchar('\'' );
return 0;
}
二、程序填空
1.⊙以下程序实现按由大到小顺序输出任意两个整数。若输入3562,则运行结果为:__62,35↙__。
#include
int main( )
{ int m,n;
scanf(“%d%d”,_&m,&n_______);
n>=m?printf(“%d,%d\n”,n,m):_printf(“%d,%d\n”,m,n)________;
return 0;
}
2.以下程序实现输入任意两个整数,完成加、减、乘、除、求余操作并运行结果。若输入29、18,则运行结果为:_29+18=47,29-18=11,29*18=522,29/18=1,29%18=11_。
#include
intmain ( )
{ int x,y;
printf(“请输入x,y的值:”);
scanf(“%d%d”,&x,&y);
printf(“%d+%d=%d,”,_x,y,x+y________);
printf(“%d-%d=%d,”,_x,y,x-y_________);
pr intf(“%d*%d=%d,”, _ x,y,x*y _______);
printf(“%d/%d=%d,”, _ x,y,x/y ________);
printf(“%d%%%d=%d”, _ x,y,x%y ____);
return 0;
}
三、程序改错
四、程序设计
1.输入圆的半径,输出该圆的周长和面积,结果保留2位小数。
2.⊙求ax2+bx+c 的根,a 、b 、c 从键盘输入,结果保留2位小数。
3.4习题
一、选择题
1. 以下4个选项中,不能看作一条语句的是()。
A. {;}
B.a=0,b=0,c=0;
C.if(a>0) ; D .if(b==0) m=1;n=2;
2.以下叙述中错误的是()。
A.C语句必须以分号结束
B.复合语句在语法上被看作一条语句
C.空语句出现在任何位置都不会影响程序运行
D.赋值表达式末尾加分号就构成赋值语句
3.⊙已有如下定义和输入语句,若要求a1,a2,c1,c2 的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是()。
int a1,a2; char c1,c2;
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);
A. 10A20B ↙
B. 10A 20B ↙
C. 10A20B ↙
D.10A 20B↙
4.有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); 为使变量a 的值为1,b 的值为3,c的值为2,则正确的数据输入方式是()。
A.132 ↙
B. 1,3,2 ↙
C.a=1 b=3 c=2 ↙
D.a=1,b=3,c=2 ↙
5.若定义x 为double 型变量,则能正确输入x 值的语句是()。
A.scanf(“%f”,x);
B. scanf(“%f”,&x);
C.scanf(“%lf”,&x);
D.scanf(“%5.1f”,&x);
6.已知i,j,k 为int 型变量,若从键盘输入:1, 2, 3<回车>,以下选项中正确的输入语句是()。
A.scanf(“%2d%2d%2d”,&i,&j,&k);
B.scanf(“%d_%d_%d”,&i,&j,&k);
C.scanf(“%d,%d,%d”,&i,&j,&k);
D.scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);
7.⊙若运行时输入:12345678 ↙,则下列程序运行结果为()。
int a,b;
scanf(“%2d%2d”,&a,&b);
printf(“%d\n”,a+b);
A.46
B. 579
C.5690
D.出错
8.以下说法正确的是()。
A.输入项可以为一实型常量,如scanf(“%f”,3.5);
B.只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scan f(“%4.2f”,&f);
D.当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);
9.⊙以下程序若输入:12<回车>,运行结果是()。
#include
int main( )
{ char a,b;int n,m;
a=getchar();b=getchar( );
n=a-’0’;m=n*10+(b-’0’);
printf(“%d\n”,m);
return 0;
}
A.112
B.12
C.120
D.出错
10.⊙以下程序的运行结果是()。
#include
int main( )
{ int x=102,y=012;
printf(“%2d,%2d”,x,y);
return 0;
}
A. 10,01
B.002,12
C.102,10
D.02,10
11.⊙printf函数中用到格式符%ms,其中数字m表示输出的字符串占的总列数。如果m为负整数,则输出方式为()。
A. 从左起输出该字串,当指定列数大于实际列数时右补空格
B. 按原字符长从左向右全部输出
C. 右对齐输出该字串,当指定列数大于实际列数时左补空格
D. 输出错误信息
12.⊙设有如下程序段:
int x=17,y=18,z=19;
printf(“%d\n”,(x,y,++z));则以下叙述正确的是()。
A. 输出语句中格式说明的个数少于输出项的个数,不能正确输出
B. 运行时产生出错信息
C. 输出值为17,18,20
D. 输出值为20
13.有以下程序
#include
int main( )
{ char a1='M', a2='m';
printf(“%c\n”, (a1, a2) );
return 0;
}以下叙述中正确的是()。
A. 程序输出大写字母M
B. 程序输出小写字母m
C. 格式说明符不足,编译出错
D. 程序运行时出错
14.putchar ( )函数可以向终端输出一个( )。
A.整型变量表达式值
B.实型变量值
C.字符串
D.字符或字符型变量值
15.⊙以下程序若输入:123<回车>45678<回车>,则运行结果是()。
#include
int main( )
{char a,b,c,d,e,f;
scanf(“%c%c%c%c”,&a,&b,&c,&d);
e=getchar( );
f=getchar( );
putchar(a);
putchar(b);
printf(“%c%c\n”,e,f);
return 0;
}
A.1267
B.1256
C.1278
D.1245
二、填空题
1.复合语句是用一对_____大括号____界定的语句块。
2.printf函数和scanf函数的格式说明都使用____%____字符开始。
3.在C语言中,输入操作是由库函数_scanf完成,输出操作是由库函数_printf 完成。
4.在C语言中,字符输出是由库函数_putchar完成,字符输入是由库函数_getchar完成。
5.字符输出函数putchar每次输出_1___个字符。
三、程序分析题
1.⊙用下面的scanf 函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a',则在键盘输入格式为:a=3b=78.57.182e1Aa。
#include
int main( )
{int a,b;
float x,y;
char c1,c2;
scanf(“a=%d b=%d”,&a,&b);
scanf(“ %f %e”,&x,&y);
scanf(“ %c %c”,&c1,&c2);
printf(“%d,%d,%f,%f,%c,%c”,a,b,x,y,c1,c2);
return 0;
}
2.以下程序的运行结果是a=12345,b=-1.98e+002,c= 6.50↙。
#include
int main( )
{ int a=12345;
float b=-198.345, c=6.5;
printf(“a=%4d,b=%-10.2e,c=%6.2f\n”,a,b,c);
return 0;
}
3.以下程序的运行结果是x=1 y=2 *sum*=3 ↙10 Squared is:100↙。
#include
int main( )
{int x=1,y=2;
printf(“x=%d y=%d *sum*=%d\n”,x,y,x+y);
return 0;
}
4.
#include
int main( )
{int x=10;
float pi=3.1416;
print f(“(1) %d\n”,x);
printf(“(2) %6d\n”,x);
printf(“(3) %f\n”,56.1);
printf(“(4) %14f\n”,pi);
return 0;
}
5.⊙以下程序若输入100↙,则运行结果是_____yes_________________。#include
int main( )
{int a ;
scanf(“%d”,&a);
printf(“%s”,(a%2!=0)?“No”:”Yes”);
}
四、程序填空题
1.以下程序实现的功能是输入一个字符,输出该字符的后4位,请将程序补充完整。
#include
int main( )
{ int c1;
c1=getchar( );
putchar(__c1+4_____);
return 0;
}
2.以下程序的功能是输出s1,x,y的值,保留原小数位数,请将程序补充完整。
#include
int main( )
{ float x=655.35;
double y=765.4271;
char s1='c';
printf(“__%c,%.2f,%.4lf___”,s1,x,y);
return 0;
}
3.以下程序是使用“*”在屏幕上显示一个C,请将程序补充完整。
#include “stdio.h”
int main( )
{printf(“Hello C-world!\n”);
printf(“__****\n____”);
printf(“ *\n”);
printf(“ * \n”);
printf(“ ****\n”);
}
4.要求按照以下形式输入3个整数并完成计算,请将程序补充完整。
从键盘输入:a=13,b=14,c=25<回车>
#include
int main( )
{ int a,b,c;
scanf(“_ a=%d,b=%d,c=%d__________”,&a,&b,&c);
printf(“%d\n”,a+b*c);
}
五、程序设计题
1.编写程序,输入一个人三门课的成绩,输出其平均成绩。