习 题 1
为涉县等地区用户提供了全套网页设计制作服务,及涉县网站建设行业解决方案。主营业务为成都网站设计、做网站、涉县网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
1.1 填空题
1.函数
2.主函数main();主函数main()
3.主函数main()
4.函数首部;函数体
5.{;}
6.顺序结构;选择结构;循环结构
7..c;.obj;.exe
1.2 思考题
1.答:结构化程序设计是指,为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。顺序结构,选择结构,循环结构
2.答:算法是对具体问题求解步骤的一
种描述。计算机算法的表达工具通常采用以下几种方法:①用自然语言表示算法;②用流程图表示算法;③用伪代码表示算法;④用程序设计语言表示算法。
3.略
4.略
5.略
1.3 编程题
1.答:
#include "stdio.h"
main()
{ float a=10, b=20, h=5, s;
s=(a+b)*h/2;
printf("s=%f " , s );
}
求5个字符串的回文个数
#include stdio.h
#include string.h
int main()
{
char a[5][20];
int i,j,k=0,huiwen=0,n=0;
printf("请输入你要判断的字符串!\n");
for(i=0;i5;++i)
scanf("%s",a[i]);
for(j=0;j5;++j)
{
k=0;
for(i=0,n=strlen(a[j]);in/2;++i)
{
if(a[j][i]!=a[j][n-1-i])
{
k++;
break;
}
}
if(k==0)
huiwen++;
}
printf("有%d回文\n",huiwen);
return 0;
}
求数组的最大和次最大 和最大公约数
#include stdio.h
#define N 10
int main()
{
void max(int *a);
void gongyueshu(void);
int a[N];
int i,n;
printf("\t\t1 [求数组最大值和次最大值]\t2 [求公约数]\n");
scanf("%d",n);
switch(n)
{
case 1:{
printf("请输入10个数字sn");
for(i=0;iN;++i)
scanf("%d",a+i);
max(a);//该函数是求最大值和次最大值
}
case 2:{
printf("请输入两个数求最大公约数 ");
gongyueshu();//该函数是求最大公约数
}
return 0;
}
}
void max(int *a)
{
int t,i,j,k;
for(i=1;iN;++i)
{
for(j=0;jN-i;++j)
if(a[j]a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
printf("最大值是 %d 次最大值是 %d\n",a[0],a[1]);
}
void gongyueshu(void)
{
int i,j,k,r,t;
scanf("%d",i);
scanf("%d",j);
if(ij)
{
t=i;
i=j;
j=t;
}
while(j!=0)
{
r=i%j;
i=j;
j=r;
}
printf("公约数是%d\n",i);
}
2. 考define宏。define宏只是文本替换。替换过后,公式变成
(2*3)+(15)*2 = 36
3. flag = 2004%4==02004%100!=0||x%400==0;
flag = YESYES||后面短路; flag = 1;
循环为
for(k = 1; k 4; k++)
{
z+=tab[1][k];
}
值为31+29+31+z本身为10 = 101
4. 递归函数。带入15,15不小于3,所以进入第二层递归,带入15/3,也就是5,5也不小于3,带入第三层递归,5/3,也就是1,1小于3,输出1,然后返回第二层递归,输出5%3,5除3商1余2,输出2,返回第一层递归,输出15%3,15除3商5余0,输出0。
所以输出120
1、 函数调用:strcat(strcpy(str1,str2),str3)的功能是________。
C) 将串str2复制到串str1中后再将串str3连接到串str1之后
2、 若有以下调用语句,则正确的fun函数首部是
main()
{ ∶
∶
int a;float x;
∶
∶
fun(x,a);
∶
∶
}
B) void fun(float a,int x)
3、 有如下程序
int func(int a,int b)
{ return(a+b); }
main()
{ int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r); }
该程序的输出结果是__________。
D) 15
4、 函数pi的功能是根据以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+……+1/(n*n)
请你在下面程序中的划线部分填入________,完成求π的功能。
#include "math.h"
double pi(long n)
{ double s=0.0; long i;
for(i=1;i=n;i++) s=s+________;
return (sqrt(6*s)); }
A) 1.0/i/i
5、 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递
方式是________。
B) 单向值传递
6、 对于C语言的函数,下列叙述中正确的是________。
A) 函数的定义不能嵌套,但函数调用可以嵌套 (这答案有待斟酌)
7、 函数f的功能是:测定字符串的长度,空白处应填入________。
int f(char s[ ])
{ int i=0;
while(s[i]!='\0') i++;
return (________); }
main( )
{ printf("%d\n",f("goodbye!")); }
B) i
8、 若主调用函数类型为double,被调用函数定义中没有进行函数类型
说明,而return语句中的表达式类型为float型,则被调函数返回
值的类型是________。
C) double 型
9、 以下叙述中,错误的是________。
D) 形参可以是常量、变量或表达式
10、 以下叙述中,不正确的是________。
B) 在main函数体内定义的变量是全局变量
由于是递归调用,所以,程序在打印结果的时候是从最内层函数开始打印,于是,就得到136.因为递归调用其实是嵌套调用,只是嵌套的是函数自身。这样,需要将最内层的函数执行完毕,才开始执行外层的,一层一层往外执行完毕,最后是main函数。若将递归还原为顺序程序,流程是这样:楼主得到的631其实是从6开始被存放到某堆栈中的,这样,1便成为最顶上的数,而6成为最底部的数。而最后打印的时候,需要弹栈,出栈顺序为:自顶向下出栈,于是,得到的结果为136楼主的解题过程是对的,但可能没理解递归的意义。建议楼主翻阅关于递归的相关文章看看。