求C语言习题!
题目:一个整数,加100后是一个完整的平方数,加168后是一个完整的平方数。数字是多少?
1.方案分析:如果判断在65438+百万以内,开药前在这个数上加100,再开药前在这个数上加268。如果是规定的,
的结果满足以下条件,就是结果。请看具体分析:
2.程序源代码:
#包含“math.h”
主()
{
long int i,x,y,z;
for(I = 1;我& lt100000;i++)
{ x = sqrt(I+100);/*x是处方加100后的结果*/
y = sqrt(I+268);/*y是168相加后的结果*/
if(x * x = = I+100 & amp;& ampY*y==i+268)/*如果一个数的平方根的平方等于该数,则说明该数是完全平方数*/
printf("\n%ld\n ",I);
}
}
==============================================================
程序4
题目:输入某年的某一天,决定这一天是一年中的哪一天。
1.方案分析:以3月5日为例,先把前两个月加起来,再加5天,就是今年的这一天。特殊情况下要考虑闰年多加一天,输入月份大于3。
2.程序源代码:
主()
{
int日、月、年、和、闰;
printf(" \ n请输入年、月、日\ n ");
scanf("%d,%d,%d ",& amp年份& amp月& amp天);
Switch(month)/*计算某个月之前一个月的总天数*/
{
案例1:sum = 0;打破;
情况二:sum = 31;打破;
案例三:sum = 59打破;
情况四:sum = 90打破;
情况5:sum = 120;打破;
案例6:sum = 151;打破;
案例7:sum = 181;打破;
案例8:sum = 212;打破;
案例9:sum = 243;打破;
案例10:sum = 273;打破;
案例11:sum = 304;打破;
案例12:sum = 334;打破;
默认值:printf("数据错误");打破;
}
总和=总和+天;/*加上一天中的天数*/
if(year % 400 = = 0 | |(year % 4 = = 0 & amp;& amp年份%100!=0))/*判断是否是闰年*/
leap = 1;
其他
闰= 0;
if(leap = = 1 & amp;& amp月份& gt2)/*如果是闰年,月份大于2,总天数要加一天*/
sum++;
printf("今天是第%dth天。",sum);}
==============================================================
计划5
题目:输入三个整数x,Y,z Y,Z,请从小到大输出这三个数。
1.程序分析:我们尽量把最小的数放在X上,先比较X和Y。如果X >;Y交换X和Y的值,然后比较X和Z,如果X >: Z交换X和Z的值,可以最小化X。
2.程序源代码:
主()
{
int x,y,z,t;
scanf("%d%d%d ",& ampx & amp;y & amp;z);
if(x & gt;y)
{ t = x;x = y;y = t;}/*交换x和y的值*/
if(x & gt;z)
{ t = z;z = x;x = t;}/*交换x和z的值*/
如果(y & gtz)
{ t = y;y = z;z = t;}/*交换z和y的值*/
printf("从小到大:%d %d %d\n ",x,y,z);
}
==============================================================
程序12
题目:判断101-200之间有多少素数,输出所有素数。
1.程序分析:判断素数的方法:用一个数除2到sqrt(这个数),如果能整除,
意味着这个数不是质数,而是质数。
2.程序源代码:
#包含“math.h”
主()
{
int m,I,k,h=0,leap = 1;
printf(" \ n ");
for(m = 101;m & lt=200;m++)
{ k = sqrt(m+1);
for(I = 2;我& lt= k;i++)
如果(m%i==0)
{ leap = 0;打破;}
if(leap) {printf("%-4d ",m);h++;
if(h%10==0)
printf(" \ n ");
}
leap = 1;
}
printf(" \ n总数为%d ",h);
}
==============================================================
程序13
标题:打印出所有的“水仙号”。所谓“水仙花数”是指一个三位数,其位数的立方和等于这个数。
本身。例如,153是一个“水仙花数”,因为153=1立方+5立方+3立方。
1.程序分析:用for循环控制100-999的数,每个数分解成个位、十位、百位。
2.程序源代码:
主()
{
int i,j,k,n;
printf(“‘水花’号为:“);
for(n = 100;n & lt1000;n++)
{
I = n/100;/*分解成几百个*/
j = n/10% 10;/*分解成十位数*/
k = n % 10;/*分解成比特*/
if(I * 100+j * 10+k = = I * I * I+j * j * j+k * k * k)
{
printf("%-5d ",n);
}
}
printf(" \ n ");
}
==============================================================
程序14
题目:将一个正整数分解成质因数。例如,输入90,打印90=2*3*3*5。
程序分析:分解n的质因数,首先要找到一个最小的质数k,然后按照以下步骤完成:
(1)如果这个质数刚好等于n,说明分解质因数的过程结束了,打印出来就行了。
(2)如果n
重复第一步。
(3)如果n不能被k整除,用k+1作为k的值,重复第一步。
2.程序源代码:
/*郑int被瓜分*/
主()
{
int n,I;
printf(" \ n请输入一个数字:\ n ");
scanf("%d ",& ampn);
printf("%d= ",n);
for(I = 2;我& lt= n;i++)
{
而(n!=i)
{
如果(n%i==0)
{ printf("%d* ",I);
n = n/I;
}
其他
打破;
}
}
printf("%d ",n);}
==============================================================
程序15
题目:利用条件运算符的嵌套完成此题:学习成绩>;= 90分的同学用A表示,60-89分的用B表示,60分以下的用c表示。
1.程序分析:(a & gtb)?这是一个条件操作符的基本例子。
2.程序源代码:
主()
{
int分数;
炭化等级;
printf("请输入分数\ n ");
scanf("%d ",& amp分数);
等级=分数& gt=90?a ':(分数& gt=60?b ':' C ');
printf("%d属于%c ",分数,等级);
}
==============================================================
题目:一个球从100米的高度自由落体,每次落地后反弹回原来高度的一半;再摔一次,问第10次落地时* * *过了多少米。10的反弹有多高?
1.程序分析:参见下面的注释。
2.程序源代码:
主()
{
float sn=100.0,HN = sn/2;
int n;
for(n = 2;n & lt=10;n++)
{
sn = sn+2 * HN;/*第n次落地时* * *通过的米数*/
HN = HN/2;/*第n次反弹的高度*/
}
printf("道路合计为%f\n ",sn);
printf("第十个是%f米\n ",HN);
}
==============================================================
程序21
题目:猴子吃桃子:第一天,猴子摘了许多桃子,马上吃了一半。他不上瘾,又吃了一个。
第二天早上,我吃了一半剩下的桃子,又吃了一个。我每天早上都吃前一天的剩菜。
一半和一。10早上,再想吃的时候,看到只剩下一个桃子。问你第一天摘了多少。
1.程序分析:采用逆向思维的方法,由后向前推断。
2.程序源代码:
主()
{
int day,x1,x2;
日= 9;
x2 = 1;
while(day & gt;0)
{ x 1 =(x2+1)* 2;/*第一天的桃子数是第二天桃子数的两倍加上1 */
x2 = x 1;
日-;
}
printf("合计为%d\n ",x 1);
}
==============================================================
计划22
题目:两支乒乓球队比赛,每队三名队员。A队由A、B、C三个人组成,B队由x、Y、z、Y、z三个人组成,比赛名单已经抽签决定。有人问球员关于比赛的名单。a说他不会跟X比,C说他不会跟X和z比,请做个程序了解一下。
第三队选手的名单。
1.程序分析:判断素数的方法:用一个数除2到sqrt(这个数),如果能整除,
意味着这个数不是质数,而是质数。
2.程序源代码:
主()
{
char i,j,k;/*i是A的对手,J是B的对手,K是C的对手*/
for(I = ' x ');我& lt= ' zi++)
for(j = ' x ');j & lt= ' zj++)
{
如果(我!=j)
for(k = ' x ');k & lt= ' zk++)
{如果(我!= k & amp& ampj!=k)
{如果(我!= ' x ' & amp& ampk!= ' x ' & amp& ampk!='z ')
printf("order是a - %c\tb - %c\tc - %c\n ",I,j,k);
}
}
}
}
==============================================================
计划23
标题:打印出以下图案(菱形)
*
***
******
********
******
***
*
1.程序分析:先把图形分成两部分,前四行是一条规则,后三行是一条规则,用double。
对于循环,第一层控制行,第二层控制列。
2.程序源代码:
主()
{
int i,j,k;
for(I = 0;我& lt=3;i++)
{
for(j = 0;j & lt= 2-I;j++)
printf(" ");
for(k = 0;k & lt= 2 * I;k++)
printf(" * ");
printf(" \ n ");
}
for(I = 0;我& lt=2;i++)
{
for(j = 0;j & lt= I;j++)
printf(" ");
for(k = 0;k & lt= 4-2 * I;k++)
printf(" * ");
printf(" \ n ");
}
}
==============================================================
计划24
题目:有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13...找出这个序列中前20项的总和。
1.程序分析:请掌握分子分母的变化规律。
2.程序源代码:
主()
{
int n,t,number = 20
浮点数a=2,b=1,s = 0;
for(n = 1;n & lt=数字;n++)
{
s = s+a/b;
t = a;a = a+b;b = t;/*这部分是程序的关键。请猜猜T */的功能
}
printf("sum是%9.6f\n ",s);
}
==============================================================
计划25
题目:找1+2!+3!+...+20!总和
1.程序分析:这个程序只是把累加变成了乘法。
2.程序源代码:
主()
{
浮点数n,s=0,t = 1;
for(n = 1;n & lt=20;n++)
{
t * = n;
s+= t;
}
printf("1+2!+3!...+20!=%e\n ",s);
}
==============================================================
计划26
题目:用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
2.程序源代码:
#包含“stdio.h”
主()
{
int I;
int fact();
for(I = 0;我& lt5;i++)
printf("\40:%d!=%d\n ",I,fact(I));
}
内部事实(j)
int j;
{
int sum
如果(j==0)
sum = 1;
其他
sum = j * fact(j-1);
返回总和;
}
==============================================================
计划27
标题:使用递归函数调用,以相反的顺序打印这五个字符。
1.程序分析:
2.程序源代码:
#包含“stdio.h”
主()
{
int I = 5;
虚空佩林(int n);
printf(" \ 40:");
佩林(我);
printf(" \ n ");
}
虚空佩林(n)
int n;
{
char next
如果(n & lt=1)
{
next = getchar();
printf(" \ n \ 0:");
putchar(下一个);
}
其他
{
next = getchar();
佩林(n-1);
putchar(下一个);
}
}
==============================================================
计划28
题目:有五个人坐在一起。第五个人多大了?他说他比第四个人大两岁。问第四个人年龄,他说比第一个大。
三个人都大两岁。问第三个人,他说比第二个人大两岁。问第二个人,说他比第一个人大两岁。最后
问第一个人,他说是10岁。第五个人多大了?
1.程序分析:利用递归的方法,递归可以分为后推和递归两个阶段。要知道第五个人的年龄,你需要知道
第四个人的年龄,以此类推,推至第一个人(10岁),再推回。
2.程序源代码:
年龄
int n;
{
int c;
if(n = = 1)c = 10;
else c =年龄(n-1)+2;
返回(c);
}
主()
{ printf("%d ",年龄(5));
}
==============================================================
计划29
题目:给出一个不超过5位数的正整数。要求:1。找出它是多少位数;2.以相反的顺序打印出所有的数字。
1.程序分析:学会分解每一位数字,如下解释:(这里是师专002班赵鑫提供的简单算法)
2.程序源代码:
主( )
{
长a,b,c,d,e,x;
scanf("%ld ",& ampx);
a = x/10000;/*分解一万位*/
b = x % 10000/1000;/*分解成千上万*/
c = x % 1000/100;/*分解成几百个*/
d = x % 100/10;/*分解成十位数*/
e = x % 10;/*分解成比特*/
如果(a!=0) printf("有5个,%ld %ld %ld %ld\n ",e,d,c,b,a);
else if (b!=0) printf("有4个,%ld %ld %ld\n ",e,d,c,b);
else if (c!=0) printf("有3个,%ld %ld %ld\n ",e,d,c);
else if (d!=0) printf("有2个,%ld %ld\n ",e,d);
else if (e!=0) printf("有1,%ld\n ",e);
}
==============================================================
程序30
题目:一个5位数,判断是不是回文。即12321是回文,一位数等于一万位数,十位数等于一千位数。
1.方案分析:同29例。
2.程序源代码:
主( )
{
龙哥,石,钱,万,x;
scanf("%ld ",& ampx);
wan = x/10000;
钱= x % 10000/1000;
Shi = x % 100/10;
ge = x % 10;
if(ge = = wan & amp;& amp施= =钱)/*位等于一万位,十位等于一千位*/
printf("本号是个汇文\ n ");
其他
printf("本号不是汇文\ n ");
}
==============================================================
程序31
标题:请输入星期几的第一个字母来判断今天是星期几。如果第一个字母相同,继续判断第二个字母。
1.方案分析:用情况陈述比较好。如果第一个字母相同,则第二个字母由情境陈述或if陈述判断。
2.程序源代码:
#包括
void main()
{
char字母;
printf("请输入某一天的第一个字母\ n ");
while ((letter=getch())!='Y')/*当按下的字母是Y时结束*/
{开关(字母)
{case 'S':printf("请输入第二个字母\ n ");
if((letter=getch())=='a ')
printf("星期六\ n ");
else if ((letter=getch())=='u ')
printf(" Sunday \ n ");
else printf("数据错误\ n ");
打破;
case ' F ':printf(" Friday \ n ");打破;
case ' M ':printf(" Monday \ n ");打破;
case 'T':printf("请输入第二个字母\ n ");
if((letter=getch())=='u ')
printf("星期二\ n ");
else if ((letter=getch())=='h ')
printf("星期四\ n ");
else printf("数据错误\ n ");
打破;
case 'W':printf("星期三\ n ");打破;
默认值:printf("数据错误\ n ");
}
}
}
==============================================================
程序34
主题:练习函数调用
1.程序分析:
2.程序源代码:
#包括
void hello_world(void)
{
printf("你好,世界!\ n ");
}
虚空三_hellos(虚空)
{
int计数器;
for(counter = 1;计数器& lt= 3;计数器++)
hello _ world();/*调用此函数*/
}
无效总管(无效)
{
three _ hello();/*调用此函数*/
}
}
==============================================================
程序36
主题:寻找100内的质数
1.程序分析:
2.程序源代码:
#包括
#包含“math.h”
#定义编号101
主()
{
int i,j,line,a[N];
for(I = 2;ifor(I = 2;我& ltSQRT(N);I++)
for(j = I+1;j & ltn;J++)
{
如果(a[i]!= 0 & amp& ampa[j]!=0)
if(a[j]%a[i]==0)
a[j]= 0;}
printf(" \ n ");
for(i=2,line = 0;我& ltn;I++)
{
如果(a[i]!=0)
{printf("%5d ",a[I]);
line++;}
if(line==10)
{ printf(" \ n ");
line = 0;}
}
}
==============================================================
计划37
题目:对10的数字进行排序。
1.程序分析:可以使用选择法,即从最后九个比较过程中,选择最小的一个与第一个元素进行交换,下次依此类推,即把第二个元素与最后八个元素进行比较并交换。
2.程序源代码:
#定义编号10
主()
{int i,j,min,tem,a[N];
/*输入数据*/
printf("请输入十个数字:\ n ");
for(I = 0;我& ltn;I++)
{
printf("a[%d]= ",I);
scanf("%d ",& ampa[I]);}
printf(" \ n ");
for(I = 0;我& ltn;I++)
printf("%5d ",a[I]);
printf(" \ n ");
/*排序十个数字*/
for(I = 0;我& ltn-1;I++)
{ min = I;
for(j = I+1;j & ltn;J++)
if(a[min]& gt;a[j])min = j;
tem = a[I];
a[I]= a[min];
a[min]= tem;
}
/*输出数据*/
printf("排序后\ n ");
for(I = 0;我& ltn;I++)
printf("%5d ",a[I]);
}
==============================================================
程序46
主题:宏#定义命令实践(1)
1.程序分析:
2.程序源代码:
#包含“stdio.h”
#定义真1
#定义假0
#定义SQ(x) (x)*(x)
void main()
{
int num
int又= 1;
printf("\40:如果输入值小于50,程序将停止。\ n ");
当(再次)
{
printf("\40:请输入数字== >);
scanf("%d ",& ampnum);
printf("\40:这个数字的平方是%d \n ",SQ(num));
if(num & gt;=50)
再次=真;
其他
再次=假;
}
}
==============================================================
程序86
标题:两个字符串链接程序
1.程序分析:
2.程序源代码:
#包含“stdio.h”
主()
{ char a[]= " acegikm ";
char b[]= " bdfhjlnpq ";
char c[80],* p;
int i=0,j=0,k = 0;
while(a[i]!= ' \ 0 ' & amp& ampb[j]!='\0')
{ if(a[I]{ c[k]= a[I];i++;}
其他
c[k]= b[j++];
k++;
}
c[k]= ' \ 0 ';
if(a[i]=='\0 ')
p = b+j;
其他
p = a+I;
strcat(c,p);
卖出期权(c);
}
==============================================================
程序87
题目:答案结果(结构变量迁移)
1.程序分析:
2.程序源代码:
#包含“stdio.h”
结构学生
{ int x;
char c;
} a;
主()
{ a . x = 3;
a.c = ' a
f(a);
printf("%d,%c ",a.x,a . c);
}
f(结构学生b)
{
b.x = 20
b.c = ' y
}
==============================================================
程序88
标题:读取7个整数值(1-50),对于每个读取的值,程序打印出*的数值个数。
1.程序分析:
2.程序源代码:
主()
{int i,a,n = 1;
while(n & lt;=7)
做{
scanf("%d ",& ampa);
} while(a & lt;1 | | a >;50);
for(I = 1;我& lt= a;i++)
printf(" * ");
printf(" \ n ");
n++;}
getch();
}
==============================================================
程序89
标题:一家公司使用公共电话传输数据。数据是四位整数,在传输过程中加密。加密规则如下:每个数字加5,然后用和除以10的余数替换,再交换第一位和第四位,第二位和第三位。
1.程序分析:
2.程序源代码:
主()
{int a,I,aa[4],t;
scanf("%d ",& ampa);
aa[0]= a % 10;
aa[1]= a % 100/10;
aa[2]= a % 1000/100;
aa[3]= a/1000;
for(I = 0;我& lt=3;i++)
{ aa[I]+= 5;
aa[I]% = 10;
}
for(I = 0;我& lt=3/2;i++)
{ t = aa[I];
aa[I]= aa[3-I];
aa[3-I]= t;
}
for(I = 3;我& gt=0;我-)
printf("%d ",aa[I]);
}
==============================================================
节目90
题目:专升本的问题,看成绩。
1.程序分析:
2.程序源代码:
#包含“stdio.h”
#定义M 5
主()
{int a[M]={1,2,3,4,5 };
int i,j,t;
I = 0;j = M-1;
while(I { t = *(a+I);
*(a+I)= *(a+j);
*(a+j)= t;
i++;j-;
}
for(I = 0;i printf("%d ",*(a+I));
}