求C语言习题!

程序1

题目:一个整数,加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));

}