实验 函数一,实验目的:1,掌握定义函数的方法.2,掌握函数实参与形参的对应关系,以及"值传递"的方式.3,掌握函数的嵌套调用和递归调用的方法.4,掌握全局变量和局部变量动态变量,静态变量的概念和使用方法.二,实验准备:1,复习函数调用的基本理论知识.2,复习函数的嵌套调用和递归调用的方法.3,复习全局变量,局部变量;静态变量,动态变量;外部变量等概念和具体使用.4,源程序.三,实验步骤及内容:1,运行程序并回答问题(1)程序main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n")}void print_message(){ printf("Good Friend! \n");}void play(n)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}}问题:运行后出现什么错误 为什么 应如何修改 请上机调试.main()
{ play(3);
}
void print_star()
{ printf("* * * * * * * * * *\n");(缺少分号)
}
void print_message()
{ printf("Good Friend! \n");
}
play(n)(原先void的与声明类型不同)
int n;
{ int i;
for(i=1;i<=n;++i)
{ print_star();
print_message();
}
getch();
}
运行结果(2)以下程序用于计算1+2+3+4+5.main(){ int i,sum;for(i=1;i<=5;++i)sum=add(i);printf("sum=%d\n",sum);getch();
}add (a)int a;{ static int s=0;s=s+a;return(s);}问题:此程序能否得到正确结果 为什么 请在不增加语句的条件下,修改程序并上机调试.(3)程序int x=567 y=890;main(){ printf("x=%d,y=%d\n",x,y);}
运行结果:
问题:运行程序后出现什么错误 为什么 如何修改2,程序填空本程序的作用是在三位正整数中寻找符合下列条件的整数,它既是完全平方数,又有两位数字相同,例如144,676等,下列程序要找出所有满足上述条件的三位数并输出. main(){ int n,k,a,b,c;for(k=1;;k++){n=k*k; if(n>999) break; a=n/100; b= (n%100)/10;
c=n%10;if(flag(a,b,c))printf("N=%d=%d*%d\n",n,k,k);} getch();}flag(x,y,z) int x,y,z;
{ return ! ((x-y)*( (x-z))*(y-z)); }
运行结果:
3,编写下列问题的源程序并上机调试运行.()用一个函数来实现将一行字符串中最长的单词输出.此行字符串从主函数传递给该函数.char str[100];
main()
{
void length();
printf("Input a string:\n");
gets(str);
length();
getch();
}
void length()
{
int max=0,count=0,i;
for(i=0;str[i];i++)
{
if(str[i]>='A'&&str[i]<='Z')
{
count++;
}
else if(str[i]>='a'&&str[i]<='z')
{
count++;
}
else
{
if(max
{
max=count;
}
count=0;
}
}
if(max>count) printf("%d",max);
else printf("%d",count);
}
(2)写一个函数,输入一个十六进制数,输出相应的十进制数.#include "stdio.h"
#include "conio.h"
main()
{
char *