程序设计

题号:11939

功能:删去一维数组中所有重复的数,只保留不同的数。
数组中的数已按由小到大的顺序排列,
函数返回删除后数组中数据的个数。
例如:一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。
删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。

#include "stdio.h"
#define N 80

int fun(int a[], int n)
{
    /* Begin */
    /* End */
}

main()
{
    void TestFunc();
    int a[N] = {2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}, i, n = 20;
    printf("The original data:\n");
    for(i = 0; i < n; i++) printf("%3d", a[i]);
    n = fun(a, n);
    printf("\n\nThe data after deleted:\n");
    for(i = 0; i < n; i++) printf("%3d", a[i]);
    printf("\n\n");
    TestFunc();
}

void TestFunc()
{
    FILE *IN, *OUT;
    int a[N];
    int n;
    int i;
    IN = fopen("in.dat", "r");
    if(IN == NULL) printf("Read File Error");
    OUT = fopen("out.dat", "w");
    if(OUT == NULL) printf("Write File Error");
    fscanf(IN, "%d", &n);
    for(i = 0; i < n; i++) fscanf(IN, "%d", &a[i]);
    n = fun(a, n);
    for(i = 0; i < n; i++) fprintf(OUT, "%3d", a[i]);
    fclose(IN);
    fclose(OUT);
}

示例代码:

int i, j = 1, k = a[0];
for(i = 1; i < n; i++)
    if(k != a[i])
    {
        a[j++] = a[i];
        k = a[i];
    }
a[j] = 0;
return j;

题号:11697

功能:把20个随机数存入一个数组,然后输出该数组中的最大值。

#include "stdio.h"
#include "stdlib.h"
#define VSIZE 20

void NONO();
int vector[VSIZE];

int fun(int list[], int size)
{
    /* Begin */
    /* End */
}

void main()
{
    int i;
    for (i = 0; i < VSIZE; i++)
    {
        vector[i] = rand();
        printf("Vector[%d] = %6d\n", i, vector[i]);
    }
    i = fun(vector, VSIZE);
    printf("\nMaxnum: Vector[%d] = %6d\n", i, vector[i]);
    NONO();
}

void NONO()
{
    int i, t;
    FILE *fp;
    fp = fopen("out.dat", "w");
    for (i = 0; i < VSIZE; i++)
        fprintf(fp, "Vector[%d] = %6d\n", i, vector[i]);
    t = fun(vector, VSIZE);
    fprintf(fp, "\nMaxnum: Vector[%d] = %6d\n", t, vector[t]);
    fclose(fp);
}

示例代码:

int i, max = 0;
for(i = 1; i < size; i++)
    if(list[max] < list[i])
        max = i;
return max;

题号:11671、6626

题目: 求一批数中最大值和最小值的积。

#define N 30
#include "stdlib.h"
#include "stdio.h"
void TestFunc();

int max_min(int a[],int n)
{
    /* Begin */
    /* End */
}

void main()
{
    int a[N],i,k;
    for(i=0;i<N;i++)
        a[i]=rand()%50+10;
    for(i=0;i<N;i++)
    {
        printf("%5d",a[i]);
        if((i+1)%5==0) printf("\n");
    }
    k=max_min(a,N);
    printf("the result is:%d\n",k);
    TestFunc();
}

void TestFunc()
{
    FILE *IN,*OUT;
    int n;
    int i[10];
    int o;
    IN=fopen("in.dat","r");
    if(IN==NULL)
    {
        printf("Read File Error");
    }
    OUT=fopen("out.dat","w");
    if(OUT==NULL)
    {
        printf("Write File Error");
    }
    for(n=0;n<10;n++)
    {
        fscanf(IN,"%d",&i[n]);
    }
    o=max_min(i,10);
    fprintf(OUT,"%d\n",o);
    fclose(IN);
    fclose(OUT);
}

示例代码:

int i,max,min;
max=min=a[0];
for(i=1;i<n;i++)
    if(a[i]>max) max=a[i];
    else if(a[i]<min) min=a[i];
return(max*min);

题号:11961

