啊哈磊_编程从这里起步
标题: c语言···求大侠····刚刚币太少了~~~ [打印本页]
作者: long11 时间: 2013-11-4 16:31
标题: c语言···求大侠····刚刚币太少了~~~
一、调试
(一)填空, 在___N___中填空。
35、将输入字符串s中所有的小写字符'c'删除。
#include <stdio.h>
#include <____1____>
void main()
{ char s[81];int i;
gets(s);
for(___2___;i<strlen(s);)
if(s=='c')
strcpy(____3____);
___4___
i++;
puts(s);
}
1、输入一个不超过80个字符的字符串,将其中的大写字符转换为小写字符;小写字符转换为大写字符;空格符转换为下划线,输出转换后的字符串。
#include <stdio.h>
#include <____1_____>
void main()
{ char s[81]; int i;
_____2_____;
for(i=0;____3_____;i++) {
if(isupper(s))
s=s+32;
else
if(islower(s))
s=s-32;
if(____4____) s='_';
}
puts(s);
}
30、输入4个整数,通过函数Dec2Bin的处理返回字符串,显示每个整数的机内码(二进制,补码)。
#include <stdio.h>
void Dec2Bin(long m,char *s)
{ int i,k;
for(i=0;i<32;i++) {
k=m & 0x80000000;
if(k!=0) s='1'; else ____1_____;
____2____; /* m 左移1位 */
}
}
void main()
{ char a[33]=""; long n; int i;
for(i=1;i<=4;i++) {
scanf("%ld",&n);
_____3______;
____ 4_____;
}
}
6、调用函数f,当x=1.7时的值。
#include <stdio.h>
float f(float*,float,int);
void main()
{ float b[5]={1.1,2.2,3.3,4.4,5.5};
printf("%f\n",f(____1_____));
}
float f( _______2________ )
{ float y=___3___,t=1; int i;
for(i=1;i<n;i++) { t=t*x ; y=y+a*t; }
____4____
}
25、数列的第1、2项均为1,此后各项值均为该项前二项之和。计算数列第24项的值。
#include <stdio.h>
long f(int);
void main()
{
printf("%ld\n",___1____);
}
_____2_____
{ if( n==1 || n==2)
___3____;
else
return ____4_____;
}
p46.2、显示数据,要求:(1)在数组a中存在,而在数组b中不存在的数,以及(2)在数组b中存在,而在数组a中不存在的数。
#include <stdio.h>
void main()
{ int a[6]={2,5,7,8,4,12},b[7]={3,4,5,6,7,8,9},i,j,k;
for(i=0;i<6;i++) {
for(j=0;j<7;j++) if(___1____) break;
if(___2___) printf("%d ",a);
}
putchar('\n');
for(i=0;i<7;i++) {
for(j=0;j<6;j++) if(b==a[j]) ___3___;
if(j==6) printf("%d ",___4___);
putchar('\n');
}
24、循环输入正整数n(直到输入负数或者0结束),计算并显示满足条件2^m≤n≤2^(m+1)的m值。
#include <stdio.h>
#define F (t<=n && t*2>=n)
void main()
{ int m,t,n;
while(scanf("%d",&n),__1__){
m=0;___2___;
while(___3___){
___4___; m++;
}
printf("%d %d\n",n,m);
}
}
(二)改错, 在/*********** n**************/下一行有错,请改正。
p46.8、输入n(小于10的正整数)输出如下形式的数组例如:输入n=5,数组为:1 0 0 0 0
2 1 0 0 0
3 2 1 0 0
4 3 2 1 0
5 4 3 2 1
输入n=6数组为:1 0 0 0 0 0
2 1 0 0 0 0
3 2 1 0 0 0
4 3 2 1 0 0
5 4 3 2 1 0
6 5 4 3 2 1
#include <stdio.h>
void main()
{ int a[9][9]={{0}},i,j,n;
/*********** 1 **************/
while(scanf("%d",n),n<1||n>9);
for(i=0;i<n;i++) {
/****** 2 ********/
for(j=0;j<i;j++)
/******* 3 *********/
a[j]=i-j;
}
for(i=0;i<n;i++) {
for(j=0;j<n;j++)
/******** 4 *********/
printf("%3d",&a[j]);
putchar('\n');
}
}
33、输入两字符串s1,s2后,将它们首尾相连。
#include <stdio.h>
void main()
{ char s1[80],s2[40]; int j;
/***** 1 *****/
int i;
printf("Input the first string:");
gets(s1);
printf("Input the second string:");
gets(s2);
/********** 2********/
while(s1!=0)
i++;
for(j=0;s2[j]!='\0';j++)
/****** 3 ******/
s1[j]=s2[j];
/******* 4 *******/
s1[i+j]=\0;
puts(s1);
}
34、用选择法对10个整数按升序排序。
#include <stdio.h>
#define N 10
void main()
{ int i,j,min,temp;
int a[N]={5,4,3,2,1,9,8,7,6,0};
printf("排序前:");
/******** 1 *********/
for(i=0;i<n;i++)
printf("%4d",a);
putchar('\n');
for(i=0;i<N-1;i++) {
/***** 2 ******/
min=0;
for(j=i+1;j<N;j++)
/****** 3 ******/
if(a[j]>a[min]) min=j;
temp=a[min];a[min]=a;a=temp;
}
printf("排序后:");
for(i=0;i<N;i++)printf("%4d",a);
/****** 4 ********/
putchar("\n");
}
5、输入x和正数eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值小于eps为止。
#include <stdio.h>
#include <math.h>
void main()
{ double x,eps,s=1,t=1;
/******* 1 ********/
float i=1;
/******* 2 **********/
scanf("%f%f",&x,&eps);
do {
i++;
/***** 3 *****/
t=t*x/i;
s+=t;
/***** 4 *****/
} while(fabs(t)<eps);
printf("%f\n",s);
}
27、程序运行时输入整数n,则输出n的各位数字之和,例如:输入n=1380,则输出12;n=-3204,则输出9。
#include <stdio.h>
void main()
{ /****** 1 ******/
int n,s;
scanf("%d",&n);
/****** 2 ******/
n<0?-n:n;
/****** 3 ******/
while(n>=0){
/***** 4 *****/
s=s+n/10;
n=n/10;
}
printf("%d\n",s);
}
16、运行时若输入a、n分别为3、6,则输出下列表达式的值:3+33+333+3333+33333+333333
#include <stdio.h>
void main()
{ int a,n,i; long s=0,t;
/******* 1 ********/
scanf("%d%d",a,n);
/******* 2 **********/
t=1;
/******* 3 **********/
for(i=1;i<n;i++) {
t=t*10+a;
/******* 4 ********/
t=t+s;
}
printf("%ld\n",s);
}
p46.5、显示两个数组中,数值相同的元素。
#include <stdio.h>
void main()
{ /******** 1 *******/
int i;
int a[6]={1,3,5,7,9,11};
int b[7]={2,5,7,9,12,16,3};
/******* 2 *******/
for(i=0;i<=6;i++) {
for(j=0;j<7;j++)
/******** 3 *******/
if(a=b[j]) break;
/******* 4 ********/
if(j>=7)
printf("%d ",a);
}
printf("\n");
}
p46.4、逐个显示字符串中各字符的机内码。提示:英文字符字母的机内码首位为0,汉字的每个字节首位为1。程序正确运行后,显示如下:a[0]的机内码为:0110001;a[1]的机内码为:00110010;a[2]的机内码为:10111010;a[3]的机内码为:10111010;a[4]的机内码为:11010111;a[5]的机内码为:11010110。
#include <stdio.h>
void main()
{ /******** 1 *******/
char a[7]='a2汉字';
int i,j,k;
/******** 2 *******/
for(i=0;i<strlen(a);i++) {
printf("a[%d]的机内码为:",i);
for(j=1;j<=8;j++) {
k=a&0x80;
if(k!=0) putchar('1');
/****** 3 *****/
else putchar(0);
/****** 4 *****/
a=a>>1;
}
printf("\n");
}
}
17、程序运行时输入n,输出n的所有质数因子,例如:输入n为60,则输出60=2*2*3*5。
#include <stdio.h>
void main()
{ int n,i;
/****** 1 ******/
scanf("%f",&n);
printf("%d=",n);
/****** 2 ******/
n=2;
/****** 3 ******/
while(n>0)
if(n%i==0) {
printf("%d*",i);
/****** 4 ******/
n=n*i;
}
else i++;
printf("\b \n");
}
p46.3、循环输入x,n,调用递归函数计算,显示x的n次方。当输入n小于0时,结束循环。
#include <stdio.h>
float f(float x,int n)
{ /******* 1 ******/
if(n==1)
return 1;
else
/****** 2 ******/
return f(x,n-1);
}
void main()
{ float y,z; int m;
while(1) {
scanf("%f%d",&y,&m);
/****** 3 *******/
if(m>=0) break;
/******* 4 ********/
z=f(m,y);
printf("%f\n",z);
}
}
38、将十进制的整数,以十六进制的形式输出。
#include <stdio.h>
/********** 1 *********/
int DtoH(int n)
{ int k=n & 0xf;
if(n>>4!=0) DtoH(n>>4);
/********** 2 *********/
if(k<=10)
putchar(k+'0');
else
/********** 3 *********/
putchar(k-10+a);
}
void main()
{ int a[4]={28,31,255,378},i;
for(i=0;i<4;i++) {
printf("%d-->",a);
/******** 4 ********/
printf("%s",DtoH(a));
putchar('\n');
}
}
26、输入n,再输入n个点的平面坐标,则输出那些距离坐标原点不超过5的点的坐标值。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void main()
{ int i,n;
struct axy { float x,y;};
/***** 1 *****/
struct axy a;
/***** 2 *****/
scanf("%d",n);
a=(struct axy*) malloc(n*sizeof(struct axy));
for(i=0;i<n;i++)
scanf("%f%f",&a.x,&a.y);
/***** 3 ******/
for(i=1;i<=n;i++)
if(sqrt(pow(a.x,2)+pow(a.y,2))<=5) {
printf("%f,",a.x);
/*************** 4 **************/
printf("%f\n",a+i->y);
}
}
19、运行时输入10个数,然后分别输出其中的最大值、最小值。
#include <stdio.h>
void main()
{ float x,max,min; int i;
/******** 1 *******/
for(i=0;i<=10;i++) {
/****** 2 *******/
scanf("%f",x);
/******* 3 ********/
if(i=1)
{ max=x;min=x;}
else {
if(x>max) max=x;
if(x<min) min=x;
}
}
/******* 4 ********/
printf("%f,%f\n",Max,Min);
}
40、输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。
#include <stdio.h>
#include <string.h>
void main()
{ char str[81]; int i,flag;
/******* 1 ******/
get(str);
for(i=0;str!='\0';) {
flag=tolower(str)>='a' && tolower(str)<='z';
/********* 2 *********/
flag=not flag;
if(flag) {
/******* 3 ********/
strcpy(str+i+1,str+i);
/******* 4 ********/
break;
}
i++;
}
printf("%s\n",str);
}
p46.1、(1)输入一个整数mm作为密码,将字符串中每个字符与mm做一次按位异或操作进行加密,输出被加密后的字符串(密文),(2)再将密文的每个字符与mm做一次按位异或操作,输出解密后的字符串(明文)。
#include <stdio.h>
void main()
{ char a[]="a2汉字";
int mm,i;
/******** 1 *******/
printf(“请输入密码:”);
/******** 2 *******/
scanf("%d",mm);
for(i=0;a!='\0';i++) /*各字符与mm作一次按位异或*/
a=a^mm;
puts(a);
/*** 各字符与mm再作一次按位异或 ***/
/******** 3 *******/
for( ;a!='\0';i++)
/****** 4 ******/
a=a^mm^mm;
puts(a);
}
二、设计
13、(2)函数f将二维数组每1行均除以该行上绝对值最大的元素。函数main调用f处理数组a后按行显示,测试函数f正确与否。
#include <stdio.h>
#include <math.h>
double f(double **x,int m,int n)
{ double max; int i,j;
for(i=0;i<m;i++) {
max=x[0];
for(j=1;j<n;j++)
if(fabs(x[j])>fabs(max)) max=x[j];
for(j=0;j<n;j++) x[j]/=max;
}
}
void main()
{ FILE *fp;
double a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
double *c[3]={a[0],a[1],a[2]}; int i,j;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
fp=fopen("CD2.dat","wb");
fwrite(*a+8,8,1,fp);
fclose(fp);
}
24、累加a字符串中所有非大写英文字母字符的ASCII码,将累加和存入变量x并显示。
#include <stdio.h>
void main()
{ FILE *fp; long x; int i;
char a[]="Windows Office 2010";
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%d\n",x);
fp=fopen("CD2.dat","wb");
fwrite(&x,4,1,fp);
fclose(fp);
}
27、计算2的平方根、3的平方根、...、10的的平方根之和,要求将计算结果存入变量y中,且具有小数点后10位有效位数。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; int i;
/****考生在以下空白处写入语句 ******/
/****考生在以上空白处写入语句 ******/
printf("%.10f\n",y);
fp=fopen("CD1.dat","wb");
fwrite(&y,8,1,fp);
fclose(fp);
}
43、求斐波那契(Fibonacci)数列中其前40项之和,说明:斐波那契数列的前两项为1,此后各项为其前两项之和。
#include <stdio.h>
void main()
{ FILE *fp; long i,a[40]={1,1},s=2;
/****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%d\n",s);
fp=fopen("CD1.dat","wb");
fwrite(&s,4,1,fp);
fclose(fp);
}
35、在数组a的10个数中求平均值v,将大于等于v的数组元素进行求和并存入变量s中。
#include <stdio.h>
void main()
{ FILE *fp;
double a[10]={1.7,2.3,1.2,4.5,-2.1,-3.2,5.6,8.2,0.5,3.3};
double v,s; int i;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%f %f\n",v,s);
fp=fopen("CD1.dat","wb");
fwrite(&s,8,1,fp);
fclose(fp);
}
34、x,y分别表示平面上一个点的坐标,累加10个点与点(1.0,1.0)的距离总和存入double类型变量s中。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; int i;
double x[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
double y[10]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
/****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%f\n",s);
fp=fopen("CD1.dat","wb");
fwrite(&s,8,1,fp);
fclose(fp);
}
15、编制函数f计算下列表达式的值,函数main提供了一个测试用例。函数原型为double.f(double*,double,int) a0+a1sin(x)+a2sin(x^2)+a3sin(x^3)+……+an-1sin(x^n-1)。
#include <stdio.h>
#include <math.h>
/*****考生在以下空白处编写函数f ******/
/****考生在以上空白处编写函数f ******/
void main()
{ FILE *fp; int i; double y;
double a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9};
y=f(a,2.345,10);
printf("%f\n",y);
fp=fopen("CD2.dat","wb");
fwrite(&y,8,1,fp);
fclose(fp);
}
12、若x、y取值为区间[1,6]的整数,显示使函数f(x,y)取最小值x1,y1。函数f的原型为double f(int,int) f (x,y)=(3.14*x-y)/(x+y)
#include <stdio.h>
/****考生在以下空白处声明函数f ******/
/****考生在以上空白处声明函数f ******/
void main()
{ FILE *fp; double min; int i,j,x1,y1;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%f %d %d\n",min,x1,y1);
fp=fopen("CD2.dat","wb");
fwrite(&min,8,1,fp);
fclose(fp);
}
p46.6、用for循环找出所有两个数乘积等于20的数据对。【提示:判断20能否被i整除的条件可以写作“20.0/i==(int) (20/i)”】
#include <stdio.h>
void main()
{ FILE *fp; long i,n=0,x[10][2];
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
for(i=0;i<n;i++)
printf("%ld %ld\n",x[0],x[1]);
fp=fopen("CD1.dat","wb");
fwrite(&x,4,2*n,fp);
fclose(fp);
}
5、计算字符串s中每个字符的权重值并依次写入到数组a。权重值就是字符的位置值与该字符的ASCII码值的乘积。首字符位置值为1,最后一个字符的位置值为strlen(s)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{ FILE *fp; long i,n,*a;
char s[]="ABCabc$%^,.+-*/";
n=strlen(s);
a=(long*)malloc(n*sizeof(long));
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
fp=fopen("CD2.dat","wb");
fwrite(a,4,n,fp);
fclose(fp);
}
32、统计并显示500至800之间所有素数的点个数以及总和。
#include <stdio.h>
#include <math.h>
/****考生在以下空白处写入执行语句 编写函数f判断与形参相应的实参是否素数****/
/*****考生在以上空白处编写函数f *************/
#include <math.h>
void main()
{ FILE *fp; int i; long s=0,k=0;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("素数个数%d 素数总和%d\n",k,s);
fp=fopen("CD2.dat","wb");
fwrite(&k,4,1,fp);fwrite(&s,4,1,fp);
fclose(fp);
}
20、数组元素x、y表示平面上某点坐标,计算并显示10个点中所有各点间最短距离。
#include <stdio.h>
#include <math.h>
#define len(x1,y1,x2,y2) sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
void main()
{ FILE *fp; int i,j; double min,d;
double x[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
double y[10]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
min=len(x[0],y[0],x[1],y[1]);
/****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%f\n",min);
fp=fopen("CD2.dat","wb");
fwrite(&min,8,1,fp);
fclose(fp);
}
25、在数组x的10个数中求平均值v,找出与v相差最小的数组元素存入变量y,并显示v,y 。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; int i; double d,v,y;
double x[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9};
/*****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%f %f\n",v,y);
fp=fopen("CD2.dat","wb");
fwrite(&y,8,1,fp);
fclose(fp);
}
19、在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数。
#include <stdio.h>
void main()
{ FILE *fp; long i=1;
/****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%d\n",i);
fp=fopen("CD1.dat","wb");
fwrite(&i,4,1,fp);
fclose(fp);
}
33、求数列:2/1,3/2,5/3,8/5,13/8,21/13,……。前40项的和。
#include <stdio.h>
void main()
{ FILE *fp; double y=2,f1=1,f2=2,f; int i;
/****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%f\n",y);
fp=fopen("CD1.dat","wb");
fwrite(&y,8,1,fp);
fclose(fp);
}
13、编制函数f,用于在m行n列的二维数组中查找值最大的元素之行下标与列下标。函数mian提供了一个测试用例。
#include <stdio.h>
void f(int **a,int m,int n,int *mm,int *nn)
{ int i,j,max=a[0][0];
/****考生在以下空白处写入语句 ******/
/****考生在以上空白处写入语句 ******/
}
void main()
{ FILE *fp; int ii,jj;
int b[3][3]={{1,3,4},{2,9,5},{3,7,6}};
int *c[3]={b[0],b[1],b[2]};
/****考生在以下空白处写入调用语句 ******/
/****考生在以上空白处写入调用语句 ******/
printf("最大值为%d,行号%d,列号%d\n",b[ii][jj],ii,jj);
fp=fopen("CD2.dat","wb");
fwrite(&ii,4,1,fp); fwrite(&jj,4,1,fp);
fclose(fp);
}
14、在6至5000内找出所有的亲密数,并显示其数量。若a,b为1对亲密数,b,a也是1对亲密数,满足的条件是:a的因子和等于b,b的因子和不等于a,且a不等于b。关于因子和:6的因子和等于6即1+2+3,8的因子和等于6即1+2+3,8的因子和等于7即1+2+4,7的因子和就是7,……。
#include <stdio.h>
long f(long x)
{ int i,j,y=1;
for(i=2;i<=x/2;i++)
if(x%i==0) y=y+i;
return y;
}
void main()
{ FILE *fp; long a,b,c,k=0;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%d\n",k);
fp=fopen("CD1.dat","wb");
fwrite(&k,4,1,fp);
fclose(fp);
}
9、x与函数值都取double类型,对1,1.5,2,2.5,……,9.5,10. 求函数f(x)的最大值。f(x)=x-10*cos(x)-5*sin(x)
#include <stdio.h>
#include <math.h>
/****考生在以下空白处声明函数f ******/
/****考生在以上空白处声明函数f ******/
void main()
{ FILE *fp; double x,max;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%f\n",max);
fp=fopen("CD2.dat","wb");
fwrite(&max,8,1,fp);
fclose(fp);
}
18、数组元素x、y表示平面上某点坐标,统计10个点中哪些点、有几个点落在圆心为(1,-0.5),半径为5的圆内。
#include <stdio.h>
#include <math.h>
#define f(x,y) (x-1)*(x-1)+(y+0.5)*(y+0.5)
void main()
{ FILE *fp; long i,k=0;
float x[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
float y[10]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};
/****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/
printf("%d\n",k);
fp=fopen("CD1.dat","wb");
fwrite(&k,4,1,fp);
fclose(fp);
}
7、统计满足条件x^2+y^2+z^2=2013的所有正整数解的个数。(若a,b,c是1个解,则a,c,b也是1个解)。
#include <stdio.h>
void main()
{ FILE *fp; long x,y,z,k=0;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%ld\n",k);
fp=fopen("CD1.dat","wb");
fwrite(&k,4,1,fp);
fclose(fp);
41、编制函数f,函数原型为double f(double*,double,int),用于计算下列代数表达式的值。a0+a1x+a2x^2+a3x^3+……an-1x^(n-1),函数main提供了一个测试用例计算在x=1.5时一元九次代数多项式的值。
#include <stdio.h>
#include <math.h>
/****考生在以下空白处编写函数f******/
/****考生在以上空白处写入语句 ******/
void main()
{ FILE *fp; double y;
double b[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};
y=f(b,1.5,10);
printf("%f\n",y);
fp=fopen("CD2.dat","wb");
fwrite(&y,8,1,fp);
fclose(fp);
}
6、计算并显示表达式1+2!+3!+...+12!的值。
#include <stdio.h>
void main()
{ FILE *fp; long i,y=1,jc=1;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%ld\n",y);
fp=fopen("CD1.dat","wb");
fwrite(&y,4,1,fp);
fclose(fp);
}
30、编写函数,f判断与形参相应的实参是否回文数是则返回1 否则返回0。显示11至999之间的所有回文数(各位数字左右对称),并显示总个数。提示:先判断n是2位数还是3位数,再判断n是否回文数。
#include <stdio.h>
/*****考生在以下空白处编写函数f ******/
/*****考生在以上空白处编写函数f ******/
#include <math.h>
void main()
{ FILE *fp; int i; long k=0;
for(i=11;i<1000;i++)
if(f(i)) { printf("%5d",i);k++; if(k%10==0) putchar('\n');}
putchar('\n');
printf("%d\n",k);
fp=fopen("CD2.dat","wb");
fwrite(&k,4,1,fp);
fclose(fp);
}
17、数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; double sum,x; int i;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%f\n",sum);
fp=fopen("CD1.dat","wb");
fwrite(&sum,8,1,fp);
fclose(fp);
}
1、计算并显示满足条件1.05^n<10^6<1.05^(n+1)的n值以及1.05^n。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; double a=1.05; long n=1;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%d %.4f\n",n,a);
fp=fopen("CD1.dat","wb");
fwrite(&a,8,1,fp);
fclose(fp);
}
4、x,y为取值在区间[0 10]的整数,计算并显示函数f(x,y)在区间内取值最小点x1,y1。f(x,y)=3(x-5)x+x(y-6)+(y-7)y 。
#include <stdio.h>
long f(long x,long y) {
return 3*(x-5)*x+x*(y-6)+(y-7)*y;
}
void main()
{ FILE *fp; long min,x1,y1,x,y;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%d(%d,%d)\n",min,x1,y1);
fp=fopen("CD2.dat","wb");
fwrite(&min,4,1,fp);fwrite(&x1,4,1,fp);
fwrite(&y1,4,1,fp);
fclose(fp);
}}
11、计算1-1/3!+/5!-1/7!+……的和直到末项的绝对值小于10^(-10)时为止。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; double y,t=1;int i=1;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%f\n",y);
fp=fopen("CD1.dat","wb");
fwrite(&y,8,1,fp);
fclose(fp);
}
2、将数组a的每1行均除以该行上的主对角元素(说明第1行同除以a[0][0],第2行同除以a[1][1],...)。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; double c; int i,j;
double a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
for(i=0;i<3;i++) {
for(j=0;j<3;j++) printf("%7.3f ",a[j]);
putchar('\n');
}
fp=fopen("CD2.dat","wb");
fwrite(*a+8,8,1,fp);
fclose(fp);
}
10、计算并显示平面上5点间距离总和,程序中x,y表示其中1个点得x,y坐标。要求用二重循环实现。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *fp; double s,x[5]={-1.5,2.1,6.3,3.2,-0.7};
double y[5]={7,5.1,3.2,4.5,7.6}; int i,j;
/****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/
printf("%f\n",s);
fp=fopen("CD1.dat","wb");
fwrite(&s,8,1,fp);
fclose(fp);
}
作者: rosynirvana 时间: 2013-11-4 16:31
30
- 1. s[i] = '0'
- 2. m << 1
- 3. Dec2Bin(n, a)
- 4. puts(a)
复制代码 6
1. b, 1.7, 5
2. float* a, float x, int n
3. 0
4. return y;
25.
1. f(24)
2. long f(int n)
3. return 1
4. f(n-1) + f(n-2)
46.2- a[i] == b[j]
- j == 7
- break
- j == 6
复制代码 24.46.8- while(scanf("%d", &n), n>=1 && n<=9){
- for(j=0; j<=i; ++j)
- a[i][j] = i+1-j
- printf("%3d", a[i][j]);
复制代码
作者: rosynirvana 时间: 2013-11-4 16:51
本帖最后由 rosynirvana 于 2013-11-4 17:05 编辑
35. 题目好像是错的,而且第四项猜不出来……
1. string.h
2. i=0;
3. s+i, s+i+1
4.
好吧看了半天猜出来了, 4填else,但是strcpy不能处理两个字符串有重合部分的情况,知道有问题就行了
1.- 1. ctype.h
- 2. gets(s)
- 3. s[i] != '\0'
- 4. issapce(s[i])
复制代码 先做到这里吧,剩下的晚上回来做
作者: long11 时间: 2013-11-4 16:54
rosynirvana 发表于 2013-11-4 16:51 ![](static/image/common/back.gif)
35. 题目好像是错的,而且第四项猜不出来……
1. string.h
2. i=0;
太感谢了···![](static/image/smiley/default/cry.gif)
作者: rosynirvana 时间: 2013-11-4 19:48
33.- int i=0;
- while(s1[i] != '\0')
- s1[i++] = s2[j];
- s1[i] = '\0';
复制代码 34.- for(i=0; i<N; i++)
- min = i;
- if(a[j] < a[min]) min = j;
- putchar('\n');
复制代码 5.- int i = 0;
- scanf("%lf%lf", &x, &eps);
- t = -t * x / i ;
- }while(fabs(t) >= eps);
复制代码 27.- int n, s=0;
- n = (n < 0 ? -n : n);
- while(n > 0){
- s = s + n % 10;
复制代码 16.- scanf("%d %d", &a, &n);
- t = 0;
- for(i=0; i<n; i++){
- s = s + t;
复制代码 46.5- int i, j;
- for(i=0; i<6; i++)
- if(a[i] == b[j]) break;
- if(j < 7)
复制代码 46.4- char a[] = "a2汉字";
- for(i=0; i<6; i++)
- else putchar('0');
- a = a << 1;
复制代码 17.- scanf("%d", &n);
- i = 2;
- while(n > 1)
- n = n / i;
复制代码 46.3- if(n < 1)
- return f(x*x, n-1);
- if(m < 0) break;
- z = f(y, m);
复制代码 38.- void DtoH(int n)
- if(k<=9)
- putchar(k-10+'a');
- DtoH(a[i]);
复制代码 26.- struct axy* a;
- scanf("%d", &n);
- for(i=0; i<n; ++i)
- printf("%f\n", a[i].y);
复制代码 19.- for(i=0; i<10; i++)
- scanf("%f", &x);
- if(i == 0)
- printf("%f, %f\n", max, min);
复制代码 40.- gets(str);
- flag = !flag
- strcpy(str+i, str+i+1);
- --i;
复制代码 46.1- printf("请输入密码(整数)");
- scanf("%d", &mm);
- for(i=0; a[i]!='\0'; i++)
- a[i] = a[i] ^ mm;
复制代码
作者: rosynirvana 时间: 2013-11-4 20:08
1324- x = 0;
- for(i=0; a[i] != '\0'; ++i)
- if(!isupper(a[i]))
- x += a[i];
复制代码 27.- double y = 0;
- for(i=2; i<=10; ++i)
- y += sqrt(i);
复制代码 43.- for(i=2; i<40; ++i){
- a[i] = a[i-1] + a[i-2];
- s += a[i];
- }
复制代码 35.- v = 0; s = 0;
- for(i=0; i!=10; ++i)
- v += a[i] / 10;
- for(i=0; i!=10; ++i)
- if(a[i] >= v)
- s += a[i];
复制代码 34.- double s = 0;
- for(i=0; i!=10; ++i)
- s += sqrt((x[i] - 1) * (x[i] - 1) + (y[i] -1) * (y[i] - 1))
复制代码 15.
- double f(doube* a, double x, int n)
- {
- int i;
- double result = 0;
- for(i=0; i!=n; ++i)
- result += a[i] * sin(pow(x, n-1));
- return result;
- }
复制代码 12.
- for(i=1; i<=6; ++i)
- for(j=1; j<=6; ++j)
- if(i == 1 && j == 1){
- min = double(i, j)
- x1 = i;
- y1 = j;
- }
- else{
- if(double(i, j) < min){
- min = double(i, j);
- x1 = i;
- y1 = j;
- }
- }
复制代码
作者: rosynirvana 时间: 2013-11-4 20:47
46.6
- for(i=1; i<=10; ++i)
- if(20 % i == 0){
- x[0][n] = i;
- x[1][n++] = 20 / i;
- }
复制代码 5.
- for(i=0; i<=strlen(s); ++i)
- a[i] = s[i] * (i + 1);
复制代码 32.
- int is_prime(int n)
- {
- int i;
- for(i=2; i<=n/2; ++i)
- if(n % i == 0)
- return 0;
- return 1;
- }
复制代码
- for(i=501; i<800; ++i)
- if(is_prime(i)){
- k += 1;
- s += i;
- }
复制代码 20
- for(i=0; i!=10; ++i)
- for(j=i+1; j!=10; ++j){
- d = len(x[i], y[i], x[j], y[j]);
- if(d < min)
- min = d;
- }
- 25
- [code]
- v = 0;
- for(i=0; i!=10; ++i)
- v += x[i] / 10;
- y = fabs(v - x[0]);
- for(i=1; i!=10; ++i){
- d = fabs(v - x[i]);
- if(d < min)
- min = d;
- }
复制代码 19.
- for(;; ++i)
- if(i % 3 == 1 && i % 5 == 3 && i % 7 == 5 && i % 9 == 7)
- break;
复制代码 33.
- for(i=1; i!=40; ++i){
- f2 += f1;
- f1 = f2 - f1;
- y += 1.0 * f2 / f1;
- }
复制代码 13.
- for(i=0; i!=m ;++i)
- for(j=0; j!=n; ++j)
- if(a[i][j] > max){
- max = a[i][j];
- *mm = i;
- *nn = j;
- }
复制代码 14.
- for(a = 7; a < 5000; ++a)
- for(b = a + 1; b < 5000; ++b)
- if(f(a) == b && f(b) != a)
- k += 1;
复制代码 9.
- max = f(0.5)
- for(x = 1.0; x <= 10; x += 0.5)
- if(f(x) > max)
- max = f(x);
复制代码 18.
- for(i=0; i!=10; ++i)
- if(sqrt(f(x[i], y[i])) < 5)
- k += 1;
复制代码 7.
- for(x=0; x<sqrt(2013); ++x)
- for(y=0; y<sqrt(2013); ++y)
- for(z=0; z<sqrt(2013); ++z)
- if(x*x + y*y +z*z == 2013)
- k+=1;
复制代码 41.
- double f(doube* b, doube x, int n)
- {
- double result = b[0];
- int i=1;
- for(; i<n; ++i)
- result += b[i] * pow(x, i);
- return result;
- }
复制代码 6.
- for(i=2; i!=13; ++i){
- jc *= i;
- y += jc;
- }
复制代码 30.
- int f(int n)
- {
- if(n < 100)
- return n / 10 == n % 10;
- return n / 100 == n % 10;
- }
复制代码 17.
- sum = 0;
- x = 81
- for(i=1; i<=30; ++i){
- sum += x;
- x = sqrt(x);
- }
复制代码 1.
- for(; ; ++n)
- if(pow(1.05, n) < pow(10, 6) && pow(1.05, n+1) > pow(10,6){
- a = pow(1.05, n);
- break;
- }
复制代码 ;
4.
- min = f(0, 0);
- x1 = 0;
- y1 = 0;
- for(x =0; x!=11; ++x)
- for(y = 0; y!=11; ++y)
- if(f(x, y) < min){
- min = f(x, y)
- x1 = x;
- y1 = y;
- }
复制代码
作者: rosynirvana 时间: 2013-11-4 21:02
11.
- y = 0;
- for(i=3; fabs(t) >= pow(10, -10); i += 2){
- t = -t / i / (i-1);
- y += t;
- }
复制代码 2.
- for(i=0; i!=3; ++i)
- for(j=0; j!=3; ++j)
- a[i][j] /= a[i][i];
复制代码 10.
- s = 0;
- for(i=0; i!=5; ++i)
- for(j=i+1; j!=5; ++j)
- s += sqrt((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]));
复制代码
作者: rosynirvana 时间: 2013-11-4 21:03
居然有这么多……
作者: long11 时间: 2013-11-4 21:20
rosynirvana 发表于 2013-11-4 21:03 ![](static/image/common/back.gif)
居然有这么多……
太谢谢了~~![](static/image/smiley/default/smile.gif)
作者: 4399APPLE 时间: 2013-11-5 09:08
long11 发表于 2013-11-4 21:20 ![](static/image/common/back.gif)
太谢谢了~~
好无聊啊。。。。。。哪来这么多题?
作者: long11 时间: 2013-11-7 14:20
4399APPLE 发表于 2013-11-5 09:08 ![](static/image/common/back.gif)
好无聊啊。。。。。。哪来这么多题?
自己整理出来的~
作者: 4399APPLE 时间: 2013-11-7 14:52
long11 发表于 2013-11-7 14:20 ![](static/image/common/back.gif)
自己整理出来的~
那哪来这么多书
作者: long11 时间: 2013-11-8 20:30
4399APPLE 发表于 2013-11-7 14:52 ![](static/image/common/back.gif)
那哪来这么多书
是上机考的题库
作者: 唐伟 时间: 2015-4-22 20:48
本帖最后由 唐伟 于 2015-4-22 20:51 编辑
{:soso_e103:}
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) |
Powered by Discuz! X3.2 |