C程序设计26道题.docx
《C程序设计26道题.docx》由会员分享,可在线阅读,更多相关《C程序设计26道题.docx(17页珍藏版)》请在冰点文库上搜索。
C程序设计26道题
1、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少?
编写程序:
#include
voidmain()
{
inta[]={1,2,3,4};
inti,j,k;
intsum=0;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
for(k=0;k<4;k++)
if((a[i]!
=a[j])&&(a[j]!
=a[k])&&(a[k]!
=a[i]))
{
sum=sum+1;
printf("%d%d%d\n",a[i],a[j],a[k]);
}
}
printf("共有%d个\n",sum);
}
2、输入某年某月某日,判断这一天是这一年的第几天?
编写程序:
#include
voidmain()
{
structDate
{
intyear;
intmonth;
intday;
};
structDatex;
inta[]={31,28,31,30,31,30,31,31,30,31,30,31};
inti;
intsum=0;
printf("请输入年月日:
");
scanf("%d,%d,%d",&x.year,&x.month,&x.day);
for(i=0;isum=sum+a[i];
sum=sum+x.day;
if((((x.year%4==0)&&(x.year%100!
=0))||(x.year%400==0))&&(x.month>2))
sum=sum+1;
printf("这一天是该年的第%d天\n",sum);
}
3、输出9*9口诀。
编写程序:
#include
voidmain()
{
inti,j;
for(i=1;i<=9;i++)
for(j=1;j<=i;j++)
{printf("%d*%d=%d",j,i,i*j);
if(j==i)printf("\n");
}
}
4、古典问题:
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
编写程序:
#include
voidmain()
{
intf1=2,f2=2,f3;
inti;
printf("%5d\n%5d\n",f1,f2);
for(i=0;i<30;i++)
{
f3=f1+f2;
printf("%5d\n",f3);
f1=f2;
f2=f3;
}
}
5、判断101-200之间有多少个素数,并输出所有素数。
编写程序:
#include
voidmain()
{
inti,n,sum=0;
for(n=101;n<200;n++)
{
for(i=2;iif(n%i==0)break;
if(i==n)
{
sum=sum+1;
printf("%d\n",n);
}
}
printf("共有%d个素数\n",sum);
}
6、输入两个正整数m和n,求其最大公约数和最小公倍数。
编写程序:
#include
voidmain()
{
inta,b,r,s;
printf("请输入两个数:
");
scanf("%d,%d",&a,&b);
r=a%b;
s=a*b;
while(r!
=0)
{
a=b;
b=r;
r=a%b;
}
s=s/b;
printf("这两个数的最大共约数为%d\n",b);
printf("这两个数的最小共倍数为%d\n",s);
}
7、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
编写程序:
#include
#include
voidmain()
{
chars;
inta,b,c,d;
a=b=c=d=0;
printf("请输入一行字符:
");
while((s=getchar())!
='\n')
{
if((s>='A'&&s<'Z')||(s>='a'&&s<='z'))
a++;
elseif(s=='')
b++;
elseif(s>='0'&&s<='9')
c++;
else
d++;
}
printf("字母的个数为%d个\n空格的个数为%d个\n数字的个数为%d个\n其他为%d个\n",a,b,c,d);
}
8、猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少?
编写程序:
#include
voidmain()
{
intsum=1;
inti;
for(i=1;i<10;i++)
sum=2*(sum+1);
printf("第一天共摘了%d个\n",sum);
}
9、有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
编写程序:
#include
voidmain()
{
doublei,f1=2,f2=1,t;
doublesum=0.0;
for(i=0;i<20;i++)
{
sum=sum+f1/f2;
t=f2;
f2=f1;
f1=t+f2;
}
printf("前20项之和为%f\n",sum);
}
10、求1+2!
+3!
+...+20!
的和。
编写程序:
#include
voidmain()
{
inti;
longsum=0,s=1;
for(i=1;i<=20;i++)
{
s=s*i;
sum=sum+s;
}
printf("sum=%d\n",sum);
}
11、对10个数进行排序(要求从大到小)。
编写程序:
#include
voidmain()
{
inti,j,k,t;
inta[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(a[j]>a[k])
k=j;
{t=a[k];a[k]=a[i];a[i]=t;}
}
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
12、求一个4*4矩阵主对角线元素之和。
编写程序:
#include
voidmain()
{
inta[4][4];
inti,j,sum=0;
printf("请输入一个4*4矩阵:
");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
if(i=j)
sum=sum+a[i][j];
}
printf("对角线的元素之和为%d\n",sum);
}
13、有一个已经排好序的数组。
现输入一个数,要求按原来的规律将它插入数组中。
编写程序:
#include
voidmain()
{
inti,x;
inta[80]={0,1,2,3,4,5,7,8,9};
printf("请输入一个数:
");
intn=9;
scanf("%d",&x);
for(i=8;i>=0;i--)
if(a[i]>=x)
a[i+1]=a[i];
else
break;
a[i+1]=x;
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
14、将一个数组逆序输出。
编写程序:
#include
voidmain()
{
inta[10]={0,1,2,3,4,5,6,7,8,9};
inti;
for(i=0;i<10;i++)
a[i]=i;
for(i=9;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
15、打印出杨辉三角形(要求打印出10行)
编写程序:
#include
voidmain()
{
inta[10][10];
inti,j;
for(i=0;i<10;i++)
{
a[i][i]=1;
a[i][0]=1;
}
for(i=2;i<10;i++)
for(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
16、输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
编写程序:
#include
voidmain()
{
inti,j=0,k=0,max,min,t;
inta[10]={1,3,5,7,9,2,4,0,6,8};
max=min=a[0];
for(i=0;i<10;i++)
if(max{max=a[i];
j=i;
}
{t=a[j];a[j]=a[0];a[0]=t;}
for(i=0;i<10;i++)
if(min>a[i])
{min=a[i];
k=i;
}
{t=a[k];a[k]=a[9];a[9]=t;}
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
17、写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
编写程序:
#include
#include
voidmain()
{
intsum=0;
inti;
chara[80];
gets(a);
for(i=0;a[i]!
='\0';i++)
sum=sum+1;
printf("长度为%d\n",sum);
}
18、编写主函数,当输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1!
+1/3!
+...+1/n!
编写程序:
#include
voidmain()
{
intn;
doublesum=0.0;
doubleos(intn);
doublejs(intn);
scanf("%d",&n);
if(n%2==0)
printf("%5.2f\n",os(n));
else
printf("%5.2f\n",js(n));
}
doubleos(intn)
{
inti;
doublesum=0.0;
for(i=1;i<=n/2;i++)
sum=sum+1.0/(2*i);
returnsum;
}
longjc(intn)
{
inti;
longs=1;
for(i=1;i<=n;i++)
s=s*i;
returns;
}
doublejs(intn)
{
inti;
longs;
doublesum=0.0;
for(i=0;i<((n+1)/2);i++)
{
s=2*i+1;
sum=sum+1.0/jc(s);
}
returnsum;
}
19、已知一个学生的信息有两项:
学生姓名,学生成绩,从键盘上输入10个学生的信息,然后按学生成绩从小到大排序(排序方法不限),最后输出排序过的学生信息。
编写程序:
20、编程计算从N各元素取出M个元素的组合数
编写程序:
21、编写程序,输入三角型的三条边长,求其面积。
注意:
对于不合理的边长输入要输出数据错误的提示信息。
编写程序:
22、按要求编写程序:
(1)编写求N阶乘的函数JACK()
(2)编写判断素数的函数ISPRIME();
(3)编写主函数,输入一个整数N,调用ISPRIME(),如果是素数就调用JACK()求出N的阶乘并输出,否则显示该数不是素数。
编写程序:
23、编写程序计算下列序列的值:
要求最后一项小于0.001时、或者当N=20时尚未达到精度要求,则停止计算。
编写程序:
24、利用结构:
structcomplx
{intreal;
intim;
};
编写求两个复数之积的函数cmult,并利用该函数求下列复数之积:
⑴(3+4i)×(5+6i)⑵(10+20i)×(30+40i
编写程序:
25、搜索一个字符在字符串中的位置(例如:
’I’在”CHINA”中的位置为3)。
如果没有搜索到,则位置为-1。
编写程序:
26、按要求编写程序:
假设学生有:
学号,姓名,年龄,四门课成绩,总分等信息请先定义结构体student来描述学生信息。
(1)编写输入n个学生信息存入数组a的函数voidshur(studena[],intn);
(2)编写输出数组a中n个学生的函数voidshuc(studenta[],intn);
(3)编写del函数的作用是删除数组a中的指定学生x,n为数组a的学生个数。
voiddel(studenta[],int,n,studentx)
(4)编写查找search函数的作用是查找数组a中的指定学生元素x,n为数组a的学生个数,如果找到,函数返回找到学生的序号,否则函数返回-1,intsearch(studenta[],studentx)
(5)编写插入元素insert函数的作用是将指定学生x插入到数组a中的指定位置w,n为数组a的学生个数。
voidinsert(studenta[],int,n,studentx,intw)
(6)编写排序sort函数,其功能是,按学号排序,voidsort(studenta[],int,n)
(7)编写主函数,调用voidshur(studenta[],intn)输入n个学生信息存入数组,然后调用shur(studenta[],intn)输出;实现删除学生信息操作并显示,实现查找学生操作,显示查找结果,实现插入学生操作,并显示结果实现按学号排序并显示。
(提示,可将n设置为全局变量)
编写程序:
阅读使人快乐,成长需要时间
1
1
1
1
1
1