第101题 (20.0分)
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:对于一个如图片1所示4乘3的矩阵a,找出其中最大值max及该值所在位置(m,n)。
从键盘输入:12 23 34 2 4 6 7 8 9 1 43 5
则输出:max=43
行号=3 列号=1
-------------------------------------------------------*/
#include<stdio.h>
void wwjt();
main()
{
int a[4][3], i,j, max, m,n;
/**********Program**********/
/********** End **********/
wwjt(max,m,n);
}
void wwjt(int max,int m, int n)
{
FILE *IN,*OUT;
int i,j,k;
IN=fopen("in.dat","r");
OUT=fopen("out.dat","w");
for(i=0;i<3;i++)
{
fscanf(IN,"%d",&j);
fprintf(OUT,"%d\n",max+j);
fprintf(OUT,"%d\n",m*j);
fprintf(OUT,"%d\n",n*10-j);
}
fclose(IN);
fclose(OUT);
}
答案: for (i=0; i<4; i++)
{
for(j=0 ;j<3 ;j++)
scanf("%d",&a[i][j]);
}
max = a[0][0];
m= n = 0;
for (i=0; i<4; i++)
{
for(j=0 ;j<3;j++)
if (max<a[i][j])
{
max = a[i][j];
m = i ;
n=j ;
}
}
printf("max=%d\n",max);
printf("行号=%d\t列号=%d\n",m,n);
第102题 (20.0分)
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序
依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。
例如:若二维数组中的数据为:
33 33 33 33
44 44 44 44
55 55 55 55
则一维数组中的内容应该是:33 33 33 33 44 44 44 44 55 55 55 55。
注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
-------------------------------------------------------*/
#include <stdio.h>
void wwjt();
void fun (int (*s)[10], int *b, int *n, int mm, int nn)
{
/**********Program**********/
/********** End **********/
}
void 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");
wwjt();
}
void wwjt()
{
FILE *in, *out;
int w[10][10], i, j;
int a[100]={0},n=0 ;
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<3; i++)
{
for (j=0;j<5;j++)
fscanf(in,"%3d",&w[i][j]);
}
fun(w,a,&n,3,5);
for(i=0; i<n; i++)
fprintf(out,"%3d",a[i]);
fclose(in);
fclose(out);
}
答案: int i,j,k=0;
for(i=0;i<mm;i++)
for(j=0;j<nn;j++)
b[k++]=s[i][j];
*n=k;
第103题 (20.0分)
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。
如“样张”所示。
例如:当n=10,x=0.3时,函数值为1.349859。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
-------------------------------------------------------*/
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void wwjt();
double fun(double x, int n)
{
/**********Program**********/
/********** End **********/
}
void main()
{
system("CLS");
printf("%f ",fun(0.3,10));
wwjt();
}
void wwjt()
{
FILE *in, *out;
int i,n;
double x, s;
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<6; i++)
{
fscanf(in,"%lf",&x);
fscanf(in,"%d",&n);
s=fun(x,n);
fprintf(out,"%f\n",s);
}
fclose(in);
fclose(out);
}
答案: int i;
double s=1.0,s1=1.0;
for(i=1;i<=n;i++)
{
s1=s1*i;
s=s+pow(x,i)/s1;
}
return s;
第104题 (20.0分)
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:编写函数fun,其功能是计算:如"样张",s作为函数值返回。
在C语言中可调用log(n)函数求ln(n)。
log函数的引用说明为:double log(double x)。
例如:若m的值为20,则fun函数值为6.506583。
注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
-------------------------------------------------------*/
#include <math.h>
#include <stdio.h>
void wwjt ( );
double fun( int m )
{
/**********Program**********/
/********** End **********/
}
main()
{
printf("%f\n", fun(20));
wwjt( );
}
void wwjt ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *in, *out ;
int i, n ;
double s ;
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 < 10 ; i++)
{
fscanf(in, "%d", &n) ;
s = fun(n) ;
fprintf(out, "%f\n", s) ;
}
fclose(in) ;
fclose(out) ;
}
答案: int i;
double s=0.0;
for(i=1;i<=m;i++)
s=s+log(i);
return sqrt(s);
第105题 (20.0分)
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:请编写一个函数,用来删除字符串中的所有空格。
例如:输入asd af aa z67,则输出为asdafaaz67。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
-------------------------------------------------------*/
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
void wwjt();
void fun (char *str)
{
/**********Program**********/
/********** End **********/
}
void main()
{
char str[81];
char Msg[]="Input a string:";
printf(Msg);
gets(str);
puts(str);
fun(str);
printf("*** str: %s\n",str);
wwjt();
}
void wwjt()
{
FILE *in, *out;
char s[81];
int 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<3;i++)
{
fgets(s,81,in);
fun(s);
fprintf(out,"%s",s);
}
fclose(in);
fclose(out);
}
答案: int i=0;
char *p=str;
while(*p)
{
if(*p!=' ')
{
str[i]=*p;
i++;
}
p++;
}
str[i]='\0';
第106题 (20.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:在键盘上输入一个3行3列矩阵的各个元素的值(值
为整数),然后输出矩阵第一行与第三行元素之和,
并在fun()函数中输出。
------------------------------------------------*/
#include <stdio.h>
void wwjt();
void fun(int a[3][3])
{
/**********Program**********/
/********** End **********/
}
main()
{
int i,j,s,a[3][3];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
s=fun(a);
printf("Sum=%d\n",s);
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int m;
int n;
int i[3][3];
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(m=0;m<3;m++)
{
for(n=0;n<3;n++)
fscanf(IN,"%d",&i[m][n]);
}
o=fun(i);
{
fprintf(OUT,"%d\n",o);
getch();
}
fclose(IN);
fclose(OUT);
}
答案:----------------------
int sum;
int i,j;
sum=0;
for(i=0;i<3;i+=2)
for(j=0;j<3;j++)
sum=sum+a[i][j];
return sum;
----------------------
第107题 (20.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:产生20个[30,120]上的随机整数放入二维数组a[5][4]
中,求每行元素的和。
------------------------------------------------*/
#include "stdlib.h"
#include <stdio.h>
void wwjt();
void row_sum(int a[5][4],int b[5])
{
/**********Program**********/
/********** End **********/
}
main()
{
void row_sum();
int a[5][4],b[5],i,j;
for(i=0;i<5;i++)
for(j=0;j<4;j++)
a[i][j]=random(120-30+1)+30;
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%5d",a[i][j]);
printf("\n");
}
row_sum(a,b);
for(i=0;i<5;i++)
printf("%6d",b[i]);
printf("\n");
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int m,n;
int i[5][4];
int o[5];
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(m=0;m<5;m++)
for(n=0;n<4;n++)
fscanf(IN,"%d",&i[m][n]);
row_sum(i,o);
for(n=0;n<5;n++)
fprintf(OUT,"%d\n",o[n]);
fclose(IN);
fclose(OUT);
}
答案:----------------------
int i,j;
for(i=0;i<5;i++)
{ b[i]=0;
for(j=0;j<4;j++)
b[i]=b[i]+a[i][j];
}
----------------------
第108题 (20.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:求一个大于10的n位整数的后n-1位的数,并作为函
数值返回。
------------------------------------------------*/
#include <stdio.h>
#include"conio.h"
void wwjt();
int fun(int w)
{
/**********Program**********/
/********** End **********/
}
main()
{
int m;
printf("Enter m: ");
scanf("%d", &m);
printf("\nThe result is %d\n", fun(m));
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int c ;
int t;
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(c=1;c<=5;c++)
{
fscanf(IN,"%d",&t);
o=fun(t);
fprintf(OUT,"%d\n",o);
}
fclose(IN);
fclose(OUT);
}
答案:----------------------
int n=0;int i=1;
while(w>10)
{n=n+i*(w%10);
w/=10;
i*=10;}
return n;
----------------------
第109题 (20.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:求1到100之间的偶数之积。
------------------------------------------------*/
#include <stdio.h>
void wwjt();
double fun(int m)
{
/**********Program**********/
/********** End **********/
}
main()
{
printf("ji=%f\n",fun(100));
wwjt();
}
void wwjt()
{
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);
}
答案:----------------------
double y=1;
int i;
for(i=1;i<=m;i++)
if(i%2==0)y*=i;
return y;
----------------------
第110题 (20.0分)
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:请编写函数fun,其功能是:找出一维整型数组元素中最大的值及其所在的下标,并
通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的
数据个数,max存放最大值,index存放最大值所在元素的下标。
注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入
你编写的若干语句。
-------------------------------------------------------*/
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
void wwjt();
void fun(int a[],int n, int *max, int *d)
{
/**********Program**********/
/********** End **********/
}
void main()
{
int i, x[20], max, index, n=10;
srand((unsigned)time(NULL));
for(i=0;i<n;i++)
{
x[i]=rand()%50;
printf("%4d",x[i]); /*输出一个随机数组*/
}
printf("\n");
fun(x,n,&max,&index);
printf("Max=%5d,Index=%4d\n",max,index);
wwjt ();
}
void wwjt()
{
FILE *in,*out;
int i,j ,max, index, n=10;
int y[20];
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(j=0;j<10;j++)
{
for(i=0;i<20;i++)
{
fscanf(in,"%d",&y[i]);
}
fun(y,6,&max,&index);
fprintf(out,"Max=%5d,Index=%4d\n",max,index);
}
fclose(in);
fclose(out);
}
答案: int i;
*max=a[0];
*d=0;
for(i=0;i<n;i++) /*将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/
if(*max<a[i])
{
*max=a[i];
*d=i;
}