资源描述
(word完整版)c语言程序设计编程题库
难度1循环结构
4
计算 s=1—2!+3!—4!+…—10!的值并输出。 -3301819
#include<stdio。h〉
void main()
{int n,t=1,f=-1;
int sum=0;
for(n=1;n〈=10;n++)
{t=t*n;
f=—f;
sum=sum+t*f;
}
printf("%d",sum);
}
9
计算 s=1—1/3 + 1/5- 1/7+…1/101 的值并输出 0。790300
#include〈stdio.h>
void main()
{int n,f=—1;
float t,sum=0;
for(n=1;n<=51;n++)
{t=1。0/(2*n-1);
f=-f;
sum=sum+t*f;
}
printf("%f”,sum);
}
10
编写程序求出 555555的约数中最大的三位数是多少。 要求必须使用 do—while语句实现.
#include<stdio。h〉
#define Y 555555
void main()
{int n=100;
int max=0;
Do
{ if(Y%n==0)
{max=n;n++;}while(n<999);
printf("%d",max);
}
11
输入一个正整数, 要求以相反的顺序输出该数。 例如输入12345, 输出位54321。注:1 不得使用数组;2 必须使用 while 语句实现。
#include 〈stdio.h>
Void main()
{ int x;
Scanf(“%d”,&x) ;
While()
}
110
编写程序,求S=1/(1*2)+1/(2*3)+1/(3*4)+……前50项之和.要求必须使用for语句实现。 0.980393
#include 〈stdio.h〉
void main( )
{
int i;
float sum=0;
for(i=1;i〈=50;i++)
sum=sum+1.0/(i*(i+1));
printf(”\ns=%f\n”,sum);
}
111
编写程序,求S=1/(1+2)+1/(2+3)+1/(3+4)+……前50项之和。要求必须使用while 语句实现。
#include <stdio。h>
void main( )
{
int i=1;
float sum=0;
while(i〈=50)
{ sum=sum+1。0/(i+(i+1));
i++;}
printf("\ns=%f\n”,sum);
} 1.947676
179
输入 10个整数,统计同时能被 3和 7 整除的个数,结果存放在变量 nCount中。将 nCoun 输出。要求必须使用 do-while 语句实现。
#include "stdio。h"
void main()
{
int a[10] ;
int i=0 ,nCount=0;
do
{ scanf("%d”,&a[i]);
i++;
}while(i〈10);
i = 0 ;
do
{ if(a[i]%3 == 0 && a[i] % 7 == 0)
nCount++;i++;}while(i〈10);
printf("%d", nCount);
}
181
编写一个sum函数求和:输入一个正整数n,统计不大于n值的所有正偶数的和,在主函数中完成输入输出。要求用 do—while 语句实现。
#include ”stdio。h"
void main()
{
int n,sum=0,i ;
printf("请输入一个正整数:”);
scanf("%d”,&n) ;
i = 2;
do
{sum=sum+i;i+=2;}while(i<n);
printf(”%d\n”,sum) ;
}
187
编程求1+(1+2)+…+(1+2+…+n),n的值由键盘输入。要求使用 for语句实现
#include <stdio。h〉
void main( )
{
int i,j=0,n;
int sum=0;
printf(”请输入n的值:");
scanf(”%d”,&n);
for(i=1;i〈=n;i++)
{ j=j+i;
sum=sum+j;}
printf("\ns=%d\n",sum);
}
265
从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出。要求使用 while 语句.
#include"stdio。h"
void main()
{
int a[10],i,p=0,n=0,z=0;
printf(”输入10个整数:”);
i=0;
while(i<10)
{scanf("%d",&a[i]);
if(a[i]〉0) p++;
else if (a[i]<0) n++;
else z++;
i++;
}
printf(”正数:%d,负数:%d,零:%d\n",p,n,z);
}
函数 难度1
173
编写自定义函数 volume_cy,功能是求圆柱体的体积(v=3。14*r2*h),要求
圆柱体的高 h 和底半径 r 在主函数中输入,圆柱体的体积在主函数中做输出。h,r 均为 float型变量。
#include 〈stdio。h〉
float volume_cy(float r,float h)
{
return (3.14*r*r*h);
}
void main()
{float r,h,v;
printf(”请输入圆柱体的半径和高度”);
scanf("%f %f",&r,&h);
v=volume_cy(r,h);
printf("\n圆柱体的体积为%f\n”,v);
}
176
编写自定义函数 volume_c,功能是求正方体的体积(要求:正方体的的边长 a 在主函数中做输入,在主函数中调用函数 volume_c,在主函数中输出正方体体积,a 为int 型变量) .
#include 〈stdio.h〉
float volume_c(int a)
{
return (a*a*a);
}
void main()
{int a;
float v;
printf("请输入正方形的边长:”);
scanf(”%d”,&a);
v=volume_c(a);
printf(”\n正方形的的体积为%f\n”,v);
}
178
编写函数max, 功能是找出两个数的较大值. 在主函数中输入两个整数num1,num2,调用函数 max,在主函数中输出 num1 和 num2 较大值.
#include 〈stdio。h>
void main()
{int max(int x, int y);
int num1,num2,max1;
printf(”请输入两个数:\n");
scanf("%d%d",&num1,&num2);
max1=max(num1,num2);
printf("max=%d\n",max1);
}
int max(int x,int y)
{int m;
m=x〉y?x:y;
return m;
}
182
定义函数 areaT,功能是求圆锥体积.在主函数中输入半径 r和高 h,调用函数 areaT 求体积,并在主函数中输出圆锥的体积。其中变量 r,h 均为 double 型数据. (公式v=h*3。14*r2/3)
#include <stdio。h〉
float areaT(double r,double h)
{
return 3.14*r*r*h/3。0;
}
void main()
{float r,h,v;
printf(”请输入圆锥体的半径和高度");
scanf("%f %f",&r,&h);
v=areaT(r,h);
printf(”\n圆锥体的体积为%f\n”,v);
}
183
定义函数 Fra,功能是求华氏温度,要求在主函数中输入摄氏温度 c,调用函数 Fra,在主函数中输出华氏温度 f。要求变量 c,f均为 float型数据(公式 f=5/9*c+32)
#include 〈stdio.h>
float Fra(float c)
{
return 5。0/9*c+32.0;
}
void main()
{float f,c;
printf(”请输入摄氏温度:");
scanf(”%f",&c);
f=Fra(c);
printf("\n对应的华氏温度为%f\n",f);
}
184
定义函数 areaT,功能是求梯形面积。要求在主函数中输入上底(用变量 a存储)、下底(用变量 b 存储)、和高(用变量 h 存储),在主函数中调用函数 areaT,输出梯形面积(用变量 s 存储)的值.其中,变量 a,b,h,s 数据类型均为 double。公式:s=(a+b)*h/2
#include 〈stdio。h〉
double areaT(double a,double b,double h)
{
return (a+b)*h/2;
}
void main()
{double a,b,h,s;
printf("请输入梯形的上底、下底和高度”);
scanf(”%f %f %f",&a,&b,&h);
s=areaT(a,b,h);
printf(”\n梯形的面积为%f\n",s);
}
194
)编写自定义函数 min,函数功能是找出两个数的较小值。在主函数中输入
两个数,分别保存在变量 a 和变量b,并且在主函数中调用函数 min,输出 a 和b 的较小值。
#include 〈stdio.h〉
void main ()
{ int min(int x, int y);
int a,b,min1;
printf("请输入两个数:\n”);
scanf("%d%d",&a,&b);
min1=min(a,b);
printf("min=%d\n",min1);
}
int min(int x,int y)
{
int m;
m=x<y?x:y;
return m;
}
197
编写一个函数fun,函数的功能是:判断一个整数是否既是5又是7的整倍数。若是,输出yes,否则输出no。在主函数中输入任意一个正整数,调用fun函数,输出该数对应的结果。
#include <stdio.h>
void main()
{void fun(int);
int a;
scanf(”%d",&a); 对应的结果
fun(a) ; 35
} Yes
void fun(int x) 49
{ if(x%5==0&&x%7==0) printf(”yes\n”); No
else printf(”no\n");
return ;
}
242
编写一个函数div,定义该函数的返回值类型为int,功能是判断一个整数n是否能同时被5 和7 整除,如果能,那么函数返回值为1;如果不能,那么函数返回值为0。在main 函数中完成数据输入,函数调用和数据输出。
#include 〈stdio。h>
void main()
{int div(int);
int a,y;
scanf(”%d”,&a);
y=div(a) ;
printf("y=%d”,y);
}
int div(int x)
{ int y;
if(x%5==0&&x%7==0) y=1;
else y=0;
return(y) ;
}
317
)编写函数sign,功能是计算下列分段函数sign(x)的值。在主函数中输入一个数,保存在变量x 中,调用函数sign,在主函数中输出结果。要求x 为double 型变量.sign(x)={1 x>0
0 x=0
—1 x〈0 }
7#include〈stdio。h〉
double sign(double x)
{
double b;
if(x==0)
b=0;
else if(x〈0)
b=-1;
else
b=1;
return b;
}
void main()
{
double x,b;
scanf("%f",&x);
b=sign(x);
printf(”%le",b);
}
逻辑运算和判断选取控制
6
编程判断输入的正整数是否既是5又是7的整倍数。若是,输出yes,否则输出no。
#include <stdio。h>
void main()
{
int n;
scanf("%d",&n);
if(n%5==0&&n%7==0)
printf("yes\a");
else printf("no\a");
}
8
编写一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。要求必须使用switch—case 结构实现.
#include "stdio。h"
int main()
{int score,g;
printf(”请输入百分制成绩:”);
scanf("%d”,&score);
g=score/10;
switch(g)
{case 1:
case 2:
case 3:
case 4:
case 5:printf(”E\n”);break;
case 6:printf(”D\n”);break;
case 7:printf("C\n”);break;
case 8:printf("B\n”);break;
case9: printf("A\n”);break;
default: printf("Input Error!");
}
}
93
编写一个简单计算器程序,输入格式为:data1 op data2。其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。。要求必须使用switch—case语句实现.
#include 〈stdio.h>
void main ( )
{ float data1, data2;
char op;
printf("Enter your expression:”);
scanf("%f%c%f”, &data1,&op,&data2);
switch(op)
{ case ’+':
printf(”%。2f+%。2f=%。2f\n", data1, data2, data1+data2); break;
case ’—' :
printf("%.2f—%。2f=%。2f\n”, data1, data2, data1—data2); break;
case '*’ :
printf("%。2f*%。2f=%.2f\n", data1, data2, data1*data2); break;
case ’/' :
if( data2==0 )
printf("Division by zero。\n");
else
printf(”%.2f/%.2f=%。2f\n”, data1, data2, data1/data2); break;
default:
printf(”Unknown operater。\n”);
}
}
94
已知银行整存整取存款不同期限的月息利率分别为:
0。315% 期限一年
0.330% 期限二年
月息利率 = 0.345% 期限三年
0。375% 期限五年
0.420% 期限八年
要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
#include "stdio.h"
int main()
{float money,y;
printf(”请输入存钱的本金和期限:”);
scanf("%f%f”,&money,&y);
if (y==1)
{money=money+0.00315*12*y;
printf(”到期时利息和本金合计为%f元。\n”,money);}
else if (y==2)
{money=money+0。00330*12*y;
printf("到期时利息和本金合计为%f元.\n”,money);}
else if (y==3)
{money=money+0。00345*12*y;
printf("到期时利息和本金合计为%f元。\n",money);}
else if (y==5)
{money=money+0.00375*12*y;
printf(”到期时利息和本金合计为%f元。\n",money);}
else if (y==8)
{money=money+0.00420*12*y;
printf("到期时利息和本金合计为%f元。\n”,money);}
else
printf("没有这种存款方式!");
return 0;
}
199
从键盘输入一个学生的分数, 要求实现这样的判断功能: 如果分数大于100,输出”Input error!" 如果分数介于100到90之间, 输出”Very Good!” 如果分数介于80到90只,输出”Good!” 如果分数介于70到80之间,输出”Middle" 如果分数介于60到70之间, 输出”Pass” 如果分数小于60,输出"No Pass!" 。要求必须使用if-elseif 结构实现。
#include 〈stdio。h>
void main()
{
int score;
printf(”your score:");
scanf("%d”,&score);
if(score<0||score〉100) printf(”Input error!\n");
else if (score〉90) printf("Very Good!\n”);
else if (score>80) printf(”Good!\n");
else if (score>70) printf(”Middle\n”);
else if(score〉60) printf(”Pass\n”);
else printf("No Pass!\n”);
}
200
判断一个学生成绩的“优、良、中、差”: 假如从键盘输入的字母是‘A’,输出评语“You are Excellent!”; 如果输入‘B',输出评语“You are well!"; 如果输入‘C’,输出评语“You are passing!”; 如果输入‘D’,输出评语“You are not passing!"。 如果输入的不是这四个字母,则出现提示“Input error!” 请编写一个程序,实现该判断功能。要求必须使用switch-case 结构实现。
#include <stdio。h>
void main()
{
char grade;
printf("Please input a grade:");
scanf(”%c",&grade);
switch(grade)
{
case 'A':printf("You are Excellent!\n”);break;
case ’B’:printf("You are well!\n”);break;
case 'C’:printf("You are passing!\n");break;
case ’D’:printf(”You are not passing!\n”);break;
default:printf(”Input error!\n");
}
}
211
输入一个整数,判断该数是奇数还是偶数。要求必须使用if-else 结构实现。
#include 〈stdio.h>
void main()
{
int x;
printf("Please input a number:”);
scanf("%d",&x);
if(x%2==0)
printf(”ou shu\n");
else printf(”ji shu\n”);
}
247
从键盘接收三个整数,分别存放在变量a,b,c 中,编程求出最小数.XXXXXX
#include <stdio.h>
void main()
{
int a,b,c,min;
printf("Please input 3 numbers:”);
scanf(”%d,%d,%d",&a,&b,&c);
if(a〈b)
min=a;
else min=b;
if(min〈c)
printf("min=%d\n”,min);
else printf("min=%d\n”,c);
}
249
从键盘接收三个整数,分别存在变量x,y,z 中.编程输出最大数。
#include 〈stdio.h〉
void main()
{
int x,y,z,max;
printf("Please input 3 numbers:”);
scanf("%d,%d,%d",&x,&y,&z);
if(x>y) max=x;
else max=y;
if(max〉z) printf(”max=%d\n”,max);
else printf("max=%d\n",z);
}
253
从键盘接收一个字符,如果是字母,输出其对应的ASCII码,如果是数字,按原样输入,否则给出提示信息“输入错误!"。
#include 〈stdio。h〉
void main()
{
char c;
printf(”Please input a char:");
c=getchar();
if(c〉='a'&&c<='z’)
printf(”%d\n”,c);
else if(c>=’A'&&c〈='Z')
printf("%d\n”,c);
else if(c>=’0'&&c<=’9’)
printf("%c\n",c);
else printf(”输入错误!\n”);
}
279
个人所得税计算,应纳税款的计算公式如下:
收入
税率
收入<=1000元部分
0%
2000元>=收入>1000元的部分
5%
3000元>=收入〉2000元的部分
10%
6000元〉=收入>3000元的部分
15%
收入〉6000元的部分
20%
输入某人的收入,计算出应纳税额及实际得到的报酬。,要求必须使用if—else 结构完成。
#include 〈stdio.h>
void main()
{
float i,n,tax; /*定义收入,实际收入,个人所得税*/
printf(”Please input your income:”);
scanf("%f”,&i);
if(i<=1000)
{
tax=i*0;
n=i—tax;
printf(”个人所得税=%。1f 实际报酬=%.2f\n”,tax,n);
}
else if(i>1000&&i<=2000)
{
tax=i*0.05;
n=i-tax;
printf(”个人所得税=%.1f 实际报酬=%。2f\n",tax,n);
}
else if(i>2000&&i〈=3000)
{
tax=i*0.1;
n=i—tax;
printf(”个人所得税=%。1f 实际报酬=%.2f\n",tax,n);
}
else if(i>3000&&i<=6000)
{
tax=i*0。15;
n=i—tax;
printf(”个人所得税=%。1f 实际报酬=%。2f\n",tax,n);
}
else if(i〉6000)
{
tax=i*0。2;
n=i—tax;
printf(”个人所得税=%.1f 实际报酬=%.2f\n",tax,n);
}
else printf(”error!\n”);
}
320
输入一个字符,判断它是否是小写字母,是小写字母,则将它转换成大写字母,如果不是,则不转换,然后输出所得到的字符.
#include”stdio.h”
Void main()
{
Char c;
Printf(“输入一个字符:”);
Scanf(“%c”,&c);
If (c〉=’a’&&c〈=’z’)
Printf(“%c\n”,c—32);
Else printf(“%c\n",c);
}
难度2
154
编一通用函数avernum,计算含有n个数据的一维数组的平均值,并统计此数组中大于平均值的数据的个数; 主函数中定义含有100个元素的数组x,x[I]=200*cos(I*0.875)(I=0,1,2……99),调用上述函数,输出此数组的平均值及大于平均值的数据的个数。 -0。851949 49
(注:此程序不允许使用全局变量,不允许在avernum函数中输出)
#include ”stdio.h”
#include "math.h”
#define N 100
double avernum(double *x, double n, double ave)
{ double aver=0.000000, a=0;
int i;
if(ave==0)
{ for(i=0; i〈n; i++)
aver=aver+*(x+i);
aver=aver/n;
return aver;
}
else
{ for(i=0; i〈n; i++)
if(ave〈*(x+i))a++;
return a;
}
}
void main()
{ double x[N], m, aver;
int i;
for(i=0; i<N; i++)
x[i]=200*cos(i*0.875);
aver=avernum(x, N, 0);
m=avernum(x, N, aver);
printf("aver=%f\nm=%f\n”,aver, m);
}
155
编一通用函数avermax,计算含有n个数据的一维数组的平均值,并求出此数组中大于平均值的数据之和;主函数中定义含有300个元素的数组x,x[I]=10* cos ((3.0+I*I) / 5) (I=0,1,2……299),调用上述函数,输出此数组的平均值及大于平均值的数据之和。 -0。220814 912.784553(注:此程序必须使用while 语句,不允许使用全局变量,不允许在avermax 函数中输出)
)
#include "stdio.h"
#include "math。h”
#define N 300
double avernum(double *x, double n, double ave)
{ double aver=0.000000, a=0;
int i;
if(ave==0)
{ i=0;
while(i〈n)
{aver=aver+*(x+i); i++;}
aver=aver/n;
return aver;
}
else
{ i=0;
while(i<n)
{ if(ave〈*(x+i))a+=*(x+i); i++;}
return a;
}
}
void main()
{ double x[N], m, aver;
int i=0;
while(i<N)
{x[i]=10* cos((3.0+i*i)/5); i++;}
aver=avernum(x, N, 0);
m=avernum(x, N, aver);
printf("aver=%f\nm=%f\n”,aver, m);
}
156
编一通用函数maxsub,求出含有n 个数据的一维数组的最大值及其所在位置(即下标);主函数中定义含有300 个元素的数组y,y[I]=10* cos ((3.0+I*I) / 5)(I=0,1,2R-R—299),调用上述函数,输出此数组的最大值及其所在位置。(注:此程序必须使用for 语句,不允许使用全局变量,不允许在maxsub 函数中输出)9。99927,0。00000
#include ”stdio.h"
#include "math。h"
#define N 300
double maxsub(double *x, double n, double ave)
{ double max;
int i,j=0;
if(ave==0)
{ max=*x;
for(i=1; i<n; i++)
if(max<*(x+i))
{max=*(x+i); j++;}
return max;
}
else
return j;
}
void main()
{ double y[N], m, aver;
int i;
for(i=0; i〈N; i++)
y[i]=10*cos((3.0+i*i)/5);
aver=maxsub(y, N, 0);
m=maxsub(y, N, aver);
printf(”aver=%f\nm=%f\n”,aver, m);
}
158
编一函数,统计一维整数组小于数组元素平均值的元素的个数;主函数定义x[50],x[i]=600*cos(i*0.35), 调用函数,输出小于数组元素平均值的元素的个数。。必须使用while 语句。 27。000000
#include "stdio。h"
#include ”math。h”
#define N 50
float avernum(float y[],int n)
{float v,s=0;
int count=0,i=0;
while(i〈n)
{s+=y[i];i++;}
v=s/n;
i=0;
while(i<n)
{if(y[i]<v)
count++;
i++;
}
return(count);
}
void main()
{float x[N];
int i=0;
while(i<N)
{ x[i]=600*cos(i*0。35);i++;}
printf("%f\n”,avernum(x,50));
}
159
编一函数,求有50个元素的一维整数组中最大值的位置;主函数中定义y[50],y[j]=600*sin(j*0.16),调用函数,输出最大值及其位置。要求必须使用for 语句。 599.941355 0.000000
#include "stdio.h"
#include "math。h”
double maxsub(double x[],int num,double max)
{
int i,j;
double m=0.00000;
m=x[0];
j=0;
if(max==0)
{for(i=1;i〈num;i++)
if(x[i]>m)
{
m=x[i];j=i;
}
return (m);
}
else
return(j);
}
void main()
{ double a[50],max,m;
int i;
for(i=0;i〈50;i++)
a[i]=600*sin(i*0.16);
max=maxsub(a,50,0);
m=maxsub(a,50,max);
printf(”m=%f,J=%f\n",max,m);
}
162
求一维实型数组中最大元素。要求:主函数中定义含有300个元素的数组x, x[i]=10* cos ((3.0+i*i ) /5) (i=0,1,2……299),调用自定义函数qmax求出最大元素,然后在主函数中输出结果。要求必须使用 while 语句实现。
#include”math。h"
#include"stdio.h"
#define N 300
float qmax(float a[],int n)
{
Int i =1;
float max=a[0];
While(i<N)
{ if(max〈a[i])
{ max=a[i];i++;}
return (max);
}
void main()
{
int i=0;
float x[N],max;
While(i〈N
展开阅读全文