浙江大学远程教育程序设计基础C作业.docx
《浙江大学远程教育程序设计基础C作业.docx》由会员分享,可在线阅读,更多相关《浙江大学远程教育程序设计基础C作业.docx(59页珍藏版)》请在冰点文库上搜索。
浙江大学远程教育程序设计基础C作业
《程序设计基础(C)》作业
第1章C语言的基本构成
一、选择题
1.(A)是构成C语言程序的基本单位。
(A)函数(B)过程
(C)子程序(D)文件
2.(B)是C语言提供的合法的数据类型关键字。
(A)Float(B)signed
(C)integer(D)Char
3.以下选项中不合法的用户标识符是(A)。
(A)abc.c(B)file
(C)Main(D)PRINTF
4.以下选项中不合法的用户标识符是(B)。
(A)l23(B)printf
(C)A$(D)Dim
5.合法的C语言长整型常数是(B)。
(A)0L(B)5712700
(C)0.054838743(D)2.1869e10
6.C语言中,要求运算数必须是整型的运算符是(A)。
(A)%(B)/
(C)<(D)!
7.以下选项中正确的整型常量是(B)。
(A)12.(B)-20
(C)l,000(D)0458
8.以下选项中不正确的实型常量是(B)。
(A)2.607E-1(B)0.8103e2.
(C)77.77(D)456e-2
9.C语言中运算对象必需是整型的运算符是(D)。
(A)\(B)+
(C)*(D)%
二、程序调试题
1.编辑、调试以下程序
步骤1:
在VisualC++环境下新建文件可用[开始]→[程序]→[MicrosoftVisualC++6.0]→[MicrosoftVisualC++6.0]→[文件]→[新建]→[文件]→[C++SourseFile],输入文件名ex1-1.c,程序代码如下:
#include/*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/
intadd(intx,inty)
{
intz;
z=x+y;
returnz;
}
intmain()
{
intadd(int,int);/*函数的说明,告诉系统在主函数中要调用add函数*/
inta,b,c;/*变量的定义*/
scanf("%d%d\n",&a,&b);
c=add(a,b);/*函数调用*/
printf("%d+%d=%d\n",a,b,c);
/*调用系统输出函数printf,%d为格式控制符,依次用后面的变量值填充,以整数形式输出*/
}
请思考文件ex1-1.c由几个函数构成?
调用了那几个系统函数?
此程序中用到了哪几个保留字?
哪几个用户自定义标识符?
步骤3:
编译并运行程序,程序运行时输入两个整数,2040,观察程序运行的结果。
答案:
1、由2个函数组成;
2、调用了scanf,printf两个系统函数;
3、用到int,main,return,scanf,print;
4、add,a,b,c,z,x,y;
5、20+40=60
2.编辑、调试以下程序
步骤1:
在VisualC++环境下新建文件可用[开始]→[程序]→[MicrosoftVisualC++6.0]→[MicrosoftVisualC++6.0]→[文件]→[新建]→[文件]→[C++SourseFile],输入文件名ex1-2.c
步骤2:
在文本编辑器中输入以下C程序
#include/*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/
#include
intmain()
{
intand(int,int);/*函数的说明,告诉系统在主函数中要调用and函数*/
intor(int,int);/*函数的说明,告诉系统在主函数中要调用and函数*/
inta,b,c;/*变量的定义*/
scanf("%d%d",&a,&b);
c=and(a,b);/*函数调用*/
printf("%d&&%d=%d\n",a,b,c);
/*调用系统输出函数printf,%d为格式控制符,依次用后面的变量值填充,以整数形式输出*/
c=or(a,b);/*函数调用*/
printf("%d||%d=%d\n",a,b,c);
}
步骤3:
[文件]→[新建]→[文件]→[C++SourseFile],输入文件名ex1-2-2.c,源程序代码为:
intand(inta,intb)
{
intc;
c=a&&b;
returnc;
}
步骤4:
[文件]→[新建]→[文件]→[C++SourseFile],输入文件名ex1-2-3.c,源程序代码为:
intor(inta,intb)
{
intc;
c=a||b;
returnc;
}
步骤5:
点击编译图标
,编译程序1-2.c
步骤4:
点击执行图标
,执行程序1-2.c,当程序运行时,键盘输入2040,按回车。
2040
20&&40=1
20||40=1
您可以输入其它的整数,观察程序的执行结果。
答案:
1020
10&&20=1
10||20=1
第2章 输入输出程序设计
1.用printf输出一个中空的五角星。
代码:
#include
voidmain()
{
printf("☆");
}
2.仿照例子2.2,定义一个字符数组,从键盘输入一字符串,然后输出的程序。
代码:
#include
voidmain()
{
charstring[300];
printf("请输入字符串:
\n");
gets("%s",string);
printf("您输入的字符串:
%s\n",string);
}
3.从键盘输入十六进制整数,转化为八进制数输出。
代码:
#include
voidmain()
{
inti;
scanf("%x",&i);
printf("%o\n",i);
}
4.只定义两个整型数据并赋值,实现两个整型数的互换。
代码:
#include
voidmain()
{
inta=10,b=20;
printf("初始值:
a=%d,b=%d\n",a,b);
a=a^b;
b=b^a;
a=a^b;
printf("交换值:
a=%d,b=%d\n",a,b);
}
5.从键盘上输入一个整数,分别输出8、16进制数的程序。
代码:
#include
voidmain()
{
inti;
scanf("%d",&i);
printf("八进制:
%o,十六进制:
%x\n",i,i);
}
6.从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。
代码:
#include
voidmain()
{
inti;
scanf("%d",&i);
printf("个位数:
%d,十位数:
%d,百位数:
%d\n",i%10,(i/10)%10,(i/100)%10);
}
7.以下程序输出结果是()。
#include
voidmain()
{
inti=010,j=10;
printf("%d,%d\n",++i,j--);
}
答案:
9,10
8.运行程序,屏幕提示“您是一个学生吗”,您输入’y’或’n’进行回答,屏幕输出您的选项。
代码:
#include
voidmain()
{
chara;
printf("您是一个学生吗?
(y/n)\n");
scanf("%c",&a);
if(a=='y')
printf("%c\n",a);
elseif(a=='n')
printf("%c\n",a);
else
printf("回答错误\n");
}
9.从键盘输入一个角度x,求10*sin(x)的值。
#include
#include
voidmain()
{
doublex;
scanf("%lf",&x);
printf("10*sin(x)=%lf\n",10*sin(x));
}
第3章 循环程序设计
1.执行语句for(i=0;i++<5;);后,变量i的值是(A)。
(A)6(B)5
(C)4(D)0
2.若inti=0;下列语句计算1+2+…+10的是(C)。
(A)while(s+=i);(B)for(;i<=10;i++,s+=i)
(C)for(;i<=10;s+=i,i++)(D)for(;i<9;i++,s+=i)
3.若inti,x;则语句for(i=x=0;i<9;i+=++x);的循环体要执行(4)次。
10.以下不是死循环的语句是(D)。
(A)for(;;x++);(B)while
(1){x++};
(C)do{i++;}while
(1)(D)for(x=-10;x++;)
4.以下for语句的循环次数是多少?
inti,j=3;
for(;i=j;i--,j--)printf("%d",i);
答案:
3次
5.下面的语句显示输出6行6列的整数数组h的主对角线上的所有元素,请补充完整:
for(inti=0;i<6;i++)
printf("%d",h[i][i])
6.写出以下程序运行的结果,此程序实现了什么功能?
#include
voidmain()
{inta[10]={2,4,0,-5,10,6,-8,9,6,7};
inti,count=0;
for(i=0;i<10;i++)
if(a[i]==0)count++;
elsecontinue;
printf("%d\n",count);
}
答案:
0。
数组a里有几个0。
7.写出以下程序的功能。
#include
voidmain()
{
inta[10]={2,4,0,-5,10,6,-8,9,6,7},tmp,k;
for(k=0;k<10/2;k++)
{
tmp=a[k];
a[k]=a[10-k-1];
a[10-k-1]=tmp;
}
}
答案:
把数组倒置.
8.写出以下程序运行后的输出结果。
#include
voidmain()
{
inti,j;
for(i=0;i<6;i++)
{
for(j=0;j
printf("");
for(j=0;j<2*(5-i)-1;j++)
printf("*");
printf("\n");
}
}
答案:
*********
*******
*****
***
*
9.请改正下列程序的错误,改正后的程序写在右边的空白处,并上机调试检验。
(1)
#include
voidmain()
{
inti,s;
i=1;s=0;
while(i<=100);
s=s+i;
i++;
printf(“1+2+3+….+99+100=%d\n”,s);
}
代码:
#include
voidmain()
{
inti,s;
i=1;s=0;
while(i<=100)
{
s=s+i;
i++;
}
printf("1+2+3+….+99+100=%d\n",s);
}
(2)
#include
voidmain()
{
inti,s;
i=1;
s=0;
while(i<=100)
s=s+i;
i++;
printf(“1+2+3+….+99+100=%d\n”,s);
}
代码:
#include
voidmain()
{
inti,s;
i=1;
s=0;
while(i<=100)
{
s=s+i;
i++;
}
printf("1+2+3+….+99+100=%d\n",s);
}
(3)
#include
voidmain()
{
inti=1,s;
while(i<=100);
{
s=s+i;
i++;
}
printf(“1+2+3+….+99+100=%d\n”,s);
}
代码:
#include
voidmain()
{
inti=1,s=0;
while(i<=100)
{
s=s+i;
i++;
}
printf(“1+2+3+….+99+100=%d\n”,s);
}
10.输入一个基数,例如输入9,输出为:
求1*3*……*9的值。
输出为:
1*3*5*7*9=945(?
945and45)
答案:
#include
voidmain()
{
intx,i=0,s=0;
scanf("%d",&x);
while(i<=x)
{
if(i==1){
printf("%d",i);
s+=i;
}else{
if(i%2!
=0)
printf("+%d",i);
s+=i;
}
i++;
}
printf("=%d\n",s);
}
11.输入一个5~10之间的整数n,求1!
+2!
+3!
+…+n!
。
例如输入5,输出为:
1!
+2!
+3!
+…+5!
=153
答案:
#include
intjiecheng(intx){
inti,sum=1;
for(i=1;i<=x;i++)
sum*=i;
returnsum;
}
voidmain()
{
intn,i=1,sum=0;
printf("输入一个5~10之间的整数:
\n");
scanf("%d",&n);
while(n<5||n>10){
printf("输入一个5~10之间的整数:
\n");
scanf("%d",&n);
}
while(i<=n)
{
if(i==1){
printf("%d!
",i);
sum+=jiecheng(i);
}else{
printf("+%d!
",i);
sum+=jiecheng(i);
}
i++;
}
printf("=%d\n",sum);
}
12.在屏幕上输出以下内容
1
12
123
1234
12345
123456
1234567
12345678
123456789
答案:
#include
voidmain()
{
inti=1,j;
while(i<=9)
{
for(j=1;j<=i;j++)
printf("%d",j);
printf("\n");
i++;
}
}
12.求2+4+6+……+98+100的和,用多种for表达式来完成。
答案:
形式一:
#include
voidmain()
{
inti=0,sum=0;
for(;i<=100;i+=2)
sum+=i;
printf("2+4+...+98+100=%d\n",sum);
}
形式二:
#include
voidmain()
{
inti=0,sum=0;
for(;i<=100;)
{
sum+=i;
i+=2;
}
printf("2+4+...+98+100=%d\n",sum);
}
形式三:
#include
voidmain()
{
inti=0,sum=0;
for(;;)
{
sum+=i;
i+=2;
if(i>100)
break;
}
printf("2+4+...+98+100=%d\n",sum);
}
形式四:
#include
voidmain()
{
for(inti=2,sum=0;i<=100;sum+=i,i+=2);
printf("2+4+...+98+100=%d\n",sum);
}
14. 输入一行字符,统计它有多少个字母?
答案:
#include
voidmain()
{
charstring[100],c;
inttotal=99,count=0,scount=0;
while(countc=getchar();
if(c=='\n')
break;
string[count]=c;
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
scount++;
}
count++;
}
printf("\"%s\"count=%d\n",string,scount);
}
第4章 分支程序设计
1.输入若干整数给x,使用if语句输出x的绝对值,当输入0时结束。
答案:
#include
#include
voidmain()
{
doublex;
scanf("%lf",&x);
while
(1){
if(x!
=0){
printf("fabs(%lf)=%lf\n",x,fabs(x));
scanf("%lf",&x);
}else{
break;
}
}
}
2.输入一批数,输出比相邻数大的数,当输入0时结束。
答案:
#include
#include
voidmain()
{
inta[100],i,n;
printf("请输入数组到个数:
\n");
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
for(i=0;iif(i==0){
if(a[i]>a[i+1])
printf("%d",a[i]);
}
if(i==n-1)
if(a[i-1]printf("%d",a[i]);
if(i>0&&iif(a[i]>a[i+1]&&a[i]>a[i-1])
printf("%d",a[i]);
}
}
3.将输入字符的大写字符转换成小写字符输出,小写字符原样输出。
答案:
#include
voidmain()
{
charstring[10];
scanf("%s",string);
inti;
for(i=0;i<10;i++){
if(string[i]>='a'&&string[i]<='z'){
printf("%c",string[i]-32);
}else{
printf("%c",string[i]);
}
}
}
4.输入一批字符,按回车时结束,统计小写字符、大写字符、数字字符、或其它字符的个数。
答案:
#include
voidmain()
{
;
inttotal=99,count=0,bcount=0,scount=0,ncount=0,ocount=0;
while(countc=getchar();
if(c=='\n')
break;
string[count]=c;
if(c>='A'&&c<='Z'){
bcount++;
}elseif(c>='a'&&c<='z'){
scount++;
}elseif(c>='0'&&c<='9'){
ncount++;
}else{
ocount++;
}
count++;
}
printf("\"%s\"小写字符:
%d,大写字符:
%d,数字字符:
%d,其它字符:
%d\n",string,scount,bcount,ncount,ocount);
}
5.编写程序,计算分段函数:
答案:
#include
voidmain()
{
doublex,y;
scanf("%lf",&x);
while(x==10){
printf("x!
=10\n");
scanf("%lf",&x);
}
if(x<=1){
y=x+5;
}elseif(x>10){
y=3/(x-10);
}else{
y=2*x;
}
printf("y=%lf\n",y);
}
6.根据输入的百分制按五分制的成绩输出。
百分制与五分制之间的关系见下表。
百分制
五分制
90~100
5
80~89
4
70~79
3
60~69
2
<60
1
答案:
#include
voidmain()
{
intx,y;
scanf("%d",&x);
while(x>100||x<0){
printf("0<=x<=100\n");
scanf("%d",&x);
}
if(x<=100&&x>=90){
y=5;
}elseif(x<=89&&x>=80){
y=4;
}elseif(x<=79&&x>=70){
y=3;
}elseif(x<=69&&x>=60){
y=2;
}else{
y=1;
}
printf("y=%d\n",y);
}
7、用switch完成:
读入一个实数x,再输入一整数,若输入是1,则计算sin(x),若输入2,则计算cos(x),若输入3,则计算tan(x),若输入其他值,则显示错误信息。
答案:
#include
#include
voidmain()
{
ints;
doublex=0.3;
scanf("%d",&s);
switch(s