C语言程序设计真题-程序设计
程序设计
题号: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);

