编程题库(1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.输入用单个字母表示的成绩信息,转换为百分制分数。

说明:输入A,输出95;输入B,
输出85;输入C,输出75;输入D,输出65;输入E,输出55.
#include<stdio.h>
main()
{
char grade;
int num;
scanf("%c",&grade);
if(grade=='A')
num=95;
else if(grade=='B')
num=85;
else if(grade=='C')
num=75;
else if(grade=='D')
num=65;
else if(grade=='E')
num=55;
printf("%5d the grade is %c\n",num,grade);
}
2.根据下面的函数关系,输入X,计算Y,要求输出结果保留两位小数。

(1)当x小于5时,y=0
(2)当x大于5且小于等于10时,y=sin(x)
(3)当x大于10时,y=cos(x)+sin(x)
#include<stdio.h>
#include<math.h>
main()
{
float x,y;
scanf("%f",&x);
if(x<5)
y=0;
else if(x>5&&x<=10)
y=sin(x);
else if(x>10)
y=cos(x)+sin(x);
printf("%5.2f\n",y);
}
3. 根据下面的函数关系,输入X,计算Y,要求输出结果保留两位小数。

(1)当x小于6时,y等于(1+x)
(2)当x大于等于6且小于10时,y等于(x-2)的平方加1
(3)当x大于等于10时,y等于sin(x)+2x
#include<stdio.h>
#include<math.h>
Void main()
{
Float x , y ;
Printf (“enter a x:”);
Scanf (“%f”, &x);
If(x<6.00)
Y=x+1;
Else if(x>=6.00 && x<10.00)
Y=(x-2)*(x-2) +1;
Else
Y=sin(x) +2x;
Printf (“x=%5.2f, y=%5.2f\n” , x, y);
}
3.输入一个3位的正整数,判定该正整数是否为一个回文数。

(所谓回文数是指正读和反
读都相同的数,例如131。

#include<stdio.h>
main()
{
int x,a,b;
scanf("%d",&x);
a=x/100;
b=x%10;
if(a==b)
printf("x是回文数%d\n",x);
else
printf("x不是回文数%d\n",x);
}
5. 从键盘输入三个整数a、b、c,输出其中最大的数。

#include<stdio.h>
main()
{
int x,y,z,max;
scanf("%d%d%d",&x,&y,&z);
max=x;
if(max<y)
max=y;
if(max<z)
max=z;
printf("%d\n",max);
}
6.从键盘输入任意一个字母,如果其为大写字母,则转为小写字母;如果其为小写字母,请转换为大写字母;其他情况保持不变,计算并输出。

#include<stdio.h>
main()
{
char ch;
printf("Please input the zimu:\n");
scanf("%c",&ch);
if(ch>='A'&&ch<='Z')
ch=ch+32;
else
if(ch>='a'&&ch<='z')
ch=ch-32;
printf("%c\n",ch);
}
7. 从键盘读入一个实数,对其进行四舍五入处理,要求精确到到小数点后两位。

例如输入12.345,其结果为12.35;输入12.341,其结果为12.34。

#include <stdio.h>
main()
{
float a;
int b,d;
scanf("%f",&a);
printf("%.2f",a);
}
8. 从键盘输入一个三位整数,计算其上下边界,例如123,其下边界为100,上边界为199,依此类推.
#include<stdio.h>
main ()
{
int x,y,a,b;
scanf("%d",&x);
y=x/100;
a=y*100;
b=a+99;
printf("上界是%d\n",a);
printf("下界是%d\n",b);
}
9. 从键盘输入一个三位纯小数,计算其上下边界,例如0.123,其下边界为0.100,上边界为0.199,依此类推
#include<stdio.h>
main ()
{
float x,y,c,d;
int a,b;
scanf("%f",&x);
a=x*1000;
b=a/100;
c=b/10.0;
d=c+0.099;
printf("上界是%.3f\n",c);
printf("下界是%.3f\n",d);
}
10. 根据下面的函数关系,对输入的每个x值,计算出相应的y值并输出结果。

(1)当x小于1时,y等于2+cos(x)
(2)当x大于等于1且x小于2时,y等于x的平方加上sin(x)
(3)当x大于等于2时,y等于(x-2)的平方根;
要求:按格式输出x和y的值,要求小数点后保留2位。

#include<stdio.h>
#include<math.h>
Void main()
{
Float x , y ;
Printf (“enter a x :”);
Scanf (“%f”, &x);
If(x<1.00)
Y=2+cos(x);
Else if(x>=1.00 && x<2.00)
Y=x*x+sin(x);
Else
Y=sqrt(x-2);
Printf (“x=%.2f, y=%.2f” , x, y);
}
11. 从键盘输入国际货币表示的商品价格,请转换为人民币。

要求:仅仅考虑美元($)和欧元€,汇率分别6和8。

例如输入$100,输出600,输入E100,输出800
#include<stdio.h>
main()
{
int x,y;
char ch;
scanf("%c%d",&ch,&x);
if(ch=='$')
y=6*x;
else if(ch=='E')
y=8*x;
printf("人民币转换为%d\n",y);
}
12. 从键盘读入一个自然数,判定其是否为素数,如果是,输出Yes,否则输出No。

#include<stdio.h>
main()
{
int x,y,i;
scanf("%d",&x);
if(x==1)
printf("1既不是素数也不是合数");
for(i=2;i<x;i++)
{
y=x%i;
if(y==0)
{
printf("%d不是素数\n",x);
break;
}
}
if(x==i)
printf("%d是素数\n",x);
}
13. 输出公元1000至今的所有闰年的数量
#include<stdio.h>
main()
{
int i,sum=0;
for(i=1000;i<2015;i++)
{
if(((i%4)==0&&(i%100)!=0)||(i%400==0))
sum++;
}
printf("闰年总数为%d\n",sum);
}
14. 计算1-1/2+1/3-1/4+…+1/n的和,在主函数输入n,计算输出结果。

#include<stdio.h>
main()
{
int n,i;
float a;
float sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
if(i%2!=0)
a=1/(float)i;
else
a=(-1)*(1/(float)i);
sum=a+sum;
}
printf("sum=%f\n",sum);
}
15. 从键盘输入一个自然数,判定其是否为完数,如果是,输出Yes,否则输出No。

完数是指一个整数的所有因子之和等于其自身的数,例如6=1+2+3。

#include <stdio.h>
void main()
{
int x,i,sum=0;
printf("请输入一个整数:");
scanf("%d",&x);
for(i=1; i<=x/2; i++)
{
if(x%i==0)
sum += i;
}
if(sum==x)
printf("Yes");
else
printf("No");
}
16.计算分数序列:2/1,-3/2,5/3,-8/5,13/8,-21/13,…,的前10项之和并输出。

#include <stdio.h>
main()
{ double n=1,a=1,b=2;
double sum=0,m=0;
int i;
for(i=0; i<10; i++)
{
m = n*b/a;
sum += m;
b = b+a;
a = b-a;
n *= (-1);
}
printf("该分数序列前十项的和为:%f",sum);
}
17. 计算Fibonacci数列中前5项的和。

提示:Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)。

