c入门经典练习答案.docx
《c入门经典练习答案.docx》由会员分享,可在线阅读,更多相关《c入门经典练习答案.docx(14页珍藏版)》请在冰点文库上搜索。
c入门经典练习答案
c入门经典练习答案
【篇一:
c语言程序设计入门经典例题】
加法式子,用户通过键盘作答后,程序给出正确与错误提示信息。
要求:
利用c的选择语句if条件语句或switch开关语句,键盘输入数据前,程序会出被输入数据的信息提示。
#includestdio.h
voidmain(){
inta,b,c;
printf(pleaseputanaddend:
\n);scanf(%d,a);
printf(pleaseputanaugend:
\n);scanf(%d,b);
printf(pleaseanswerthequestion:
a+b=?
);scanf(%d,c);
if(a+b==c)
printf(verygood!
);
else
printf(wrong!
);
}
个人感觉这个程序最不好的地方是,不管回答正确还是回答错误,程都会立即结束,所以我用了do?
while实现一个回答错误之后获得再次回答机会的循环,则程序修改如下:
#includestdio.h
voidmain(){
inta,b,c;
printf(请输入一个加数:
\n);scanf(%d,a);
printf(请输入一个被加数:
\n);scanf(%d,b);
do
{
printf(请回答:
a+b=);scanf(%d,c);
if(a+b!
=c)
printf(请再想一想\n);
}
while(a+b==c)
printf(回答正确!
);
}
2、判闰年程序:
判断某一年是否闰年?
要求:
程序首先提示用户从键盘输入4位数年份,程序能显示“xxxx年是闰年”或“xxxx年不闰年”的输出信息。
算法:
year是闰年,即year能被4整除但不能被100整除,或year能被400整除。
其对应的c逻辑表达式为:
(year%4==0year%100!
=0)||(year%400==0)或:
(!
(year%4)year%100)||!
(year%400)
程序中可设置1个变量leap来代表是否闰年的信息,闰年:
leap=1;不闰年:
leap=0。
#includestdio.h
voidmain()
intyear;
printf(请输入4位数年份:
);scanf(%d,year);
if(year%4==0year%100!
=0||year%400==0)//闰年就是能被4整除但不能被100整除及能被400整除的
printf(%d是闰年,year);
el
se
printf(%d不是闰年,year);
}
3、三角形九九表程序:
要求选择c实现循环的4种方法(if+go,for语句,while语句,do…while语句)中的一种,比如,最好选择for语句来实现如下形式的“九九表”输出。
#includestdio.h
voidmain()
inta,b,c;
for(a=1;a=9;a++)//纵列表数每循环完一次换行
{for(b=1;b=9;b++)
if(b=a)
printf(%d,a*b);
printf(\n);}}
4、平面等腰三角形:
要求利用c的for循环实现如下平面图形输出。
如图,等腰三角形有6层,则
#includestdio.h
viodmain()
inta,b,c;//a,b,c分别是层数变量,变量,*变量
for(a=1;a=6;a++)
{for(b=6-a;b=1;b--)
printf();
for(c=1;c=2*a-1;c++)
printf(*);
printf(\n);}}
5、平面倒立等腰三角形:
要求利用c的for循环实现如下平面图形输出。
#includestdio.h
viodmain()
inta,b,c;//a,b,c分别是层数变量,变量,*变量
for(a=6;a=1;a--)
{for(b=6-a;b=1;b++)
printf();
for(c=11;c=2*a-1;c--)
printf(*)
printf(\n);}}
6、判素数:
要求由用户从键盘输入任一正整数m,程序输出m是否素数的信息。
#includestdio.h
viodmain()
intm,n;
printf(请输入任一正整数m:
);scanf(%d,m);
if(m==0||m==1);
printf(%d不是素数,m);//0和1既不是素数也不是合数
for(n=2;nm;n++)
{
if(m%n==0)
{printf(%d不是素数,m);
break;
else
printf(%d是素数“,m);
}}
7、计算:
1!
+2!
+3!
+...+9!
#includestdio.h
voidmain()
{
inti;longp=1;doubles=0.0;
for(i=1;i=9;i++)
{p*=i;s+=p;}
printf(1!
+2!
+3!
+?
+9!
=%f\n,s);}
8、计算:
1!
+3!
+5!
+...+15!
#includestdio.h
voidmain()
inti;longp=1;doubles=0.0;
for(i=1;i=15;i++)
{p*=i;
if(i%2!
=0)
s+=p;}
printf(1!
+3!
+5!
+?
15!
=%t\n,s);}
9、计算:
2!
+4!
+6!
+...+16!
#includestdio.h
voidmain()
inti;longp=1;doubles=0.0;
for(i=1;i=16;i++)
{p*=i;
if(i%2==0)
s=s+p;}
printf(2!
+4!
+6!
+?
16!
=%t\n,s);}
10、利用“比较交换法”对由用户从键盘输入的任意10个整数升序排序。
要求:
利用c的数组和循环,程序能分别输出排序前后的数组。
#includestdio.h
voidmain()
{
inti,s,a[10],t;//数组下标变量i
printf(请输入10个整数:
\n);
for(i=0;i=9;i++)
scanf(%d,a[i]);//将10个整数分别存入该数组的下标0到9这10个位置中去for(i=0;i9;i++)
{for(s=i+1;s=9;s++)//a[s]为a[i]的后一位
if(a[i]a[s])
{t=a[i];
a[i]=a[s];
a[s]=t;}//将数组中的数两两逐个比较换位,实现升序
printf(排序后的数组为:
\n);
for(i=0;i=9;i++)
printf(%d,a[i]);}
11、统计:
由用户从键盘输入任意10个数,统计其中最大数,最小数及平均值。
#includestdio.h
voidmain()
{
inti,s,a[10],t,sum;doublen;
printf(输入任意10个整数:
\n);
for(i=0;i=9;i++)
scanf(%d,a[i]);
for(i=0;i=9;i++)
printf(%d,a[i]);
for(i=0;i=9;i++)
{for(s=i+1;s9;s++)
if(a[i]a[s])
{t=a[i];
a[i]=a[s];
a[s]=t;}//实现10数升序排列
for(i=0,1=9,i++)
sum+=a[i];
n=sum/10;
printf(
10个数的最大是:
%d\n
10个数的最小是:
%d\n
10个数的平均是:
%t\n,a[9],a[0],n);}
12、由二维数组实现矩阵:
定义数组inta[5][4];实现5行4列矩阵输出。
要求:
矩阵元按数组的逻辑顺序依次是1~20间的自然数。
提示:
用双重for循环与二维数组的按行输出。
#includestdio.h
voidmain()
inti,j,s=1;
inta[5][4];
for(i=0;i=4;i++)
{for(j=0;j=3;j++)
{for(a[j]=s;s=20;s++)
printf();
printf(%4d,a[i][j]);}
printf(\n);}
【篇二:
c语言初学者的几个经典习题】
xt>#includestdio.h
voidmain()
{
inta,b,num1,num2,temp;
printf(请输入两个数:
\n);scanf(%d%d,num1,num2);if(num1num2){temp=num1;num1=num2;num2=temp;}a=num1;b=num2;while(b!
=0){temp=a%b;a=b;b=temp;}
printf(最小公倍数为:
%d\n,num1*num2/a);}
2.判断某一天是一年的第多少天:
#includestdio.h
intsum_day(intyear,intmonth,intday);
voidmain()
{
intyear,month,day;intdays;
printf(请输入要查询的年月日\n);scanf(%d%d%d,year,month,day);days=sum_day(year,month,day);
printf(该天是%d天\n,days);
}
inttab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intsum_day(intyear,intmonth,intday)
{
inti,days=0;
if(year%4==0year%100!
=0||year%400==0)tab[2]=29;
for(i=1;imonth;i++)
days+=tab[i];
days+=day;
returndays;
}
3.判断一个数是不是素数:
#includestdio.h
intisprime(inta);
voidmain()
{
}
intx;printf(请输入要判断的正整数:
\n);scanf(%d,x);if(isprime(x))printf(%d是素数\n,x);elseprintf(%d不是素数\n,x);
4.计算矩阵对角线元素之和:
#includestdio.h
voidmain()
{
inti,j,a[5][5],sum=0,n=5;
for(i=0;i5;i++)
{
}
}printf(行%d:
j);for(j=0;j5;j++){scanf(%d,a[i][j]);if(i==j)sum+=a[i][j];if(i+j==4)sum+=a[i][j];sum-=a[2][2];}
5.斐波拉契数列:
(1)#includestdio.h
voidmain()
{
inta[20];
inti;
a[0]=1;
a[1]=1;
for(i=2;i20;i++)
a[i]=a[i-1]+a[i-2];
for(i=0;i20;i++)
{
printf(%d,a[i]);
if((i+1)%5==0)
printf(\n);
}
(2)#includestdio.h
intfibo(intn);
voidmain()
{
inti;
for(i=1;i=20;i++)
{printf(%d,fibo(i));
if(i%5==0)
printf(\n);
}
}
intfibo(intn)
{
intk;
if(n==1)k=1;
elseif(n==2)k=1;
elsek=fibo(n-1)+fibo(n-2);returnk;
}
6.查询数字:
#includestdio.h
voidmain()
{
inta[10],left=0,right=10,mid,i,j;
printf(请按从小到大的顺序输入被查询序列的10个数:
\n);for(i=0;i=9;i++)scanf(%d,a[i]);printf(请输入待查询的整数:
\n);scanf(%d,j);while(left=right){mid=(left+right)/2;if(a[mid]==j){printf(待查询数字在%d位,mid+1);break;}elseif(a[mid]j)right=mid-1;elseif(a[mid]j)left=mid+1;}if(leftright)printf(待查询数字不在此序列);
7.统计字符串:
#includestdio.h
intp(chara[],charb[])
{
inti=0,j=0,k=0;
for(i=0;a[i];i++)
{
j=i;
for(k=0;a[j]==b[k]b[k]a[j];j++,k++);if(!
b[k])
return++i;
}
return-1;
}
intmain(void)
{
chara[100],b[100];
gets(a);
gets(b);
printf(%d\n,p(a,b));
return0;
}
【篇三:
c程序设计基础经典例题】
+3,…,从键盘输入一数值为整数,则输出整数序
列。
例如:
若k=6,则应输出:
136101521
2请编写程序,其功能把1,2,4,8,9,11,13,34,45,78从小到大有序放在数组中,数组的
值由从键盘读入,当插入一个整数后,数组中的数仍然有序。
3
例如:
输入256,输出的字符为6*5*2。
4请编写程序,它的功能是:
求高于平均分的人数。
数组中存放n位学生的成绩。
数组的值由从键盘读
入,用-1来结束输入。
例如:
输入877297则输出为:
2
5请编写程序,程序的功能是:
根据整数m,整数m从键盘读入,计算如下公式的值:
y=1+1/2!
+1/3!
+1/4!
+…+1/m!
例如:
若m=6,则应输出:
1.718056。
6请编写程序,要求不使用库函数,使用泰勒(taylor)级数法求解。
功能是:
求sin(x)的值,输入x值为
弧度,输出值精确到小数后6位。
7请编写下面的程序,它的功能是:
分别找出字符串中每个数字字符(0,1,2,3,4,5,6,
7,8,9)的个数,用num[0]来统计字符0的个数,用num[1]来统计字符1的个数,…,用num[9]来统计字符9的个数。
字符串由从键盘读入。
8请编写下面的程序,它功能是:
80到89分的学生成绩,存放在数组中,数组的值由键盘读入,统计
80到89分各数的人数。
例如:
若输入:
8088818488848481888282–1(注意:
用-1结束输入)
则输出应该是:
80:
181:
2
82:
283:
0
84:
385:
0
86:
087:
0
88:
389:
0
9请编写下面的程序,它的功能是:
把字符串中的字符按逆序存放,字符串由键盘读入。
例如:
若输入
字符串为abcdefg,则逆置后的字符串为gfedcba。
10请编写程序,实现任意一矩阵(维数小于100x100)从键盘输入建立矩阵,并实现转置运算。
11请编写程序,实现任意二矩阵(维数小于100x100)从键盘输入建立矩阵,并实现两矩阵的乘法运算。
12请编写程序实现,从键盘输入两个字符串,比较两个字符串的长度,如果前者大于后者,输出1,相
等输出0,前者小于后者,输出-1。
(要求不能用库函数strlen)
13请编写程序实现,从键盘输入两个字符串,将后面输入的字符串连接到前面输入字符串的后面,再从屏幕输出。
(要求不能用库函数strcat)。
14请编写一个程序,输入一个字符串,其中所有的大写字母+3,小写字母-3,再输出加密后的字符串。
15请编写下面的程序,功能是求s=1+1/(1+2)+1/(1+2+3)+.......+1/(1+2+3+4+......+n)的和。
例如:
若n=6,则应输出:
s=1.714286
16请编写一个程序,从键盘输入字符串,统计字符串中小写字母a到f字母各自出现的次数,并依次放
在pp所指的数组中。
17请编写一个程序,功能从键盘输入数值,建立一个4x3的二维数组,求出二维数组周边元素之和。
18请编写一个程序,功能:
实现任意一矩阵(维数小于100x100)从键盘输入建立方阵,左下半三角中元素中的值乘以m(m从键盘输入)后从屏幕输出结果。
19.请编写一个程序,从键盘输入字符串到数组tt中,功能是:
将字符串转换为一个整数(不得调用c语言
提供的将字符串转换为整数的函数)。
20请编写一个程序,功能是:
计算并输出下列级数和:
s=1/1*2+1/2*3+...+1/n*(n+1)
例如n=6,s=0.857143
21请编写一个程序,它的功能是:
计算并输出给定整数(合数)n的所有分解因子。
规定n的值不大于100。
例如输入24,输出24=2*2*2*3
22请编写一个程序,其功能是:
从键盘输入字符串,将字符串中下标位偶数同时ascii值为奇数的字符
删除。