题目: 请编一个函数 void fun(int tt[M][N], int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。

#include<conio.h>
#include<stdio.h>
#define M 3
#define N 4
void NONO();

void fun(int tt[M][N], int pp[N])
{
    /* Begin */
    /* End */
}

void main()
{
    int t[M][N] = {{22,45,56,30},
                   {19,33,45,38},
                   {20,22,66,40}};
    int p[N], i, j, k;
    printf("The original data is:\n");
    for(i=0; i<M; i++)
    {
        for(j=0; j<N; j++)
            printf("%6d", t[i][j]);
        printf("\n");
    }
    fun(t, p);
    printf("\nThe result is:\n");
    for(k=0; k<N; k++) printf("%4d", p[k]);
    printf("\n");
    NONO();
}

void NONO()
{
    int i, j, array[3][4], p[4];
    FILE *rf, *wf;
    rf = fopen("in.dat", "r");
    wf = fopen("out.dat", "w");
    for (i=0; i<3; i++)
        for (j=0; j<4; j++)
            fscanf(rf, "%d", &array[i][j]);
    fun(array, p);
    for (j=0; j<4; j++)
    {
        fprintf(wf, "%7d", p[j]);
        fprintf(wf, "\n");
    }
    fclose(rf);
    fclose(wf);
}

示例代码:

int i, j;
for(j=0; j<N; j++)
{
    pp[j] = tt[0][j];
    for(i=1; i<M; i++)
        if(tt[i][j] > pp[j])
            pp[j] = tt[i][j];
}

题号:6841

题目: 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
例如,假定输入的字符串为:asd asasdfg asd as zx67 ask mklo,子字符串为:as,则应输出6。

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <windows.h>

int fun(char *str, char *substr)
{
    /* Begin */
    /* End */
}

NONO()
{
    /* 请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。 */
    char str[81], substr[3];
    int n, j;
    FILE *rf, *wf;
    rf = fopen("b17.in", "r");
    wf = fopen("b17.out", "w");
    for (j=0; j<4; j++)
    {
        fscanf(rf, "%s", str);
        fscanf(rf, "%s", substr);
        n = fun(str, substr);
        fprintf(wf, "n=%d\n", n);
    }
    fclose(rf);
    fclose(wf);
}

main()
{
    char str[81], substr[3];
    int n;
    system("cls");
    printf("输入主字符串:");
    gets(str);
    printf("输入子字符串:");
    gets(substr);
    puts(str);
    puts(substr);
    n = fun(str, substr);
    printf("n=%d\n", n);
    NONO();
}

示例代码:

unsigned int i=0;
int j, k=0, add;
while (i < strlen(str))
{
    j=0;
    add=i;
    while ((str[add] == substr[j]) && (substr[j] != '\0'))
    {
        add++;
        j++;
    }
    if (substr[j] == '\0') k++;
    i++;
}
return k;

题号:11976

题目: 请编写一个函数 fun,函数的功能是:求出 N×M 整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。
例如:输入的数组为:

1 2 3
4 15 6
12 18 9
10 11 2

求出的最大数为 18,行坐标为 2,列坐标为 1。

#define N 4
#define M 3
#include <stdio.h>
int Row, Col;

main()
{
    int a[N][M], i, j, max, row, col;
    printf("input a array:");
    for (i = 0; i < N; i++)
        for (j = 0; j < M; j++)
            scanf("%d", &a[i][j]);
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
            printf("%d", a[i][j]);
        printf("\n");
    }
    max = fun(a);
    printf("max=%d,row=%d,col=%d", max, Row, Col);
    TestFunc();
}

int fun(int array[N][M])
{
    /* Begin */
    /* End */
}

TestFunc()
{
    FILE *IN, *OUT;
    int iIN[N][M], iOUT, i, j;
    IN = fopen("9.in", "r");
    if (IN == NULL)
    {
        printf("Please Verify The Currernt Dir..It May Be Changed");
    }
    OUT = fopen("9.out", "w");
    if (OUT == NULL)
    {
        printf("Please Verify The Current Dir.. It May Be Changed");
    }
    for (i = 0; i < N; i++)
        for (j = 0; j < M; j++)
            fscanf(IN, "%d", &iIN[i][j]);
    iOUT = fun(iIN);
    fprintf(OUT, "%d %d %d\n", iOUT, Row, Col);
    fclose(IN);
    fclose(OUT);
}

示例代码:

int max, i, j;
max = array[0][0];
Row = 0;
Col = 0;
for (i = 0; i < N; i++)
{
    for (j = 0; j < M; j++)
        if (max < array[i][j])
        {
            max = array[i][j];
            Row = i;
            Col = j;
        }
}
return max;

题号:6705

题目: 函数 fun 的功能是:将 s 所指字符串中下标为奇数同时 ASCII 值也为奇数的字符删除,串中剩余的字符形成一个新串放在 t 所指的数组中。
例如:若 s 所指串中的内容为:“ABCDEFG12345”,其中 C 的 ASCII 码值虽为奇数,但在数组中的下标为偶数,因此不能删除,而字符 1 的 ASCII 码值为奇数,在数组中的下标也为奇数,因此应当删除,其他依次类推。最后,t 所指的数组中的内容是 “ABCDEFG24”。

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>

void fun(char *s, char t[])
{
    /* Begin */
    /* End */
}

NONO()
{
    /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
    char s[100], t[100];
    FILE *rf, *wf;
    int i;
    rf = fopen("bc08.dat", "r");
    wf = fopen("bc08.out", "w");
    for (i = 0; i < 10; i++)
    {
        fscanf(rf, "%s", s);
        fun(s, t);
        fprintf(wf, "%s\n", t);
    }
    fclose(rf);
    fclose(wf);
}

