易错
- void f(void){…}的函数正确调用形式:f().
- 在C语言中,函数的隐含存储类别是extern.局部变量默认为auto型.
- 对于全局变量,如果在函数中被修改了值,则全局变量的值被改变,在其他函数中被访问时是被修改后的值,如下段代码,运行结果为
max=9,min=8
.
#include <stdio.h>
int max;
int fun(int a,int b)
{
int min;
max=a>b?a:b;
min=a<b?a:b;
return min;
}
void mian()
{
int a=9,b=8;
printf("max=%d,min=%d\n",max,fun(a,b));
}
程序设计
1、选出能被3整除且至少有一位是5的两位数的整数,输出所有满足条件的数以及其个数.
#include <stdio.h>
int Sub(int k,int n)
{
int a1,a2;
a2=k/10;//a2为k的十位数
a1=k-a2*10;//a1为k的个位数
if(a2==5||a1==5&&k%3==0)
{
printf("%4d",k);//打印出被3整除且至少有一位是5的两位数整数
n++;//计数
return n;
}
else
return -1;
}
int main()
{
int n=0,k,m;
for(k=10;k<100;k++)
{
m=Sub(k,n);
if(m!=-1) n=m;//符合条件值更新,不符合时不变
}
printf("n=%d\n",n);
return 0;
}
2、设计函数MinCommonMultiple(),计算两个正整数的最小公倍数.
#include <stdio.h>
int MinCommonMultiple(int a,int b);
int main()
{
int a,b,x;
printf("input a,b:");
scanf("%d,%d",&a,&b);
x=MinCommonMultiple(a,b);
if(x!=-1)
printf("MinCommonMultiple=%d\n",x);
else
printf("input error!\n");
return 0;
}
int MinCommonMultiple(int a,int b)
{
int i;
if(a<=0||b<=0) return -1;
for(i=1;i<b;i++)
if(i*a%b==0) return i*a;//i为a和b的最小公约数
return a*b;//a和b没有公约数
}
3、求两个数的最大公约数.
#include <stdio.h>
int main()
{
int x,y,r;
scanf("%d,%d",&a,&b);
do{
r=x%y;
x=y;
y=r;
}while(r!=0);
printf("MaxCommonFactor is %d",x);
return 0;
}
4、求一个整数的逆序数.
#include <stdio.h>
int main()
{
int n,n_r=0;
scanf("%d",&n);
while(n!=0)
{
n_r=n_r*10+n%10;
n=n/10;
}
printf("revert number is %d",n_r);
return 0;
}