#include<stdio.h>
main()
{
int i,sum=0,a[5]={0,1};
for(i=2;i<5;i++)
a[i]=a[i-1]+a[i-2];
for(i=0;i<5;i++)
sum=sum+a[i];
printf("前五项和为sum=%d\n",sum);
}
18. 计算全部水仙花数的和(提示:“水仙花”数是指一个三位数,其各位数字的立方和等于该数本身,例如:153=1+5*5+3*3).
#include<stdio.h>
void main()
{
int i,j,z,n,sum=0;
for(n=100;n<=999;n++)
{
i=n/100;
j=n/10%10;
z=n%10;
if(n==i*i*i+j*j*j+z*z*z)
{
printf("%5d",n);
sum+=n;
}
}
printf("\n");
printf("sum=%5d\n",sum);
}
19. 计算S=1-1/12+1/12-1/12+1/12……-1/12的值,并输出。

#include<stdio.h>
main()
{
int n,i;
float sum=0,a;
scanf("%d",&n);
a=1.000000-1.000000/12.000000;
if(n%2==0)
sum=a;
else
sum=1;
printf("sum=%f\n",sum);
}
20. 计算1/1+1/(1+2)+1/(1+2+3)+…+1/(1+2+…n)的,要求小数点后保留6位
#include<stdio.h>
main()
{
int n,i;
float sum=0,s=0,x;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s+=i;
x=1/s;
sum=sum+x;
}
printf("sum=%f\n",sum);
}
21.由x,y二个数字组成二位数xy和yz,且xy+yz=102。