main()
{
    char s[100], t[100];
    system("cls");
    printf("\nPlease enter string S:");
    scanf("%s", s);
    fun(s, t);
    printf("\nThe result is:%s\n", t);
    NONO();
}

示例代码:

int i, slenth, n = 0;
slenth = strlen(s);
for (i = 0; i < slenth; i++)
{
    if (i % 2 != 0 && s[i] % 2 != 0)
        ;
    else
        t[n++] = s[i];
}
t[n] = '\0';

题号:8826

题目: 请编写一个函数 int fun(int x),它的功能是:判断整数 x 是否是同构数。若是同构数,函数返回 1;否则返回 0。
所谓“同构数”是指这样的数,这个数出现在它的平方数的右边。
例如:输入整数 5,5 的平方数是 25,5 是 25 中右侧的数,所以 5 是同构数。
x 的值由主函数从键盘读入,要求不大于 100。

#include "stdio.h"
int fun(int x)
{
    /* Begin */
    /* End */
}

main()
{
    int x, y;
    printf("\nPlease enter a integer numbers:");
    scanf("%d", &x);
    if (x > 100)
    {
        printf("data error!\n");
        exit(0);
    }
    y = fun(x);
    if (y)
        printf("%d YES\n", x);
    else
        printf("%d NO\n", x);
    yzj();
}

yzj()
{
    FILE *IN, *OUT;
    int n, t;
    int i[5];
    int o;
    IN = fopen("in.dat", "r");
    if (IN == NULL)
    {
        printf("Read File Error");
    }
    OUT = fopen("out.dat", "w");
    if (OUT == NULL)
    {
        printf("Write File Error");
    }
    for (t = 0; t < 5; t++)
    {
        fscanf(IN, "%d", &n);
        o = fun(n);
        fprintf(OUT, "%d\n", o);
    }
    fclose(IN);
    fclose(OUT);
}

示例代码:

int k;
k = x * x;
if ((k % 10 == x) || (k % 100 == x))
    return 1;
else
    return 0;

题号:2508

题目: 根据整型参数 n,计算如图公式的值。

#include <stdio.h>
#include "conio.h"
void bky();

double fun(int n)
{
    /* Begin */
    /* End */
}

main()
{
    int m;
    printf("Enter m: ");
    scanf("%d", &m);
    printf("\nThe result is %f\n", fun(m));
    bky();
}

void bky()
{
    FILE *IN, *OUT;
    int s;
    int t;
    double o;
    IN = fopen("in.dat", "r");
    if (IN == NULL)
    {
        printf("Read FILE Error");
    }
    OUT = fopen("out.dat", "w");
    if (OUT == NULL)
    {
        printf("Write FILE Error");
    }
    for (s = 1; s <= 5; s++)
    {
        fscanf(IN, "%d", &t);
        o = fun(t);
        fprintf(OUT, "%f\n", o);
    }
    fclose(IN);
    fclose(OUT);
}

示例代码:

double a = 1;
int i;
for (i = 1; i < n; i++)
    a = 1.0 / (1 + a);
return a;

题号:5395

题目: 请编写一个函数 void fun(char *tt, int pp[]),统计在 tt 字符串中 'a''z' 26 个字母各自出现的次数,并依次放在 pp 所指数组中。
例如,当输入字符串:abcdefgabcdeabc 后,程序的输出结果应该是:3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

#include <conio.h>
#include <stdio.h>
#include <windows.h>
void fun(char *tt, int pp[])
{
    /* Begin */
    /* End */
}

NONO()
{
    /* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。 */
    char aa[1000];
    int bb[26], k, i;
    FILE *rf, *wf;
    rf = fopen("bc07.in", "r");
    wf = fopen("bc07.out", "w");
    for (i = 0; i < 10; i++)
    {
        fscanf(rf, "%s", aa);
        fun(aa, bb);
        for (k = 0; k < 26; k++)
            fprintf(wf, "%d ", bb[k]);
        fprintf(wf, "\n");
    }
    fclose(rf);
    fclose(wf);
}

main()
{
    char aa[1000];
    int bb[26], k;
    system("cls");
    printf("\nPlease enter a char string:");
    scanf("%s", aa);
    fun(aa, bb);
    for (k = 0; k < 26; k++)
        printf("%d", bb[k]);
    printf("\n");
    NONO();
}

示例代码:

char *p_tt = tt;
int i = 0;
while (i < 26)
{
    pp[i] = 0;
    i++;
}
for (; *p_tt != '\0'; p_tt++)
{
    if (*p_tt >= 'a' && *p_tt <= 'z')
        pp[*p_tt - 'a']++;
}

题号:1617

题目: 请编写函数 fun,其功能是:计算并输出下列多项式的值:

