梦之队小组第一次考核(C语言基础)
1.编写函数fun1,fun2,分别用冒泡排序,选择排序,对输入的十个数字从小到大的顺序进行排序。
(冒泡排序:外层for循环决定冒泡排序的趟数,内层for循环决定每趟所进行两两比较的次数。
选择排序:外层for循环是确定位置的,该位置是存放每次从待排序数列中经选择和交换后所选出的最小数。内层for循环是实现将确定位置上的数与后面待排序区间中的数进行比较的。)
#include<stdio.h>
#define M 10
void fun1(int *arr, int size) // 冒泡排序
{
}
void fun2(int *arr,int size)//选择排序
{
}
int main()
{
int array[M],i;
int arrayselect[M];
for(i=0;i<M;i++)
{
printf("请输入第%d个数字:",i+1);
scanf("%d",&array[i]);
arrayselect[i]=array[i];
}
fun1(array,M);
printf("冒泡排序输出结果!\n");
for(i=0;i<M;i++)
{
printf("%d\t",array[i]);
}
fun2(arrayselect,M);
printf("选择排序输出结果!\n");
for(i=0;i<M;i++)
{
printf("%d\t",arrayselect[i]);
}
}
2.编写函数fun,求出两个非零正整数的最大公约数,并作为函数值返回。(辗转相除法)
(判断 a 和 b 的关系,如果 a 小于 b,则利用中间变量 t 将其互换。再利用辗转相除法(用较大数除以较小数,再用出现的余数(第一余 数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。)求出最大公约数,进而求出最小公倍数(a和b的乘积除以它们的最大公约数就是最小公倍数))。
/*例如,若给n和m分别输入27和81,则输出的最大公约数为27。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。*/
#include<stdio.h>
int fun(int a,int b)
{
}
main()
{
int n,m,a;
printf("Input n m: ");
scanf("%d%d",&n,&m);
printf("n=%d m=%d\n\n",n,m);
a=fun(n,m);
printf("The maximun common divisor is %d\n\n",a);
}
3.给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在主函数中输出。
函数接口定义:
struct student fun(struct student std[], int n);
其中 std 和 n 都是用户传入的参数。 函数fun的功能是将含有 n 个人的形参 std 所指结构体数组中年龄最大者的数据作为函数值返回。
测试程序样例:
#include <stdio.h>
struct student
{
char name[10];
int age;
};
struct student fun(struct student std[], int n);
fun(struct student std[], int n)
{
}
int main()
{
struct student std[5]={“aaa”,17,“bbb”,16,“ccc”,18,“ddd”,17,“eee”,15 };
struct student max;
max=fun(std,5);
printf("\nThe result:\n");
printf("\nName : %s, Age : %d\n", max.name,max.age);
return 0;
}
4.编写函数fan,实现功能:统计一行字符串中单词个数,作为函数值返回。字符串在主函数中输入,规定所有单词有小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。(仅修改fun函数即可)
#include<stdio.h>
#include<string.h>
#define M 100
int fun(char*str)
{
}
int main()
{
char s[M];
int sum=0;
printf("Enter a string:\n");
gets(s);
sum=fun(s);
printf("The number of word is:%d\n\n",sum);
}
5.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。
#include<stdio.h>
#include<string.h>
#define M 10
#define M 10
typedef struct
{
char num[10];//学号
int s;//成绩
}SCORE;
SCORE fun(SCORE*p,char*q)
{
}
int main()
{
SCORE stu[M]={{"G002",69},{"G004",85},{"G001",96},{"G007",72},{"G008",64},{"G006",87},{"G015",85},{"G013",94},{"G012",64},{"G014",91}};
SCORE t;
char m[10];
int i;
printf("The original data:\n");
for(i=0;i<M;i++)//打印所有学生数据
{
if(i%4==0)
printf("\n");
printf("%s %3d\n",stu[i].num,stu[i].s);
}
printf("\n\nEnter the number:");
gets(m);
t=fun(stu,m);
printf("The data :");
printf("\n%s %4d\n",t.num,t.s);
printf("\n");
}
6.编写函数fun,函数fun的功能是:用递归算法计算斐波拉契级数数列中第n项的值。从第1项起,斐波拉契级数序列为1、1、2、3、5、8、…
#include<stdio.h>
long fun(int m)
{
}
int main()
{
long a;
int n;
printf("Input n: ");
scanf("%d",&n);
printf("n=%d\n",n);
a=fun(n);
printf("a=%d\n\n",a);
}