c程序txt
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
六、试题
1. 有一个函数 ,写一段程序,输入 的值,输出 的值。
#include
void main()
{
}
2. 输入3个数a,b,c,按大由到小的顺序输出。
#include
void main()
{float max(float ,float );
float a,b,c,m;
printf("please input the numbers:");
scanf("%f%f%f",&a,&b,&c);
if(aif(a
}
3. 输入4个数,输出4个数中的最大值、最小值。
#include
void main()
{float a,b,c,d,m;
printf("intput the numbers:");
scanf("%f%f%f%f",&a,&b,&c,&d);
if(aif(a
}
4. 输入成绩,要求输出成绩等级A、B、C、D、E或error。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,0~60分为‘E’。若输入成绩低于0分和高于100分则输出error。
#include
void main()
{float a;
printf("intput the number:");
scanf("%f",&a);
if(a>100 || a<0) printf("error");
else if(a>=90) printf("A");
else if(a>=80) printf("B");
else if(a>=70) printf("C");
else if(a>=60) printf("D");
else printf("E");
}
5. 有一个函数:
#include
void main()
{float x,y;
printf("please input x:");
scanf("%f",&x);
if(x<1) y==x;
if(x==10) y==3*x-11;
else y==2*x-1;
printf("y=%f\n",y);
}
6. 输出300~400之间的全部素数,并按每行5个数输出。
#include
#include
void main()
{int m,i,n=0,k;
for(m=300;m<=400;m++)
{k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>=k+1)
{printf("%d",m);
printf(" ");
n++;}
if(n%5==0) printf("\n");
}
printf("\n");
}
7. 求Fibonacci数列的前20个数,并将其分5行输出。
#include
void main()
{long int f1,f2;
int i;
f1=1;f2=1;
for(i=1;i<=10;i++)
{printf("%12ld%12ld",f1,f2);
if(i%2==0) printf("\n");
f1=f1+f2;
f2=f2+f1;
}
}
8. 求n的阶乘加三 。
#include "stdio.h"
void main()
{
long int n,i,sum=1;
printf("intput n:");
scanf("%d",&n);
if(n==0) printf("n!+3=4");
else
{for(i=1;i<=n;i++)
{sum=sum*i+3;
}
printf("n!+3=%ld",sum);
}
}
9. 有一分数序列 ,求其前20项的和。
#include "stdio.h"
void main()
{
int i,n=20;
double a=1,b=2,s=0,t;
for(i=1;i<=n;i++)
{s=s+a/b;
t=b;
b=a+b;
a=t;
}
printf("sum=%16.10f",s);
}
10. 输出小于500的所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为 。
#include "stdio.h"
void main()
{
int n,i,j,k;
for(n=100;n<=500;n++)
{i=n%10;
j=n/100;
k=n/10-j*10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%d\n",n);
}
}
11. 给一个不多于6位的正整数,要求:①求出它是几位数;②分别输出
每一位数字;③按逆序输出各位数字,例如原数为158,应输出851。
#include "stdio.h"
void main()
{
int n[6];
long int m;
int k=0,i;
scanf("%ld",&m);
while(m!=0)
{n[k]=m%10;
m=m/10;
k++;
}
printf("%d\n",k);
for(i=k-1;i>=0;i--)
printf("n[%d]=%d\n",k-i-1,n[i]);
for(i=0;i
}
12. 求5+55+555+5555+55555的值。
#include "stdio.h"
void main()
{
int a,i,n,s=0,t=0;
printf("a,n=:");
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++)
{t=t+a;
s=s+t;
a=a*10;
}
printf("s=%d",s);
}
13. 输入10个整型整数,用起泡法对这10个数排序,并该由小到大顺序在屏幕上输出。
#include
void main()
{
int a[10];
int i,j,t;
printf("input 10 numbers :\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if (a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers :\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
}
14. 将一个二维数组a的行和列的元素互换(即行列互换),存到另一个二维数组b中。
#include "stdio.h"
void main()
{int i,j,b[4][3];
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,12,13,34}};
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
{printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
for(j=0;j<4;j++)
{for(i=0;i<3;i++)
{printf("%5d",b[j][i]);
}
printf("\n");
}
}
15. 在一个3*4的二维数组a中,要求编程求出其中值最大的那个元素的值,并输出其所在的行号和列号。
#include "stdio.h"
void main()
{int i,j,row=0,colm=0,max;
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{if(maxmax=a[i][j];
row=i;
colm=j;
}
printf("row=%d\ncolm=%d\nmax=%d\n",row,colm,max);
}
16. 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
#include "stdio.h"
void main()
{char a[80];
int i,num=0,word=0;
char c;
gets(a);
for(i=0;(c=a[i])!='\0';i++)
if(c==' ') word=0;
else if(word==0)
{
word=1;
num++;
}
printf("%d",num);
}
17. 有3个字符串,要求找出其中最大者。
#include "stdio.h"
#include"string.h"
void main()
{char c[80];
char str1[80],str2[80],str3[80];
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)>0) strcpy(c,str1);
else strcpy(c,str2);
if(strcmp(str3,c)>0) strcpy(c,str3);
printf("the largest is:%s\n",c);
}
18. 输入两个整数,要求用一个函数求出其中的大者,并在主函数中输出此值。
#include "stdio.h"
void main()
{
int max(int ,int );
int a,b,c,m;
printf("input the numbers:");
scanf("%d%d%d",&a,&b,&c);
m=max(max(a,b),c);
printf("the largest is:%d",m);
}
int max(int x,int y)
{return(x>y? x:y);
}
19. 输入两个整数,要求用一个函数求出其最大公
约数和最小公倍数,并在主函数中调用该子函数。
#include
void fun(int a,int b)
{
int m,n,i;
m=a;n=b;
i=m
i--;
printf("两个数的最大公约数是:%d,最小公倍数是:%d",i,(m*n)/i);
}
void main()
{void fun(int a,int b);
int a,b;
scanf("%d,%d",&a,&b);
fun(a,b);
}
20. 输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int max_4(int ,int ,int ,int);
int a,b,c,d,m;
scanf("%d%d%d%d",&a,&b,&c,&d);
m=max_4(a,b,c,d);
printf("%d\n",m);
}
int max_4(int a,int b,int c,int d)
{int max_2(int ,int );
int n;
n=max_2(a,b);
n=max_2(n,c);
n=max_2(n,d);
return(n);
}
int max_2(int x,int y)
{return(x>y?x:y);
}
21. 用递归方法求5!。
#include "stdio.h"
void main()
{
long int fac(int n);
int n;
long int y;
scanf("%d",&n);
y=fac(n);
printf("%d!=%ld\n",n,y);
}
long int fac(int n)
{long f;
if(n<0) printf("error");
else if(n==0,n==1)
f=1;
else f=fac(n-1)*n;
return(f);
}
22. 编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。
#include "stdio.h"
void main()
{float average(int score[],int n);
int score1[5]={1,2,3,4,5};
int score2[10]={1,2,3,4,5,6,7,8,9,10};
float ave1,ave2;
ave1=average(score1,5);
ave2=average(score2,10);
printf("ave1=%f\nave2=%f\n",ave1,ave2);
}
float average(int score[],int n)
{int i;float ave;
float sum=0;
for(i=0;i
}
ave=sum/n;
return(ave);
}
23 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。
#include "stdio.h"
void main()
{int a[5]={8,6,5,4,1};
int i;
for(i=4;i>=0;i--)
printf("%d",a[i]);
}
24 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整数。
#include "stdio.h"
void main()
{
void exchange(int n);
int n;
scanf("%d",&n);
if(n<0)
{putchar('-');
putchar(' ');
n=-n;
}
exchange(n);
printf("\n");
}
void exchange(int n)
{int i;
if((i=n/10)!=0)
exchange(i);
putchar(n%10+'0');
putchar(' ');
}
25. 用指针实现输入3个整数并按从小到大的顺序输出。
#include "stdio.h"
void main()
{
void exchange(int *p1,int *p2,int *p3);
int a,b,c,*p1,*p2,*p3;
scanf("%d%d%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
exchange(p1,p2,p3);
printf("%d\n%d\n%d\n",a,b,c);
}
void exchange(int *p1,int *p2,int *p3)
{void swap(int *q1,int *q2);
if(*p1>*p2) swap(p1,p2);
if(*p1>*p3) swap(p1,p3);
if(*p2>*p3) swap(p2,p3);
}
void swap(int *q1,int *q2)
{int temp;
temp=*q1;
*q1=*q2;
*q2=temp;
}
26. 用指针实现输入3个整数并按从大到小的顺序输出。
#include "stdio.h"
void main()
{
voi
d exchange(int *p1,int *p2,int *p3);
int a,b,c,*p1,*p2,*p3;
scanf("%d%d%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
exchange(p1,p2,p3);
printf("%d\n%d\n%d\n",a,b,c);
}
void exchange(int *p1,int *p2,int *p3)
{void swap(int *q1,int *q2);
if(*p1<*p2) swap(p1,p2);
if(*p1<*p3) swap(p1,p3);
if(*p2<*p3) swap(p2,p3);
}
void swap(int *q1,int *q2)
{int temp;
temp=*q1;
*q1=*q2;
*q2=temp;
}
27. 用指针实现将数组b[10]中的元素按逆序存放。
#include "stdio.h"
void main()
{
int *p,i;
int b[10]={1,2,3,4,5,6,7,8,9,10};
p=b;
for(i=9;i>=0;i--)
printf("%d\n",*(p+i));
}
28. 用冒泡法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)。
#include "stdio.h"
void main()
{
int a[10];
int *p,i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
p=a;
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(*(p+i)<*(p+i+1))
{t=*(p+i);*(p+i)=*(p+i+1);*(p+i+1)=t;}
for(i=0;i<10;i++)
printf("%5d",*(p+i));
}
29. 用选择法实现对10个整数按从小到大的顺序排序输出(要求用指针实现)。
#include "stdio.h"
void main()
{
int a[10];
int *p,i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
p=a;
for(i=0;i<10;i++)
for(j=i;j<9;j++)
if(*(p+i)>*(p+j+1))
{t=*(p+i);*(p+i)=*(p+j+1);*(p+j+1)=t;}
for(i=0;i<10;i++)
printf("%5d",*(p+i));
}
30. 定义一个结构体变量(包括年、月、日)。计算当天是本年中的第几天,注意闰年问题。
#include "stdio.h"
struct y_m_d
{int year;
int month;
int day;
}date;
void main()
{int i;
int days=0;
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("please input the year,month,day:");
scanf("%d,%d,%d",&date.year,&date.month,&date.day);
for(i=1;i
days=days+date.day;
if(date.year%4==0&&date.year%100!=0||date.year%400==0)
days++;
printf("the day is the %dth day in %d.\n ",days,date.year);
}
31. 设计候选人得票统计程序,要求有4个侯选人(分别是Zhang 、Wang 、Li、 Zhao),选民每次输入一个被选人的姓名,最后统计出各人的得票结果。
#include "stdio.h"
#include"string.h"
struct y_m_d
{char name[20];
int count;
}leader[4]={"zhang",0,"wang",0,"li",0,"zhao",0};
void main()
{int i,j;
char leader_name[20];
for(i=1;i<10;i++)
{scanf("%s",leader_name);
for(j=0;j<4;j++)
if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;
}
printf("\nresult:\n");
for(i=0;i<4;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);
}
32. 定义一个包括学号、姓名、年龄的学生结构体,要求实现三个学生信息的输入输出,并输出平均年龄
#include "stdio.h"
struct student
{int number;
char name[20];
int age;
}stu[3];
void main()
{
int i;
float sum=0,aver;
for(i=0;i<3;i++)
scanf("%d%s%d",&stu[i].number,&stu[i].name,&stu[i].age);
for(i=0;i<3;i++)
sum=sum+stu[i].age;
aver=sum/3;
printf(" NO name age\n");
for(i=0;i<3;i++)
printf("%4d%6s%8d\n",stu[i].number,stu[i].name,stu[i].age);
printf("aver=%f\n",aver);
}
33. 定义一个包括教师编号、姓名、工资的教师结构体,要求实现三个教师信息的输入输出,并输出平均工资。
#include "stdio.h"
struct teacher
{int number;
char name[20];
int pay;
}tea[3];
void main()
{
int i;
float sum=0,aver;
for(i=0;i<3;i++)
scanf("%d%s%d",&tea[i].number,&tea[i].name,&tea[i].pay);
for(i=0;i<3;i++)
sum=sum+tea[i].pay;
aver=sum/3;
printf(" NO name age\n");
for(i=0;i<3;i++)
printf("%4d%6s%8d\n",tea[i].number,tea[i].name,tea[i].pay);
printf("aver=%f\n",aver);
}
34. 定义一个包括职员号、姓名、工资的职员结构体,要求实现三个职员信息的输入输出,并输出平均工资。
#include "stdio.h"
struct worker
{int number;
char name[20];
int pay;
}wor[3];
void main()
{
int i;
float sum=0,aver;
for(i=0;i<3;i++)
scanf("%d%s%d",&wor[i].number,&wor[i].name,&wor[i].pay);
for(i=0;i<3;i++)
sum=sum+wor[i].pay;
aver=sum/3;
printf(" NO name age\n");
for(i=0;i<3;i++)
printf("%4d%6s%8d\n",wor[i].number,wor[i].name,wor[i].pay);
printf("aver=%f\n",aver);
}
35 建立动态数组,输入5个学生的成绩,另外用一个函数检查其中有无低于60分的,输出不合格的成绩。
#include "stdio.h"
#include"stdlib.h"
void main()
{
void check(int *);
int *p1,i;
void *p2;
p2=malloc(5*sizeof(int));
p1=(int *)p2;
for(i=0;i<5;i++)
scanf("%d",p1+i);
check(p1);
free(p2);
}
void check(int *p)
{int i;
printf("they are :");
for(i=0;i<5;i++)
if(p[i]<60) printf("%4d",p[i]);
printf("\n");
}
36 写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度(要求用指针实现)。
#include "stdio.h"
void main()
{
int length(char *p);
int len;
char a[80];
scanf("%s",a);
len=length(a);
printf("%d",len);
}
int length(char *p)
{int n=0;
while(*p!='\0')
{n++;
p++;
}
return(n);
}
37. 有一个一维数组score,内放10个学生成绩,用一个函数求平均成绩,并将10个成绩中不及格(小于60)的成绩和该成绩在数组中的序号输出。
#include "stdio.h"
void main()
{float average(float score[],int n);
float score[10],aver;
int i;
for(i=0;i<10;i++)
scanf("%f",&score[i]);
aver=average(score,10);
printf("average=%4.2f\n",aver);
for(i=0;i<10;i++)
{if(score[i]<60)
printf("%4.2f\n%d\n",score[i],i);
}
}
float average(float score[10],int n)
{
float sum=0,aver;
int i;
for(i=0;i
aver=sum/n;
return(aver);
}
38. 有一个一维数组内放10个数,设计函数,求出10个数中的最大值、最小值、平均值。
#include "stdio.h"
void main()
{float average(int score[],int n);
int max(int score[])
;
int min(int score[]);
int score[10],i,m,n;
float aver;
for(i=0;i<10;i++)
scanf("%d",&score[i]);
aver=average(score,10);
m=max(score);
n=min(score);
printf("aver=%f\nmax=%d\nmin=%d\n",aver,m,n);
}
float average(int score[],int n)
{
float sum=0,aver;
int i;
for(i=0;i
aver=sum/n;
return(aver);
}
int max(int score[])
{int i,max;
max=score[0];
for(i=0;i<10;i++)
if(max
return(max);
}
int min(int score[])
{int i,min;
min=score[0];
for(i=0;i<10;i++)
if(min>score[i])
min=score[i];
return(min);
}
39. 找出一个2维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。
40. 输入8个学生4门课的成绩,分别用函数实现如下功能:
(1) 计算每个学生平均分;
(2) 计算每门课的平均分;
(3) 找出32个分数中最高分所对应的学生和课程。
41. 用一个函数实现将一行字符串中的最长的单词输出。此行字符串从主函数传递给该函数。
42.输出金字塔图案(要求用循环实现)
#include "stdio.h"
void main()
{
int i,j,k;
for(i=0;i<=4;i++)
{for(j=0;j<4-i;j++)
printf(" ");
for(k=0;k<2*i+1;k++)
printf("*");
printf("\n");
}
for(i=0;i<=3;i++)
{for(j=0;j<=i;j++)
printf(" ");
for(k=0;k<7-2*i;k++)
printf("*");
printf("\n");
}
}
43.有一个已排好序的数组,要求输入一个数后,按原来排序的规律将她插入数组中。
#include "stdio.h"
void main()
{
int a[10]={3,5,8,12,23,45,56,78,89};
int i,j,n,p,q;
for(i=0;i<9;i++)
printf("%5d",a[i]);
printf("\ninput the n:\n");
scanf("%d",&n);
if(n>a[8]) a[9]=n;
else
{for(i=0;i<10;i++)
{if(n{
p=a[i];
a[i]=n;
for(j=i+1;j<10;j++)
{
q=a[j];
a[j]=p;
p=q;
}
break;
}
}
}
for(i=0;i<10;i++)
printf("%5d",a[i]);
}