$$
S = \frac{1}{1} - \frac{1}{2} + \frac{1}{3} - \frac{1}{4} + \dots + \frac{1}{2n-1} - \frac{1}{2n}
$$

例如,在主函数中从键盘给 n 输入 8 后,输出为:s=0.662872
注意:要求 n 的值大于 1 但不大于 100。

#include <stdio.h>
double fun(int n)
{
    /* Begin */
    /* End */
}

NONO()
{
    /* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
    FILE *rf, *wf;
    int n, i;
    double s;
    rf = fopen("bc.in", "r");
    wf = fopen("bc.out", "w");
    for (i = 0; i < 10; i++)
    {
        fscanf(rf, "%d", &n);
        s = fun(n);
        fprintf(wf, "%lf\n", s);
    }
    fclose(rf);
    fclose(wf);
}

main()
{
    int n;
    double s;
    printf("\nInput n: ");
    scanf("%d", &n);
    s = fun(n);
    printf("\ns=%f\n", s);
    NONO();
}

示例代码:

int i;
double sum = 0.0;
if (n > 1 && n <= 100)
{
    for (i = 1; i <= n; i++)
        sum += 1.0 / (2 * i - 1) - 1.0 / (2 * i);
}
return sum;

题号:8525

题目: 编写函数 fun,函数的功能是:求一组数中大于平均值的数的个数。
例如:给定的一组数为 1, 3, 6, 9, 4, 23, 35, 67, 12, 88 时,函数值为 3。

#include "stdio.h"
int fun(int a[], int n)
{
    /* Begin */
    /* End */
}

main()
{
    int a[10] = {1, 3, 6, 9, 4, 23, 35, 67, 12, 88};
    int y;
    y = fun(a, 10);
    printf("y=%d\n", y);
    TestFunc();
}

TestFunc()
{
    FILE *IN, *OUT;
    int iIN[10], iOUT, i, j;
    IN = fopen("25.in", "r");
    if (IN == NULL)
    {
        printf("Please Verify The Current Dir..It May Be Changed");
    }
    OUT = fopen("25.out", "w");
    if (OUT == NULL)
    {
        printf("Please Verify The Current Dir.. It May Be Changed");
    }
    for (j = 0; j < 10; j++)
    {
        for (i = 0; i < 10; i++)
            fscanf(IN, "%d", &iIN[i]);
        iOUT = fun(iIN, 10);
        fprintf(OUT, "%d\n", iOUT);
    }
    fclose(IN);
    fclose(OUT);
}

示例代码:

int i, k = 0;
float s = 0, ave;
for (i = 0; i < n; i++)
    s += a[i];
ave = s / n;
printf("%f", ave);
for (i = 0; i < n; i++)
    if (a[i] > ave)
        k++;
return k;

题号:4750

题目: 能计算从 1 开始到 n 的自然数的和,n 由键盘输入,并在 main() 函数中输出。

#include "stdio.h"
int fun(int n)
{
    /* Begin */
    /* End */
}

main()
{
    int m;
    void TestFunc();
    printf("Enter m: ");
    scanf("%d", &m);
    printf("\nThe result is %d\n", fun(m));
    TestFunc();
}

void TestFunc()
{
    FILE *IN, *OUT;
    int t;
    int o;
    int c;
    IN = fopen("in.dat", "r");
    if (IN == NULL)
    {
        printf("Read File Error");
    }
    OUT = fopen("out.dat", "w");
    if (OUT == NULL)
    {
        printf("Write File Error");
    }
    for (c = 1; c <= 5; c++)
    {
        fscanf(IN, "%d", &t);
        o = fun(t);
        fprintf(OUT, "%d\n", o);
    }
    fclose(IN);
    fclose(OUT);
}

示例代码:

int sum = 0, i;
for (i = 1; i <= n; i++)
    sum = sum + i;
return sum;

题号:5846

程序设计:

编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。Xn+1=cos(Xn)迭代步骤如下:

(1)取x1初值为0.0;
(2)x0=x1,把x1的值赋给x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。

程序将输出结果Root=0.739085。

注意:部分源程序存在文件prog.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <conio.h>
#include <math.h>
#include <stdio.h>
#include<windows.h>

float fun()
{
  /*======= Begin =======*/

  /*======= End =======*/
}

NONO( )
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
  FILE *wf ;
  wf = fopen("b100.out", "w") ;
  fprintf(wf,"Root=%f\n",fun());
  fclose(wf) ;
}

main()
{ system("cls");
  printf("Root=%f\n",fun());
  NONO( );
}

示例代码:

double x1,x0;
x1=0.0;
x0=x1;
x1=cos(x0);
while (fabs(x0-x1)>0.000001)
{x0=x1;x1=cos(x0);}
return((float)x0);

题号:5222

程序设计:

请编写函数fun,其功能是:计算并输出下列多项式的值:

