C程序作业答案.docx
《C程序作业答案.docx》由会员分享,可在线阅读,更多相关《C程序作业答案.docx(13页珍藏版)》请在冰点文库上搜索。
C程序作业答案
什么是程序及程序设计
程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。
为实现预期目的而进行
操作的一系列语句和指令。
一般分为系统程序和应用程序两大类。
程序设计(Programming)是指设计、编制、调试程
序的方法和过程。
它是目标明确的智力活动。
由于程序是软件的本体,软件的质量主要通过程序的质量来体现,在软
件研究中,程序设计的工作非常重要,内容涉及到有关的基本概念、工具、方法以及方法学等。
程序设计=数据结构+算法
正确理解以下名词及其含义
1、源程序目标程序可执行程序
2、程序编辑程序编译程序连接
3、程序程序模
块程序文件
4、函数主函数被调用函数库函数
5、程序调试程序测试
1、源程序:
程序可以用高级语言或汇编语言编写,用高级语言或汇编语言编写的程序称
为源程序。
目标程序:
源程序经过“编译程序”编译所得到的二进制代码称为目标程序。
可执行程序:
目标程序与库函数连接,形成的完整的可在操作系统下独立执行的程序
称为可执行程序。
2、程序编辑:
是指将完成一件工作所需要的步骤,也就是算法,用计算机所能识别的语言,按照一定的程序结构翻译出
来,并可被计算机执行的编写代码的全过程.该程序编辑形式(能通过编译、链接生成最终程序(一般是可执行文件)
的源代码文件。
用户使用编译程序对其个人编制的源程序进行编译的过程称为程序编译。
程序连接:
编辑就是自己写代码,编译就是将你写的代码翻译成目标文件,连接是将你的目标文件与系统文件(资源
、模块等)组合生成可执行文件。
3、程序就是为使电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令的集合。
程序模块(programmodule)即可由汇编程序、编译程序、装入程序或翻译程序作为一个整体来处理的一级独立的、可
识别的程序指令。
程序以命令形式存储在磁盘上,称为:
程序文件,文件扩展名为。
PRG
4、库函数
由C系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文
件即可在程序中直接调用。
被调用函数:
计算机编程术语,即由一个函数调用另一个函数,则称第二个函数为被调用函数。
主函数既是程序的入口,又是程序的出口。
函数:
函数是C程序的基本单位,在设计良好的程序中,每个函数都用来实现一个或几个特定的功能。
5、程序调试:
所谓程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误
和逻辑错误的过程。
这是保证计算机信息系统正确性的必不可少的步骤。
程序测试(programtesting) 是指对一个完成了全部或部分功能、模块的计算机程序在正式使用前的检测,以确
保该程序能按预定的方式正确地运行。
为什么需要计算机语言高级语言的特点
计算机语言(ComputerLanguage)指用于人与计算机之间通讯的语言。
计算机语言是人与计算机之间传递信息的媒
介。
计算机系统最大特征是指令通过一种语言传达给机器。
为了使电子计算机进行各种工作,就需要有一套用以编写
计算机程序的数字、字符和语法规划,由这些字符和语法规则组成计算机各种指令(或各种语句)。
这些就是计算机
能接受的语言。
高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。
C程序设计答案:
4-1有两个瓶子A和B分别盛放醋和酱油,将他们互换如果A瓶原来盛醋现改盛酱油,B瓶原来盛酱油
现改盛醋。
4-3开始输入A、B、C、如果a>b>c则输出A然后是B最后C
b>a>c则输出b然后是a最后C
c>a>b则输出c
然后是a最后C
4-5开始输入数N如果能被3整除而且能被5整除则算法结束。
4-7输入M和N找出M和N所有公有质因数,
然后将所有公有质因数相乘,其积即为M和N的最大公约数。
8设YEAR为被检测的年份
S1:
1900=>year
S2:
若year不
能被4整除则输出year的值和“不是闰年”。
然后转到S6检查一下年份。
S3:
若year能被4整除不能被100整除,则输出
year的值和“是闰年”。
然后转到S6
S4:
若year能被400整除输出year的值和“是润年”然后转到s6
S5:
输出year的值和“
不是闰年”
S6:
year+1=>year
S7:
当year≤2000时,转S2继续执行,否则算法停止。
假如我国国民生产总值的年增长率r=9%,计算n=10年后我国国民生产总值与现在相比增长百分比p
#include<>
intmain(intargc,char*argv[])
{
intn;
floatp1=,p2=,r=,p;
for(n=1;n<=10;n++)
{p2+=p1*r;
p1=p2;
}
p=p2/;
printf("10年后的比现在相对增长百分比为:
%.2f%%\n",p*100);
return0;
}
存款利息的计算。
有1000元,想存5年,可按以下5种办法存:
(1)一次存5年
(2)先存2年,到期后将本息再存三年期(3)先存3年期,到期后将本息再存2年期(4)存1年期,
到期后将本息再存1年期,连续存5次(5)存活期存款。
活期利息每一季度结算一次。
2007年12月的银行存款利息
是:
1年期定期存款利息=%;2年期=%;3年期=%;5年期=%活期存款利息为%(活期存
款每一季度结算一次利息)。
如果r为年利率,n为存款年数,则计算本息的公式如下。
一年期本息和:
P=1000*
(1+r)n年期本息和:
P=1000*(1+n*r)存n次一年期的本息和:
P=1000*(1+r)^n(n次方哦~~)活期存款
本息和:
P=1000*(1+r/4)^4n(4n次方哦!
)(说明:
1000*(1+r/4)是一个季度的本息和)
#include<>
#include<>
#include<>
#defineb
#definec
main()
{
while
(1)
{
inta;
printf("Pleasereturnthewayyouwant1,2,3,4,5:
");
scanf("%d",&a);
switch(a)
{
case1:
printf("Themoneyis:
%f\n\n",1000+1000**5);break;
case2:
printf("Themoneyis:
%f\n\n",1000+(1000+1000**2)**3);break;
case3:
printf("Themoneyis:
%f\n\n",1000+(1000+1000**3)**2);break;
case4:
printf("Themoneyis:
%f\n\n",1000*b*b*b*b*b);break;
case5:
printf("Themoneyis:
%f\n\n",1000*pow(c,20));break;
}
system("pause");
}
}
分析下面的程序:
#include<>
intmain()........省略
1、运行时会出现什么信息为什么
2、如果将程序4、5行改
为
c1=197
c2=198
运行时会出现什么信息为什么
3、将3行给为
intc1,c2;
运行时会出现什么信息为什么
1,输出:
c1=a,c2=b
c1=97,c2=98
原因:
因为输出为整型格式时,就输出对应的ASC代码值;字符格式就输出相应的
字符。
2,输出:
c1=,c2=?
c1=-59c2=-58
原因:
英文字母对应的asc值越界,所以输出(不能输出对应的特殊
符号,应为格式是%c),至于后面输出的负数,是因为字符常量在内存中存储的时候实际上是以二进制形式存储的
,197和198存储进去,内存中因为越界不能完整存储相应的二进制码,而存储的二进制码输出来的整数就是那二进
制码对应的负数了。
3,输出:
c1=a,c2=b
c1=97,c2=98
原因和1的问基本相同了。
。
用下面的SCANF函数输入数据,使a=3,b=7,x=,y=,c1='A',c2='a',问在键盘上如何输入
#include<>
intmain()
{
inta,b;
charc1,c2;
floatx,y,z;
scanf("%d%d",&a,&b);
getchar();
scanf("%c",&c1);
getchar();
scanf("%c",&c2);
scanf("%f%f%f",&x,&y,&z);
printf("%d%d%c%c%f%f%f\n",a,b,c1,c2,x,y,z);
return0;
}
C语言中如何表示“真”和“假”系统如何判定一个量的“真”和“假...
C语言编译系统在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”
其实语句是否执行由用户的代码(即判断条件)决定的,而系统只用0和非0进行判断,当用户认为此句可执行,系统
判断为“真”,反之亦然
写出下面逻辑表达式的值,设a==4,c=5
01101
有三个整数a,b,c,由键盘输入,输出其中最大值
方法一
#include<>
main()
{inta,b,c;
printf("请输入3个整数:
");
scanf("%d,%d,%d",&a,&b,&c);
if(a
if(belseprintf("max=%d\n",b);
elseif(aelseprintf("max=%d\n",a);
}
输入两个正整数m和n,求其最大公约数和最小公倍数。
main()
{longm,n,i=1,j,s;
scanf("%ld,%ld",&m,&n);
for(;i<=m&&i<=n;i++)
{if(m%i==0&&n%i==0)s=i;}
if(m>=n)j=m;
elsej=n;
for(;!
(j%m==0&&j%n==0);j++);
printf("s=%ld,j=%ld\n",s,j);
}
求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。
例如:
2+22+222+2222+22222(n=5),n由键
盘输入。
#include""
main()
{intn,sum=0,i=1,s=2;
scanf("%d",&n);
while(i<=n)
{sum=sum+s;s=s+2*pow(10,i);
i++;}
printf("sum=%d\n",sum);
}
打印以下图案
#include""
main()
{inti,j,k;
for(i=0;i<=3;i++)
{for(j=0;j<=2-i;j++)
printf("");
for(k=0;k<=2*i;k++)
printf("*");
printf("\n");
}
for(i=0;i<=2;i++)
{for(j=0;j<=i;j++)
printf("");
for(k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
}
打印出以下杨辉三角形(要求打印出10行)。
main()
{staticintm,n,k,b[15][15];
b[0][1]=1;
for(m=1;m<15;m++)
{for(n=1;n<=m;n++)
{b[m][n]=b[m-1][n-1]+b[m-1][n];
printf("%-5d",b[m][n]);}printf("\n");
}
}
}
有一行电文译文下面规律译成密码:
main()
{inti;charstr1[100],str2[100];
gets(str1);
for(i=0;str1[i]!
=’\0’;i++)
if(str1[i]>=65&&str1[i]<=90)
str2[i]=155-str1[i];
elseif(str1[i]>=97&&str1[i]<=122)
str2[i]=219-str1[i];
else
str2[i]=str1[i];
printf("%s\n%s\n",str1,str2);
}
写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输
入。
maxyueshu(m,n)
intm,n;
{inti=1,t;
for(;i<=m&&i<=n;i++)
{if(m%i==0&&n%i==0)
t=i;
}
return(t);
}
minbeishu(m,n)
intm,n;
{intj;
if(m>=n)j=m;
elsej=n;
for(;!
(j%m==0&&j%n==0);j++);
returnj;
}
main()
{inta,b,max,min;
printf("entertwonumberis:
");
scanf("%d,%d",&a,&b);
max=maxyueshu(a,b);
min=minbeishu(a,b);
printf("max=%d,min=%d\n",max,min);
}
写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
psushu(m)
intm;
{inti=2,t;
for(;i<=m;i++)
if(m%i==0&&iif(m-i==0)t=1;
elset=0;
returnm;
}
main()
{inta,s;
printf("entersushuis\n");
scanf("%d",&a);
s=psushu(a);
if(s==1)printf("aissushu\n");
elseprintf("sisnotsushu\n");
}
编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串
以及输出上述结果。
chartongji(str0,b)
charstr0[100];
intb[4];
{inti;
for(i=0;str0[i]!
=’\0’;i++)
{if(str0[i]>=65&&str0[i]<=90||str0[i]>=97&&str0[i]<=122)b[0]++;
elseif(str0[i]>=48&&str0[i]<=57)b[1]++;
elseif(str0[i]==32)b[2]++;
elseb[3]++;}
}
main()
{charstr1[100];staticinti,a[4];
gets(str1);
tongji(str1,a);
printf("zimuShuziKonggeQita\n");
for(i=0;i<4;i++)
printf("%-8d",a[i]);printf("\n");
}