第2章:程序设计基础
题目1、定义三个整型变量,从键盘输入三个整数,计算平均值,计算结果输出到屏幕上,平均值保留2位小数。 #include <stdio.h>
void main()
{ int a,b,c;
double y;
scanf("%d%d%d",&a,&b,&c);
y=(a+b+c)/3.0;
printf("%.2f\n",y);
}
题目2、从键盘输入任意一个四位正整数,将其各位数字反序输出到屏幕上。
#include <stdio.h>
void main()
{ int x,a,b,c,d;
scanf("%d",&x);
a=x%10; //个位数
b=x/10%10; //十位数
c=x/100%10; //百位数
d=x/1000%10; //千位数
printf("%d %d %d %d\n",a,b,c,d);
}
第3章:选择结构程序设计
题目3、计算分段函数,输入x(整数),输出y(整数):
┌ 2x+1 (x<1)
y=│ 4x+3 (x=1)
└ 6x+5 (x>1)
解答方法1:
#include <stdio.h>
void main()
{ int x,y;
scanf("%d",&x);
if(x<1)
y=2*x+1;
if(x==1) //关系运算“等于”必须使用两个等号
y=4*x+3;
if(x>1)
y=6*x+5;
printf("%d\n",y);
}
解答方法2:
#include <stdio.h>
void main()
{ int x,y;
scanf("%d",&x);
if(x<1)
y=2*x+1;
else if(x==1)
y=4*x+3;
else
y=6*x+5;
printf("%d\n",y);
}
解答方法3:下面程序是错的x=0时输出5
#include <stdio.h>
void main()
{ int x,y;
scanf("%d",&x);
if(x<1)
y=2*x+1;
if(x==1)
y=4*x+3;
else
y=6*x+5;
printf("%d\n",y);
}
题目4、输入三个整数,然后输出最大值。
#include <stdio.h>
void main()
{ int a,b,c,x;
scanf("%d%d%d",&a,&b,&c);
x=a;
if(x<b)
x=b;
if(x<c)
x=c;
printf("%d\n",x);
}
题目5、输入三个双精度型数,按由大至小的顺序输出。
#include <stdio.h>
void main()
{ double a,b,c,t;
scanf("%lf%lf%lf",&a,&b,&c);
if(a<b)
{ t=a;a=b;b=t;} //if控制多条语句,必须使用花括号构成复合语句。 if(a<c)
{ t=a;a=c;c=t;}
if(b<c)
{ t=b;b=c;c=t;}
printf("%d %d %d\n",a,b,c);
}
题目6、输入一个字符,判断该字符的类型(数字、大写字母、小写字母、其它字符) 解答:
#include <stdio.h>
void main()
{ char x;
x=getchar();
if(x>='0' && x<='9') //不能写成'0'<=x<='9'
printf("%c 是数字\n",x);
else if(x>='A' && x<='Z')
printf("%c 是大写字母\n",x);
else if(x>='a' && x<='z')
printf("%c 是小写字母\n",x);
else
printf("%c 是其它字符\n",x);
}
第4章:循环结构程序设计:固定次数循环
题目7、计算级数和 s= 1/(1*3) + 2/(3*5) + 3/(5*7) +....+ n/((2*n-1)*(2*n+1))。 (n从键盘输入,保留3位小数)
#include <stdio.h>
void main()
{ int k,n;
double s=0;
scanf("%d",&n);
for(k=1;k<=n;k++)
s=s+(double)k/((2*k-1)*(2*k+1)); //注意括号和类型
printf("%.3f\n",s);
}
题目8、计算s = 1 - 1/3 + 1/5 - 1/7 + 1/9 - ... 前n项和。
解答1:
#include <stdio.h>
void main()
{ int k,n;
double t=1,s=0;
scanf("%d",&n);
for(k=1;k<=n;k++) //注意项数,for(k=1;k<=n;k=k+2)不是n次循环
{ s=s+t/(2*k-1); //t为实型
t=-t;
}
printf("%.3f\n",s);
}
解答2:
#include <stdio.h>
void main()
{ int k,n;
double s=0;
scanf("%d",&n);
for(k=1;k<=n;k++)
{ if(k%2) //与if(k%2==1)等价
s=s+1.0/(2*k-1); //注意1.0
else
s=s-1.0/(2*k-1);
}
printf("%.3f\n",s);
}
解答3:
#include <stdio.h>
void main()
{ int k,n;
double t=1,s=0;
scanf("%d",&n);
for(k=1;k<=2*n-1;k=k+2)
{ s=s+t/k; //t为实型
t=-t;
}
printf("%.3f\n",s);
}
第4章:循环结构程序设计:不固定次数循环
题目9、计算s=1+1/2!+1/3!+....,直到加上的项值刚好小于0.00001为止。 解答1:
#include <stdio.h>
void main()
{ int k=1,p=1;
double s=0;
do
{ p=p*k
s=s+1.0/p;
k=k+1;
}while(1.0/p>=0.1e-4);
printf("%f\n",s);
}
解答2:
#include <stdio.h>
void main()
{ int k=1,p=1;
double s=0;
while(1)
{ p=p*k
s=s+1.0/p;
if(1.0/p<0.1e-4)
break;
k=k+1;
}
printf("%f\n",s);
}
题目10、输入若干名学生成绩(非负),统计平均分、最高分、不及格人数。 #include <stdio.h>
void main()
{ int n1=0,n2=0,s=0,g=0,x;
double v;
while(1)
{ scanf("%d",&x)
if(x<0) //输入负数时结束循环
break;
s+=x;n1++; //总成绩和总人数
if(x<60)
n2++; //不及格人数
if(x>g)
g=x; //最高分
}
v=(double)s/n1;
printf("平均分=%f,最高分=%d,不及格人数=%d\n",v,g,n2); }
第4章:循环结构程序设计:输出图形
题目11、输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
#####*
####**
###***
##****
#*****
#include <stdio.h>
void main()
{ int k=1,j,n;
scanf("%d",&n);
for(k=1;k<=n;k++)
{ for(j=1;j<=n-k+1;j++) //少一个:-k
printf("#");
for(j=1;j<=k;j++) //多一个:+k
printf("*");
printf("\n");
}
}
题目12、输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
#####*
####***
###*****
##*******
#*********
#include <stdio.h>
void main()
{ int k=1,j,n;
scanf("%d",&n);
for(k=1;k<=n;k++)
{ for(j=1;j<=n-k+1;j++)
printf("#");
for(j=1;j<=2*k-1;j++) //多二个:+2*k printf("*");
printf("\n");
}
}
题目13、输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*********
*******
*****
***
*
#include <stdio.h>
void main()
{ int k=1,j,n;
scanf("%d",&n);
for(k=1;k<=n;k++)
{ for(j=1;j<=k-1;j++)
printf(" ");
for(j=1;j<=2*n-2*k+1;j++) //少二个:-2*k
printf("*");
printf("\n");
}
}
题目14、输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
#*******#
#*****#
#***#
#*#
#
#include <stdio.h>
void main()
{ int k=1,j,n;
scanf("%d",&n);
for(k=1;k<=n;k++)
{ for(j=1;j<=k-1;j++)
printf(" ");
if(k!=n)
printf("#");
for(j=1;j<=2*n-2*k-1;j++)
printf("*");
printf("#\n");
}
}
第4章:循环结构程序设计:其它
题目15、用100元钱买100只鸡,其中公鸡5元1只,母鸡3元1只,小鸡1元3只, 要求每种鸡至少买1只,100元钱必须一分不剩,计算输出所有的购买方案(整数解). 解答1:
#include <stdio.h>
void main()
{ int x,y,z;
for(x=1;x<20;x++)
for(y=1;y<33;y++)
for(z=1;z<100;z++)
if(x+y+z==100 && 5*x+3*y+z/3.0==100) //注意3.0
printf("%d %d %d\n",x,y,z);
}
解答2:
#include <stdio.h>
void main()
{ int x,y,z;
for(x=1;x<20;x++)
for(y=1;y<33;y++)
{ z=100-x-y;
if(x+3*y+z/3.0==100)
printf("%d %d %d\n",x,y,z);
}
}
题目16、有一条长阶梯,若每步跨2阶,则最后剩余1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶则最后剩5阶;若每步跨7阶,最后才正好一阶不剩。这条阶梯至少多少阶? #include <stdio.h>
void main()
{ int n=1;
while(1)
{ if(n%2==1 && n%3==2 && n%5==4 && n%6==5 && n%7==0)
break;
n++;
}
printf("%d\n",n);
}
第5章:数组
题目17、输入9名同学考试成绩,计算并输出平均分和高于平均分的成绩。
#include <stdio.h>
void main()
{ int a[9],k,s;
double v;
for(k=0;k<9;k++)
scanf("%d",&a[k]);
for(k=0,s=0;k<9;k++)
s+=a[k];
v=s/9.0;
printf("v=%f\n",v);
for(k=0;k<9;k++)
if(a[k]>v)
printf("%d\n",a[k]);
}
题目18、按行输入4行5列二维整型数组,将首列与最后一列对应元素对调,最后按列输出。
#include <stdio.h>
void main()
{ int a[4][5],i,j,t;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]); //按行顺序输入
for(i=0;i<4;i++)
{ t=a[i][0];
a[i][0]=a[i][4]; //对调0、4两列元素
a[i][4]=t;
}
for(j=0;j<5;j++)
{ for(i=0;i<4;i++)
scanf("%d ",a[i][j]); //按列顺序输出
printf("\n");
}
}
题目19、按行输入4行5列二维整型数组,求最后一列元素最大值g,将g加到首行所有元素上,最后按行输出。 #include <stdio.h>
void main()
{ int a[4][5],i,j,g;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]); //按行顺序输入
//在最后一列(列标为4)选最大数g
g=a[0][4];
for(i=0;i<4;i++)
if(a[i][4]>g)
g=a[i][4];
//将g加到首列(列标为0)元素上
for(j=0;j<5;j++)
a[0][j]+=g;
for(i=0;i<4;i++)
{ for(j=0;j<5;j++)
scanf("%d ",a[i][j]); //按行顺序输出
printf("\n");
}
}
题目20、输入字符串(长度小于80),将其中小写字母转换为大写、将大写字母转换为小写。
#include <stdio.h>
void main()
{ int k;
char a[80];
gets(a);
k=0;
while(a[k]!='\0')
{ if(a[k]>='A' && a[k]<='Z')
a[k]+=32;
else if(a[k]>='a' && a[k]<='z')
a[k]-=32;
k++;
}
puts(a);
}
第7章:函数与指针
题目21、编写一个函数vvv,求三个整数的平均数,并编写主函数中调用该函数。
#include <stdio.h>
double vvv(int x,int y,int z); //函数声明
void main()
{ int a=3,b=3,c=4;
double v;
v=vvv(a,b,c); //函数调用
printf("%f\n",v);
}
double vvv(int x,int y,int z) //函数定义
{ double w;
w=(x+y+z)/3.0;
return w;
}
题目22、编写一个函数fff,判断一个三位数是否为“水仙花”数(该数等于各位数字的立方和,如153),在主函数中判断并输出所有“水仙花”数。
#include <stdio.h>
int fff(int x); //函数声明
void main()
{ int a;
for(a=100;a<=999;a++)
if(fff(a))
printf("%d\n",a);
}
int fff(int x) //函数定义
{ int a,b,c;
a=x%10;b=x/10%10;c=x/100%10;
if(x==a*a*a+b*b*b+c*c*c)
return 1;//是
else
return 0;//不是
}
题目23、编写一个函数fff,计算一个整型数组中非负元素的平均数。
#include <stdio.h>
double fff(int x[],int n); //函数声明
void main()
{ int a[8]={1,-2,3,4,-5,6,-7,8};
double v;
v=fff(a,8);
printf("%f\n",v);
}
double fff(int x[],int n) //函数定义
{ int k,m=0,s=0;
double w;
for(k=0;k<n;k++)
if(x[k]>=0)
{ s+=x[k];
m++;
}
w=(double)s/m;
return w;
}
题目24、编写一个函数fff,将一个字符串中的所有大写字母改成小写。 #include <stdio.h>
void fff(char *p); //函数声明
void main()
{ char a[]="aAbBcCdD";
fff(a);
printf("%s\n",a);
}
方法1:
void fff(char *p) //函数定义
{ int k=0;
while(p[k])
{ if(p[k]>='A' && p[k]<='Z')
p[k]=p[k]+32;
k++;
}
}
方法2:
void fff(char *p) //函数定义
{
while(*p)
{ if(*p>='A' && *p<='Z')
*p=*p+32;
p++;
}
}
题目25、编写一个函数fff,计算两个整数的和、差、积、商(商的结果为实型)。 #include <stdio.h>
void fff(int x,int y,int *p1,int *p2,int *p3,double *p4); //函数声明 void main()
{ int a=3,b=4,c,d,e;
double f;
fff(a,b,&c,&d,&e,&f);
printf("%d,%d,%d,%f\n",c,d,e,f);
}
void fff(int x,int y,int *p1,int *p2,int *p3,double *p4) //函数定义 { *p1=x+y;
*p2=x-y;
*p3=x*y;
*p4=(double)x/y;
}
第11章:文件
题目26、读in.txt文本文件中的字符,并将所有非空格符输出到out.txt文件。 #include <stdio.h>
void main()
{ FILE *f1,*f2;char x;
f1=fopen("in.txt","r");
if(f1==NULL) return;
f2=fopen("out.txt","w");
if(f2==NULL){fclose(f1);return;}
while(1)
{ x=fgetc(f1);
if(feof(f1)) break;
if(x!=' ')
fputc(x,f2);
}
fclose(f1);
fclose(f2);
}
注意:在运行程序之前,必须在工作区文件夹先建立输入文件in.txt,输出文件由程序自动建立。
题目27、在文本文件aaa.txt中每行输入三角形三边边长(用空格间隔)。编写程序读数据文件,计算三角形面积,并将三边数据与面积输出到bbb.txt文件,如果三边不能构成三角形,输出相关信息。
#include <stdio.h>
#include <math.h>
void main()
{ FILE *f1,*f2;double a,b,c,p,s;int n;
f1=fopen("aaa.txt","r");
if(f1==NULL) return;
f2=fopen("bbb.txt","w");
if(f2==NULL){fclose(f1);return;}
while(1)
{ n=fscanf(f1,"%lf%lf%lf",&a,&b,&c);
if(n!=3) break;
if(a+b>c && b+c>a && a+c>b)
{ p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
fprintf(f1,"a=%f,b=%f,c=%f,s=%f\n",a,b,c,s);
}
else
fprintf(f2,"a=%f,b=%f,c=%f,不能组成三角形\n",a,b,c);
}
fclose(f1);
fclose(f2);
}
如果aaa.txt文件数据如下(程序运行前自己建立输入文件):
3 4 5
3.1 3.2 3.3
1 2 3
3.1 4.1 5.1
那么bbb.txt输出文件内容如下:
a=3.000000,b=4.000000,c=5.000000,s=6.000000
a=3.100000,b=3.200000,c=3.300000,s=4.425381
a=1.000000,b=2.000000,c=3.000000,不能组成三角形
a=3.100000,b=4.100000,c=5.100000,s=6.354173
3130111103福建工程学院C语言课程设计报告班级机械1301学号姓名指导教师日期20xx123020xx1331301111…
20xx级C课程设计大作业设计报告设计题目餐厅信息管理程序小组参与人员姓名学号专业班级分工姓名学号专业班级分工姓名学号专业班级分工…
学生信息管理系统HUNANUNIVERSITY程序设计训练报告学生姓名学生学号专业班级指导老师院长系主任20xx年5月25日第1页…
中国地质大学本科生课程论文封面课程名称c语言课程设计教师姓名樊媛媛本科生姓名本科生学本科生专业所在院系类别日期课程设计评语1注1无…
重庆邮电大学移通学院C语言程序设计实验报告学生张蒙蒙学号0214110122班级一班专业数字媒体重庆邮电大学移通学院1重庆邮电大学…
includeltstdiohgtmainintyearflagprintfquotEnteryearquotscanfquotdquotampyea…
C语言程序范例C语言程序范例C语言程序范例C语言程序范例C语言程序范例C语言程序范例程序1题目80980091其中代表的两位数8的…
经典C语言程序第一例程序1题目有1234个数字能组成多少个互不相同且无重复数字的三位数都是多少1程序分析可填在百位十位个位的数字都…
C语言综合训练报告范例撰写报告之前请认真阅读C语言综合训练要求书写要符合规范特别注意1全文行间距15倍正文为小四宋体2标题为小四黑…
1printf的使用案例includequotstdiohquotvoidmaininta65floatd58charc39a39…