S = 1 + 1/1! + 1/2! + 1/3! + 1/4! + … + 1/n!

例如,在主函数中从键盘给n输入15,则输出为:s=2.718282。

注意:要求n的值大于1但不大于100。
部分源程序在文件prog.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>

double fun(int n)
{
  /*======= Begin =======*/

  /*======= End =======*/
}

NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
  FILE *rf, *wf ; int n, i ; double s ;
  rf = fopen("bc.in", "r") ;
  wf = fopen("bc.out", "w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%d", &n) ;
    s = fun(n) ;
    fprintf(wf, "%lf\n", s) ;
  }
  fclose(rf) ; fclose(wf) ;
}

main()
{ int n; double s;
  printf("Input n: "); scanf("%d",&n);
  s=fun(n);
  printf("s=%f\n",s);
  NONO();
}

示例代码:

double m=1.0;
int i;
double p=1.0;
for(i=1;i<=n;i++)
  {p=p*i;
   m=m+1.0/p;
  }
return (m);

题号:5806

程序设计:

程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。

例如:a数组中的值为

|0 1 2 7 9|
|1 9 7 4 5|
|2 3 8 3 1|
|4 5 6 8 2|
|5 9 1 4 1|

则返回主程序后s的输出结果为:3.375000。

注意:部分源程序存在文件prog.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include<windows.h>
#define N 5

double fun(int w[][N])
{
  /*======= Begin =======*/

  /*======= End =======*/
}

NONO( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *rf, *wf ;
  int i, j, a[5][5]; double s ;
  rf = fopen("bc07.in", "r") ;
  wf = fopen("bc07.out", "w") ;
  for(i = 0 ; i < 5 ; i++)
    for(j = 0 ; j < 5 ; j++) fscanf(rf, "%d ", &a[i][j]) ;
  s = fun(a) ;
  fprintf(wf, "%lf\n", s);
  fclose(rf) ;
  fclose(wf) ;
}

main()
{
  int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};
  int i,j;
  double s;
  system("cls");
  printf("***** The array *****\n");
  for(i=0;i<N;i++)
  {
    for(j=0;j<N;j++)
    {printf("%4d",a[i][j]);}
    printf("\n");
  }
  s=fun(a);
  printf("***** THE RESULT *****\n");
  printf("The sum is:%lf\n",s);
  NONO( );
}

示例代码:

int i,j,count=0;
double average,sum=0.0;
for(i=0;i<N;i++) {
  if(i==0 || i==(N-1))
    for(j=0;j<N;j++) {
      sum+=w[i][j];
      count++;
    }
  else
  {
    sum+=w[i][0];
    sum+=w[i][N-1];
    count+=2;
  }
}
average=sum/count;
return average;

题号:8580

程序设计:

题目:编写函数fun,函数的功能是:求一个四位数的各位数字的立方和。

注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include "stdio.h"
int fun(int n)
{
  /*======= Begin =======*/

  /*======= End =======*/
}

main()
{
  int k;
  k=fun(1234);
  printf("k=%d\n",k);
  yzj();
  getch();
}

yzj()
{
  FILE *IN,*OUT;
  int iIN,iOUT,i;
  IN=fopen("in.dat","r");
  if(IN==NULL)
  {printf("Please Verify The Currernt Dir..It May Be Changed"); }
  OUT=fopen("out.dat","w");
  if(OUT==NULL)
  {printf("Please Verify The Current Dir.. It May Be Changed"); }
  for(i=0;i<5;i++)
  {fscanf(IN,"%d",&iIN);
   iOUT=fun(iIN);
   fprintf(OUT,"%d\n",iOUT);
  }
  fclose(IN);
  fclose(OUT);
}

示例代码:

int d,k,s=0;
while (n>0)
  {d=n%10;
   s+=d*d*d;
   n/=10;
  }
return s;

题号:10438

程序设计:

编程实现:s=a+aa+aaa+…+aaa…aaa的值,其中a是1~9之间的某个数字,n是一个正整数。

例如:若a=2,n=5,则s=2+22+222+2222+22222=24690

具体要求如下:

(1)long int process(int a,int n):计算a+aa+aaa+aa…a的值,并返回结果;

(2)主函数中调用该函数计算后输出结果。

#include<stdio.h>
long int process(int a,int n)
{
  /*======= Begin =======*/

  /*======= End =======*/
}

int main()
{
  long int s=0;
  FILE *outf; /*系统判分使用*/
  s=process(3,5);
  printf("s=%d\n",s);
  /*此处将结果输出到文件"bc02.in",请勿改动,否则影响判分*/
  outf=fopen("bc02.in","w");
  fprintf(outf,"s=%d\n",s);
  fclose(outf);
  return 0;
}

示例代码:

int i;
long int s=0,t=0;
for(i=0;i<n;i++)
{
  t=t*10+a;
  s=s+t;
}
return s;

