C语言试题.docx
《C语言试题.docx》由会员分享,可在线阅读,更多相关《C语言试题.docx(21页珍藏版)》请在冰豆网上搜索。
C语言试题
一、输入程序,熟悉vc环境的使用,C程序的编辑,编译和执行。
1)、在屏幕上显示“HelloWorld!
”
#include"stdio.h"
intmain(void)
{
printf("helloworld!
\n");
return0;
}
2)、求1—100间所有偶数的和。
#include
intmain(void)
{
intI,sum=0;
for(i=1;i<100;i++)
if(i%2==0)
sum=sum+i;
printf(“%d”,sum);
return0;
}
3)、编写程序,在屏幕上显示如下图案。
#include"stdio.h"
main(void)
{
inti,j,k;
for(i=1;i<5;i++)
{
for(k=0;k
printf("");
for(j=5-i;j>0;j--)
{
printf("*");
}
printf("\n");
}
}
4)、编写程序,输入两个整数num1和num2,计算并输出它们的和,差,积,商与余数。
#include"stdio.h"
intmain()
{
inta,b;
scanf("%d%d",&a,&b);
if(b==0)b=1;
printf("和%d\n",a+b);
printf("积%d\n",a*b);
printf("差%d\n",a-b);
printf("商%.2lf\n",a*1.0/b);
return0;
}
二、使用C语言编写程序
1)、输入x,计算并输出下列分段函数f(x)的值(保留3位小数)。
#include
intmain(void)
{
floatx,y;
printf("enterx:
");
scanf("%d",&x);
if(x!
=0){
y=1/x;
else
y=0;
}
printf("y=%.3f",y);/*小数点后输出3位小数*/
return0;
}
2)、编写程序,输x,计算并输出下列分段函数f(x)的值(保留两位小数),请调用sqrt()函数求平方根,调用pow()函数求幂。
?
?
?
?
?
3)、编写程序,输入一个正整数,求
。
#include
intmain(void)
{
inti;
floatsum=0;
printf("entern:
");
scanf("%d",&n);
for(i=1;isum=sum+1/(float)i;
printf(“%d”,sum);
return0;
4)、编写程序,输入一个正整数,求1+1/3+1/5+…的前n项之和。
#include
intmain(void)
{
inti;
floatsum=0;
printf("entern:
");
scanf("%d",&n);
for(i=1;isum=sum+1.0/(2*i-1)循环体
printf(“%d”,sum);
return0;
}
5)、编写程序,输入一个正整数,求1-1/4+1/7-1/1-+1/13-1/16+…的前n项之和。
#include
intmain()
{
inti,k,n,t;
doublesum;
scanf("%d",&n);
sum=0;
t=1;
k=1;
for(i=1;i<=n;++i)
{
sum=sum+(double)t/k;
k=k+3;
t=t*(-1);
}
printf("%.3lf\n",ans);
return0;
}
三、分支结构
1)、输入x,计算并输出下列分段函数sign(x)的值。
-1,x<0
Y=sign(x)=0,x=0
1,x>0
#include
intmain(void)
{
intx,y;
printf("enterx:
");
scanf("%d",&x);
if(x>0){
y=1;
}
elseif(x==0){
y=0;
}
else{
y=-1;
}
printf("y=%d",y);
}
2)、输入15个字符,统计其中英文字母、空格或回车、数字字符和其它字符的个数。
#include
intmain(void)
{
intdigit,i,letter,lenter,other;
charch;
digit=letter=lenter=other=0;
printf("enter15characters:
");
for(i=1;i<=15;i++){
ch=getchar();
if(ch>=65&&ch<=106)//判断输入的字符是英文字母
letter++;
elseif(ch>=48&&ch<=57)//判断输入的字符是数字
digit++;
elseif(ch=10)//判断输入的字符是回车符
lenter++;
else
other++;
}
printf("letter=%d,digit=%d,lenter=%d,other=%d",letter,digit,lenter,other);
}
3)、输入五级制成绩(A~E),输出相应的百分制成绩(0~100)区间,要求使用switch语句。
例如,输入A,输出90~100。
五级制成绩对应的百分制成绩区间为:
A(90~100)、B(80~89)、C(70~79)、D(60~69)和E(0~59)。
#include
voidmain()
{
charc;
printf("输入等级:
");
flushall();?
?
?
?
?
?
?
?
清空缓冲?
?
?
scanf("%c",&c);
if('a'<=c&&c<='z')c=c-32;
switch(c)
{
case'A':
printf("(90-100)\n");break;
case'B':
printf("(80-89)\n");break;
case'C':
printf("(70-79)\n");break;
case'D':
printf("(60-69)\n");break;
case'E':
printf("(0-59)\n");break;
default:
printf("InputError!
\n");
}
}
4)、输入年year,判断该年是否为闰年。
判断闰年的条件是:
能被4整除但不能被100整除,或者能被400整除。
#include"stdio.h"
voidmain()
{
intyear;
printf(“enteryear:
\n”);
sanf("%d",&year);
if((year%400==0)||((year%4==0)&&(year%100!
=0)))
printf("该年是闰年\n”);
else
printf(“该年不是闰年\n”);
return0;
}
5)、输入一个正数n,再输入n个学生的成绩,计算平均分,并统计所有及格的人数。
#include
main()
{
intn,i,jg=0;
floatscore;//定义成绩变量;
floatave;//定义平均成绩
floatsum=0;//定义全部成绩总和
printf("输入学生人数:
\n");
scanf("%d",&n);//从键盘输入学生成绩的个数
for(i=1;i<=n;i++){
scanf("%f",&score);//输入每个学生的成绩,共有n个学生
sum=sum+score;//计算总成绩
if(score>=60)
jg=jg+1;
}
printf("及格人数是:
%d\n",jg);
ave=sum/n;//计算平均成绩
printf("平均分是:
%f\n",ave);//输出平均成绩
return0;
}
四.循环结构
1)、从键盘输入一批学生的成绩(以负数为结束标志),计算平均分,并统计不及格成绩的个数。
#include
intmain(void)
{
intnum,njg;
doublegrade,total;
num=0;
total=0;
njg=0;
printf("entergrades:
");
scanf("%lf",&grade);
while(grade>=0){
total=total+grade;
num++;
if(grade<=60&&grade!
=60)//判断不及格成绩
nig++;//不及格成绩计数加1
scanf("%lf",&grade);
}
if(num!
=0)
printf("Gradeaverageis%.2f\n",total/num);
else
printf("Gradeaverageis0\n");
printf(“不及格的人数是:
%d”,nig);//输出不及格成绩个数
return0;
}
2)、输入一个正整数m,判断它是否为素数。
素数是只能被1和自身整除的正整数。
#include
intmain(void)
{
inti,m;
printf("Enteranumber:
");
scanf("%d",&m);
for(i=2;i<=m/2;i++)
if(m%i==0)
break;
if(i>m/2)
printf("%disaprimenumber!
\n",m);
else
printf("No!
\n");
return0;
}
3)、打印如下星号,已给出
(1)的程序,根据给出的程序,编写其余程序。
*******
*********
*****
(1)*****
(2)*(3)
(1)#include
intmain(void){
inti,j;
for(i=1;i<=3;i++){
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
Return0;
}
(2)#include
#include
intmain(void){
inti,j;
for(i=1;i<=3;i++){
for(j=0;j<2*(3-i);j++)
putchar('');
for(j=0;j<2*i-1;j++)
{
putchar('*');
putchar('');
}
putchar('\n');
}
return0;
}
(3)#include
intmain()
{
inti,j,m;
for(i=3;i>=1;--i)
{
for(j=0;j<=3-i;++j)
printf("");
for(m=0;m<2*i-1;++m)
printf("*");
printf("\n");
}
return0;
}
*
***
*****
*******
*****
***
*
方法一:
#include
intmain()
{
inti,j,m;
for(i=0;i<=3;++i){
for(j=0;j<3-i;++j)
printf("");
for(m=0;m<2*i+1;++m)
printf("*");
printf("\n");
}
for(i=3;i>=1;--i)
{
for(j=0;j<=3-i;++j)
printf("");
for(m=0;m<2*i-1;++m)
printf("*");
printf("\n");
}
return0;
}
方法二:
#include
#include
intmain()
{
inti,j;
for(i=-3;i<=3;i++)
{for(j=1;j<=abs(i);j++)
printf("");
for(j=1;j<=7-2*abs(i);j++)
printf("*");
printf("\n");
}
return0;
}
4)、输入一个正整数n,再输入n个整数,输出最小值。
#include
intmain(void)
{
intn,m,i,min;
printf("entern:
");
scanf("%d",&n);
scanf("%d",&m);
min=m;
for(i=0;i<=n-2;i++){
scanf("%d",&m);
if(mmin=m;
}
printf("min=%d",min);
}
5)、输入一个整数,将其逆序输出。
假设正数和负数逆序输出的结果一样。
#include
#include
intmain(void)
{
intdigit,x;
scanf("%d",&x);
x=fabs(x);
while(x>0){
digit=x%10;
x=x/10;
printf("%d",digit);
}
printf("\n");
}
6)、输出100~200之间的所有素数,每行输出8个。
#include
#include
intmain()
{
intn,i,count=0;
for(n=100;n<=200;n++){
for(i=2;i<=n-1;i++)
if(n%i==0)break;
if(i>n-1){
count++;
printf("%8d",i);
if(count%8==0)
printf("\n");
}
}
printf("\n");
return0;
}
7)、输出斐波那契(Fibonacci)序列的前20项。
#include
intmain(void)
{
intx,y,sum,i;
x=0;y=1;
for(i=1;i<=20;i++){
printf("%8d",y);
sum=x+y;
x=y;
y=sum;
}
return0;
}
五、数组
1)、编写程序,输入一个正整数n(1#include
intmain(void){
inti,n,sum;
floataveg;
inta[10];/*定义一个数组a,它有10个整型元素*/
sum=0;
printf("Entern:
");/*提示输入n*/
scanf("%d",&n);
printf("Enter%dintegers:
",n);/*提示输入n个数*/
for(i=0;iscanf("%d",&a[i]);/*输入n个数*/
sum=sum+a[i];/*求累加和*/
}
aveg=sum/n;/*求n个数的平均值*/
printf("%.2f",aveg);
printf("\n");
return0;
}
2)、编写程序,输入一个正整数n(1#include
intmain(void){
inti,n;
inta[10];/*定义一个数组a,它有10个整型元素*/
printf("Entern:
");/*提示输入n*/
scanf("%d",&n);
printf("Enter%dintegers:
",n);/*提示输入n个数*/
for(i=0;iscanf("%d",&a[i]);
for(i=0;iprintf("%4d",a[i]);
printf("\n");
printf("ReverseArray:
");
for(i=n-1;i>=0;i--)/*逆序输出元素的值*/
printf("%4d",a[i]);
printf("\n");
return0;
}
2)、编写程序,输入一个正整数n(1#include
intmain()
{
inta[10],i,n,max,j;
printf("请输入元素个数N\n");
scanf("%d",&n);
printf("请输入元素,空格隔开\n");
for(i=0;iscanf("%d",&a[i]);
max=a[0];j=1;
for(i=0;iif(a[i]>max){
max=a[i];
j=i;
}
}
printf("最大的元素是%d,它的下标为%d\n",max,j);
return0;
}
3)、编写程序,输出一张九九乘法口诀表。
提示:
将乘数、被乘数和乘积放入一个二维数组中,再输出该数组。
#include
intmain(void)
{
inti,j;
inta[10][10];
for(i=1;i<10;i++)
for(j=1;j<=i;j++)
a[i][j]=i*j;
for(i=1;i<10;i++){
for(j=1;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");
}
printf("\n");
return0;
}
4)、输入一个正整数repeat(0读入1个正整数n(1≤n≤6),再读入n阶方阵a,计算该矩阵除副对角线、最后一列和。
#include"stdio.h"
intmain()
{
intri,repeat;
inta[6][6],i,j,n,sum;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
printf("sum=%d\n",sum);
}
}