C语言模拟题

/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:已知一个数列,它的头两项分别是0和1,从第三项开始以
后的每项都是其前两项之和。编程打印此数,直到某项的
值超过200为止。

-------------------------------------------------------*/
#include
int main()
{
int i,f1=0,f2=1;
/***********SPACE***********/
for(i=0;;i++)
{
printf("%d\t",f1);
/***********SPACE***********/
if(f1>200) break;
printf("%d\t",f2);
if(f2>200) break;
if(i%2==0) printf("\n");
f1+=f2;
/***********SPACE***********/
f2+=f1;
}
printf("\n");
return 0;
}

/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

功能:编写函数fun求1000以内(正整数,不包括1000)所有8的倍数之和。

------------------------------------------------------*/

#include
#define N 1000

int fun(int m)
{
/**********FOUND**********/
int s=0,i;
/**********FOUND**********/
for(i=1;i/**********FOUND**********/
if(i%m==0)
s=s+i;
return s;
}

int main()
{
int sum;
sum=fun(8);
printf("%d以内所有%d的倍数之和为:%d\n",N,8,sum);
return 0;
}


/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

功能:求出数组中最大数和次最大数,并把最大数和a[0]中的数
对调、次最大数和a[1]中的数对调。

------------------------------------------------------*/


#include
#define N 20

void fun ( int a[], int n )
{
int i, m, t, k ;
for(i=0;i<2;i++)/*两次循环,分别找最大数和次大数*/
{
/**********FOUND**********/
m=i;
for(k=i;k/**********FOUND**********/
if(a[k]>a[m]) m=k;
t=a[i];a[i]=a[m];a[m]=t;
}
}

int main( )
{
int b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i;
for ( i=0; iprintf("\n");
/**********FOUND**********/
fun ( b, n);
for ( i=0; iprintf("%d ", b[i]);
printf("\n");
return 0;
}

/*------------------------------------------------
【程序设计】
--------------------------------------------------

功能:编写函数fun求一个字符串(长度不超过80)的长度,在main函数中
输入字符串,并输出其长度。

------------------------------------------------*/

#include
void wwjt();

int fun(char *p1)
{

/**********Program**********/
int i=0;
while(*p1!='\0')
{
p1++;
i++;
}
return i;
/********** End **********/
}

int main()
{
char *p,a[80];
int len;
p=a;
printf("please input a string:\n");
gets(p);

len=fun(p);
printf("The string's length is:%d\n",len);
wwjt();
return 0;
}

void wwjt()
{
FILE *IN,*OUT;
char *pIN,sin[80];
int iOUT,i;
pIN=sin;
IN=fopen("3.IN","r");
if(IN==NULL)
{
printf("Please Verify The Currernt Dir..it May Be Changed");
}
OUT=fopen("3.out","w");
if(OUT==NULL)
{
printf("Please Verify The Current Dir.. it May Be Changed");
}
for(i=0;i<10;i++)
{
fscanf(IN,"%s",pIN);
iOUT=fun(pIN);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}

/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:从键盘上输入一个正整数,判断其是否是回文数。
说明:所谓回文数是指顺序读与反序读都是一样的数,如121、25852都是回文数。
将整数的各位依次存入数组a中,然后再进行判断

-------------------------------------------------------*/

#include

int main()
{
int num,a[10],r;
int i=0,j,flag=1; /*flag作为是否为回文的标志*/
scanf("%d",&num);
if (num<=0) return -1;
do
{

r=num%10;
/***********SPACE***********/
a[i]=r;
num=num/10;
i++;
}
while (num%10!=0);
for (j=0,i--;i>=j;i--,j++)
if (a[j]==a[i])
/***********SPACE***********/
flag=1;
else
{
flag=0;
break;
}
/***********SPACE***********/
if (flag==1)
printf("是回文\n");
else
printf("不是回文\n");

return 0;
}

/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:用冒泡排序法对数组a 进行由小到大的排序。

-------------------------------------------------------*/
#include
void fun(int a[],int n)
{
int i,j,t;
/***********SPACE***********/
for (j=0; j<=n-1;j++)
/***********SPACE***********/
for (i=0; i<=j-1;i++)
/***********SPACE***********/
if(a[i]>=a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
int main()
{
int i,a[10]={3,7,5,1,2,8,6,4,10,9};
/***********SPACE***********/
fun(a,10);
for(i=0;i<10;i++)
printf("%3d",a[i]);
return 0;
}

/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:找出数组中最大值和此元素的下标,数组元素的值由键盘
输入。

-------------------------------------------------------*/

#include
void main()
{
int a[10],*p,*s,i;
for(i=0;i<10;i++)
/***********SPACE***********/
scanf("%d", &a[i]);
/***********SPACE*****

******/
for(p=a,s=a;p/***********SPACE***********/
if(*p>=*s) s=p;
/***********SPACE***********/
printf("max=%d,index=%d\n",*s,s-a);
}

/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

功能:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同
学用A表示,70-89分之间的用B表示,60-69分之间的用C表示,
60分以下的用D表示。

------------------------------------------------------*/

#include

int main()
{
int score;
/**********FOUND**********/
char grade;
printf("please input a score\n");
/**********FOUND**********/
scanf("%d",&score);
if (score<0&&score>100)
printf("超出范围!");
else
{
/**********FOUND**********/
switch((score-score%10)/10)
{
case 9:
case 10:
grade='A';
break;
case 7:
case 8:
grade='B';
break;
case 6:
grade='C';
break;
/***********FOUND***********/
default:
grade='D';
}
}
printf("%d belongs to %c\n",score,grade);
return 0;
}

/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

功能:编写函数求2!+4!+6!+8!。

------------------------------------------------------*/

#include

int sum(int n)
{
int i,j,t,s;
/**********FOUND**********/
s=0;
for(i=2;i<=n;i=i+2)
{
t=1;
/**********FOUND**********/
for(j=1;j<=i;j++)
t=t*j;
s=s+t;
}
/**********FOUND**********/
return(s);
}
int main()
{
printf("this sum=%ld\n",sum(8));
return 0;
}

/*------------------------------------------------
【程序设计】
--------------------------------------------------

功能:判断一个整数w的各位数字平方之和能否被5整除,
可以被5整除则返回1,否则返回0。

------------------------------------------------*/

#include

void wwjt();

int fun(int w)
{
/**********Program**********/
int i=0,Sum=0;
int j[100];
while(w!=0)
{
j[i]=w%10;
w=(w-j[i])/10;
Sum=Sum+j[i]*j[i];i++;
}
if(Sum%5==0)
return 1;
else
return 0;
/********** End **********/

}

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

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<=40;c++)
{
fscanf(IN,"%d",&t);
o=fun(t);
fprintf(OUT,"%d\n",o);

}
fclose(IN);
fclose(OUT);
}

/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:输出100到1000之间的各位数字之和能被15整除的所有数,
输出时每10个一行。

-------------------------------------------------------*/
#include
int main()
{
int m,n,k,i=0;
for(m=100;m<=1000;m++)
{
/***********SPACE***********/
k=0;
n=m;
do
{
/***********SPACE***********/
k=k+n%10 ;
n=n/10;
}
/***********SPACE***********/
while(n!=0);
if (k%15==0)
{
printf("%5d",m);i++;
/***********SPACE***********/
if(i%10==0) printf("\n");
}
}
return 0;
}

/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:用函数调用方式,实现字符串的复制。

-------------------------------------------------------*/
#include
void string_copy(char *str_from, char *str_to)
{
int i=0;
/***********SPACE***********/
for(; (*(str_to+i)=*(str_from+i))!='\0'; i++) ;
}

int main()
{
static char array_str1[20]="i am a teacher.";
char array_str2[20];
/***********SPACE***********/
string_copy(array_str1, array_str2);
/***********SPACE***********/
printf("array_str2=%s\n",array_str2);
return 0;
}

/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数
返回二分之一的圆面积。
例如:输入圆的半径值:19.527 输出为:s = 598.950017。

------------------------------------------------------*/

#include
#include

/**********FOUND**********/
double fun(double r)
{
double s;
/**********FOUND**********/
s=0.5*3.14159* r * r;
/**********FOUND**********/
return s;
}

void main()
{
float x;
printf ( "Enter x: ");
scanf ( "%f", &x );
printf (" s = %f\n ", fun ( x ) );
}

/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

功能:求1到10的阶乘的和。

------------------------------------------------------*/
#include
int main()
{
int i;
int s=0;
/***********FOUND***********/
int fac(int n);
for(i=1;i<=10;i++)
/**********FOUND**********/
s=s+fac(i);
printf("%d\n",s);
return 0;
}
int fac(int n)
{
/**********FOUND**********/
int y=1;
int i;
for(i=1 ;i<=n;i++)
y=y*i;
/**********FOUND**********/
return y;
}

/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能

:以下程序是用选择法对10个整数按从小到大顺序排序。

说明:每一趟均找到未排好序的数中的最小数的位置,然后将其交换到正确的位置
-------------------------------------------------------*/
#include
#define N 10

int main()
{
int i,j,k,t,a[N];
for(i=0;i<=N-1;i++)
scanf("%d",&a[i]); /*输入10个整数*/
for(i=0;i{
/***********SPACE***********/
k=i;
/***********SPACE***********/
for(j=i+1; j<=N-1;j++)
if(a[j]/***********SPACE***********/
if(a[i]>=a[k])
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
printf("output the sorted array:\n");
for(i=0;i<=N-1;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}

/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

功能:求两个形参的乘积和商数,并通过形参返回调用程序。
例如:输入:61.82 和 12.65,输出为:c = 782.023000
d = 4.886957

------------------------------------------------------*/

#include
#include

/**********FOUND**********/
void fun ( double a,double b, double *x, double *y )
{
/**********FOUND**********/
*x = a * b;
/**********FOUND**********/
*y = a / b;
}

main ( )
{
double a, b, c, d;
printf ( "Enter a , b : ");
scanf ( "%lf%lf", &a, &b );
fun ( a , b, &c, &d ) ;
printf (" c = %f d = %f\n ", c, d );
}

/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

功能:统计出若干个学生的平均成绩,最低分以及得最低分的人数。
例如:输入10名学生的成绩分别为92,87,68,56,92,84,67,
75,92,66,则输出平均成绩为77.9,最低分为56,得最
低分的人数为1人。

------------------------------------------------------*/

#include

float Min=0;
int J=0;
float fun(float array[],int n)
{
int i;float sum=0,ave;
Min=array[0];
for(i=0;i{
if(Min>array [i]) Min=array [i];
/**********FOUND**********/
sum+=array [i];
}
/**********FOUND**********/
ave=sum/n;
for(i=0;i/**********FOUND**********/
if(array [i]==Min) J++;
return(ave);
}

int main( )
{
float a[10],ave;
int i=0;
for(i=0;i<10;i++)
scanf("%f",&a[i]);
ave=fun(a,10);
printf("平均分=%f\n",ave);
printf("最低分=%f\n",Min);
printf("最低分人数:%d\n",J);
return 0;
}

/*------------------------------------------------
【程序设计】
--------------------------------------------------

功能:编写函数fun求1!+2!+3!+ …… +n!的和,在main函
数中由键盘输入n值,并输出运算结果。请编写fun
函数。
例如:若n值为5

,则结果为153。

------------------------------------------------*/

#include
void wwjt();

long int fun(int n)
{

/**********Program**********/
int Sum=0,i,k,t=1;
for(i=1;i<=n;i++)
{
t=1;
for(k=1;k<=i;k++)
{
t=t*k;
}
Sum=Sum+t;
}
return Sum;
/********** End **********/

}

int main()
{
int n;
long int result;
scanf("%d",&n);
result=fun(n);
printf("%ld\n",result);
wwjt();
return 0;
}

void wwjt()
{
FILE *IN,*OUT;
int i;
int iIN;
long int iOUT;
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",&iIN);
iOUT=fun(iIN);
fprintf(OUT,"%ld\n",iOUT);
}
fclose(IN);
fclose(OUT);
}

/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:打印出如下字母塔。最后一行字母前无空格

A
BBB
CCCCC
DDDDDDD

-------------------------------------------------------*/

#include
int main()
{
int i,j,k;
/***********SPACE***********/
for(i=0;i<=3;i++)
{
for(j=0;j<3-i;j++)
printf(" ");
/***********SPACE***********/
for(k=1;k<=(2*i+1);k++)
/***********SPACE***********/
printf("%c",i+65);
printf("\n");
}
return 0;
}

/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------

功能:从读入的整数数据中,统计大于零的整数个数和小于零的
整数个数。用输入零来结束输入,程序中用变量i统计大于
零的整数个数,用变量j统计小于零的整数个数。

-------------------------------------------------------*/

#include
int main()
{
int n,i,j;
printf("Enter iNT number,with 0 to end\n");
i=j=0;
scanf("%d",&n);
while(n!=0)
{
/***********SPACE***********/
if(n>0)i=i+1;
/***********SPACE***********/
if(n<0)j=j+1;
/***********SPACE***********/
scanf("%d",&n);
}
printf("i=%4d\n",i,j);
return 0;
}

/*------------------------------------------------------
【程序改错】
--------------------------------------------------------

功能:输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n

------------------------------------------------------*/

#include
void main()
{
/**********FOUND**********/
int i,s,p,n;
printf("Enter n:\n");
/**********FOUND**********/
scanf("%d",&n);
s=p=0;
/**********FOUND**********/
for(i=1;i<=n;i++)
{
p=p+i;
s=s+p;
}
printf("S= %d\n",s);
}

/*------------------------------------------------------


【程序改错】
--------------------------------------------------------

功能:输入10个数,要求输出这10个数的平均值

------------------------------------------------------*/
#include
double average(double array[10])
{
int i;
double aver,sum=array[0];
/***********FOUND***********/
for(i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10.0;
return(aver);
}

int main( )
{
/***********FOUND***********/
double score[10],aver ;
int i;
printf("input 10 scores:\n");
for(i=0;i<10;i++)
/***********FOUND***********/
scanf("%lf", &score[i]);
printf("\n");
/***********FOUND***********/
aver=average(score);
printf("average score is %5.2f",aver);
return 0;
}

相关文档
最新文档