题号:2189

程序设计:

功能:编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=1+1/3+1/5+1/7+…+1/(2m+1)

例如:若m=9,则应输出:2.133256

#include <stdio.h>
void bky();
double fun(int m)
{
  /*======= Begin =======*/

  /*======= End =======*/
}

main()
{
  int n;
  printf("Enter n: ");
  scanf("%d", &n);
  printf("\nThe result is %1f\n", fun(n));
  bky();
}

void bky()
{
  FILE *IN,*OUT;
  int s,i ;
  int t;
  float o;
  IN=fopen("in.dat","r");
  if(IN==NULL)
  {
    printf("Read FILE Error");
  }
  OUT=fopen("out.dat","w");
  if(OUT==NULL)
  {
    printf("Write FILE Error");
  }
  for(i=0;i<5;i++)
  {
    fscanf(IN,"%d",&t);
    o=fun(t);
    fprintf(OUT,"%f\n",o);
  }
  fclose(IN);
  fclose(OUT);
}

示例代码:

double y=1;
int i;
for(i=1; i<=m; i++)
  {y+=1.0/(2*i+1); }
return(y);

题号:8806

程序设计:

功能:编写程序打印如图1所示图形。

*****
 ***
  *
#include <stdio.h>
void TestFunc();
void fun()
{
  int m,n;
  /*======= Begin =======*/

  /*======= End =======*/
}

main( )
{
  fun();
  TestFunc();
}

void TestFunc()
{
  FILE *IN,*OUT;
  int i;
  char sin[80];
  IN=fopen("in.dat","r");
  if(IN==NULL)
  {
    printf("Please Verify The Currernt Dir..it May Be Changed");
  }
  OUT=fopen("out.dat","w");
  if(OUT==NULL)
  {
    printf("Please Verify The Current Dir.. it May Be Changed");
  }
  for(i=0;i<5;i++)
  {
    a=0;
    num=0;
    b=0;
    other=0;
    fscanf(IN,"%s",&sin);
    count(sin);
    fprintf(OUT,"%d\n",a);
    fprintf(OUT,"%d\n",num);
    fprintf(OUT,"%d\n",b);
    fprintf(OUT,"%d\n",other);
  }
  fclose(IN);
  fclose(OUT);
}

示例代码:

for(m=-i;m<=i;m++)
{
  for(n=0;n<abs(m);n++) printf(" ");
  for(n=0;n<7-2*abs(m);n++) printf("*");
  printf("\n");
}

题号:6787

程序设计:

功能:编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=1/2!+1/4!+...+1/m!(m是偶数)

#include "stdio.h"
double fun(int m)
{
  /*======= Begin =======*/

  /*======= End =======*/
}

main()
{
  int n;
  void TestFunc();
  printf("Enter n: ");
  scanf("%d", &n);
  printf("\nThe result is %1f\n", fun(n));
  TestFunc();
}

void TestFunc()
{
  FILE *IN,*OUT;
  int t;
  double o;
  int c;
  IN=fopen("in.dat","r");
  if(IN==NULL)
  {
    printf("Read File Error");
  }
  OUT=fopen("out.dat","w");
  if(OUT==NULL)
  {
    printf("Write File Error");
  }
  for(c=1;c<=5;c++)
  {
    fscanf(IN,"%d",&t);
    o=fun(t);
    fprintf(OUT,"%lf\n",o);
  }
  fclose(IN);
  fclose(OUT);
}

示例代码:

double y=0.0,s=1;
int i,j;
for (i=2;i<=m;i+=2)
{
  for(j=i-1;j<=i;j++)
    s=s*j;
  y=y+1.0/s;
}
return y;

题号:11849

功能: 求小于lim的所有素数并放在aa数组中,该函数返回所求出素数的个数。

#include<stdio.h>
#include<conio.h>
#define MAX 100
int fun(int lim,int aa[MAX])
{
/**********Begin**********/
/********** End **********/
}
main()
{
int limit,i,sum;
int aa[MAX];
clrscr();
printf("Please Input aInteger:");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;i<sum;i++){
if(i%10==0&&i!=0) printf("\n");
printf("%5d",aa[i]);
}
NONO();
getch();
}
NONO()
{
int i,j,array[100],sum,lim;
FILE *rf, *wf ;
rf = fopen("in.dat", "r") ;
wf = fopen("out.dat", "w") ;
for (j=0; j <= 5; j++)
{
fscanf(rf, "%d", &lim);
sum=fun(lim,array);
for(i=0;i<sum;i++)
fprintf(wf, "%7d", array[i]);
fprintf(wf, "\n");
}
fclose(rf);
fclose(wf);
}

示例代码:

int n=0;
int i,j;
for(i=2;i<=lim;i++)
{for(j=2;j<i;j++)
if(i%j==0) break;
if(j==i) aa[n++]=i;
}
return n;