如果有解,输出所有解,否则输出无解
#include <stdio.h>
main()
{
int x,y,z;
int num=0;
printf("xy+yz=102的解:\n");
for(z=0; z<10; z++)
{
for(x=0; x<10; x++)
{
y = (102-z-10*x)/11;
if((0<=y)&&(y<10)&&((102-z-10*x)%11==0))
{
num++;
printf(" 解%d(x,y,z)为:(%d,%d,%d)\n",num,x,y,z);
}
}
}
if(num==0)
{
printf(" 此关系无解");
}
}
22. 由x,y二个数字组成二位数xx和yz,且xx+yz=124。

如果有解,输出所有解,否则输出无解
#include <stdio.h>
int main()
{
int x,y,z;
int num=0;
printf("xx+yz=124的解:\tx\ty\tz\n");
for(z=0; z<10; z++)
{
for(y=0; y<10; y++)
{
x = (102-z-10*y)/11;
if((0<=x)&&(x<10)&&((124-z-10*y)%11==0))
{
num++;
printf(" 解%d为:\t%d\t%d\t%d\n",num,x,y,z);
}
}
}
if(num==0){
printf(" 此关系无解");
}
}
(22). 由x,y二个数字组成二位数xy和yz,且xy+yz=124。

如果有解,输出所有解,否则输出无解
#include<stdio.h>
void main()
{
int x,y,z,n=0;
printf("xy+yz=124的解\n");
for(z=0;z<10;z++)
{
for(x=0;x<10;x++)
{
y=(124-x*10-z)/11;
if(y>=0&&y<10&&((124-x*10-z)%11==0))
{
n++;
printf(" 解%d (x,y,z)=(%d,%d,%d)\n",n,x,y,z);
}
}
if(n==0)
{
printf("无解\n");
}
}
}
23. 计算1/2,2/3,3/5,5/8,8/13,13/21,……的前10项和,并输出结果。

#include<stdio.h>
main()
{
int t,i;
float a,b,sum;
a=1;
b=2;
sum=0;
for(i=1;i<11;i++)
{
sum=sum+(a/b);
t=b;
b=a+b;
a=t;
}
printf("sum=%f\n",sum);
}
25. 编写函数clear(char *t)将字符串t中的非英文字母删除,要求在主函数中定义数组存储字符串信息,调用函数实现链接后,输出结果。

(1)#include <stdio.h>
#include<string.h>
void clear(char *t);
int main()
{
char str[100];
printf("请输入字符串:");
gets(str);
clear(str);
}
void clear(char *t)
{ int i;
for(i = 0; i < strlen(t); ++i)
{
if((t[i] >= 'A' && t[i] <= 'Z') || (t[i] >= 'a' && t[i] <= 'z'))
printf("%c",t[i]);
}
}
(2)#include <stdio.h>
void clear(char *t);
int main()
{
char str[100];
printf("请输入字符串:");
gets(str);
clear(str);
}
void clear(char *t)
{
do
{
if((*(t) >= 'A' && *(t) <= 'Z') || (*(t) >= 'a' && *(t) <= 'z'))
printf("%c",*(t));
}
while(*(t++)!='\0');
}
26. 已知一有序序列1,2,4,6,12,14,要求从键盘输入一个整数,将此整数插入到此有序序列中。

