全国计算机等级考试二级C语言题型总结(三)——函数与数组程序设计部分
上机题型归纳总结:
函数部分
函数的传值调用与传地址调用
(案例1)要求编写一个函数,实现两个数的交换功能
传值调用函数的设计
main()
{
int a = 5,b=6;
c = swap(a,b);
printf(“a=%d,b=%d”,a,b);
printf(“a=%d,b=%d”,a,b);
}
int swap( int a, int b)
{
int t;
t=a;
a=b;
b=t;
printf(“a=%d,b=%d”,a,b);
}
(2)传地址调用的程序设计
main()
{
printf(“a=%d,b=%d”,a,b);
int a = 5,b=6;
c = swap(&a,&b);
printf(“a=%d,b=%d”,a,b);
}
int swap( int *a, int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
printf(“a=%d,b=%d”,*a,*b);
}
函数设计的递归方法
(案例1)题目:利用递归方法求5!题目:利用递归函数调用方式,将所输入的字符以相反顺序打印出来。题目:对10个数进行排序题目:求一个3*3矩阵对角线元素之和 #include "stdio.h"main(){int i;int fact();for(i=0;i<5;i++) printf("\40:%d!=%d\n",i,fact(i));}int fact(j)int j;{int sum;if(j==0) sum=1;else sum=j*fact(j-1);return sum;}
# include
void output(char a[]);
void main()
{
char a[100];
char *p;
p=a;
printf("intput a string:\n");
scanf("%s",a);
output(a);
}
void output(char a[])
{
char *p;
p=a;
if(*p=='\0')
printf("%c",*p);
else
output(p+1);
printf("%c",*p);
}
(案例2)
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。 2.程序源代码:#define N 10main(){int i,j,min,tem,a[N];/*input data*/printf("please input ten num:\n");for(i=0;ia[j]) min=j;tem=a[i];a[i]=a[min];a[min]=tem;}/*output data*/printf("After sorted \n");for(i=0;i
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。2.程序源代码:main(){float a[3][3],sum=0;int i,j;printf("please input rectangle element:\n");for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%f",&a[i][j]);for(i=0;i<3;i++) sum=sum+a[i][i];printf("duijiaoxian he is %6.2f",sum);}