题号:5899

功能: 请编写函数fun,函数的功能是:将M行N列的二维数组中的数据按列的顺序依次放到一维数组中。
例如,二维数组中的数据为:
33 33 33 33
44 44 44 44
55 55 55 55
则一维数组中的内容应是:
33 44 55 33 44 55 33 44 55 33 44 55
注意:部分源程序存在文件prog.c中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>
void fun(int (*s)[10], int *b, int *n, int mm, int nn)
{
/********** Begin **********/
/********** End **********/
}
NONO()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf, *wf ; int i, j, k ;
int w[10][10], a[100], n = 0, mm, nn ;
rf = fopen("bc.in", "r") ;
wf = fopen("bc.out", "w") ;
for(k = 0 ; k < 5 ; k++) {
fscanf(rf, "%d %d", &mm, &nn) ;
for(i = 0 ; i < mm ; i++)
for(j = 0 ; j < nn ; j++) fscanf(rf, "%d", &w[i][j]) ;
n=0;
fun(w, a, &n, mm, nn) ;
for(i = 0 ; i < n ; i++) fprintf(wf, "%3d", a[i]) ; fprintf(wf, "\n") ;
}
fclose(rf) ; fclose(wf) ;
}
main()
{
int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;
int a[100]={0}, n=0;
printf("The matrix:\n");
for(i=0; i<3; i++)
{
for(j=0;j<4; j++)printf("%3d",w[i][j]);
printf("\n");
}
fun(w,a,&n,3,4);
printf("The A array:\n");
for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");
NONO();
}

示例代码:

int x,y;
for(x=0;x<nn;x++)
for(y=0;y<mm;y++)
{
b[x*mm+y]=*(s[y]+x);
(*n)++;
}

题号:4260

功能: 对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。
例如:原来的字符串为 CEAedca,排序后输出为 CedcEAa

#include "stdio.h"
#include "ctype.h"
#include "conio.h"
void fun(char *s,int num)
{
/**********Begin**********/
/********** End **********/
}
main()
{
char s[10];
void NONO();
printf("输入7个字符的字符串:");
gets(s);
fun(s,7);
printf("\n%s",s);
NONO();
}
void NONO()
{
int i;
char a[100];
FILE *rf, *wf ;
rf = fopen("in.dat", "r") ;
wf = fopen("out.dat", "w") ;
for(i=0;i<3;i++)
{
fscanf(rf, "%s", &a);
fun(a,7);
fprintf(wf, "%s", a);
fprintf(wf, "\n");
}
fclose(rf);
fclose(wf);
}

示例代码:

int i,j;
char t;
for(i=1;i<num-1;i++)
for(j=i+1;j<num-1;j++)
if(s[i]<s[j])
{ t=s[i];s[i]=s[j];s[j]=t;}

题号:6444

功能: 把20个随机数存入一个数组,然后输出该数组中的最小值。其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。

#include <stdio.h>
#define VSIZE 20
void bky();
int vector[VSIZE] ;
int fun(int list[],int size)
{
/**********Begin**********/
/********** End **********/
}
main()
{
int i;
for (i=0;i<VSIZE;i++)
{
vector[i]=rand();
printf("Vector[%d]=%6d\n",i,vector[i]);
}
i=fun(vector,VSIZE);
printf("\nMininum: Vector[%d]=%6d\n",i,vector[i]);
bky();
}
void bky()
{
int i,t;
FILE *fp ;
fp = fopen("out.dat", "w") ;
for (i=0;i<VSIZE;i++)
{
fprintf(fp,"Vector[%d]=%6d\n",i,vector[i]);
}
t=fun(vector,VSIZE);
fprintf(fp,"\nMininum: Vector[%d]=%6d\n",t,vector[t]);
fclose(fp) ;
}

示例代码:

int i,min=0;
for(i=1; i <size; i++)
if(list[min]>list[i])
min=i;
return min;

题号:11802

功能: 请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。

void TestFunc();
#include <stdio.h>
#include <string.h>
#define M 81
int fun(char ss[], char c)
{
  /**********Begin**********/
  /********** End **********/
}
main()
{ char a[M], ch;
  printf("\nPlease enter a string:");
  gets(a);
  printf("\nPlease enter a char:");
  ch=getchar();
  printf("\nThe number of the char is: %d\n", fun(a, ch));
  TestFunc();
}
void TestFunc()
{
  FILE *IN,*OUT;
  char i[200],j;int k;
  IN=fopen("in.dat","r");
  if(IN==NULL)
  {
    printf("Read FILE Error");
  }
  OUT=fopen("out.dat","w");
  if(OUT==NULL)
  {
    printf("Write FILE Error");
  }
  fscanf(IN,"%s %c",i,&j);
  k=fun(i,j);
  fprintf(OUT,"%d\n",k);
  fclose(IN);
  fclose(OUT);
}