要求输出原始数组和插入之后的数组。

要求编制函数insert(int *p,int d)实现此功能,在主函数调用此函数。

提示:例如输入整数位7,首先要找到7在整个序列中的位置,然后将7插入到当前位置。

#include <stdio.h>
void insert(int *p,int d);
int main()
{
int array[6] = {1,2,4,6,12,14};
int a,i;
printf("插入前数组元素的排序:");
for(i=0; i<6; i++)
{
printf("%5d",array[i]);
}
printf("\n输入一个整数:");
scanf("%d",&a);
insert(array,a);
}
void insert(int *p,int d)
{
int num=0,j;
printf("插入元素后数组元素的排序:");
for(j=0; j<6; j++)
{
if(num==0 && p[j]>d)
{
printf("%5d",d);
num++;
}
printf("%5d",p[j]);
if(p[j]<d&&j==5)
printf("%5d",d);
}
}
27. 从键盘读入一整数,判断其在数组3,23,-7,8,9,10中是否存在,假设此数组中不存在重复的数字。

若存在,则删除此数;否则,提示此数不存在。

要求:编制函数remove(double *p,double d)实现数据的清理工作,并输出原始数据和删除后的数据。

#include <stdio.h>
int removes(double *p,double d);
int main()
{
double array[6] = {3,23,-7,8,9,10};
double a;
int i;
printf("删除元素前数组元素为:\n");
for(i=0; i<6; i++)
{
printf("%lf \t",array[i]);
}
printf("\n输入一个数:");
scanf("%lf",&a);
int n = removes(array,a);
printf("调用remove函数后数组元素为:\n");
for(i=0; i<6-n; i++)
{
printf("%lf \t",array[i]);
}
}
int removes(double *p, double d)
{
int num=0,j;
for(j=0; j<6; j++)
{
if(p[j]==d){
num++;
for(j; j<5; j++)
{
p[j]=p[j+1];
}
}
}
if(num==0)
printf("数组中不存在此元素\n");
return num;
}
28. 从键盘读入一字符c,判断其在字符串"English"中是否存在,假设此数组中不存在重复的字符。

若存在,则删除此数;否则,提示此数不存在。

要求:编制函数del(char *p,char c)实现数据的清理工作,并输出原始数据和删除后的数据。

#include <stdio.h>
#include<string.h>
void clear(char *t,char c);
int main()
{
char str[]="English";
char c;
printf("原始数据为:%s\n",str);
printf("请输入要删除的字符:");
scanf("%c",&c);
clear(str,c);
printf("原始数据为:%s\n",str);
}
void clear(char *t,char c)
{
int num=0,j;
for(j=0; j < strlen(t); j++)
{
if(t[j]==c)
{
num++;
for(j; j<strlen(t); j++)
t[j]=t[j+1];
}
}
if(num==0)
printf("此字符不存在\n");
}
29. 编写函数mstrcat(char *t,char *s)将字符串s中的全部英文字符连接到字符串t的尾部, 要求在主函数中定义数组存储字符串信息,调用函数实现链接后,输出结果。

#include <stdio.h>
void strcats(char *s1,char *s2);
void main()
{
char s1[100],s2[100];
scanf("%s%s",&s1,&s2);
strcats(s1,s2);
printf("%s\n",s2);
}
void strcats(char *s1,char *s2)
{
int i=0,j=0;
while(s1[i]='\0')
i++;
while(s2[j]='\0')
{
if(s2[j]<='a'&&s2[j]>='z')
s1[i++]=s2[j];
else
j++;
}
s2[j]='\0';
}
30. 编写函数itoa(int n,char *p)实现将整数n转换为字符串存储到p中。

