程序设计基础离线作业答案浙江大学远程教育学院.docx
《程序设计基础离线作业答案浙江大学远程教育学院.docx》由会员分享,可在线阅读,更多相关《程序设计基础离线作业答案浙江大学远程教育学院.docx(50页珍藏版)》请在冰点文库上搜索。
![程序设计基础离线作业答案浙江大学远程教育学院.docx](https://file1.bingdoc.com/fileroot1/2023-5/25/d6990598-7e20-46fd-9497-82677d9de58d/d6990598-7e20-46fd-9497-82677d9de58d1.gif)
程序设计基础离线作业答案浙江大学远程教育学院
浙江大学远程教育学院
《程序设计基础(C)》课程作业
姓名:
袁洋
学号:
7
年级:
2017春
学习中心:
紫金港校区
—————————————————————————————
第1章C语言的基本构成
由add、main、scanf、printf函数组成,
调用了scanf、printf两个系统函数。
保留字:
int、return。
自定义标识符:
add、a、b、c、x、y、z。
第2章 输入输出程序设计
1.用printf输出一个中空的五角星。
#include<>
voidmain()
{
printf("*\n");
printf("**\n");
printf("**\n");
printf("**\n");
printf("********\n");printf("**\n");
printf("**\n");
printf("**\n");
printf("***\n");
printf("****\n");
printf("****\n");
printf("****\n");
}
2.仿照例子,定义一个字符数组,从键盘输入一字符串,然后输出的程序。
#include<>
voidmain()
{
charcharshuz[20];
puts(gets(charshuz));
}
3.从键盘输入十六进制整数,转化为八进制数输出。
#include<>
voidmain(){
intshiliu;
scanf("%x",&shiliu);
printf("%o\n",shiliu);
}
4.只定义两个整型数据并赋值,实现两个整型数的互换。
#include<>
voidmain()
{
inta,b,swap;
scanf("%d,%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
swap=a;
a=b;
b=swap;
printf("a=%d,b=%d\n",a,b);
}
5.从键盘上输入一个整数,分别输出8、16进制数的程序。
#include<>
voidmain()
{
inta;
scanf("%d",&a);
printf("%o%x\n",a,a);
}
6.从键盘上输入一个整数,分别输出它的个位数,十位数,百位数。
#include<>
voidmain()
{
intinteger;
do
{
printf("请输入一个三个数:
");
scanf("%d",&integer);
if(integer<100||integer>=1000)
printf("请重新输入,\n");
}while(integer<100||integer>=1000);
printf("输入的整数为:
%d,百位为:
%d,十位为:
%d,个位为:
%d。
\n",integer,integer/100,integer%100/10,integer%100%10);
}
7.以下程序输出结果是()。
#include<>
voidmain()
{
inti=010,j=10;
printf("%d,%d\n",++i,j--);
}
程序输出结果为9,10
8.运行程序,屏幕提示“您是一个学生吗”,您输入’y’或’n’进行回答,屏幕输出您的选项。
#include<>
voidmain()
{
charq;
printf("Areyouastudent?
y/n\n");
scanf("%c",&q);
if(q=='y'||q=='Y')
printf("Goodgoodstudy!
\n");
elseif(q=='n'||q=='N')
printf("Workhard!
\n");
}
9.从键盘输入一个角度x,求10*sin(x)的值。
#include<>
#include<>
intmain()
{
floatx;
scanf("%f",&x);
printf("sumis%f\n",10*sin(x));
}
第3章 循环程序设计
1.以下for语句的循环次数是多少?
inti,j=3;
for(;i=j;i--,j--)printf("%d",i);
for语句的循环次数为3次
2.下面的语句显示输出6行6列的整数数组h的主对角线上的所有元素,请补充完整:
for(inti=0;i<6;i++)
printf("%d",h[i][j])
3.写出以下程序运行的结果,此程序实现了什么功能?
#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);
}
统计数组a中元素为0的元素个数。
4.写出以下程序的功能。
#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;
}
}
把数组a里的元素位置倒置,第一个放在最后一个,第二个放在倒数第二个位置。
5.写出以下程序运行后的输出结果。
#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");
}
}
*********
*******
*****
***
*
6.请改正下列程序的错误,改正后的程序写在右边的空白处,并上机调试检验。
(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);
}
7.输入一个基数,例如输入9,输出为:
求1*3*……*9的值。
输出为:
1*3*5*7*9=945
#include<>
intmain()
{
intjishu,sum=1,i;
do{
printf("请输入一个奇数:
");
scanf("%d",&jishu);
}while(jishu%2==0);
for(i=1;i<=jishu;i=i+2){
sum=sum*i;
}
printf("\n1*3*5*...*%d=%d\n",jishu,sum);
}
8.输入一个5~10之间的整数n,求1!
+2!
+3!
+…+n!
。
例如输入5,输出为:
1!
+2!
+3!
+…+5!
=153
#include<>
intmain()
{
inti,j,num,sum=0,jiec=1;.+%d!
=%d",num,sum);
}
9.在屏幕上输出以下内容
1
12
123
1234
12345
123456
1234567
9
#include<>intmain(){
chari,j;
for(i=0;i<9;i++){
for(j=1;j<=i+1;j++){
printf("%d",j);
}
putchar('\n');
}
return0;
}
10.求2+4+6+……+98+100的和,用多种for表达式来完成。
#include<> void main () {
int i,sum=0;
for(i=2;i<101;i=i+2)
sum=sum+i;
printf("sum is %d\n",sum);
}
或者
#include<>
void main (){
int i,sum=0;
for(i=2;i<101;i++){
if(i%2==0)
sum=sum+i;
}
printf("sum is %d\n",sum);
}
11.输入一行字符,统计它有多少个字母?
#include<>
void main() {
char ccc; int num=0;
while((ccc=getchar())!
='\n') {
if((ccc >= 'a' && ccc <= 'z') || (ccc >= 'A' && ccc <= 'Z'))
num++;
}
printf("num is %d\n",num);
}
第4章 分支程序设计
1.输入若干整数给x,使用if语句输出x的绝对值,当输入0时结束。
#include<>
void main () {
int x;
do {
scanf("%d",&x);
if(x>0)
printf("%d 的绝对值为:
%d\n",x,x);
else
if(x<0)
printf("%d 的绝对值为:
%d\n",x,-x);
}while(x!
=0);
}
2.输入一批数,输出比相邻数大的数,当输入0时结束。
#include<>
void main() {
int x =0,last=0;
while
(1) {
printf("请输入x值:
");
scanf("%d", &x);
if(x==0){
break;
}
if ( x>last) {
printf("x比相邻数大:
%d",x);
}
last = x;
}
}
3.将输入字符的大写字符转换成小写字符输出,小写字符原样输出。
#include<>
void main() {
char s;
while((s=getchar())!
='\n') {
if(s>='A' && s<='Z')
s+=32;
putchar(s);
}
}
4.输入一批字符,按回车时结束,统计小写字符、大写字符、数字字符、或其它字符的个数。
#include<>
void main() {
char s;
int xiaoxie_char=0,daxie_char=0,shuz_char=0,others=0;
while((s=getchar())!
='\n') {
if(s>='A' && s<='Z')
daxie_char++;
else if(s>='a' && s<='z')
xiaoxie_char++;
else if(s>='0' && s<='9')
shuz_char++;
else
others++;
}
printf("这些字符中小写字符为%d,大写字符为%d,数字字符为%d,其他字符为%d\n",xiaoxie_char,daxie_char,shuz_char,others);
}
5.编写程序,计算分段函数:
#include<>
void main() {
int x,y;
scanf("%d",&x);
if(x<=1)
y=x+5;
else if(x>1 && x<10)
y=2*x;
else if(x>10)
y=3/(x-10);
printf("x=%d,y=%d\n",x,y);
}
6.根据输入的百分制按五分制的成绩输出。
百分制与五分制之间的关系见下表。
百分制
五分制
90~100
5
80~89
4
70~79
3
60~69
2
<60
1
#include<>
void main() {
int baifen,wufen;
printf("请输入百分制成绩:
");
scanf("%d",&baifen);
wufen=baifen/10;
switch(wufen) {
case 10:
case 9:
printf("相对应的5分制:
5\n");
break;
case 8:
printf("相对应的5分制:
4\n");
break;
case 7:
printf("相对应的5分制:
3\n");
break;
case 6:
printf("相对应的5分制:
2\n");
break;
default:
printf("相对应的5分制:
1\n");
}
}
7、用switch完成:
读入一个实数x,再输入一整数,若输入是1,则计算sin(x),若输入2,则计算cos(x),若输入3,则计算tan(x),若输入其他值,则显示错误信息。
#include<>
#include<>
void main() {
float x;
int z;
printf("please input a real number:
");
scanf("%f",&x);
printf("please input a integer:
");
scanf("%d",&z);
switch(z) {
case 1:
printf("%5f\n",sin(x));
break;
case 2:
printf("%5f\n",cos(x));
break;
case 3:
printf("%5f\n",tan(x));
break;
default:
printf("date error!
\n");
}
}
8、用switch完成:
输入星期1到星期5,输出它们对应的颜色
星期1:
blue
星期2:
red
星期3:
white
星期4:
yellow
星期5:
green
#include <>
void main() {
int i;
printf("Please input a date:
\n");
scanf("%d",&i);
switch(i) {
case 1:
printf("星期一:
blue\n");
break;
case 2:
printf("星期二:
red\n");
break;
case 3:
printf("星期三:
white\n");
break;
case 4:
printf("星期四:
yellow\n");
break;
case 5:
printf("星期五:
green\n");
break;
default:
printf("\n");
}
}
9、用switch完成:
从键盘输入A、B、C、D四个等级中的一个,转化输出
等级
输出
A
优秀
B
良好
C
中等
D
及格
E
不及格
#include <>
void main() {
char i;
printf("Please input a char:
\n");
scanf("%c",&i);
switch(i) {
case 'A':
printf("优秀\n");
break;
case 'B':
printf("良好\n");
break;
case 'C':
printf("中等\n");
break;
case 'D':
printf("及格\n");
break;
case 'E':
printf("不及格\n");
break;
default:
printf("dete error");
}
}
第5章 数组及其应用
1.从键盘输入12个数,分别为:
900,2,3,58,34,76,87,72,90,20,78,30,找出最大和最小数。
#include<>
void main() {
int shuzu[12]={900,2,3,58,34,76,87,72,90,20,78,30},i,max=shuzu[0],min=shuzu[0];
for(i=0;i<12;i++){
if(shuzu[i]>max)
max=shuzu[i];
else if(shuzu[i] < min)
min=shuzu[i];
}
printf("max is %d, min is %d\n",max,min);
}
2.采用遍历查找,在数组a[SIZE]={2,3,20,58,72,76,78,87,90,900}中,找出偶数。
#include<>
void main() {
int i,a[10]={2,3,20,58,72,76,78,87,90,900};
for(i=0;i<10;i++) {
if(a[i]%2==0)
printf("%3d ",a[i]);
}
}
3.采用折半查找,在数组a[SIZE]={2,3,20,58,72,76,78,87,90,900}中,找到87,然后进行删除。
#include<>
#define SIZE 10
void main() {
int a[SIZE]={2,3,20,58,72,76,78,87,90,900},i,j,low=0,high=SIZE-1;
i=(low+high)/2;
while(high>=low){
if(a[i]<87) {
low=i;
i=(low+high)/2;
}
else if(a[i]>87) {
high=i;
i=(low+high)/2;
}else
break;
}
for(j=i;ja[j]=a[j+1];
}
第6章 函数及其应用
练习与实践
一、阅读程序,写出程序运行的结果。
1.写出以下程序的执行结果。
#include<>
floataver(inta[])
{
intk,sum=0;
floatave;
for(k=0;k<10;k++)
sum+=*(a+k);
ave=(float)sum/10;
return(ave);
}
intmain()
{
floatave;
staticb[]={78,89,98,76,78,45,88,81,92,85};
ave=aver(b);
printf("ave=%f\n",ave);
}
提示:
数组b的首地址传递给形参a,*(a+k)就是数组元素b[k].
运行的结果为:
ave=
2.阅读程序,写出程序的执行结果。
#include<>
voidabc(charstr[])
{inta,b;
for(a=b=0;str[a]!
='\0';a++)
if(str[a]!
='c’)
str[b++]=str[a];
str[b]='\0';
}
intmain()
{
charstr[]="abcdef";
abc(str);
printf("str[]=%s",str);
return0;
}
提示:
数组str的首地址传递给形参str,str[a]就是实参中的数组元素str[a],当数组元素不为’c’时进行复制。
程序运行的结果为:
str[ ]=abdef
3.写出以下程序的执行结果。
#include<>
intsort(intb[],intn,intx)
{
intk;
for(k=n-1;k>=0;k--)
if(b[k]b[k+1]=b[k];
else
break;
b[k+1]=x;
return0;
}
intmain()
{
inti,j;
staticinta[5]={8,5,4,1,6};
intb[8