梦之队小组第一次考核任务(C语言基础)

梦之队小组第一次考核(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);
}

上一篇:指针函数


下一篇:实验3 函数