内容发布更新时间 : 2024/11/17 16:19:52星期一 下面是文章的全部内容请认真阅读。
for(i=1;i<=4;i++){ a++;
printf(\ fun(); } }
void fun() {
int a=0;
a++;
printf(\}
解:In main: a= 1In fun:a=1
In main: a= 2In fun:a=1 In main: a= 3In fun:a=1 In main: a= 4In fun:a=1 6.
#include
int x=2,i; int f(int x);
for(i=0;i<3; i++)
printf(\}
int f(int x) {
int y=0; static z=0;
y++; z++;
return(x+y+z); }
解: 4 5 6
三、程序填空题
1.输入若干个正整数,判断每个数从高位到低位各位数字是否按值从小到大排列。其中input()返回输入的数据,且保证输入的数据是一个正整数。fun1()函数是判断正整数n是否按数字从小到大排列。
#include
int fun1(int m); void main() {
int n;
if(fun1(n)==1)
printf(\中各位数字按是从小到大排列\\n\}
int input()
30
{
int n;
printf(\请输入n:\\n\ scanf(\ if (n>0) ; do{
printf(\必须正整数,请重新输入 n:\\n\ scanf(\ }while(n<0); return n; }
int fun1( ) {
int k;
k=m;
while(m!=0)
if( m/10>k) return 0; else { k=m;
}
return 1; }
解:n=input(); return n int m m=m/10
2.输入一个末尾数非0的正整数,输出它的逆序数。其中,input是数据输入函数,reverse是数据逆序函数。
#include
long reverse(long n); void main() {
int n;
n=input();
printf(\逆序数是:%d\\n\}
long input() {
long n;
printf(\请输入n:\\n\ scanf(\
if ( ) return n ; do{
printf(\必须正整数,且末尾数非0,请重新输入 n:\\n\
}while(n<0||n==0); return n; }
long reverse(long n) {
long k=0; while(n){ n/=10; }
31
return k; }
解:reverse(n) n>0&&n!=0 scanf(“%d”,&n) k=k*10+n 五、编程题
1.输入一个x,输出下面分段函数f(x)的值。要求将分段函数的计算定义成函数。
?1? f(x)??0??1?x?0x?0 x?0解:#include
int f(double x) // 函数定义 {
int y=0;
if(x>0) y=1;
else if(x==0) y=0; else
y=-1; return y; }
void main() {
double x; int y;
scanf(“%lf”,&x); y=f(x); // 函数调用
printf(\}
2.输入一个正整数,输出该数的各个数字之和。要求编写函数,计算整数的各个数字之和。
解:#include
int sum(int a) {
int s=0;
while(a!=0){ s+=a; a=a/10; }
return s; }
void main() {
int x;
scanf(“%d”,&x);
printf(\}
3.编写函数,判断一个正整数a是否为完数,如果是完数,函数返回值为1;否则为0。(完数:一个数的所有因子之和等于该本身,如6、28都是完数;6=1+2+3;28=1+2+4+7+14。)
32
解:#include
int wanshu(int n) {
int i,a=0;
for(i=1;i<=n/2;i++) if(n%i==0) a+=i;
if(a==n) return 1; else return 0; }
void main() {
int n;
scanf(“%d”,&n); if(wanshu(n)==1)
printf(\是完数\\n\ else
printf(\不是完数\\n\}
4.输入三个数,输出它们的最小值。要求定义一个函数,返回两个数的最小值。
解:#include
double min(double x,double y) { if(x void main() { double a,b,c,m; printf(\ scanf(“%lf%lf%lf”,&a,&b,&c); m=min(min(a,b),c); printf(“最小数:%f\\n\} 5.在主函数中输入字符c和m,调用函数prn,连续将字符c输出m次。定义函数prn,完成连续将某个字符c输出m次后换行。 解:#include void prn(char,int); // 函数声明 void main() { char c; int m; printf(“Input c m:\\n”); scanf(“%c%d”,&c,&m); prn(c,m); } void prn(char c,int m) { int i; for(i=1;i<=m;i++) putchar(c); printf(“\\n”); 33 } 6.输入一个年、月、日输出它是这年的第几天。要求定义函数,根据年月日计算是第几天的函数。 解:#include int days(int year,int month,int date) { int d=date; switch(month-1) { case 11: d+=30; case 10: d+=31; case 9: d+=30; case 8: d+=31; case 7: d+=31; case 6: d+=30; case 5: d+=31; case 4: d+=30; case 3: d+=31; case 2: if((year%4==0&&year0!=0)||(year@0==0)) d+=29; else d+=28; case 1: d+=31; } return d; } void main() { int year,month,date; int d; printf(“请输入 年 月 日:\\n”); scanf(\ d=days(year,month,date); printf(\月%d日是%d年的第%d天!\month,date,year,d); } 7.定义一个函数将正整数n转换成文字形式输出星期几(n值0~6分别转换成星期天,星期一,?,星期六)。 解:#include { case 0: printf(“星期天”); break; case 1: printf(“星期一”); break; case 2: printf(“星期二”); break; case 3: printf(“星期三”); break; case 4: printf(“星期四”); break; case 5: printf(“星期五”); break; case 6: printf(“星期六”); break; } } void main() { int num; printf(“请输入一个整数0~6:\\n”); scanf(\ week(num); } 7.输入一个整数n,计算3.2n的值。要求定义函数计算xn 值。 解:#include 34