1、试编写函数实现求两个整数的最大公约数。
#include<stdio.h>
int main()
{
int a, b, c;
printf("请输入两个整数:");
scanf("%d%d", &a, &b);
c = a % b;
while (c != 0)
{
a = b;
b = c;
c = a % b;
}
printf("最大公约数为:%d", b);
return 0;
}
2、求出 Fibonacci 数列的前 30 个数并存放到数组 a 中,输出数组 a 的所有元素(要求每行 输出 5 个元素)
#include <stdio.h>
int main( )
{
int i;
int a[30] = {1, 1};
for (i = 2; i < 30; i++)
a[i] = a[i-1] + a[i-2];
for (i = 0; i < 30; i++)
{
if (i % 5 == 0) printf ("\n");
printf ("%12d", a[i]);
}
return 0;
}
3、从键盘输入某班 58 个学生的《C 语言程序设计》的成绩,编程计算该班《C 语言程序 设计》的平均分。
#include <stdio.h>
float Average(float score[],int n)
{
float sum=0;
for(int i=0;i<n;i++)
sum=sum+score[i];
return(sum/n);
}
int main ( )
{
float score[58],average_score;
printf ("\n 请输入58个学生的成绩:");
for(int i=0;i<58;i++)
scanf ("%f",&score[i]);
average_score=Average(score,58);
printf ("\n平均成是:%f",average_score);
return 0;
}
4、试编写一个函数:在数组a中有n个整数,要求把下标从0到p(p小于等于n-1)的数
平移到数组的最后。
例如:
原始内容:1,2,3,4,5,6,7,8,9,10;
当p=4时,移动后内容:6,7,8,9,10,1,2,3,4,5
#include <stdio.h>
void MyFun(int a[],int n,int p)
{
int i,j,t;
for(i=0; i<=p; i++)
{
t=a[0];
for(j=1; j<n; j++) a[j-1]=a[j];
a[n-1]=t;
}
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
MyFun(a,10,4);
for(int i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
5、定义函数int get_count(char *name)计算字符串name的长度,并返回结果。在main
函数中定义一个字符数组,输入若干个字符,调用函数get_count计算字符串的长度,并输出其计算结果。
#include <stdio.h>
int get_count (char *name);
int main()
{
int length;
char name[100];
printf("请输入一个字符串:\n");
scanf("%s", name);
length=get_count (name);
printf("length=%d", length);
return 0;
}
int get_count (char *name)
{
int i=0;
while(name[i!= ‘\0')
{ i+;}
return i;
}
6、本题要求编写程序,将输入的n个整数存入数组a中,然后计算这些数的平均值,再输
出所有大于平均值的数
#include <stdio.h>
int main()
{ int a[20],
sum = 0, ave;
int n, i;
printf("请输入存入数组的数据个数:");
scanf("%d",&n);
printf("请输入数据,用空格隔开每个数\n");
for (i = 0; i < n; i++)
{
scanf("%d",&a[i]);
sum += a[i];
}
ave = sum / n;
printf("大于平均值的数有:\n");
for (i = 0; i < n; i++)
{ if (a[i] > ave)
printf("%d ", a[i]);
}
return 0;
}
7、某手机店每天早上进货,进货时需要记录手机的数量,以及每个手机的名称、所包含手 机的数量、每个手机的单价,手机结构体定义如下: struct phone{ char name[15]; int count; float price; };
编写程序,接收商店工作人员录入的进货手机的总数量和每个手机的基本信息(名称、个数、 单价),计算并输出当天进货花费的总金额。
#include<stdio.h>
struct phone{
char name[15];
int count;
float price;
};
int main()
{ struct phone st[100];
int i,k,n;
float total=0;
printf("请输入进货手机的数量:");
scanf("%d",&n);
printf("请输入每个手机的信息:\n");
for(i=0;i<n; i++)
{
scanf("%s%d%f",st[i].name,&st[i].count,&st[i].price)
;
total += st[i].count * st[i].price;
}
printf("总额:%.2f\n",total);
return 0;
}
8、编程实现:统计某班 10 名学生成绩中及格的人数,并对成绩进行从低到高排序。其中
getPass(score,n)函数用于计算及格人数,score 为数组名,n 为人数、Sort(score,
n)函数用于排序,score 为数组名,n 为人数。
#include <stdio.h>
int getPass(int score[], int n);
void Sort(int score[], int n);
int main()
{int score[10], count, i;
for(i=0; i<10; i++)
scanf("%d",&score[i]);
count = getPass(score,10);
Sort(score,10);
printf("及格人数=%d\n",count);
printf("sort array:\n");
for(i=0;i<10;i++)
printf("%4d",score[i]);
return 0;
}
int getPass(int score[], int n)
{int i, count=0;
for(i=0;i<n;i++)
if(score[i]>60)
count++;
return count;
}
void Sort(int score[], int n)
{int i,j,k;
for(i=0; i<n-1; i++)
{k=i;
for(j=i+1;j<n;j++)
if(score[j]<score[k])
k=j;
if(k!=i)
{int tmp;
tmp = score[i];
score[i]=score[k];
score[k] = tmp;}
}
}
9、计算学生成绩:有一个结构体类型,包含三个成员:学生姓名、学生学号和 5 门课程成 绩,其结构体类型定义如下: struct student { char name[10]; //姓名 char num[10]; //学号 float score[5]; //5 科成绩 };
编写程序由键盘输入 10 个学生的姓名、学号和 5 科成绩,计算并输出每位学生的姓名、学 生学号和平均成绩,平均成绩保留两位小数。
#include<stdio.h>
struct student
{
char name[10]; //姓名
char num[10]; //学号
float score[5]; //5 科成绩
};
int main()
{
struct student a[10];
int i,j;
float average;
for(i=0;i<10;i++)
{
scanf("%s",a[i].name);
scanf("%s",a[i].num);
for(j=0;j<5;j++)
scanf("%f",&a[i].score[j]);
}
for(i=0;i<10;i++)
{
average=0;
for(j=0;j<5;j++)
average+=a[i].score[j];
average/=5;
printf("%s %s %.2f\n",a[i].name,a[i].num,average);
}
return 0;
}
10、统计平均分,最高分及得最高分人数
请编写一个函数 fun,函数的功能是:统计出若干个学生的平均成绩,最高分以及得最 高分的人数。
函数接口定义: float fun(float array[],int n);
其中 array 和 n 都是用户传入的参数。函数须统计 array 数组中学生的平均成绩,最高分以 及得最高分的人数,函数返回平均成绩,最高分以及得最高分的人数存放在全局变量 Max
和 J 中。
float fun(float array[],int n)
{
int i;
float s=0;
Max=array[0];
J=0;
for(i=0;i<n;i++)
{
s+=array[i];
if(Max<array[i])
Max=array[i];
}
s=s/n;
for(i=0;i<n;i++)
if(Max==array[i])
J++;
return s;
}