要求在主函数中输入整数n,调用itoa函数,并将结果输入到字符串。

#include <stdio.h>
void itoa(int n,char *p);
int main()
{
char str[20];
int n;
printf("请输入一个整数:");
scanf("%d",&n);
itoa(n,str);
printf("%s",str);
}
void itoa(int n,char *p)
{
int i=0;
int m=n;
while(n)
{
n = n/10;
i++;
}
*(p+i)='\0';
while(i--){
*(p+i) = m%10+'0';
m = m/10;
}
}
31. 编写函数mstrcpy(char *t,char *s,int m)字符串s中的第m个字符开始的全部字符复制成另一个字符串t。

要求在主函数中初始化字符串s,从键盘读入m的值,输出字符串s和复制的字符串t。

#include <stdio.h>
#include<string.h>
void mstrcpy(char *t,char *s,int m);
int main()
{
char str1[]="sdfffhdgdfhdd";
char str2[20];
int m;
while(1)
{
printf("请输不大于%d的正整数:",strlen(str1));
scanf("%d",&m);
if(m<=13&&m>=1)
break;
printf("输入的数不符合要求!!!\n");
}
mstrcpy(str2,str1,m);
printf("copy后字符串str2的值为:%s",str2);
}
void mstrcpy(char *t,char *s,int m)
{
m--;
while(*(s+m)!='\0'){
*(t++) = *(s+m);
m++;
}
*t = '\0';
}
32. 编写函数clear(char *t)将字符串t中的全部英文字母删除,要求在主函数中定义数组存储字符串信息,调用函数实现链接后,输出结果。

#include <stdio.h>
void clear(char *t);
int main()
{
char str[]="dadada5a544fa545ad";
clear(str);
printf("%s",str);
}
void clear(char *t)
{
char *p=t;
while(*t!='\0')
{
if(((*(t)>='A') && (*(t)<='Z')) || ((*(t)>='a') && (*(t)<='z')))
{
t++;
continue;
}
*(p++) = *(t++);
}
*p = '\0';
t=p;
}
33. 编写函数strcat(char *t,char *s)将字符串s中的全部数字字符连接到字符串t的尾部。

#include <stdio.h>
void strcats(char *s1,char *s2);
void main()
{
char s1[100],s2[100];
scanf("%s%s",&s1,&s2);
strcats(s1,s2);
printf("%s\n",s2);
}
void strcats(char *s1,char *s2)
{
int i=0,j=0;
while(s1[i]='\0')
i++;
while(s2[j]='\0')
{
if(s2[j]<='9'&&s2[j]>='0') 字母if((s2[j]<='Z'&&s2[j]>='A') &&s2[j]<='z'&&s2[j]>='a'))s1[i++]=s2[j];
else
j++;
}
s2[j]='\0';
}
34. 在物理实验中,获得5个数据{0.89,0.78,0.0009,0.67,0.56},其中有一个数据小于0.001,此数据无效,将此无效数据删除。

要求编制函数cleandata(double *p)实现数据的清理工作,并在主函数输出删除之前的数组和删除之后的数组。

#include <stdio.h>
int cleandata(double *p);
int main()
{
double str[5]={0.89,0.78,0.0009,0.67,0.56};
int i;
printf("处理数据前数组数据为:\n");
for(i=0; i<5; i++)
printf("%lf\t",str[i]);
int n=cleandata(str);
printf("\n处理数据后数组数据为:\n");
for(i=0; i<5-n; i++)
printf("%lf\t",str[i]);
}
int cleandata(double *p){
double *d=p;
int num=0,i;
for(i=0; i<5; i++){
if(*(p+i)<0.001){
num++;
continue;
}
*(d++) = *(p+i);
}
p=d;
return num; }。

相关文档
最新文档