我是小咲,不知道各位是否大一的时候初学c语言对于编程题目会深恶痛绝?
现在来拯救你了,尝试看懂下面我写的代码……应该不会有太多mistake吧,至少编译通过了呢
没有对自己要求这么低好吗?言归正传,这些就是上机学校编程题库中的部分题了
- 程序填空题(不要增加或删除行,只需要把下划线去掉,在下划线位置上填入相应内容,并成功运行)
- 功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。
-
#include <conio.h>
#include <stdio.h>
/***********SPACE***********/
int fun(int k)
{
int m = 0, mc = 0;
/***********SPACE***********/
while (k >= 2 && mc<10)
{
/***********SPACE***********/
if (k % 13 == 0 || k % 17 == 0)
{
m = m + k;
mc++;
}
k--;
}
/***********SPACE***********/
printf("%d",m);
}
main()
{
printf("%d\n", fun(500));
system("pause");
}
- 功能:计算并输出high以内最大的10个素数之和,high由主函数传给fun函数,若high的值为100,则函数的值为732。
-
#include <stdio.h>
#include <math.h>
int fun(int high)
{
int sum = 0, n = 0, j, yes;
/***********SPACE***********/
while ((high >= 2) && (n<10))
{
yes = 1;
for (j = 2; j <= high / 2; j++)
/***********SPACE***********/
if (high%j==0)
{
yes = 0;
break;
}
if (yes)
{
sum += high;
n++;
}
high--;
}
/***********SPACE***********/
return sum;
}
main()
{
printf("%d\n", fun(100));
system("pause");
}
- 功能:编写函数fun求20以内所有5的倍数之积。
-
#include <stdio.h>
#define N 20
int fun(int m)
{
/**********FOUND**********/
int s = 1, i;
for (i = 1; i<N; i++)
/**********FOUND**********/
if (i%m ==0)
/**********FOUND**********/
s *= i;
return s;
}
main()
{
int sum;
sum = fun(5);
printf("%d以内所有%d的倍数之积为: %d\n", N, 5, sum);
}二、程序设计题(根据题目要求编写程序并成功运行,其它各题格式与1题格式相同)
- 功能:用辗转相除法求两个整数的最大公约数。
-
------------------------------------------------*/
#include<stdio.h>
int gcd(int n, int m)
{
/**********Program**********/
int i=n%m;
while (i&&m&&n){
n = m%i;
if (n == 0) return i;
m = i%n;
if (m == 0)return n;
i = n%m;
if (i == 0) return m;
}
return m;
/********** End **********/
}
main()
{
int n, m, result;
scanf("%d%d", &n, &m);
result = gcd(n, m);
printf("the gcd is %d\n", result);
system("pause");
}
- 要求键盘输入一个数,编写函数判断它的奇偶性
-
#include <stdio.h>
#include <math.h>
int fun(n){
if (n % 2 != 0)
return 1;
return 0;
}
int main(){
int n,flag;
scanf("%d", &n);
flag=fun(n);
if (flag == 1){
printf("奇数");
}
else
printf("偶数");
system("pause");
return 0;
}
- 输入两正整数,编写函数求其最小公倍数
-
#include<stdio.h>
int gcd(int n, int m)
{
/**********Program**********/
int i=n%m;
while (i&&m&&n){
n = m%i;
if (n == 0) return i;
m = i%n;
if (m == 0)return n;
i = n%m;
if (i == 0) return m;
}
return m;
/********** End **********/
}
main()
{
int n, m, result;
scanf("%d%d", &n, &m);
result = m*n/gcd(n, m);
printf("the gcd is %d\n", result);
system("pause");
}
- 编写函数判断一个数是否是完数,并调用函数找出1000内的所有完数
-
#include<stdio.h>
int main()
{
int sum; //i控制数范围,j控制除数范围,sum记录累加因子之和
for (int i = 2; i <= 1000; i++)
{
//每次循环时sum的恒为0
sum = 0;
for (int j = 1; j<i; j++)
{
//判断因子如果是纳闷算入总和
if (i%j == 0)
sum += j;
}
//满足条件输出
if (sum == i)
printf("perfect number:%d\n", i);
}
system("pause");
return 0;
}
- 编写并调用函数找出1000内的所有水仙花数
-
#include <stdio.h>
#include <math.h>
int fun(int n){
if (n == (n / 100)*(n / 100)*(n / 100) +
(n % 10)*(n % 10)*(n % 10) +
((n / 10) % 10)*((n / 10) % 10)*((n / 10) % 10))
{
return 1;
}
return 0;
}
int main(){
for (int i = 100; i < 1000; i++){
int temp = fun(i);
if (temp){
printf("%d\n", i);
}
}
system("pause");
return 0;
}
- 要求输入一个数,编写函数求它的逆序数
-
#include <math.h>
#include <stdio.h>
typedef long long ll;
int a[100], ans[100];
ll solve(int l, int r)
{
int mid = (l + r) >> 1;
if (l == r)
{
return 0;
}
ll num = 0;//逆序对的个数
num += solve(l, mid);
num += solve(mid + 1, r);
for (int i = l, j = mid + 1, k = 0; i <= mid || j <= r; k++)
{
if (i>mid) ans[k] = a[j++];
else if (j>r) ans[k] = a[i++];
else if (a[i] <= a[j]) ans[k] = a[i++];
else
{
//出现逆序对
ans[k] = a[j++];
num += mid - i + 1;//B序列中大于a[j]的个数
}
}
for (int i = 0; i <= (r - l); i++)
a[l + i] = ans[i];
return num;
}
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", a + i);
printf("%lld\n", solve(0, n - 1));
system("pause");
return 0;
}
- 输出一个菱形
-
#include <math.h>
#include <stdio.h>
#define N 10
void print(int n){
for (int i = 0; i < n;i++)
printf(" ");
}
int main(){
int n = N;
for (int i = 0; i < N; i++){
print(n--);
for (int j = 0; j <= i;j++){
printf("* ");
}
printf("\n");
}
for (int i = N; i >=0; i--){
print(n++);
for (int j = 0; j <= i; j++){
printf("* ");
}
printf("\n");
}
system("pause");
}
- 输入5个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分
-
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
void fun(int a,int b,int c,int d,int e){
int max = a;
int min = a;
double average;
if (max < b) max=b;
if (max < c)max = c;
if (max < d)max = d;
if (max < e)max = e;
printf("%d ", max);
if (min > b)min=b;
if (min > c)min = c;
if (min > d)min = d;
if (min > e)min = e;
printf("%d ", min);
average = (a + b + c + d + e) / 5.0;
printf("%.2lf ", average);
}
int main(){
int a1, a2, a3, a4, a5;
scanf("%d%d%d%d%d", &a1,&a2,&a3,&a4,&a5);
fun(a1,a2,a3,a4,a5);
system("pause");
return 0;
}
- 功能:从键盘上输入任意实数x,求出其所对应的函数值。
-
z=(x-4)的二次幂(x>4)
z=x的八次幂(x>-4)
z=(x>-10)
z=|x|+20(其他)
#include <math.h>
#include <stdio.h>
float y(float x)
{
/**********Program**********/
float z;
if(x>4)
z = pow(x - 4, 2);
if (x>-4)
z = pow(x, 8);
if (x > -10)
z = 4 / (x*(x + 1));
else
z = fabs(x) + 20;
return z;
/********** End **********/
}
main()
{
float x;
scanf("%f", &x);
printf("y=%f\n", y(x));
system("pause");
}