示例代码:

int cnt=0,i=0;
while(ss[i])
{ if(ss[i]==c) cnt++; i++;}
return cnt;

题号:1132

功能: 求1到100之间的偶数之积。

#include "stdio.h"
double fun(int m)
{
  /**********Begin**********/
  /********** End **********/
}
void TestFunc()
{
  FILE *IN,*OUT;
  int iIN,i;
  double dOUT;
  IN=fopen("23.in","r");
  if(IN==NULL)
  {
    printf("Please Verify The Currernt Dir..It May Be Changed");
  }
  OUT=fopen("23.out","w");
  if(OUT==NULL)
  {
    printf("Please Verify The Current Dir.. It May Be Changed");
  }
  for(i=0;i<10;i++)
  {
    fscanf(IN,"%d",&iIN);
    dOUT=fun(iIN);
    fprintf(OUT,"%f\n",dOUT);
  }
  fclose(IN);
  fclose(OUT);
}
main()
{
  printf("ji=%f\n",fun(100));
  TestFunc();
}

示例代码:

double y=1;
int i;
for(i=1;i<=m;i++)
  if(i%2==0) y*=i;
return y;

题号:11812

题目: 编写函数判断一个整数m的各位数字之和能否被7整除,可以被7整除则返回1,否则返回0。调用该函数找出100~200之间满足条件的所有数。

#include "stdio.h"
int sub(int m)
{
  /**********Begin**********/
  /********** End **********/
}
main()
{ int i;
  for(i=100;i<=200;i++)
    if(sub(i)==1) printf("%4d",i);
  yzj();
  getch();
}
yzj()
{
  FILE *IN,*OUT;
  int n;
  int i[10];
  int o;
  IN=fopen("in.dat","r");
  if(IN==NULL)
  { printf("Read File Error");
  }
  OUT=fopen("out.dat","w");
  if(OUT==NULL)
  { printf("Write File Error");
  }
  for(n=0;n<10;n++)
  {
    fscanf(IN,"%d",&i[n]);
  }
  for(n=0;n<10;n++)
  {
    o=sub(i[n]);
    fprintf(OUT,"%d\n",o);
  }
  fclose(IN);
  fclose(OUT);
}

示例代码:

int k,s=0;
do
{ s=s+m%10;
  m=m/10;
} while(m!=0);
if(s%7==0) k=1;
else k=0;
return(k);

题号:1235

题目: 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。

#include <stdio.h>
#define N 16
typedef struct
{ char num[10];
  int s;
} STREC;
int fun(STREC *a,STREC *b)
{
  /********** Begin **********/
  /********** End **********/
}
main()
{ STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",91},{"GA017",64},{"GA018",64},{"GA016",72}};
  STREC h[N];
  int i,n;FILE *out;
  n=fun(s,h);
  printf("The %d lowest score:\n",n);
  for(i=0;i<n;i++)
    printf("%s %4d\n",h[i].num,h[i].s);
  printf("\n");
  out=fopen("out14.dat","w");
  fprintf(out,"%d\n",n);
  for (i=0;i<n;i++)
    fprintf(out,"%s %4d\n",h[i].num,h[i].s);
  fclose(out);
}

示例代码:

int i,j=0,min,k,f=0;
min=(*a).s;
for (i=1;i<N;i++)
  if (a[i].s<min) min=a[i].s;
for (i=0;i<N;i++)
  if (a[i].s==min)
  { f++;
    for (k=0;k<10;k++)
      b[j].num[k]=a[i].num[k];
    b[j].s=a[i].s;
    j++;
  }
return(f);

题号:335

功能: 编写函数求表达式的和(n的值由主函数输入)。
1-1/2+1/3-1/4+...+1/m
例如:当n=20时,表达式的值为0.668771

#include "stdio.h"
float sum(int n)
{
  /**********Begin**********/
  /********** End **********/
}
main()
{
  int n;
  void TestFunc();
  scanf("%d",&n);
  printf("sum=%f\n",sum(n));
  TestFunc();
}
void TestFunc()
{
  FILE *IN,*OUT;
  int n;
  int i[10];
  float o;
  IN=fopen("in.dat","r");
  if(IN==NULL)
  {
    printf("Read File Error");
  }
  OUT=fopen("out.dat","w");
  if(OUT==NULL)
  {
    printf("Write File Error");
  }
  for(n=0;n<5;n++)
    fscanf(IN,"%d",&i[n]);
  for(n=0;n<5;n++)
  {
    o = sum(i[n]);
    fprintf(OUT,"%f\n",o);
  }
  fclose(IN);
  fclose(OUT);
}

示例代码:

float s=0;
int i,k=1;
for(i=1;i<=n;i++)
{
  s=s+k*1.0/i;
  k=-k;
}
return(s);